LVN与其在Linux上的实现

news/2024/11/13 1:30:28

参考资料:

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

 

转载于:https://www.cnblogs.com/alongdidi/p/lvm_and_linux.html


http://www.niftyadmin.cn/n/4072835.html

相关文章

dubbo的一次请求源码分析

调用某个服务首先会进入到动态代理。 InvokerInvocationHandler#invoke(Object proxy, Method method, Object[] args)public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {String methodName method.getName();Class<?>[] parameter…

matlab mwarray,C语言与matlab混合编程中mwArray的Get函数的简单用法解释

网上的通用示例&#xff1a;double data[4] {1.0, 2.0, 3.0, 4.0};double x;mwArray a(2, 2, mxDOUBLE_CLASS);a.SetData(data, 4);x a.Get(1,1); // x 1.0x a.Get(2, 1, 2); // x 3.0x a.Get(2, 2, 2); // x 4.0这个示例我就看得很蛋疼&#xff0c;八成是官方示例(笑)。…

软件外包的五个核心竞争力

国际金融危机的到来&#xff0c;使国内的软件外包企业是几家欢乐几家愁。为什么面对相同的下行市场&#xff0c;各企业的表现却不同呢&#xff1f;这就不得不谈谈企业的核心竞争力。只有搞清什么是自己的核心竞争力&#xff0c;才能从容面对市场风云变幻&#xff0c;使企业走上…

cordova 爬坑指南

cordova 爬坑指南 环境配置 先安装java&#xff0c;配置环境变量&#xff08;百度一下&#xff09;安装sdk&#xff08;建议安装android studio&#xff09;&#xff0c;这里需要要翻墙&#xff0c;或着用站长工具&#xff0c;修改android studio下载地址对应的ip&#xff0c;修…

php提交多个数据库,php – Magento单次提交中的多个数据库事务

我知道如何在zend框架中做到这一点$db->beginTransaction();try {$db->query(...);$db->query(...);$db->query(...);...$db->commit();} catch (Exception $e) {$db->rollBack();}但是我想用magento模型来做这件事$db->beginTransaction();try {$modelOn…

.net 面试题系列文章五(附答案)

18.请叙述属性与索引器的区别。 属性 索引器 通过名称标识。 通过签名标识。 通过简单名称或成员访问来访问。 通过元素访问来访问。 可以为静态成员或实例成员。 必须为实例成员。 属性的 get 访问器没有参数。 索引器的 get 访问器具有与索引器相同的形参表。 属性的 set 访问…

Scrapy 框架 中间件 代理IP 提高效率

中间件 拦截请求跟响应进行ua(User-Agent ) 伪装 代理 IP中间件位置: 引擎 和下载器 中间 的中间件 ( 下载中间件)引擎 跟 spider 中间 的中间件 ( 爬虫中间件)(不常用)下载中间件中的ua 伪装 下载中间件可以拦截调度器发送给下载器的请求。可以将请求的相应信息进行篡改&#…

计算农历的函数

没仔细看过&#xff0c;网上搜来的代码:-------------------------------------------------------------------------------- [本篇全文] [回复本文] [本篇作者: top ] [本篇人气: 10] 发信人: top (英语六级&&PHP), 信区: Programming 标 题: 阴阳历算法 发信站:…