文章目录
- Linux磁盘管理命令
- 使用xfs 管理命令
- 1.命令说明
- 2.建立 XFS 文件系统
- 4.调整 XFS 文件系统各项参数
- 5.在线调整 XFS 文件系统的大小
- 6.暂停和恢复 XFS 文件系统
- 7.尝试修复受损的 XFS 文件系统
- 8.备份和恢复
- 9.碎片管理
Linux磁盘管理命令
使用xfs 管理命令
在 GNU/Linux 中,管理 XFS 的工作主要使用 xfsprogs 中的一系列工具。
1.命令说明
mkfs.xfs
:创建 XFS 文件系统。xfs_admin
:调整 XFS 文件系统的各项参数。xfs_copy
:复制 XFS 文件系统的内容到一个或多个目标系统(并行方式)。xfs_db
:调试或检测 XFS 文件系统(查看文件系统碎片等)。xfs_check
:检测 XFS 文件系统的完整性。xfs_bmap
:查看一个文件的块映射。xfs_repair
:尝试修复受损的 XFS 文件系统。xfs_fsr
:碎片整理。xfs_quota
:管理 XFS 文件系统的磁盘配额。xfs_metadump
:将 XFS 文件系统的元数据(Metadata)复制到一个文件中。xfs_mdrestore
:从一个文件中将元数据(Metadata)恢复到 XFS 文件系统。xfs_growfs
:调整 XFS 文件系统的大小(只能扩展)。xfs_freeze
:暂停(-f)和恢复(-u)XFS 文件系统。
2.建立 XFS 文件系统
1)格式化
要格式化存储设备为 XFS 格式,可以用 root 身份执行如下命令:
#mkfs -t xfs /dev/sdb5
如果 mkfs.xfs 发现存储设备仍有之前存放的文件资料,则会拒绝进行格式化。
# mkfs.xfs /dev/sdb5
mkfs.xfs: /dev/sdb5 appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
如果确定那些资料已没有用处,需要为 mkfs.xfs 加上选项 -f 强迫它进行格式化。
# mkfs.xfs -f /dev/sdb5
meta-data =/dev/sdb5 isize=256 agcount=4,agsize=524119 blks
= sectsz=512 attr=2
data = bsize=4096 blocks=2096474,imaxpct=25 = sunit=0s width=0 blks
naming =version 2 bsize=4096
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=0
realtime =none extsz=4096 blocks=0, rtextents=0
2)区块大小(Block size)
区块(Block)是文件系统存储盘中内容最小的单位,其大小对文件系统的空间运用和效 用有很大的影响。较大的区块可以令文件系统大小上限和文件大小上限增加,也可以加快大文 件的读/写,但会浪费较多的空间,对平均文件大小较小的文件系统比较不利。区块大小只可以 在格式化文件系统时设定,以后除重新格式化外不能改变。XFS 文件系统的区块大小最少可以 为 512 字节,最大不可超过 64KB,默认为 4KB。然而区块大小又受到作业系统内核的 page 大 小限制。在 X86 计算机中,区块最大不可超过 4KB。其他平台如 IA64 可以使用较大区块, 不过过大区块会浪费空间,所以不建议使用大于 4KB 的区块。在选择区块大小时要注意以下 几点:
- 如果文件系统小于 100MB 或有大量小型文件,建议使用 512 字节区块,其余情况建议 使用 4KB 区块。
- 如果用作新闻组服务器(News Server)或有大量小型文件,可以使用 512 字节文件系统 区块和 4KB 目录区块(使用-nsize=大小选项)。
简单而言,XFS 文件系统在 X86 平台上可以使用 512B、1KB、2KB 和 4KB 区块。格式化 显要指定区块大小需要使用选项“-b size=区块大小”:
#mkfs.xfs –b size=512 /dev/sdb6
3)目录区块大小(Directory Block Size)
XFS 容许目录使用比文件系统区块大小更小的区块,方法是使用选项“-n size=区块大小”, 例如:
#mkfs.xfs –b size=512 –n size=4k /dev/sdb6
区块大小后加上“k”表示单位为 KB(1024 字节),加上“s”表示单位为磁区(sector, 默认为 512 字节,可能会因-s 选项而改变),加上“b”表示单位为文件系统区块(默认为 4KB, 可能会因-b 选项而改变)。
4)日志大小
格式化 XFS 时,mkfs.xfs 会自动根据文件系统的大小划分日志(Journal)的大小。若文件 系统等于或超过 1TB,则划分日志只会为最大值 128MB。最小不会小于 512 文件系统区块。 可以使用选项“-l size=日志大小”指定日志的大小,例如:
#mkfs.xfs –l size=1024b /dev/sdb6
日志大小可以加以下单位。
s:磁区(sector)大小(默认为 512 字节,可能会因-s 选项而改变)。
b:文件系统区块大小(默认为 4KB,可能会因-b 选项而改变)
k:KB(1 024 字节)。
m:MB(1 048 576 字节)。
g:GB(1 073 741 824 字节)。
t:TB(1 099 511 627 776 字节)。
p:PB(1024TB)。
e:EB(1 048 576TB)。
如果有多于一个硬盘,可以考虑使用外部日志(External Journal)把文件系统和日志存储 在不同的硬盘,可以增加效能。
5)文件系统标签(Filesystem Label)
文件系统标签(Filesystem Label)又叫作 Volume Name,是文件系统中一个小栏目,用作 简述该文件系统的用途或其存储数据。可以使用选项“-L 标签”在格式化时设定文件系统标签。
#mkfs.xfs -L Videos /dev/sdc1
XFS 的文件系统标签不能超过 12 个字符。以后可以使用命令 xfs_admin -L 改变。
6)一个例子 示例代码如下:
#mkfs.xfs –d agcount=4 –l size=32m /dev/sdb5
第一个选项是-l size=32m,它告诉 mkfs.xfs 配置用户的文件系统使之拥有一个高达 32MB 的元数据日志。这通过降低在文件系统处于繁忙使用期间元数据日志将“填满”的可能性而改 善了性能。第二个选项通过告诉 mkfs.xfs 将创建的分配组的数目最小化,让用户增强新文件系 统的性能。通常,mkfs.xfs 自动选择分配组的数目,但是,根据笔者的经验,它通常会选择一 个比大多数用于一般用途的 Linux 工作站和服务器过高一点的数目。分配组让 XFS 并行执行多 个元数据操作,这为高端服务器带来了便利,但是太多的分配组确实会增加一些开销。因此, 不要让 mkfs.xfs 为用户的文件系统选择分配组的数目,而是通过使用-d agcount=x 选项指定一 个数目。将 x 设置成一个小数目,如 4、6 或 8。需要使得目标块设备中每 4GB 容量至少有一 个分配组。同时进行这两项调整,使用下面的命令创建“优化的”XFS 文件系统:
# mount -t /dev/sda6 /mnt -o noatime,nodiratime,osyncisdsync
前面的两个选项(noatime,nodiratime)关闭 atime 更新。osyncisdsync 选项调整 XFS 的同 步/异步行为,以便它同 Ext3 更一致。
3.挂载 XFS 文件系统
#mount –t xfs/dev/sdb5/xfs
其中,/xfs 是主分区/下的一个目录。
为了让系统启动后就自动加载,应该更改/etc/fstab,这样系统启动后就会自动加载 xfs 分 区而不必每次都手工加载。添加如下一行:
/dev/hdb5 /xfs defaults 1 1
挂装时,将使用一些性能增强 mount 选项来最大限度地发掘出(或发挥出)新文件系统的 性能。
#mount –t /dev/sdb5 /xfs –o noatime,nodiratime,osyncisdsync
前面的两个 mount 选项关闭 atime 更新,几乎不需要 atime 更新,并且它除了降低文件系 统性能之外几乎不起任何作用。osyncisdsync 选项调整 XFS 的同步/异步行为,以便它同 Ext3 更一致。多亏了 mkfs.xfs 和 mount 调整,新的 XFS 文件系统比没有调整时的性能要好得多。
其他 mount -o 选项如下。
allocsize=:延时分配时,预分配 buffered 大小。
sunit=/swidth=:使用指定的条带单元与宽度(单位为 512Byte)。
swalloc:根据条带宽度的边界调整数据分配。
discard:块设备自动回收空间。
dmapi:使能 Data Management API 事件。
inode64:创建 inode 节点位置不受限制。
inode32:inode 节点号不超过 32 位(为了兼容)。
largeio:大块分配。
nolargeio:尽量小块分配。
noalign:数据分配时不用条带大小对齐。
noatime:读取文件时不更新访问时间。
norecovery:挂载时不运行日志恢复(只读挂载)。
logbufs=:内存中的日志缓存区数量。
logbsize=:内存中每个日志缓存区的大小。
logdev=/rtdev=:指定日志设备或实时设备。XFS 文件系统可以分为 3 部分:数据、日志、实时(可选)。
4.调整 XFS 文件系统各项参数
1)XFS 卷标管理
(1)查看当前的卷标。
#xfs_admin -l /dev/sdb
label=""
(2)设置新的卷标。
#xfs_admin -L "VideoRecords" /dev/sdb
writing all SBs
new label="VideoRecords"
2)UIID 管理
通用唯一标识符(UUID)是 128 比特的数字,用来唯一地标识因特网上的某些对象或者 实体。传统上,GNU/Linux 在/etc/fstab 上直接使用设备名称(/dev/hda1 或/dev/sda5 等)指定要 挂载的存储设备。然而设备名称有时会因为 BIOS 的设定而改变,引起混乱。所以现在部分Linux distribution 已改用 UUID(Universal Unique Identifier)来指定要挂载的存储设备。
(1)查看当前所有存储设备的 UUID 名称。
#blkid –s UUID
/dev/sda1:UUID="34dd521d-fb74-41cf-afc6-e786344ecd7a"
/dev/sda2:UUID="UskH3q-GHDB-ZLoo-kPRb-O1sq-wKSU-CwH0Lt"
/dev/mapper/rhel-root:UUID="e7e811fd-3c45-4bcd-84cb-92c4aafccf16"
/dev/sdb:UUID="36cf1092-65e2-4acd-85fc-284b1e7b1f33"
/dev/mapper/rhel-swap:UUID="800748d6-f4ae-4bc7-90d9-e69478fd4af3"
(2)查看指定存储设备的 UUID。
#xfs_admin –u /dev/sdb
UUID=cd4f1cc4-15d8-45f7-afa4-2ae87d1db2ed
(3)生成一个新的 UUID。
#xfs_admin –U generate /dev/sdb
writing all SBs
new UUID=c1b9d5a2-f162-11cf-9ece-0020afc76f16
-U 的参数如果为 generate,则表示直接产生一个新的 UUID;如果为 nil,则表示清除文件 系统的 UUID。
#xfs_admin –U nil /dev/sda1
3)在 mount 命令中使用 UUID 挂载文件系统
使用 mount 命令挂载文件系统,可以使用选项“-U uuid”取代设备文件指定要挂载的设备。
mount –U 51f7e9a4-5154-4e29-a7a6-208417290b85 /mnt
也可以使用 UUID=uuid 取代-U 选项。
mount UUID="51f7e9a4-5154-4e29-a7a6-208417290b85" /mnt
在文件/etc/fstab 中可以使用 UUID=uuid 取代设备文件指定要挂载的设备。
UUID="e61f4197-5f00-4f4f-917c-290922a85339" /xfs defaults 0 1
UUID="51f7e9a4-5154-4e29-a7a6-208417290b85" /boot xfs defaults 0 2
5.在线调整 XFS 文件系统的大小
XFS 提供了 xfs_growfs 工具,可以在线调整 XFS 文件系统的大小。XFS 文件系统可以向 保存当前文件系统的设备上的未分配空间延伸。这个特性常与卷管理功能结合使用,因为后者 可以把多个设备合并进一个逻辑卷组,而使用硬盘分区保存 XFS 文件系统时,每个分区需要 分别扩容。
# xfs_growfs –D 1073741824 /myxfs1
# xfs_growfs –d /myxfs1
6.暂停和恢复 XFS 文件系统
(1)暂停 XFS 文件系统。
#xfs_freeze –f /myxfs
(2)恢复 XFS 文件系统。
#xfs_freeze –u /myxfs
7.尝试修复受损的 XFS 文件系统
XFS 与 Ext3 相比的特点是并行 I/O,如果一个文件系统使用的硬盘比较多,而且总线允许 并行的话,XFS 有明显的性能优势。而在台式计算机上,这个区别很不明显。
另外,Ext3 删除文件的速度比 XFS 要快;由于大量采用 Cache,XFS 不用 fsck,但必须保 证电源供应,突然断电时 XFS 的损失比 Ext3 要严重。
# # xfs_repair –L /dev/hda13
8.备份和恢复
(1)备份文件系统。
#xfsdump-F –f /root/dump.xfs /mnt
(2)恢复文件系统。
#xfsrestore –f /root/dump.xfs /mnt
9.碎片管理
可以使用 xfs_db 命令调试或检测 XFS 文件系统(查看文件系统碎片等)。
(1)查看碎片情况。
#xfs_db –c frag –r /dev/sda1
actual 378,idea l373,fragmentation factor 1.32%
(2)整理碎片。
#xfs_fsr /dev/sda1