Linux之LVM

        LVM卷管理本质上就是将多个存储资源整合,再划分的过程。可以将多个物理分区通过软件,整合在一起,让这些分区看起来就像是一个独立的大磁盘一样。LVM是基于OS层面,将OS识别到的物理磁盘(可以是真正的物理磁盘,也可以是经过以RAID卡虚拟化的逻辑磁盘〕进行组合,再分配的软件。物理的分区,首先要通过fdisk 将它的类型改为“8e”。

实践:
1、使用fdisk新建分区,然后通过partprobe重载分区表,避免重启系统

[root@BG-IAP ~]# fdisk /def/sdf
[root@BG-IAP ~]# partprobe /dev/sdf


2、创建pv

[root@BG-IAP ~]# pvcreate /dev/sdf1 /dev/sdf2
Physical volume "/dev/sdf1" successfully created.
Physical volume "/dev/sdf2" successfully created.


3、创建vg

[root@BG-IAP ~]# vgcreate datavg /dev/sdf{1,2}
Volume group "datavg" successfully created


4、创建lv

[root@BG-IAP ~]# lvcreate -n lv1 -L 1G datavg
Logical volume "lv1" created.


5、格式化lv

[root@BG-IAP ~]# mkfs.xfs /dev/datavg/lv1 
meta-data=/dev/datavg/lv1        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


6、挂载lv

[root@BG-IAP ~]# mkdir /mnt/data
[root@BG-IAP ~]# mount /dev/datavg/lv1 /mnt/data/


7、创建快照
      快照其实就是原数据的另一个访问路径,就是指向原数据的指针。快照卷的大小跟原卷数据的该变量和保存快照的时间有关。快照只能在本分区内有效。因为快照类似于inode,不能指向本分区之外的其他分区数据
       -s 跟上需要进行快照的lv 必选参数
       -n 指定快照卷的名称 必选项
       -L 指定快照卷的大小 -l(L) 指定快照卷的LE数量 必选参数
       -p 指定快照卷的读写权限 r|rw可选参数

[root@BG-IAP ~]# lvcreate -L 1G -n lv1_snapshot1 -p r -s /dev/datavg/lv1
Logical volume "lv1_snapshot1" created.
[root@BG-IAP ~]# mount /dev/datavg/lv1_snapshot1 /mnt/data_data/
mount: /dev/mapper/datavg-lv1_snapshot1 写保护,将以只读方式挂载
mount: 文件系统类型错误、选项错误、/dev/mapper/datavg-lv1_snapshot1 上有坏超级块、
       缺少代码页或助手程序,或其他错误

       有些情况下在 syslog 中可以找到一些有用信息- 请尝试
       dmesg | tail  这样的命令看看。
[root@BG-IAP ~]# umount /mnt/data_data/
[root@BG-IAP ~]# mount /dev/datavg/lv1_snapshot1 /mnt/data_data/
mount: /dev/mapper/datavg-lv1_snapshot1 写保护,将以只读方式挂载


注意:同一时间,原lv和快照只能有一个挂载
            快照建立的关键命令是lvcreate加上-s的参数。
             而且如果要更新快照内容只需将其卸载并删除卷再从新建立即可。

8、快照回滚恢复
      原来的origin_lv可以用lvconvert加上–merge参数恢复到做snapshot的状态:

[root@BG-IAP ~]# lvconvert --merge /dev/datavg/lv1_snapshot1 
  Delaying merge since origin is open.
  Merging of snapshot datavg/lv1_snapshot1 will occur on next activation of datavg/lv1.
[root@BG-IAP ~]# lvs
  LV                                             VG                                        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root                                           centos_cloud1                             -wi-ao----  3.63t                                                    
  swap                                           centos_cloud1                             -wi-ao----  4.00g                                                    
  osd-block-aa83d76d-71d9-4290-8923-f5aa517bec1a ceph-8fb0dfd7-1515-4935-87ad-ff690d64c9ab -wi-ao---- <3.64t                                                    
  osd-block-f598936a-a49c-4fc7-bf2b-ff0072b92a04 ceph-a5499ea8-fdfa-4737-8894-0342ab076cfc -wi-ao---- <3.64t                                                    
  lv1                                            datavg                                    Owi-aos---  1.00g     

      恢复之后,lv_snapshot1会被删除,使用lvs命令看不到。
      [root@BG-IAP ~]# mount /dev/datavg/lv1_snapshot1 /mnt/data_data/
      mount: /dev/mapper/datavg-lv1_snapshot1 写保护,将以只读方式挂载 
  
注意:用快照对逻辑卷进行恢复,注意恢复之前需要先将对应的逻辑卷卸载。恢复之后可以看到,原有的快照消失,即LVM的快照是一次性的。

[root@BG-IAP ~]# lvcreate -L 1G -n lv3 /dev/datavg
WARNING: xfs signature detected on /dev/datavg/lv3 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/datavg/lv3.
  Logical volume "lv3" created.
[root@BG-IAP ~]# mkfs.xfs -f /dev/datavg/lv3 
meta-data=/dev/datavg/lv3        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@BG-IAP ~]# mount /dev/datavg/lv3 /mnt/data
[root@BG-IAP ~]# echo 'test3' /mnt/data/test3
test3 /mnt/data/test3
[root@BG-IAP ~]# echo 'test3'> /mnt/data/test3
[root@BG-IAP ~]# umount /mnt/data
[root@BG-IAP ~]# lvcreate -L 1G -n lv3_snap -s /dev/datavg/lv3
  Logical volume "lv3_snap" created.
[root@BG-IAP ~]# mount /dev/datavg/lv3 /mnt/data
[root@BG-IAP ~]# cat /mnt/data/test3 
test3
[root@BG-IAP ~]# rm -rf /mnt/data/test3 
[root@BG-IAP ~]# umount /mnt/data
[root@BG-IAP ~]# lvconvert --merge /dev/datavg/lv3_snap 
  Merging of volume datavg/lv3_snap started.
  datavg/lv3: Merged: 100.00%
[root@BG-IAP ~]# mount /dev/datavg/lv3 /mnt/data
[root@BG-IAP ~]# cat /mnt/data/test3 
test3


9、回滚成功后再次创建快照成功。

[root@BG-IAP ~]# lvcreate -L 1G -n lv3_snap1 -s /dev/datavg/lv3
Logical volume "lv3_snap1" created.
不卸载lv,执行快照恢复   
[root@BG-IAP ~]# df
文件系统                            1K-块      已用       可用 已用% 挂载点
/dev/mapper/centos_cloud1-root 3899866616 108007704 3791858912    3% /
devtmpfs                         57639876         0   57639876    0% /dev
tmpfs                            57656852        88   57656764    1% /dev/shm
tmpfs                            57656852     19704   57637148    1% /run
/dev/mapper/datavg-lv3            1038336     32948    1005388    4% /mnt/data
[root@BG-IAP ~]# lvconvert --merge /dev/datavg/lv3_snap1 
  Delaying merge since origin is open.
  Merging of snapshot datavg/lv3_snap1 will occur on next activation of datavg/lv3.
[root@BG-IAP ~]# lvcreate -L 1G -n lv3_snap2 -s /dev/datavg/lv3
  Snapshots of an origin that has a merging snapshot are not supported.


注:由于没有卸载原生逻辑卷,就开始使用快照回滚,导致回滚失败,且造成原生逻辑卷回滚后就不能再创建快照。
错误提示:Snapshots of an origin that has a merging snapshot is not supported


10、将/dev/sdf3从data1vg挪动到datavg当中

[root@ZS-ISP ~]# vgsplit data1vg datavg /dev/sdf3
Existing volume group "datavg" successfully split from "data1vg"

11、创建LE数为2的lv

[root@ZS-ISP ~]# lvcreate -L 10G -i 2 -n lv22 /dev/datavg
  Using default stripesize 64.00 KiB.
  Logical volume "lv22" created.
[root@ZS-ISP ~]# lsblk /dev/sdf
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdf                       8:80   0  3.7T  0 disk 
├─sdf1                    8:81   0  100G  0 part 
│ ├─datavg-lv5-real     253:5    0    2G  0 lvm  
│ │ ├─datavg-lv5        253:4    0    2G  0 lvm  /mnt/data
│ │ └─datavg-lv5_snap   253:7    0    2G  0 lvm  
│ ├─datavg-lv5_snap-cow 253:6    0    1G  0 lvm  
│ │ └─datavg-lv5_snap   253:7    0    2G  0 lvm  
│ └─datavg-lv22         253:8    0   10G  0 lvm  
├─sdf2                    8:82   0  100G  0 part 
│ └─datavg-lv22         253:8    0   10G  0 lvm  
├─sdf3                    8:83   0  100G  0 part 
├─sdf4                    8:84   0  100G  0 part 
└─sdf5                    8:85   0  100G  0 part 

12、指定在vg(datavg)上使用在pv(sdf2)创建lv(lvvv)

[root@ZS-ISP ~]# lvcreate -L 10G -n lvvv datavg /dev/sdf2
  Logical volume "lvvv" created.
[root@ZS-ISP ~]# lsblk
NAME                                                                               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                                                                                  8:0    0  3.7T  0 disk 
├─sda1                                                                               8:1    0    1M  0 part 
├─sda2                                                                               8:2    0    1G  0 part /boot
└─sda3                                                                               8:3    0  3.7T  0 part 
  ├─centos_cloud1-root                                                             253:0    0  3.6T  0 lvm  /
  └─centos_cloud1-swap                                                             253:1    0    4G  0 lvm  [SWAP]
sdf                                                                                  8:80   0  3.7T  0 disk 
├─sdf1                                                                               8:81   0  100G  0 part 
│ ├─datavg-lv5-real                                                                253:5    0    2G  0 lvm  
│ │ ├─datavg-lv5                                                                   253:4    0    2G  0 lvm  
│ │ └─datavg-lv5_snap                                                              253:7    0    2G  0 lvm  
│ ├─datavg-lv5_snap-cow                                                            253:6    0    1G  0 lvm  
│ │ └─datavg-lv5_snap                                                              253:7    0    2G  0 lvm  
│ ├─datavg-lv22                                                                    253:8    0   10G  0 lvm  /mnt/data
│ └─datavg-lvv                                                                     253:9    0   10G  0 lvm  
├─sdf2                                                                               8:82   0  100G  0 part 
│ ├─datavg-lv22                                                                    253:8    0   10G  0 lvm  /mnt/data
│ └─datavg-lvvv                                                                    253:10   0   10G  0 lvm  
├─sdf3                                                                               8:83   0  100G  0 part 


13、指定在vg(datavg)上使用在pv(sdf3)对lv(lvvv)创建快照,即跨pv创建快照

[root@ZS-ISP ~]# lvcreate -L 1G -s -n lvvv_snap /dev/datavg/lvvv /dev/sdf3
  Logical volume "lvvv_snap" created.
[root@ZS-ISP ~]# lsblk
NAME                                                                               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                                                                                  8:0    0  3.7T  0 disk 
├─sda1                                                                               8:1    0    1M  0 part 
├─sda2                                                                               8:2    0    1G  0 part /boot
└─sda3                                                                               8:3    0  3.7T  0 part 
  ├─centos_cloud1-root                                                             253:0    0  3.6T  0 lvm  /
  └─centos_cloud1-swap                                                             253:1    0    4G  0 lvm  [SWAP]
sdf                                                                                  8:80   0  3.7T  0 disk 
├─sdf1                                                                               8:81   0  100G  0 part 
│ ├─datavg-lv5-real                                                                253:5    0    2G  0 lvm  
│ │ ├─datavg-lv5                                                                   253:4    0    2G  0 lvm  
│ │ └─datavg-lv5_snap                                                              253:7    0    2G  0 lvm  
│ ├─datavg-lv5_snap-cow                                                            253:6    0    1G  0 lvm  
│ │ └─datavg-lv5_snap                                                              253:7    0    2G  0 lvm  
│ ├─datavg-lv22                                                                    253:8    0   10G  0 lvm  /mnt/data
│ └─datavg-lvv                                                                     253:9    0   10G  0 lvm  
├─sdf2                                                                               8:82   0  100G  0 part 
│ ├─datavg-lv22                                                                    253:8    0   10G  0 lvm  /mnt/data
│ └─datavg-lvvv-real                                                               253:11   0   10G  0 lvm  
│   ├─datavg-lvvv                                                                  253:10   0   10G  0 lvm  
│   └─datavg-lvvv_snap                                                             253:13   0   10G  0 lvm  
├─sdf3                                                                               8:83   0  100G  0 part 
│ └─datavg-lvvv_snap-cow                                                           253:12   0    1G  0 lvm  
│   └─datavg-lvvv_snap                                                             253:13   0   10G  0 lvm  

14、跨vg创建快照失败

[root@ZS-ISP ~]# lvcreate -L 1G -s -n lvvv_snap1 /dev/datavg/lvvv /dev/sdf4
Physical Volume "/dev/sdf4" not found in Volume Group "datavg".

注:能够在同一个vg中,跨pv创建快照,但是不能夸vg创建快照。

15、使用dd实现跨vg拷贝lv

(1)在datavg上创建lv1,格式化后并挂载,然后写入数据

[root@ZS-ISP ~]# lvcreate -L 100M -n lv1 /dev/datavg
WARNING: xfs signature detected on /dev/datavg/lv1 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/datavg/lv1.
  Logical volume "lv1" created.
[root@ZS-ISP ~]# mkfs.xfs /dev/mapper/datavg-lv1
meta-data=/dev/mapper/datavg-lv1 isize=512    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@ZS-ISP ~]# mount /dev/mapper/datavg-lv1 /mnt/lv1
[root@ZS-ISP ~]# echo 'test'>/mnt/lv1/test
[root@ZS-ISP ~]# umount /mnt/lv1

(2)对lv1创建快照

[root@ZS-ISP ~]# lvcreate -s -L 100M -n lv1_snap /dev/datavg/lv1
  Logical volume "lv1_snap" created.

(3)对使用dd命令对快照生成img文件

[root@ZS-ISP ~]# dd if=/dev/mapper/datavg-lv1_snap of=/tmp/lv1_snap.img
记录了204800+0 的读入
记录了204800+0 的写出
104857600字节(105 MB)已复制,0.745093 秒,141 MB/秒
[root@ZS-ISP ~]# 


(4)在data1vg上创建lv2,格式化

[root@ZS-ISP ~]# lvcreate -L 100M -n lv2 /dev/data1vg
WARNING: xfs signature detected on /dev/data1vg/lv2 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/data1vg/lv2.
  Logical volume "lv2" created.
[root@ZS-ISP ~]# mkfs.xfs /dev/mapper/data1vg-lv2 
meta-data=/dev/mapper/data1vg-lv2 isize=512    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

(5)使用dd命令把img文件dd到lv2上

[root@ZS-ISP ~]# dd if=/tmp/lv1_snap.img of=/dev/mapper/data1vg-lv2
记录了204800+0 的读入
记录了204800+0 的写出
104857600字节(105 MB)已复制,2.62914 秒,39.9 MB/秒
[root@ZS-ISP ~]# mount /dev/mapper/data1vg-lv2 /mnt/lv2
[root@ZS-ISP ~]# df /mnt/lv2
文件系统                1K-块  已用  可用 已用% 挂载点
/dev/mapper/data1vg-lv2 98980  5300 93680    6% /mnt/lv2
[root@ZS-ISP ~]# cd /mnt/lv2
[root@ZS-ISP lv2]# ls
test
[root@ZS-ISP lv2]# cat test 
test


注意:使用dd命令可以实现跨vg,拷贝lv

你可能感兴趣的:(Linux,LVM,快照)