zoukankan      html  css  js  c++  java
  • LVM与其在Linux上的实现

    参考资料:

    LVM详解-骏马金龙-博客园

    How to reduce the size of an LVM partition formatted with xfs filesystem on CentOS7?

    骏马兄的博文会相对深入一点,并且他是基于ext系列文件系统来演示扩容与缩容,而我使用的是xfs文件系统。

    基本概念

    传统的磁盘分区,在分区完之后,分区的大小无法改变,无法动态增加或减小分区的大小。

    为了解决这个问题,就诞生了LVM(Logical Volume Management)这种方法。

    在Linux中的LVM实现是基于Linux内核的设备映射(device mapper,dm)框架来实现的,该框架同时也是软RAID以及LVM快照的基础。对应的软件名称也叫LVM(Logical Volume Manager)。

    接下来介绍几个关于LVM的术语:

    • PV:Physical Volume,物理卷。即我们所熟知的磁盘分区,与普通的分区的最大不同点在于,作为PV的磁盘分区的类型必须是ID为8e的Linux LVM分区。
    • VG:Volume Group,卷组。由多个PV组合而成,类似于多个分区组合起来的“虚拟磁盘”(自称)。在创建VG的同时,也确定了该VG中的PE大小。
    • PE:Physical Extent,可以理解为物理存储单元。类似于文件系统中的block、chunk或者簇的概念。一般来说,创建完VG确定了PE大小后,就无法再修改了。默认为4MB。
    • LV:Logical Volume,逻辑卷。VG相当于虚拟磁盘,而LV则是基于虚拟磁盘所划分出的“虚拟分区”(自称),在创建LV的时候,可基于分区大小或者VG中的PE个数。LV创建好之后就像传统的分区那样可以格式化并使用了。
    • LE:Logical Extent,可以理解为逻辑存储单元。本质上是等同于PE的概念,当PV加入VG后,就被划分成多个PE。从VG中划分LV的过程,就是一个划分PE的过程,LV创建好之后,PE就被称之为LE了。PV中的PE和LV中的LE的映射关系,可通过“pvdisplay -m”来查看。

    LV的路径

    LV创建完毕后,其块设备路径为/dev/dm-N(N为一个数字),有2个字符链接文件指向它。

    /dev/mapper/VG_NAME-LV_NAME --> /dev/dm-N
    /dev/VG_NAME/LV_NAME --> /dev/dm-N

    图示

    图片来自网络,侵权请联系。

    实现

    环境

    CentOS 7.5

    系统自带lvm2程序包

    初步使用LVM

    首先为虚拟机添加一块磁盘,大小为7GB。创建3个分区类型为LVM的分区,分别是3GB、2GB和1GB。

    注意:磁盘的大小大于分区之和的大小,主要是担心可能因为换算等问题导致磁盘划分分区容量的时候出现不足的情况。

       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048     6293503     3145728   8e  Linux LVM
    /dev/sdb2         6293504    10487807     2097152   8e  Linux LVM
    /dev/sdb3        10487808    12584959     1048576   8e  Linux LVM

    将/dev/sdb1和/dev/sdb2这两个LVM格式创建为PV。/dev/sdb3保留,放在后面做扩容。

    [root@C7 ~]# pvcreate /dev/sdb{1,2}
      Physical volume "/dev/sdb1" successfully created.
      Physical volume "/dev/sdb2" successfully created.

    可通过pvs命令查看系统上已有PV的简要信息。

    [root@C7 ~]# pvs
      PV         VG     Fmt  Attr PSize   PFree
      /dev/sda2  centos lvm2 a--  <19.00g    0 
      /dev/sdb1         lvm2 ---    3.00g 3.00g
      /dev/sdb2         lvm2 ---    2.00g 2.00g

    留意,/dev/sda2这个PV是CentOS 7系列系统默认安装时候的创建的。

    可通过pvdisplay命令查看系统上已有PV的详细信息,默认显示所有,可以基于PV名称查看特定的PV。PV名称就是分区的路径名,例如“/dev/sdb1”这样。

    [root@C7 ~]# pvdisplay /dev/sdb{1,2}
      "/dev/sdb2" is a new physical volume of "2.00 GiB"
      --- NEW Physical volume ---
      PV Name               /dev/sdb2
      VG Name               # 由于我们还未将PV加入VG,因此该字段为空。
      PV Size               2.00 GiB
      Allocatable           NO # 未加入VG,不可分配。
      PE Size               0 # PV中的PE的大小,是在加入VG之后决定的,并且在VG创建后该VG的PE大小就无法修改了。同理,未加入VG,因此PE为0。
      Total PE              0
      Free PE               0
      Allocated PE          0
      PV UUID               OlFvnr-rarx-ebCa-pG3L-qJBe-V8d1-aYkXB2
       
      "/dev/sdb1" is a new physical volume of "3.00 GiB"
      --- NEW Physical volume ---
      PV Name               /dev/sdb1
      VG Name               
      PV Size               3.00 GiB
      Allocatable           NO
      PE Size               0   
      Total PE              0
      Free PE               0
      Allocated PE          0
      PV UUID               o7uiiy-kXEr-eZee-e0aP-cFKQ-dyjf-oQRvB9

    创建好PV之后,我们就可以创建VG,并将刚创建的两个PV加入该VG。

    [root@C7 ~]# vgcreate myvg /dev/sdb{1,2}
      Volume group "myvg" successfully created

    查看VG的简要和详细信息。

    [root@C7 ~]# vgs myvg
      VG   #PV #LV #SN Attr   VSize VFree
      myvg   2   0   0 wz--n- 4.99g 4.99g
    [root@C7 ~]# vgdisplay myvg
      --- Volume group ---
      VG Name               myvg
      System ID             
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  1
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                0
      Open LV               0
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               4.99 GiB
      PE Size               4.00 MiB # 默认的PE大小为4MB。
      Total PE              1278 # VG中总PE的个数,在划分LV的时候,可基于PE个数。
      Alloc PE / Size       0 / 0   
      Free  PE / Size       1278 / 4.99 GiB
      VG UUID               XKP0mV-zWAx-nscs-jXiT-jLxm-5MgE-aDU8fU

    当PV加入VG之后,再次查看PV的信息。

    [root@C7 ~]# pvs /dev/sdb{1,2}
      PV         VG   Fmt  Attr PSize  PFree 
      /dev/sdb1  myvg lvm2 a--  <3.00g <3.00g # PV加入VG后,应该会在PV中创建了一些元数据(metadata),因此这里的size都加上了小于号。
      /dev/sdb2  myvg lvm2 a--  <2.00g <2.00g
    [root@C7 ~]# pvdisplay /dev/sdb{1,2}
      --- Physical volume ---
      PV Name               /dev/sdb1
      VG Name               myvg
      PV Size               3.00 GiB / not usable 4.00 MiB
      Allocatable           yes 
      PE Size               4.00 MiB # PV加入VG后就有了PE的概念。
      Total PE              767
      Free PE               767
      Allocated PE          0
      PV UUID               o7uiiy-kXEr-eZee-e0aP-cFKQ-dyjf-oQRvB9
       
      --- Physical volume ---
      PV Name               /dev/sdb2
      VG Name               myvg
      PV Size               2.00 GiB / not usable 4.00 MiB
      Allocatable           yes 
      PE Size               4.00 MiB
      Total PE              511
      Free PE               511
      Allocated PE          0
      PV UUID               OlFvnr-rarx-ebCa-pG3L-qJBe-V8d1-aYkXB2

    将目前的VG的所有空间都创建为一个LV。

    [root@C7 ~]# lvcreate -L 5GB -n mylv myvg
      Volume group "myvg" has insufficient free space (1278 extents): 1280 required.

    基于size来创建LV失败,因为创建5GB的容量需要1280个PE(默认4MB),这个计算方式是1024进率。

    但是我们在创建分区时创建的这5GB,可能是按照1000进率的。这就像市面上销售的硬盘或者U盘,几乎都是按照1000进率来表示一样。

    在Linux的工具的使用中,当你使用5GB、5gb、5G和5g,它们可能有的表示1000进率,有的表示1024进率,这个就需要用户具体去查看每个工具的man手册了。

    而且分区/文件系统一般都会保留一部分空间给元数据存放。因此一般情况下,容量差不多即可,不需要太过于纠结。

    PS:网上也有说是“1024进制”,但是我觉得说“1024进率”可能更准确。

    既然无法基于size来创建,那我们就基于VG中的PE个数来创建了,使用全部的PE去创建一个LV。

    [root@C7 ~]# lvcreate -l 1278 -n mylv myvg
      Logical volume "mylv" created.

    查看LV信息。注意:查看LV的信息的时候,lvs和lvdisplay的命令参数应该是LV的路径(/dev/mapper/myvg-mylv或者/dev/myvg/mylv)或者VG的名称,而不是LV名称。

    [root@C7 ~]# lvs myvg
      LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      mylv myvg -wi-a----- 4.99g                                                    
    [root@C7 ~]# lvdisplay myvg
      --- Logical volume ---
      LV Path                /dev/myvg/mylv
      LV Name                mylv
      VG Name                myvg
      LV UUID                43nlG8-EGra-1jfQ-2K2n-3kxA-s5SW-aR1R3I
      LV Write Access        read/write
      LV Creation host, time C7, 2019-04-10 17:25:26 +0800
      LV Status              available
      # open                 0
      LV Size                4.99 GiB
      Current LE             1278 # 原本在VG中的PE,在分配给LV之后,就换了个名字叫LE了。
      Segments               2
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:2

    LV创建完毕后,通过“pvdisplay -m”查看PV中的PE和LV中的LE之间的映射关系。

    [root@C7 ~]# pvdisplay -m /dev/sdb{1,2}
      --- Physical volume ---
      PV Name               /dev/sdb1
      VG Name               myvg
      PV Size               3.00 GiB / not usable 4.00 MiB
      Allocatable           yes (but full)
      PE Size               4.00 MiB
      Total PE              767
      Free PE               0
      Allocated PE          767
      PV UUID               o7uiiy-kXEr-eZee-e0aP-cFKQ-dyjf-oQRvB9
       
      --- Physical Segments ---
      Physical extent 0 to 766:
        Logical volume    /dev/myvg/mylv
        Logical extents    0 to 766
       
      --- Physical volume ---
      PV Name               /dev/sdb2
      VG Name               myvg
      PV Size               2.00 GiB / not usable 4.00 MiB
      Allocatable           yes (but full)
      PE Size               4.00 MiB
      Total PE              511
      Free PE               0
      Allocated PE          511
      PV UUID               OlFvnr-rarx-ebCa-pG3L-qJBe-V8d1-aYkXB2
       
      --- Physical Segments ---
      Physical extent 0 to 510:
        Logical volume    /dev/myvg/mylv
        Logical extents    767 to 1277

    LVM设备路径查看。

    [root@C7 ~]# ls -l /dev/mapper/myvg-mylv 
    lrwxrwxrwx 1 root root 7 Apr 10 17:25 /dev/mapper/myvg-mylv -> ../dm-2
    [root@C7 ~]# ls -l /dev/myvg/mylv 
    lrwxrwxrwx 1 root root 7 Apr 10 17:25 /dev/myvg/mylv -> ../dm-2
    [root@C7 ~]# ls -l /dev/dm-2 
    brw-rw---- 1 root disk 253, 2 Apr 10 17:25 /dev/dm-2
    [root@C7 ~]# file /dev/dm-2
    /dev/dm-2: block special

    接下来,就可以将其格式化、挂载并使用、加入开机挂载了。

    [root@C7 ~]# mkfs -t xfs /dev/myvg/mylv
    ...
    省略
    ...
    [root@C7 ~]# mount /dev/myvg/mylv /lvm_mount_point/
    [root@C7 ~]# cat /etc/fstab
    ...
    /dev/mapper/myvg-mylv    /lvm_mount_point    xfs    defaults    0 0

    使用LVM扩容

    扩容是LVM中最常见的用法,也是为了解决传统磁盘分区容量耗尽的问题。

    扩容的原理是将VG中空闲的PE划分给LV,或者通过增加PV的方式增加VG中的空闲PE而后划分给LV。

    将此前剩余的分区/dev/sdb3创建为PV并加入VG。

    [root@C7 ~]# pvcreate /dev/sdb3
      Physical volume "/dev/sdb3" successfully created.
    [root@C7 ~]# vgextend myvg /dev/sdb3
      Volume group "myvg" successfully extended

    查看VG新增出的PE个数。

    [root@C7 ~]# vgdisplay myvg
      --- Volume group ---
      VG Name               myvg
      System ID             
      Format                lvm2
      Metadata Areas        3
      Metadata Sequence No  3
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                3
      Act PV                3
      VG Size               <5.99 GiB
      PE Size               4.00 MiB
      Total PE              1533
      Alloc PE / Size       1278 / 4.99 GiB
      Free  PE / Size       255 / 1020.00 MiB
      VG UUID               XKP0mV-zWAx-nscs-jXiT-jLxm-5MgE-aDU8fU

    将增加的PE全部扩展给此前创建的LV,即mylv。

    [root@C7 ~]# lvextend -l +255 /dev/myvg/mylv
      Size of logical volume myvg/mylv changed from 4.99 GiB (1278 extents) to <5.99 GiB (1533 extents).
      Logical volume myvg/mylv successfully resized.

    查看扩容后的LV。

    [root@C7 ~]# lvdisplay /dev/myvg/mylv 
      --- Logical volume ---
      LV Path                /dev/myvg/mylv
      LV Name                mylv
      VG Name                myvg
      LV UUID                43nlG8-EGra-1jfQ-2K2n-3kxA-s5SW-aR1R3I
      LV Write Access        read/write
      LV Creation host, time C7, 2019-04-10 17:25:26 +0800
      LV Status              available
      # open                 1
      LV Size                <5.99 GiB
      Current LE             1533
      Segments               3
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:2

    虽然LV已经扩容成功,但其实文件系统并没有扩容,即便是重新挂载。

    [root@C7 ~]# df -hT | grep "mylv"
    /dev/mapper/myvg-mylv   xfs       5.0G   33M  5.0G   1% /lvm_mount_point

    原因在于文件系统还未扩容,ext系列文件系统使用resize2fs命令,此处使用xfs文件系统,因此使用xfs_growfs。

    [root@C7 ~]# xfs_growfs /dev/mapper/myvg-mylv
    ...
    省略
    ...
    [root@C7 ~]# df -hT | grep "mylv"
    /dev/mapper/myvg-mylv   xfs       6.0G   33M  6.0G   1% /lvm_mount_point

    扩容除了可以使用原磁盘的剩余空间,也可以使用新的磁盘。

    后来我又创建了一块1GB的虚拟磁盘,整盘创建一个LVM分区,创建PV,加入VG,而后扩展LV,也是可以的。

    [root@C7 ~]# pvcreate /dev/sdc1
    [root@C7 ~]# vgextend myvg /dev/sdc1
    [root@C7 ~]# lvextend -l +255 /dev/myvg/mylv
    [root@C7 ~]# xfs_growfs /dev/myvg/mylv
    [root@C7 ~]# df -hT
    ...
    /dev/mapper/myvg-mylv   xfs       7.0G   33M  7.0G   1% /lvm_mount_point
    ...

    使用LVM缩容

    首先查看缩容前的LV的大小,方便之后对比。

    [root@C7 ~]# lvdisplay /dev/myvg/mylv 
      --- Logical volume ---
      LV Path                /dev/myvg/mylv
      LV Name                mylv
      VG Name                myvg
      LV UUID                43nlG8-EGra-1jfQ-2K2n-3kxA-s5SW-aR1R3I
      LV Write Access        read/write
      LV Creation host, time C7, 2019-04-10 17:25:26 +0800
      LV Status              available
      # open                 1
      LV Size                6.98 GiB
      Current LE             1788
      Segments               4
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:2

    确认承载于LV上的需要的文件的大小。在实验环境中只有一个521字节的文件(不足一个PE),因此只要缩容后的LV只要还有1个PE,那么文件就还是可用的。

    [root@C7 ~]# ls -lh /lvm_mount_point/fstab
    -rw-r--r-- 1 root root 521 Apr 10 17:35 /lvm_mount_point/fstab

    假设我们要缩容的容量刚好是/dev/sdb3和/dev/sdc1,查看其PV的PE数。

    [root@C7 ~]# pvdisplay /dev/sd{b3,c1} | grep -iE "pv name|pe"
      PV Name               /dev/sdb3
      PE Size               4.00 MiB
      Total PE              255
      Free PE               0
      Allocated PE          255
      PV Name               /dev/sdc1
      PE Size               4.00 MiB
      Total PE              255
      Free PE               0
      Allocated PE          255

    缩容与扩容的过程正好是相反的,我们首先需要对文件系统进行缩容操作。

    如果是ext系列的文件系统:

    1. 停止需要卸载的文件系统所提供的服务(例如nginx、MySQL等)。
    2. 使用umount命令卸载文件系统。
    3. 使用“e2fsck -f”强制检测文件系统。
    4. 使用resize2fs命令调整文件系统的容量。
    5. 使用lvreduce命令缩容LV的容量。其实到这里,LV的缩容就已经完成了,如果缩容的容量大于等于某个/某几个PV的话,可以考虑将PV从VG中释放出来。
    6. 使用pvdisplay命令查看PV中的PE是否完全为空闲状态。若否则使用pvmove命令将非空闲PE移出。
    7. 使用vgreduce命令将全空闲的PV移出VG,并使用pvremove命令删除其PV状态。

    本文所使用的文件系统是XFS。

    xfs文件系统不支持缩容(XFS文件系统的缺点),想实现类似缩容的功能,可以通过备份(xfsdump)和还原(xfsrestore)的方式。

    备份XFS文件系统。需要用户输入2个label,填写test即可。

    [root@C7 ~]# xfsdump -f /tmp/lvm_mount_point.xfsdump /lvm_mount_point
    xfsdump: using file dump (drive_simple) strategy
    xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control
    
     ============================= dump label dialog ==============================
    
    please enter label for this dump session (timeout in 300 sec)
     -> test
    session label entered: "test"
    
     --------------------------------- end dialog ---------------------------------
    
    xfsdump: level 0 dump of C7:/lvm_mount_point
    xfsdump: dump date: Wed Apr 17 14:19:47 2019
    xfsdump: session id: e2cfa0fa-d73d-4e94-8f55-cb3f2c581c08
    xfsdump: session label: "test"
    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: 25216 bytes
    
     ============================= media label dialog =============================
    
    please enter label for media in drive 0 (timeout in 300 sec)
     -> test
    media label entered: "test"
    
     --------------------------------- 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 22384 bytes
    xfsdump: dump size (non-dir files) : 1056 bytes
    xfsdump: dump complete: 58 seconds elapsed
    xfsdump: Dump Summary:
    xfsdump:   stream 0 /tmp/lvm_mount_point.xfsdump OK (success)
    xfsdump: Dump Status: SUCCESS

    在备份XFS文件系统的时候,必须保持挂载状态,如果先卸载再备份,会报错。

    xfsdump: ERROR: /dev/{dm-2,mapper/myvg-mylv,myvg/mylv} does not identify a file system

    如果备份的命令参数填写的是挂载点,并且在挂载点末尾加上了斜线的话,也会报这个错误,即“/lvm_mount_point/”会报错而“/lvm_mount_point”不会。

    备份完成后,卸载文件系统。

    [root@C7 ~]# umount /lvm_mount_point/

    缩容LV。

    [root@C7 ~]# lvreduce -l -510 /dev/myvg/mylv
      WARNING: Reducing active logical volume to 4.99 GiB.
      THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce myvg/mylv? [y/n]: y
      Size of logical volume myvg/mylv changed from 6.98 GiB (1788 extents) to 4.99 GiB (1278 extents).
      Logical volume myvg/mylv successfully resized.

    产生警告,意思就是说缩容可能会摧毁数据,由于缩容后的容量大于我们的数据容量,因此不会影响到我们的数据,这就是LVM缩容的优点。但是前提条件是文件系统有事先缩容,由于我们使用的是XFS文件系统,无法实现文件系统的缩容,所以其实这个操作,应该是破坏了数据了,后面也会看到。

    缩容完毕后,再次查看LV大小。

    [root@C7 ~]# lvdisplay /dev/myvg/mylv 
      --- Logical volume ---
      LV Path                /dev/myvg/mylv
      LV Name                mylv
      VG Name                myvg
      LV UUID                43nlG8-EGra-1jfQ-2K2n-3kxA-s5SW-aR1R3I
      LV Write Access        read/write
      LV Creation host, time C7, 2019-04-10 17:25:26 +0800
      LV Status              available
      # open                 0
      LV Size                4.99 GiB
      Current LE             1278
      Segments               2
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:2

    由于我们缩容的容量刚好为2个PV的PE数,并且这2个PV是最后两个加入VG的。因此缩容的PE正好是我们想要移除的2个PV,大大降低了缩容的难度。

    [root@C7 ~]# pvdisplay /dev/sd{b3,c1}
      --- Physical volume ---
      PV Name               /dev/sdb3
      VG Name               myvg
      PV Size               1.00 GiB / not usable 4.00 MiB
      Allocatable           yes 
      PE Size               4.00 MiB
      Total PE              255
      Free PE               255
      Allocated PE          0
      PV UUID               yazajZ-jt1o-rqLY-L0RB-ASzf-gBxT-smDm4j
       
      --- Physical volume ---
      PV Name               /dev/sdc1
      VG Name               myvg
      PV Size               1023.00 MiB / not usable 3.00 MiB
      Allocatable           yes 
      PE Size               4.00 MiB
      Total PE              255
      Free PE               255
      Allocated PE          0
      PV UUID               DURMQf-UVgh-Mjtz-MKqY-emaY-zWFl-QSWFKh

    注意:PV中的PE是否处于空闲状态,看的是PE是否被划入LV中,而不是看PE是否存储了数据。

    如果不是刚好的话,就需要用户使用pvmove命令将待移除的PV中的非空闲的PE移动到其他PV上去。

    现在就可以将这2个不要的PV移出VG,并删除PV。

    [root@C7 ~]# vgreduce myvg /dev/sdb3 /dev/sdc1
      Removed "/dev/sdb3" from volume group "myvg"
      Removed "/dev/sdc1" from volume group "myvg"
    [root@C7 ~]# pvremove /dev/sdb3 /dev/sdc1
      Labels on physical volume "/dev/sdb3" successfully wiped.
      Labels on physical volume "/dev/sdc1" successfully wiped.
    [root@C7 ~]# pvs
      PV         VG     Fmt  Attr PSize   PFree
      /dev/sda2  centos lvm2 a--  <19.00g    0 
      /dev/sdb1  myvg   lvm2 a--   <3.00g    0 
      /dev/sdb2  myvg   lvm2 a--   <2.00g    0

    既然LV已经缩容成功,那么就可以挂载使用了。

    由于我们使用的是XFS文件系统,该文件系统无法缩容,因此在缩容LV的时候,该文件系统的元数据已经受到破坏。

    [root@C7 ~]# mount /dev/myvg/mylv /lvm_mount_point/
    mount: /dev/mapper/myvg-mylv: can't read superblock

    不过上文也说了,我们是使用备份还原的机制来变相实现“缩容”。

    我们只需要重新格式化LV为XFS文件系统,挂载并使用文件系统备份文件还原即可。

    [root@C7 ~]# mkfs -t xfs /dev/myvg/mylv
    mkfs.xfs: /dev/myvg/mylv appears to contain an existing filesystem (xfs).
    mkfs.xfs: Use the -f option to force overwrite.
    [root@C7 ~]# mkfs -t xfs -f /dev/myvg/mylv
    ...
    省略
    ...
    [root@C7 ~]# mount /dev/myvg/mylv /lvm_mount_point/
    [root@C7 ~]# xfsrestore -f /tmp/lvm_mount_point.xfsdump /lvm_mount_point/
    xfsrestore: using file dump (drive_simple) strategy
    xfsrestore: version 3.1.7 (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: C7
    xfsrestore: mount point: /lvm_mount_point
    xfsrestore: volume: /dev/mapper/myvg-mylv
    xfsrestore: session time: Wed Apr 17 14:19:47 2019
    xfsrestore: level: 0
    xfsrestore: session label: "test"
    xfsrestore: media label: "test"
    xfsrestore: file system id: b7c9c46e-0d54-4ee3-a3e0-e1964799f47d
    xfsrestore: session id: e2cfa0fa-d73d-4e94-8f55-cb3f2c581c08
    xfsrestore: media id: 57ba6b11-c688-486c-9a73-0e09a1ecd287
    xfsrestore: using online session inventory
    xfsrestore: searching media for directory dump
    xfsrestore: reading directories
    xfsrestore: 1 directories and 1 entries processed
    xfsrestore: directory post-processing
    xfsrestore: restoring non-directory files
    xfsrestore: restore complete: 0 seconds elapsed
    xfsrestore: Restore Summary:
    xfsrestore:   stream 0 /tmp/lvm_mount_point.xfsdump OK (success)
    xfsrestore: Restore Status: SUCCESS
    [root@C7 ~]# ls -l /lvm_mount_point/
    total 4
    -rw-r--r-- 1 root root 521 Apr 10 17:35 fstab
    [root@C7 ~]# cat /lvm_mount_point/fstab 
    
    #
    # /etc/fstab
    # Created by anaconda on Thu Sep 27 15:49:45 2018
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/centos-root /                       xfs     defaults        0 0
    UUID=9d2e5bb3-799f-4056-a6bd-6ff2d7f55254 /boot                   xfs     defaults        0 0
    /dev/mapper/centos-swap swap                    swap    defaults        0 0
    /dev/mapper/myvg-mylv    /lvm_mount_point    xfs    defaults    0 0
  • 相关阅读:
    使用FolderBrowserDialog组件选择文件夹
    使用OpenFileDialog组件打开多个文
    使用OpenFileDialog组件打开对话框
    获取弹出对话框的相关返回值
    PAT 甲级 1139 First Contact (30 分)
    PAT 甲级 1139 First Contact (30 分)
    PAT 甲级 1138 Postorder Traversal (25 分)
    PAT 甲级 1138 Postorder Traversal (25 分)
    PAT 甲级 1137 Final Grading (25 分)
    PAT 甲级 1137 Final Grading (25 分)
  • 原文地址:https://www.cnblogs.com/alongdidi/p/lvm_and_linux.html
Copyright © 2011-2022 走看看