首页 > 代码库 > 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 Table: gpt # 分区表的格式 (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文件系统描述观察及磁盘命令详解