zoukankan      html  css  js  c++  java
  • 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/sdb
    Welcome 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): p
    
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x08a5199d
    
       Device Boot      Start         End      Blocks   Id  System
    
    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    First sector (2048-41943039, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +1G
    Partition 1 of type Linux and of size 1 GiB is set
    
    Command (m for help): p
    
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x08a5199d
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048     2099199     1048576   83  Linux
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    [root@localhost ~]# partprobe
    Warning: 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/sdb1
    meta-data=/dev/sdb1              isize=512    agcount=4, agsize=65536 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=262144, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =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 -h
    Filesystem             Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root   17G  1.9G   16G  12% /
    devtmpfs               901M     0  901M   0% /dev
    tmpfs                  912M     0  912M   0% /dev/shm
    tmpfs                  912M  8.7M  903M   1% /run
    tmpfs                  912M     0  912M   0% /sys/fs/cgroup
    /dev/sr0               3.8G  3.8G     0 100% /yum
    /dev/sda1             1014M  143M  872M  15% /boot
    tmpfs                  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]# ls
    file1    file16  file23  file30  file38  file45  file52  file6   file67  file74  file81  file89  file96
    file10   file17  file24  file31  file39  file46  file53  file60  file68  file75  file82  file9   file97
    file100  file18  file25  file32  file4   file47  file54  file61  file69  file76  file83  file90  file98
    file11   file19  file26  file33  file40  file48  file55  file62  file7   file77  file84  file91  file99
    file12   file2   file27  file34  file41  file49  file56  file63  file70  file78  file85  file92
    file13   file20  file28  file35  file42  file5   file57  file64  file71  file79  file86  file93
    file14   file21  file29  file36  file43  file50  file58  file65  file72  file8   file87  file94
    file15   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) strategy
    xfsdump: 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.bak
    session label entered: "file.bak"
    
     --------------------------------- end dialog ---------------------------------
    
    xfsdump: level 0 dump of localhost.localdomain:/file
    xfsdump: dump date: Thu Oct 31 22:16:02 2019
    xfsdump: session id: 02a1445f-5ff3-4518-ab2c-888d9e2a4c44
    xfsdump: session label: "file.bak"
    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: 52800 bytes
    
     ============================= media label dialog =============================
    #输入媒体标签
    please enter label for media in drive 0 (timeout in 300 sec)
     -> file
    media label entered: "file"
    
     --------------------------------- 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 86544 bytes
    xfsdump: dump size (non-dir files) : 0 bytes
    xfsdump: dump complete: 27 seconds elapsed
    xfsdump: Dump Summary:
    xfsdump:   stream 0 /backup/file.bak OK (success)
    xfsdump: Dump Status: SUCCESS
    [root@localhost file]# ls /backup/
    #已经成功创建备份文件
    file.bak
    
    恢复过程
    [root@localhost file]# ls
    file1    file16  file23  file30  file38  file45  file52  file6   file67  file74  file81  file89  file96
    file10   file17  file24  file31  file39  file46  file53  file60  file68  file75  file82  file9   file97
    file100  file18  file25  file32  file4   file47  file54  file61  file69  file76  file83  file90  file98
    file11   file19  file26  file33  file40  file48  file55  file62  file7   file77  file84  file91  file99
    file12   file2   file27  file34  file41  file49  file56  file63  file70  file78  file85  file92
    file13   file20  file28  file35  file42  file5   file57  file64  file71  file79  file86  file93
    file14   file21  file29  file36  file43  file50  file58  file65  file72  file8   file87  file94
    file15   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 /file
    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: localhost.localdomain
    xfsrestore: mount point: /file
    xfsrestore: volume: /dev/sdb1
    xfsrestore: session time: Thu Oct 31 22:16:02 2019
    xfsrestore: level: 0
    xfsrestore: session label: "file.bak"
    xfsrestore: media label: "file"
    xfsrestore: file system id: 61a5e59d-92d3-458d-ac09-7d945469cda6
    xfsrestore: session id: 02a1445f-5ff3-4518-ab2c-888d9e2a4c44
    xfsrestore: media id: 2d1d9f33-dff3-4cfa-a2f6-bf65bd8f242b
    xfsrestore: using online session inventory
    xfsrestore: searching media for directory dump
    xfsrestore: reading directories
    xfsrestore: 1 directories and 100 entries processed
    xfsrestore: directory post-processing
    xfsrestore: restoring non-directory files
    xfsrestore: restore complete: 0 seconds elapsed
    xfsrestore: 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  file96
    file10   file17  file24  file31  file39  file46  file53  file60  file68  file75  file82  file9   file97
    file100  file18  file25  file32  file4   file47  file54  file61  file69  file76  file83  file90  file98
    file11   file19  file26  file33  file40  file48  file55  file62  file7   file77  file84  file91  file99
    file12   file2   file27  file34  file41  file49  file56  file63  file70  file78  file85  file92
    file13   file20  file28  file35  file42  file5   file57  file64  file71  file79  file86  file93
    file14   file21  file29  file36  file43  file50  file58  file65  file72  file8   file87  file94
    file15   file22  file3   file37  file44  file51  file59  file66  file73  file80  file88  file95
    
    二、XFS文件系统的检查和修复
    创建XFS测试分区
    [root@localhost file]# fdisk /dev/sdb
    Welcome 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): p
    
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x08a5199d
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048     2099199     1048576   83  Linux
    
    Command (m for help): n
    Partition type:
       p   primary (1 primary, 0 extended, 3 free)
       e   extended
    Select (default p): p
    Partition number (2-4, default 2): 
    First sector (2099200-41943039, default 2099200): 
    Using default value 2099200
    Last sector, +sectors or +size{K,M,G} (2099200-41943039, default 41943039): +1G
    Partition 2 of type Linux and of size 1 GiB is set
    
    Command (m for help): p
    
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x08a5199d
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048     2099199     1048576   83  Linux
    /dev/sdb2         2099200     4196351     1048576   83  Linux
    
    Command (m for help): w
    The 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 at
    the next reboot or after you run partprobe(8) or kpartx(8)
    Syncing disks.
    [root@localhost file]# partprobe
    Warning: 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/sdb2
    meta-data=/dev/sdb2              isize=512    agcount=4, agsize=65536 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=262144, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    
    检查XFS文件系统,如果检查过程中发现问题将会列出
    [root@localhost file]# xfs_repair -n /dev/sdb2
    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 (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 = 3
    No modify flag set, skipping phase 5
    Phase 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 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
            - 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
    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
  • 相关阅读:
    剑指Offer(Java版)第六十七题:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。 例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口, 他们的最大值分别为{4,4,6,6,6,5}。
    剑指Offer(Java版)第六十六题:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值, 那么中位数就是所有数值排序之后位于中间的数值。 如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。
    剑指Offer(Java版)第六十五题:给定一棵二叉搜索树,请找出其中的第k小的结点。 例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
    剑指Offer(Java版)第六十四题:请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。
    剑指Offer(Java版)第六十三题:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印, 第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
    剑指Offer(Java版)第六十二题:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。 注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
    剑指Offer(Java版)第六十一题:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点, 重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
    剑指Offer(Java版)第六十题:请实现一个函数用来找出字符流中第一个只出现一次的字符。 例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。 当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
    剑指Offer(Java版)第五十九题:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
    【记】本地远程连接VM VirtualBox中虚拟机Centos6的数据库MySQL
  • 原文地址:https://www.cnblogs.com/linuxprobe/p/13557249.html
Copyright © 2011-2022 走看看