千家信息网

怎么对XFS进行备份、恢复、修复

发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这篇文章将为大家详细讲解有关怎么对XFS进行备份、恢复、修复,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。XFS是高性能文件系统,由于它的高性能,XFS成为了许多企
千家信息网最后更新 2025年11月10日怎么对XFS进行备份、恢复、修复

这篇文章将为大家详细讲解有关怎么对XFS进行备份、恢复、修复,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

XFS是高性能文件系统,由于它的高性能,XFS成为了许多企业级系统的首选,特别是有大量数据,需要结构化伸缩性和稳定性的。例如,RHEL/CentOS 7 和Oracle Linux将XFS作为默认文件系统,SUSE/openSUSE已经为XFS做了长期支持。

一、XFS文件系统的备份与恢复

XFS文件系统提供了整个分区备份的工具xfsdump供用户使用,用户可以在不借助第三方软件的情况下对XFS文件系统上的数据实施备份。

创建XFS分区及测试文件

[root@localhost ~]# ls /dev/sd*/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb[root@localhost ~]# fdisk /dev/sdbWelcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.Be careful before using the write command.Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x08a5199d  Device Boot      Start         End      Blocks   Id  SystemCommand (m for help): nPartition type:  p   primary (0 primary, 0 extended, 4 free)  e   extendedSelect (default p): pFirst sector (2048-41943039, default 2048):Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +1GPartition 1 of type Linux and of size 1 GiB is setCommand (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x08a5199d  Device Boot      Start         End      Blocks   Id  System/dev/sdb1            2048     2099199     1048576   83  LinuxCommand (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.[root@localhost ~]# partprobeWarning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.[root@localhost ~]# ls /dev/sd*/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1[root@localhost ~]# mkfs.xfs -f /dev/sdb1meta-data=/dev/sdb1              isize=512    agcount=4, agsize=65536 blks        =                       sectsz=512   attr=2, projid32bit=1        =                       crc=1        finobt=0, sparse=0data     =                       bsize=4096   blocks=262144, imaxpct=25        =                       sunit=0      swidth=0 blksnaming   =version 2              bsize=4096   ascii-ci=0 ftype=1log      =internal log           bsize=4096   blocks=2560, version=2        =                       sectsz=512   sunit=0 blks, lazy-count=1realtime =none                   extsz=4096   blocks=0, rtextents=0[root@localhost ~]# blkid /dev/sdb1      /dev/sdb1: UUID="61a5e59d-92d3-458d-ac09-7d945469cda6" TYPE="xfs"[root@localhost ~]# mkdir /file[root@localhost ~]# echo "/dev/sdb1 /file xfs defaults 0 0" >> /etc/fstab[root@localhost ~]# mount -a[root@localhost ~]# df -hFilesystem             Size  Used Avail Use% Mounted on/dev/mapper/rhel-root   17G  1.9G   16G  12% /devtmpfs               901M     0  901M   0% /devtmpfs                  912M     0  912M   0% /dev/shmtmpfs                  912M  8.7M  903M   1% /runtmpfs                  912M     0  912M   0% /sys/fs/cgroup/dev/sr0               3.8G  3.8G     0 100% /yum/dev/sda1             1014M  143M  872M  15% /boottmpfs                  183M     0  183M   0% /run/user/0/dev/sdb1             1014M   33M  982M   4% /file[root@localhost ~]# cd /file/[root@localhost file]# ls[root@localhost file]# touch file{1..100}[root@localhost file]# lsfile1    file16  file23  file30  file38  file45  file52  file6   file67  file74  file81  file89  file96file10   file17  file24  file31  file39  file46  file53  file60  file68  file75  file82  file9   file97file100  file18  file25  file32  file4   file47  file54  file61  file69  file76  file83  file90  file98file11   file19  file26  file33  file40  file48  file55  file62  file7   file77  file84  file91  file99file12   file2   file27  file34  file41  file49  file56  file63  file70  file78  file85  file92file13   file20  file28  file35  file42  file5   file57  file64  file71  file79  file86  file93file14   file21  file29  file36  file43  file50  file58  file65  file72  file8   file87  file94file15   file22  file3   file37  file44  file51  file59  file66  file73  file80  file88  file95

备份XFS分区

[root@localhost file]# mkdir /backup  [root@localhost file]# yum install -y xfsdump[root@localhost file]# xfsdump -f /backup/file.bak /file#利用xfsdump备份挂载点/file对应的分区xfsdump: using file dump (drive_simple) strategyxfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control============================= dump label dialog ==============================#输入dump会话标签please enter label for this dump session (timeout in 300 sec)-> file.baksession label entered: "file.bak"--------------------------------- end dialog ---------------------------------xfsdump: level 0 dump of localhost.localdomain:/filexfsdump: dump date: Thu Oct 31 22:16:02 2019xfsdump: session id: 02a1445f-5ff3-4518-ab2c-888d9e2a4c44xfsdump: session label: "file.bak"xfsdump: ino map phase 1: constructing initial dump listxfsdump: ino map phase 2: skipping (no pruning necessary)xfsdump: ino map phase 3: skipping (only one dump stream)xfsdump: ino map construction completexfsdump: estimated dump size: 52800 bytes============================= media label dialog =============================#输入媒体标签please enter label for media in drive 0 (timeout in 300 sec)-> filemedia label entered: "file"--------------------------------- end dialog ---------------------------------xfsdump: creating dump session media file 0 (media 0, file 0)xfsdump: dumping ino mapxfsdump: dumping directoriesxfsdump: dumping non-directory filesxfsdump: ending media filexfsdump: media file size 86544 bytesxfsdump: dump size (non-dir files) : 0 bytesxfsdump: dump complete: 27 seconds elapsedxfsdump: Dump Summary:xfsdump:   stream 0 /backup/file.bak OK (success)xfsdump: Dump Status: SUCCESS[root@localhost file]# ls /backup/#已经成功创建备份文件file.bak

恢复过程

[root@localhost file]# lsfile1    file16  file23  file30  file38  file45  file52  file6   file67  file74  file81  file89  file96file10   file17  file24  file31  file39  file46  file53  file60  file68  file75  file82  file9   file97file100  file18  file25  file32  file4   file47  file54  file61  file69  file76  file83  file90  file98file11   file19  file26  file33  file40  file48  file55  file62  file7   file77  file84  file91  file99file12   file2   file27  file34  file41  file49  file56  file63  file70  file78  file85  file92file13   file20  file28  file35  file42  file5   file57  file64  file71  file79  file86  file93file14   file21  file29  file36  file43  file50  file58  file65  file72  file8   file87  file94file15   file22  file3   file37  file44  file51  file59  file66  file73  file80  file88  file95[root@localhost file]# rm -rf *[root@localhost file]# ls[root@localhost file]# xfsrestore -f /backup/file.bak /filexfsrestore: using file dump (drive_simple) strategyxfsrestore: version 3.1.4 (dump format 3.0) - type ^C for status and controlxfsrestore: searching media for dumpxfsrestore: examining media file 0xfsrestore: dump description:xfsrestore: hostname: localhost.localdomainxfsrestore: mount point: /filexfsrestore: volume: /dev/sdb1xfsrestore: session time: Thu Oct 31 22:16:02 2019xfsrestore: level: 0xfsrestore: session label: "file.bak"xfsrestore: media label: "file"xfsrestore: file system id: 61a5e59d-92d3-458d-ac09-7d945469cda6xfsrestore: session id: 02a1445f-5ff3-4518-ab2c-888d9e2a4c44xfsrestore: media id: 2d1d9f33-dff3-4cfa-a2f6-bf65bd8f242bxfsrestore: using online session inventoryxfsrestore: searching media for directory dumpxfsrestore: reading directoriesxfsrestore: 1 directories and 100 entries processedxfsrestore: directory post-processingxfsrestore: restoring non-directory filesxfsrestore: restore complete: 0 seconds elapsedxfsrestore: Restore Summary:xfsrestore:   stream 0 /backup/file.bak OK (success)xfsrestore: Restore Status: SUCCESS[root@localhost file]# ls#已经成功恢复被删除的文件file1    file16  file23  file30  file38  file45  file52  file6   file67  file74  file81  file89  file96file10   file17  file24  file31  file39  file46  file53  file60  file68  file75  file82  file9   file97file100  file18  file25  file32  file4   file47  file54  file61  file69  file76  file83  file90  file98file11   file19  file26  file33  file40  file48  file55  file62  file7   file77  file84  file91  file99file12   file2   file27  file34  file41  file49  file56  file63  file70  file78  file85  file92file13   file20  file28  file35  file42  file5   file57  file64  file71  file79  file86  file93file14   file21  file29  file36  file43  file50  file58  file65  file72  file8   file87  file94file15   file22  file3   file37  file44  file51  file59  file66  file73  file80  file88  file95

二、XFS文件系统的检查和修复

创建XFS测试分区

[root@localhost file]# fdisk /dev/sdbWelcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.Be careful before using the write command.Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x08a5199d  Device Boot      Start         End      Blocks   Id  System/dev/sdb1            2048     2099199     1048576   83  LinuxCommand (m for help): nPartition type:  p   primary (1 primary, 0 extended, 3 free)  e   extendedSelect (default p): pPartition number (2-4, default 2):First sector (2099200-41943039, default 2099200):Using default value 2099200Last sector, +sectors or +size{K,M,G} (2099200-41943039, default 41943039): +1GPartition 2 of type Linux and of size 1 GiB is setCommand (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x08a5199d  Device Boot      Start         End      Blocks   Id  System/dev/sdb1            2048     2099199     1048576   83  Linux/dev/sdb2         2099200     4196351     1048576   83  LinuxCommand (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.WARNING: Re-reading the partition table failed with error 16: Device or resource busy.The kernel still uses the old table. The new table will be used atthe next reboot or after you run partprobe(8) or kpartx(8)Syncing disks.[root@localhost file]# partprobeWarning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.[root@localhost file]# ls /dev/sd*/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1  /dev/sdb2[root@localhost file]# mkfs.xfs /dev/sdb2meta-data=/dev/sdb2              isize=512    agcount=4, agsize=65536 blks        =                       sectsz=512   attr=2, projid32bit=1        =                       crc=1        finobt=0, sparse=0data     =                       bsize=4096   blocks=262144, imaxpct=25        =                       sunit=0      swidth=0 blksnaming   =version 2              bsize=4096   ascii-ci=0 ftype=1log      =internal log           bsize=4096   blocks=2560, version=2        =                       sectsz=512   sunit=0 blks, lazy-count=1realtime =none                   extsz=4096   blocks=0, rtextents=0

检查XFS文件系统,如果检查过程中发现问题将会列出

[root@localhost file]# xfs_repair -n /dev/sdb2Phase 1 - find and verify superblock...Phase 2 - using internal log       - zero log...       - scan filesystem freespace and inode maps...       - found root inode chunkPhase 3 - for each AG...       - scan (but don't clear) agi unlinked lists...       - process known inodes and perform inode discovery...       - agno = 0       - agno = 1       - agno = 2       - agno = 3       - 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 = 3No modify flag set, skipping phase 5Phase 6 - check inode connectivity...       - traversing filesystem ...       - traversal finished ...       - moving disconnected inodes to lost+found ...Phase 7 - verify link counts...No modify flag set, skipping filesystem flush and exiting.

自动检查并修复XFS文件系统

[root@localhost file]# xfs_repair /dev/sdb2        Phase 1 - find and verify superblock...Phase 2 - using internal log       - zero log...       - scan filesystem freespace and inode maps...       - found root inode chunkPhase 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       - 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 = 3Phase 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

关于"怎么对XFS进行备份、恢复、修复"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0