怎么进行XFS文件系统的备份和恢复及修复
短信预约 -IT技能 免费直播动态提醒
怎么进行XFS文件系统的备份和恢复及修复,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
导读 | XFS文件系统是硅谷图形公司(Silicon Graphics Inc,简称SGI)开发的用于IRIX(一个UNIX操作系统)的文件系统,后将XFS移植到Linux操作系统上。XFS是高级日志文件系统,其特点极具伸缩性,同时也很健壮。2000年5月XFS通过GNU通用公共许可证移植到Linux系统上,通过十多年的不断修改已经成为一款非常成熟的文件系统。在多项针对XFS的性能测试上,XFS都取得了不俗的成绩,高并发环境下甚至已经超过ext4。 |
一、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
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341