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