在Fedora 22上创建/挂载/管理XFS文件系统
XFS是1993年由Silicon Graphics,Inc(SGI)创建的64位日记文件系统。
它是一个高性能和高度可扩展的文件系统,并于2001年移植到Linux内核。
从那时起,许多Linux发行版支持XFS且甚至是一些默认情况。
最新的Fedora 22 Server Edition默认使用XFS文件系统。
XFS在提交给主文件系统之前,跟踪对日志中的文件系统所做的更改。
因此,崩溃恢复更快,保证文件系统一致性。
即使在主动安装时,也可以扩展和对文件系统进行缩短。
在本文中,让我们了解如何在Fedora 22上创建,安装和使用XFS。
1)创建和安装XFS
在以下所有示例中,我正在使用虚拟设备(/dev/xvdc)作为我的块设备。
如果尚未安装XFS,请使用命令安装它:
#yum install xfsprogs
使用fdisk在块设备中创建一个新分区,然后使用mkfs.xfs命令在其上进行文件系统。
#mkfs.xfs <device>
这是一个示例输出,我的新创建分区是/dev/xvdc1:
[root@li1014-63 ~]# mkfs.xfs /dev/xvdc1 meta-data=/dev/xvdc1 isize=256 agcount=4, agsize=235008 blks = sectsz=4096 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=940032, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
如果设备分区已在其上有文件系统,则可以使用MKFS使用"-f"选项,并且我们希望通过编写它。
现在XFS分区已准备好安装。
安装XFS直截了当。
#mount <device> <mount-point>
这里<mount-point>是安装文件系统的本地安装点。
在非常大的文件系统(> 2 TB)上,安装在安装时使用"Inode64"选项,以便提高性能
[root@li1014-63 ~]# mount -o inode64 /dev/xvdc1 /test
验证安装是否成功
[root@li1014-63 ~]# mount /dev/xvdc1 on /test type xfs (rw,relatime,attr2,inode64,noquota)
如果要在重新启动中保留安装,请将以下行添加到/etc/fstab
/dev/xvdc1 /test xfs defaults 0 0
对于具有写入缓存的设备,XFS在功率损耗期间使用用于文件系统完整性的写障碍。
如果我们的设备没有编写缓存,我们可以在安装时使用"nobarrier"禁用此选项。
#mount -onobarrier
2)配额管理
配额是一种控制磁盘空间使用的方式。
它在超出分配空间时警告用户。
XFS允许软和硬限制执行。
可以在用户,组和项目级别设置,但组和项目配额是互斥的。
在安装文件系统时必须设置XFS配额。
还可以仅使用"Noenforce"选项来选择在不执行任何限制的情况下报告文件系统使用情况。
要设置用户配额,请使用"uquota"挂载XFS分区
[root@li1014-63 ~]# mount /dev/xvdc1 -o uquota /test
验证是否在分区上启用了用户配额:
[root@li1014-63 ~]# mount ..... /dev/xvdc1 on /test type xfs (rw,relatime,attr2,inode64,usrquota)
xfs_quota命令用于管理XFS文件系统上的配额。
现在,检查已挂载的XFS分区上的配额限制的存在:
[root@li1014-63 ~]# xfs_quota -x -c 'report -h' /test User quota on /test (/dev/xvdc1) Blocks User ID Used Soft Hard Warn/Grace ---------- -------------------------------- root 4K 0 0 00 [------]
我们可以设置软和硬体inode计数限制(Isoft,iHard)或者软块限制(Bsoft,Bhard)。
INORDER为用户'BNP设置块软限制,我发出以下命令:
[root@li1014-63 ~]# xfs_quota -xc 'limit bsoft=500m bnp' /test
验证新强加的限制:
[root@li1014-63 ~]# xfs_quota -xc 'report' /test User quota on /test (/dev/xvdc1) Blocks User ID Used Soft Hard Warn/Grace ---------- ------------------------------------------------- root 4 0 0 00 [--------] bnp 0 512000 0 00 [--------]
默认情况下,为用户设置限制。
如果要为组或者项目设置,则分别使用选项'-g'和'-p'。
同样,使用GQUOTA和PQUOTA在安装XF时启用组和项目配额。
#mount -o gquota
#mount /dev/device -o pquota /mount/point
3)文件系统扩展
XFS的一个很好的特征是即使安装时也可以长大。
为此,底层设备应该有足够的空间。
使用"fdisk",删除现有分区并使用所需的大小重新创建它。
然后,我们可以使用'xfs_growfs'命令来增长文件系统。
#xfs_growfs -D size
或者
#xfs_growfs -d
此处'-d'选项用于将文件系统大小提高到指定大小,其中"-d"将大小提高到基础设备支持的最大大小。
使用"-d"选项时,需要在块的数量方面指定大小。
要在块方面知道当前大小,我们可以使用"xfs_info"命令。
[root@li1014-63 ~]# xfs_info /test meta-data=/dev/xvdc1 isize=256 agcount=4, agsize=235008 blks = sectsz=4096 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=940032, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=2560, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
以下是示例输出,显示了"-d"选项的使用。
[root@li1014-63 ~]# xfs_growfs -d /test meta-data=/dev/xvdc1 isize=256 agcount=4, agsize=51200 blks = sectsz=4096 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=204800, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=1605, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 204800 to 262144
请注意,无法减少XFS文件系统的大小。
4)文件系统修复
为了解决问题,如果有的话,使用XFS文件系统,请使用'xfs_repair'命令。
它是一个非常有效的工具,可以修复具有许多inode的大文件系统。
在运行该实用程序之前,必须首先卸载已安装的XFS分区/卷。
#xfs_repair <device>
以下是在干净系统上运行XFS_REPAIR的示例输出:
root@li1014-63 ~]# xfs_repair /dev/xvdc1 Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - agno = 4 - agno = 5 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - agno = 4 - agno = 5 Phase 5 - rebuild AG headers and trees... - reset superblock... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify and correct link counts... done
请注意,即使文件系统分区未完成,此工具也不会在启动时运行。
5)文件系统暂停
"XFS_FREZE"实用程序可在XF中提供暂停(冻结)并恢复I/O到文件系统。
#xfs_freeze -f
访问文件系统的任何尝试都将挂起命令行直到恢复。
[root@li1014-63 ~]# xfs_freeze -f /test
我们可以使用"-u"选项来解冻它。
#xfs_freeze -u <mount-point>
[root@li1014-63 ~]# xfs_freeze -u /test
6)备份和恢复
备份文件系统数据并恢复它可以使用两个实用程序完成,即'xfsdump'和'xfsrestore'完成。
这些不是XFSPROG的一部分,需要使用"yum安装xfsdump"单独安装。
xfsdump支持增量备份,它使用转储级别。
转储级别有助于确定特定转储所属的基础级别。
选项'-l'用于指定转储级别(0-9)。
使用'-l'指定0具有在整个文件系统上执行完整备份的效果。
#xfsdump-l -f
其中转储目的地可以是常规文件或者磁带机。
拍摄文件系统的完整备份的示例输出:
[root@li1014-63 ~]# xfsdump -l 0 -f /dev/xvdc1 /backup xfsdump: using file dump (drive_simple) strategy xfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control ============================= dump label dialog ============================== please enter label for this dump session (timeout in 300 sec) -> FullBkup session label entered: "FullBkup" --------------------------------- end dialog -------------------------------- xfsdump: level 0 dump of li1014-63:/backup xfsdump: dump date: Wed Jun 17 05:50:00 2014 xfsdump: session id: bce65c00-cf52-4a79-902a-f9810f1cb78f xfsdump: session label: "FullBkup" xfsdump: ino map phase 1: constructing initial dump list xfsdump: ino map phase 2: skipping (no pruning necessary) xfsdump: ino map phase 3: skipping (only one dump stream) xfsdump: ino map construction complete xfsdump: estimated dump size: 20800 bytes ============================= media label dialog ============================= please enter label for media in drive 0 (timeout in 300 sec) -> Bkup1 media label entered: "Bkup1" --------------------------------- end dialog -------------------------------- xfsdump: creating dump session media file 0 (media 0, file 0) xfsdump: dumping ino map xfsdump: dumping directories xfsdump: dumping non-directory files xfsdump: ending media file xfsdump: media file size 21016 bytes xfsdump: dump size (non-dir files) : 0 bytes xfsdump: dump complete: 21 seconds elapsed xfsdump: Dump Summary: xfsdump: stream 0 /dev/xvdc1 OK (success) xfsdump: Dump Status: SUCCESS
增量备份将备份自上次级别转储以来已更改的文件。
另一方面,XFSRestore作为名称建议将从XFSDump生成的转储中还原文件系统。
为了恢复数据,我们需要将会话ID传递给xfsrestore命令。
可以使用'-i'选项获得此会话ID
#xfsrestore -I
[root@li1014-63 ~]# xfsrestore -I file system 0: fs id: 2e3d5f7c-1fde-4c2b-8a71-944e96d3c3a8 session 0: mount point: li1014-63:/backup device: li1014-63:/dev/xvdc2 time: Wed Jun 17 05:50:00 2014 session label: "FullBkup" session id: bce65c00-cf52-4a79-902a-f9810f1cb78f level: 0 resumed: NO subtree: NO streams: 1 stream 0: pathname: /dev/xvdc1 start: ino 0 offset 0 end: ino 1 offset 0 interrupted: NO media files: 1 media file 0: mfile index: 0 mfile type: data mfile size: 21016 mfile start: ino 0 offset 0 mfile end: ino 1 offset 0 media label: "Bkup1" media id: ed00b8a7-42fd-4fa3-80a4-31d3a42f03e6 xfsrestore: Restore Status: SUCCESS
现在使用会话ID和还原。
root@li1014-63 ~]# xfsrestore -f /dev/xvdc1 -S bce65c00-cf52-4a79-902a-f9810f1cb78f /backup xfsrestore: using file dump (drive_simple) strategy xfsrestore: version 3.1.4 (dump format 3.0) - type ^C for status and control xfsrestore: using online session inventory xfsrestore: searching media for directory dump xfsrestore: examining media file 0 xfsrestore: reading directories xfsrestore: 1 directories and 0 entries processed xfsrestore: directory post-processing xfsrestore: restore complete: 0 seconds elapsed xfsrestore: Restore Summary: xfsrestore: stream 0 /dev/xvdc1 OK (success) xfsrestore: Restore Status: SUCCESS
使用'-r'选项从增量备份恢复文件系统。
#xfsrestore -f -S -r
交互式使用XFSRestore(-i),还可以通过使用XFSRestore(-i)来添加,删除或者从转储中提取文件
#xfsrestore -f -i
示例输出显示交互式还原的用法:
[root@li1014-63 ~]# xfsrestore -f /dev/xvdc1 -i xfsrestore: using file dump (drive_simple) strategy xfsrestore: version 3.1.4 (dump format 3.0) - type ^C for status and control xfsrestore: searching media for dump xfsrestore: examining media file 0 xfsrestore: dump description: xfsrestore: hostname: li1014-63 xfsrestore: mount point: /backup xfsrestore: volume: /dev/xvdc2 xfsrestore: session time: Wed Jun 17 05:50:00 2014 xfsrestore: level: 0 xfsrestore: session label: "FullBkup" xfsrestore: media label: "Bkup1" xfsrestore: file system id: 2e3d5f7c-1fde-4c2b-8a71-944e96d3c3a8 xfsrestore: session id: bce65c00-cf52-4a79-902a-f9810f1cb78f xfsrestore: media id: ed00b8a7-42fd-4fa3-80a4-31d3a42f03e6 xfsrestore: using online session inventory xfsrestore: searching media for directory dump xfsrestore: reading directories xfsrestore: 1 directories and 0 entries processed xfsrestore: directory post-processing ========================== subtree selection dialog ========================== the following commands are available: pwd ls [ <path> ] cd [ <path> ] add [ <path> ] delete [ <path> ] extract quit help -> extract --------------------------------- end dialog -------------------------------- xfsrestore: restore complete: 8 seconds elapsed xfsrestore: Restore Summary: xfsrestore: stream 0 /dev/xvdc1 OK (success) xfsrestore: Restore Status: SUCCESS
更多的公用事业
XFS_FSR.
碎片整数已安装XFS文件系统。
可以在文件系统级别或者甚至在单个文件级别进行碎片整理
[root@li1014-63 backup]# xfs_fsr /test /test start inode=0
这里/测试是安装XFS文件系统的安装点。
碎片整理特定文件:
[root@li1014-63 /]# xfs_fsr /test/abc
XFS_BMP.
打印文件系统中文件使用的磁盘块映射。
[root@li1014-63 /]# xfs_bmap /test/abc /test/abc: 0: [0..7]: 88..95
xfs_info.
打印XFS文件系统信息
[root@li1014-63 /]# xfs_info /test meta-data=/dev/xvdc1 isize=256 agcount=6, agsize=51200 blks = sectsz=4096 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=1605, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
xfs_copy.
将整个XFS文件系统的内容复制到目标
XFS_DB.
调试XFS文件系统