首页 > 代码库 > Linux XFS文件系统描述观察及磁盘命令详解

Linux XFS文件系统描述观察及磁盘命令详解

XFS文件系统的描述数据观察

EXT 家族的 dumpe2fs 去观,而XFS 家族用 xfs_info 去观察

[root@study ~]# xfs_info挂载点|装置文件名

[root@study ~]# df - - T /boot

Filesystem      Type     1K-blocks     Used     Available     Use%     Mounted on

/dev/vda2        xfs     1038336       133704   904632        13%      /boot

没错!可以看得出来是 xfs 文件系统的!来观察一下内容吧!

[root@study ~]# xfs_info /dev/vda2

1    meta-data=http://www.mamicode.com/dev/vda2 isize=256    agcount=4, agsize=65536 blks

2                    =              sectsz=512   attr=2, projid32bit=1

3                    =              crc=0        finobt=0

4            data = http://www.mamicode.com/ bsize=4096   blocks=262144, imaxpct=25

5                    =              sunit=0      swidth=0 blks

6        naming= version 2    bsize=4096   ascii-ci=0 ftype=0

7          log    = internal     bsize=4096   blocks=2560, version=2

8                   =              sectsz=512   sunit=0 blks, lazy-count=1

9     realtime =none          extsz=4096   blocks=0, rtextents=0

  • 第1 行里面的isize 指的是inode 的容量,每个有256bytes 这么大。至于agcount 则是前面谈到的储存区群组(allocation group) 的个数,共有4 个, agsize 则是指每个储存区群组具有65536 个block 。配合第4 行的block 设定为4K,因此整个档案系统的容量应该就是4*65536*4K 这么大!
  • 第2 行里面sectsz 指的是逻辑磁区(sector) 的容量设定为512bytes 这么大的意思。
  • 第4 行里面的bsize 指的是block 的容量,每个block 为4K 的意思,共有262144 个block 在这个档案系统内。
  • 第5 行里面的sunit 与swidth 与磁碟阵列的stripe 相关性较高。这部份我们底下格式化的时候会举一个例子来说明。
  • 第7 行里面的internal 指的是这个登录区的位置在档案系统内,而不是外部设备的意思。且占用了4K * 2560 个block,总共约10M 的容量。
  • 第9 行里面的realtime 区域,里面的extent 容量为4K。不过目前没有使用。

磁盘与目录的容量

? df:列出文件系统的整体磁盘使用量;

[root@study ~]# df [- - ahikHTm] [ 目 录 或文件名] ]

选项与参数:

-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;

-k:以 KBytes 的容量显示各文件系统;

-m:以 MBytes 的容量显示各文件系统;

-h:以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;

-H:以 M=1000K 取代 M=1024K 的进位方式;

-T:连同该 partition 的 filesystem 名称 (例如 xfs) 也列出;

-i:不用磁盘容量,而以 inode 的数量来显示

 

 

du:评估文件系统的磁盘使用量(常用在推估目录所占容量)

[root@study ~]# du [- - ahskm] 文件或目录名称

选项与参数:

-a:列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。

-h:以人们较易读的容量格式 (G/M) 显示;

-s:列出总量而已,而不列出每个各别的目录占用容量;

-S:不包括子目录下的总计,与 -s 有点差别。

-k:以 KBytes 列出容量显示;

-m:以 MBytes 列出容量显示;

 

 

parted列出磁盘的分区表类型与分区信息

[root@study ~]# parted /dev/vda print

Model: Virtio Block Device (virtblk)         # 磁盘的模块名称(厂商)

Disk /dev/vda: 42.9GB                        # 磁盘的总容量

Sector size (logical/physical): 512B/512B    # 磁盘的每个逻辑/物理扇区容量

Partition Tablegpt                         # 分区表的格式 (MBR/GPT)小为 4K 最大为 1G

 

 

blkid列出装置的 UUID 等参数

 

 

lsblk列出系统上的所有磁盘列表

[root@study ~]# lsblk [- - dfimpt] [device]

选项与参数:

-d:仅列出磁盘本身,并不会列出该磁盘的分区数据

-f:同时列出该磁盘内的文件系统名称

-i:使用 ASCII 的线段输出,不要使用复杂的编码 (再某些环境下很有用)

-m:同时输出该装置在 /dev底下的权限数据 (rwx的数据)

-p:列出该装置的完整文件名!而不是仅列出最后的名字而已。

-t:列出该磁盘装置的详细数据,包括磁盘队列机制、预读写的数据量大小等

 

默认输出的信息详解:

NAME:就是装置的文件名啰!会省略 /dev 等前导目录!

MAJ:MIN:其实核心认识的装置都是透过这两个代码来熟悉的!分别是主要:次要装置代码!

RM:是否为可卸除装置 (removable device),如光盘、USB 磁盘等等

SIZE:当然就是容量啰!

? RO:是否为只读装置的意思

? TYPE:是磁盘 (disk)、分区槽 (partition还是只读存储器 (rom等输出

MOUTPOINT:就是前一章谈到的挂载点!

 

 

使用parted命令可以分辨分区表类型,『MBR 分区表使用 fdisk 分区, GPT 分区表使用 gdisk 分区!』

[root@study ~]# gdisk  装置名称  具体看下行

[root@study ~]# gdisk  /dev/vda      <==仔细看,不要加上数字喔!

Command (? for help): ?

前面省略。。。

d     te a partition                 # 删除一个分区

中间省略。。。

n     add a new partition            # 增加一个分区

省略一行

p     print the partition table         # 印出分区表 (常用)

q     quit without saving changes     # 不储存分区就直接离开 gdisk

省略部分。。。

w     write table to disk and exit     # 储存分区操作后离开 gdisk

不管你进行了什么动作,只要离开 gdisk 时按下『q』,那么所有的动作『都不会生效!』相反的, 按下『w』就是动作生效的意思。

使用的『装置文件名』请不要加上数字,因为 partition是针对『整个磁盘装置』而不是某个 partition 呢!

 

 

Linux XFS系统格式化命令

[root@study ~]# mkfs.xfs [- - b bsize] [- - d parms] [- - i parms] [ [- - l parms] [- - L label] [- - f] \ \

[ [- - r parms] 装置名称

选项与参数:

关于单位:底下只要谈到『数值』时,没有加单位则为 bytes 值,可以用 k,m,g,t,p (小写)等来解释

比较特殊的是 s 这个单位,它指的是 sector 的『个数』喔!

-b :后面接的是 block 容量,可由 512 到 64k,不过最大容量限制为 Linux 的 4k 喔!

-d :后面接的是重要的 data section 的相关参数值,主要的值有:

agcount=数值 :设定需要几个储存群组的意思(AG),通常与 CPU 有关

agsize=数值 :每个 AG 设定为多少容量的意思,通常 agcount/agsize 只选一个设定即可

file :指的是『格式化的装置是个文件而不是个装置』的意思!(例如虚拟磁盘)

size=数值 :data section 的容量,亦即你可以不将全部的装置容量用完的意思

su=数值 :当有 RAID 时,那个 stripe 数值的意思,与底下的 sw 搭配使用

sw=数值 :当有 RAID 时,用于储存数据的磁盘数量(须扣除备份碟与备用碟)

sunit=数值 :与 su 相当,不过单位使用的是『几个 sector(512bytes 大小)』的意思

swidth=数值 :就是 su*sw 的数值,但是以『几个 sector(512bytes 大小)』来设定

-f :如果装置内已经有文件系统,则需要使用这个 -f 来强制格式化才行!

-i :与 inode 有较相关的设定,主要的设定值有:

size=数值 :最小是 256bytes 最大是 2k,一般保留 256 就足够使用了!

internal=[0|1]:log 装置是否为内建?预设为 1 内建,如果要用外部装置,使用底下设定

logdev=device :log 装置为后面接的那个装置上头的意思,需设定 internal=0 才可!

size=数值 :指定这块登录区的容量,通常最小得要有 512 个 block,大约 2M 以上才行!

-L :后面接这个文件系统的标头名称 Label name 的意思!

-r :指定 realtime section 的相关设定值,常见的有:

extsize=数值 :就是那个重要的 extent 数值,一般不须设定,但有 RAID 时,

最好设定与 swidth 的数值相同较佳!最范例一:列出 /dev/vda 磁盘的相关数据

 

Linux XFS文件系统描述观察及磁盘命令详解