+++++++lvm2基本应用,扩展及缩减实现
LVM2
逻辑卷管理器第二版,Logical Volume Manager Version 2,将多个底层设备组织成一个单一的逻辑设备。
1、纯软件实现的虚拟层次上的软设备lvm2
2、磁盘损坏时,数据恢复困难。人为损坏数据,恢复困难。
一、LVM原理
PV(物理卷):在任何块设备(分区、RAID、磁盘)之上,附加一层元数据。
**在删除PV前,先将要移除PV上的数据移动至其他PV之上**
VG(卷组):在PV的存储空间中,更低层次上划分多个相同大小的PE,将所有PE组合成一个逻辑上的层次VG。
1、可动态扩展或缩减VG中PV的数量
2、类似于扩展分区,不能直接格式化使用。
3、PE只有在VG创建后才会出现在PV中,其大小由创建时指定。默认为4M
LV(逻辑卷):在逻辑层次的VG之上,划分VG为大小相同的PE,组合不同数量的PE为LV。
1、可动态扩展或缩减LV的大小,或 LV中PE的数量,即可跨越多个PV。
2、可以直接格式化并挂载使用。
3、LE只有在LV创建后才会出现在VG中,其大小由创建时指定。默认为1280
快照:在LV之上实现的。创建快照后,将创建一个监控对原卷中的元数据进行瞬间扫描(为了避免元数据备份的时间不一致),当文件任何内容改变时,元数据均会改变。在元数据变化之前,将变化的数据备份在于快照空间中。访问快照时,变化的部分在快照中,没有变化的部分在于原卷中。
1、快照是另一个路径指向与原卷相同的Inode
2、创建快照备份,只是对创建快照那一刻原卷内的所有数据进行备份,之后新加入的内容不会进行备份,需要用到(增量备份或差异备份)
3、快照的大小取决于:原卷存活的时间内数据变化量。最大大小为原卷大小
4、快照卷的路径:跟原卷在同一个卷组中。
**备份:数据序列化的过程,将文件和数据抽象为丝状,才能被线缆所承载。
**序列化:将特定数据组织结构转换成流式化的数据,且能够还原成原来的样子。
***逻辑卷的扩展和收缩
逻辑卷分为内层和外层:内存为使用的文件系统大小,外层为逻辑空间大小。
1、如果要扩展时,先扩展外层,后扩展内层。
1、如果要缩减时,先缩减内层,后缩减外层。
二、LVM2的实现
LV是内核中dm(device mapper)模块实现的功能之一
1、实现RAID:可将多个底层设备组织成一个设备
2、实现逻辑卷
3、实现多路径
用户空间的程序:用户不能直接操作内核中的模块:
1、程序员通过API接口
2、通过程序员写的程序调用内核中的模块
创建后逻辑卷的路径(lvpath)
原始路径:/dev/dm-#
其链接文件有:
1)/dev/mapper/VGNAME-LVNAME
2)/dev/VGNAME/LVNAME
三、LVM2在CentOS 6上的实现
1、物理卷管理
创建:pvcreate [<partition/raid/disk>]...
显示:pvs ,pvdisplay
删除:pvremove [<partition/raid/disk>]
2、卷组管理
创建: vgcreate VGNAME [<partition/raid/disk>]...
显示: vgs,vgdisplay
扩展: vgextend VGNAME [<partition/raid/disk>]
缩减:vgreduce VGNAME [<partition/raid/disk>] **缩减前,pvmove <partition/disk/raid>
删除:vgremove VGNAME [<partition/raid/disk>]
3、逻辑卷管理
创建: lvcreate -L #[KMGTE] -n LVNAME VGNAME
-L #[KMGTE],-L指定创建逻辑卷的大小,单位有K/M/G/T/E
-n LVNAME ,-n指定逻辑卷的名字
显示: lvs ,lvdisplay
扩展:
mount lvpath MOUNT_POINT
lvextend -L [+]#[KMGTE] lvpath
让逻辑卷大小扩展: # 扩展后的具体大小. +# 原来的大小加上由#指定的值即为扩展后的值
resize2fs lvpath
让文件系统扩展至逻辑卷空间大小
缩减:
umount {lvpath|MOUNT_POINT}
e2fsck -f lvpath
resize2fs lvpath #[KMGTE]
让文件系统缩减至指定大小
lvreduce -L [-]#[KMGTE] lvpath
让逻辑卷大小缩减: # 缩减后的具体大小. -# 原来的大小减去由#指定的值即为缩减后的值
mount lvpath MOUNT_POINT
df -lh
删除: lvremove lvpath
快照:lvcreate -L #[KMGTE] -s -n lv_snap_NAME -p r lvpath
-s 指定原卷
-p r 指明快照卷的权限,r:只读.rw:可读可写.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
***查看当前系统的版本** # cat /etc/centos-release
1
2
|
[[email protected] ~] # cat /etc/centos-release
CentOS release 6.9 (Final) |
使用LVM2的准备:分区ID为82
1
2
3
4
5
|
[[email protected] ~] # fdisk /dev/sdc
/dev/sdc1 1 6527 52428096 5 Extended
/dev/sdc5 1 1306 10490382 8e Linux LVM
/dev/sdc6 1307 3265 15735636 8e Linux LVM
/dev/sdc7 3266 5877 20980858+ 8e Linux LVM
|
1、物理卷管理
1)创建物理卷
1
2
3
4
|
[[email protected] ~] # pvcreate /dev/sdc{5,6,7}
Physical volume "/dev/sdc5" successfully created
Physical volume "/dev/sdc6" successfully created
Physical volume "/dev/sdc7" successfully created
|
2)显示Pv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
1/显示所有PV的简要描述信息 [[email protected] ~] # pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 myvg lvm2 a--u 97.65g 17.57g
/dev/sdc5 lvm2 ---- 10.00g 10.00g
/dev/sdc6 lvm2 ---- 15.01g 15.01g
/dev/sdc7 lvm2 ---- 20.01g 20.01g
[[email protected] ~] #
2/显示所有PV的详细属性信息 [[email protected] ~] # pvdisplay
3/显示指定PV的详细属性信息 [[email protected] ~] # pvdisplay /dev/sdc5
"/dev/sdc5" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc5 ##
VG Name ##
PV Size 10.00 GiB ##
Allocatable NO ## NO当前查看的PE没有加入至卷组中,不能分配其中的PE。YES 表示当前查看的PVNAME已经加入至VG中,且可分配其中的PE。
PE Size 0 ##
Total PE 0
Free PE 0
Allocated PE 0
PV UUID aIUY10-QgvL-D2lt-f3J9-3tPb-PXpr-P3bqvP
[[email protected] ~] #
|
3)移除物理卷
1
2
3
4
5
|
[[email protected] ~] # pvremove /dev/sdc{5,6,7}
Labels on physical volume "/dev/sdc5" successfully wiped
Labels on physical volume "/dev/sdc6" successfully wiped
Labels on physical volume "/dev/sdc7" successfully wiped
[[email protected] ~] #
|
2、卷组管理
1)创建: vgcreate VGNAME [<partition/raid/disk>]...
1
2
3
4
5
6
7
8
9
10
|
1、查看已有的VG的名字,避免新建立的VG名会和原有VG名冲突 [[email protected] ~] # vgs
VG #PV #LV #SN Attr VSize VFree
myvg 1 5 0 wz--n- 97.65g 17.57g
2、创建VG,名为VG0 [[email protected] ~] # vgcreate vg0 /dev/sdc{5,6,7}
Volume group "vg0" successfully created
[[email protected] ~] #
3、查看是否创建成功 [[email protected] ~] # vgs
|
2)显示: vgs,vgdisplay
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
1、简要信息 [[email protected] ~] # vgs
VG #PV #LV #SN Attr VSize VFree
myvg 1 5 0 wz--n- 97.65g 17.57g
vg0 3 0 0 wz--n- 45.01g 45.01g ## 组合pv所有的空间
[[email protected] ~] #
2、所有信息 [[email protected] ~] # vgdisplay
3、指定vg信息显示 [[email protected] ~] # vgdisplay vg0
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 3
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 3
Act PV 3
VG Size 45.01 GiB
PE Size 4.00 MiB ## 默认PE大小
Total PE 11523 ## 总PE个数
Alloc PE / Size 0 / 0
Free PE / Size 11523 / 45.01 GiB ## 空闲PE数
VG UUID HNyUPI-MsLO-od5j-JBFx-is6S-u9Dl-HiOWr1
[[email protected] ~] #
****注意创建PE后,显示PV的详细属性信息中才会有PE相关的信息**** [[email protected] ~] # pvdisplay /dev/sdc5
--- Physical volume ---
PV Name /dev/sdc5
VG Name vg0 ## 加入至vg0组中
PV Size 10.00 GiB / not usable 4.51 MiB ## 10G大小
Allocatable yes ## 表示当前查看的/dev/sdc5已经加入至vg0中,且可分配其中的PE。
PE Size 4.00 MiB ## 默认PE大小
Total PE 2560
Free PE 2560
Allocated PE 0
PV UUID aIUY10-QgvL-D2lt-f3J9-3tPb-PXpr-P3bqvP
[[email protected] ~] #
|
3) 扩展: vgextend VGNAME [<partition/raid/disk>]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
1、查看vg0大小 [[email protected] ~] # vgs
VG #PV #LV #SN Attr VSize VFree
myvg 1 5 0 wz--n- 97.65g 17.57g
vg0 3 0 0 wz--n- 45.01g 45.01g ## 45G
2、准备空闲pv
[[email protected] ~] # pvcreate /dev/sdc8
Physical volume "/dev/sdc8" successfully created
3、扩展 [[email protected] ~] # vgextend vg0 /dev/sdc8
Volume group "vg0" successfully extended
4、查看vg0大小 [[email protected] ~] # vgs
VG #PV #LV #SN Attr VSize VFree
myvg 1 5 0 wz--n- 97.65g 17.57g
vg0 4 0 0 wz--n- 49.99g 49.99g ## 49.99G
|
4) 缩减:vgreduce VGNAME [<partition/raid/disk>]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
1、查看vg0大小 [[email protected] ~] # vgs
VG #PV #LV #SN Attr VSize VFree
myvg 1 5 0 wz--n- 97.65g 17.57g
vg0 4 0 0 wz--n- 49.99g 49.99g ## 49.99G
2、将要移除的pv中的数据移动至其他pv上 [[email protected] ~] # pvmove /dev/sdc8
No data to move for vg0
[[email protected] ~] #
3、缩减 [[email protected] ~] # vgreduce vg0 /dev/sdc8
Removed "/dev/sdc8" from volume group "vg0"
4、查看大小 [[email protected] ~] # vgs
VG #PV #LV #SN Attr VSize VFree
myvg 1 5 0 wz--n- 97.65g 17.57g
vg0 3 0 0 wz--n- 45.01g 45.01g ##45G
[[email protected] ~] #
|
5)删除:vgremove VGNAME [<partition/raid/disk>]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
1、查看vg0的空间 [[email protected] ~] # vgs
VG #PV #LV #SN Attr VSize VFree
myvg 1 5 0 wz--n- 97.65g 17.57g
vg0 3 0 0 wz--n- 45.01g 45.01g
2、移除vg [[email protected] ~] # vgremove vg0
Volume group "vg0" successfully removed
3、查看vg的简要信息 [[email protected] ~] # vgs
VG #PV #LV #SN Attr VSize VFree
myvg 1 5 0 wz--n- 97.65g 17.57g
|
3、逻辑卷管理
创建: lvcreate -L #[KMGTE] -n LVNAME VGNAME
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
1)、查看lv名字,避免创建的名字与之冲突 [[email protected] ~] # lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_home myvg -wi-ao---- 4.88g
lv_root myvg -wi-ao---- 48.83g
lv_swap myvg -wi-ao---- 1.95g
lv_usr myvg -wi-ao---- 14.65g
lv_var myvg -wi-ao---- 9.77g
2)、查看vg的空闲空间的大小,确认可以分配给LV的空间 [[email protected] ~] # vgs
VG #PV #LV #SN Attr VSize VFree
myvg 1 5 0 wz--n- 97.65g 17.57g
vg0 3 0 0 wz--n- 45.01g 45.01g ## 空闲45G
3)、创建lv [[email protected] ~] # lvcreate -L 10G -n mylv vg0
Logical volume "mylv" created.
4)、查看创建的lv [[email protected] ~] # lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_home myvg -wi-ao---- 4.88g
lv_root myvg -wi-ao---- 48.83g
lv_swap myvg -wi-ao---- 1.95g
lv_usr myvg -wi-ao---- 14.65g
lv_var myvg -wi-ao---- 9.77g
mylv vg0 -wi-a----- 10.00g ## 空闲10G
|
显示: lvs ,lvdisplay
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
1、显示lv简要信息 [[email protected] ~] # lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_home myvg -wi-ao---- 4.88g
lv_root myvg -wi-ao---- 48.83g
lv_swap myvg -wi-ao---- 1.95g
lv_usr myvg -wi-ao---- 14.65g
lv_var myvg -wi-ao---- 9.77g
mylv vg0 -wi-a----- 10.00g
2、显示某个lv的详细信息 [[email protected] ~] # lvdisplay /dev/mapper/vg0-mylv
--- Logical volume ---
LV Path /dev/vg0/mylv ##lvpath
LV Name mylv
VG Name vg0
LV UUID faTCWz-2P0e-qy9q-pk8T-mdAL-HycR-4T9lQF
LV Write Access read /write
LV Creation host, time localhost.localdomain, 2017-08-12 17:30:42 +0800
LV Status available
# open 0
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:5
[[email protected] ~] #
|
扩展:
1
2
3
4
5
6
|
1、格式化,挂载 2、查看文件系统可用空间 3、复制文件至LV中,并查看文件 4、扩展 5、查看文件系统可用空间 6、查看文件,验证文件是否损坏 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
1、格式化,挂载 1)、格式化 [[email protected] ~] # mke2fs -t ext4 -b 1024 -L 'Spring' -m 3 /dev/vg0/mylv
2)、挂载 [[email protected] ~] # install -d /Spring_dir
[[email protected] ~] # mount -L Spring /Spring_dir
3)、验证挂载 [[email protected] ~] # ls -l /Spring_dir
总用量 12 drwx------ 2 root root 12288 8月 12 17:37 lost+found [[email protected] ~] # mount | fgrep pring
/dev/mapper/vg0-mylv on /Spring_dir type ext4 (rw)
2、查看文件系统可用空间 [[email protected] ~] # df -lhP
Filesystem Size Used Avail Use% Mounted on /dev/mapper/myvg-lv_root 48G 520M 45G 2% /
tmpfs 122M 0 122M 0% /dev/shm
/dev/sda1 477M 33M 419M 8% /boot
/dev/mapper/myvg-lv_home 4.7G 9.9M 4.5G 1% /home
/dev/mapper/myvg-lv_usr 15G 710M 13G 6% /usr
/dev/mapper/myvg-lv_var 9.5G 88M 9.0G 1% /var
/dev/md127 9.3G 23M 9.0G 1% /backup ## 与上次md设备名变化了,故而需要以LABE或UUID方式进行挂载
/dev/md126 9.8G 23M 9.3G 1% /mydata
/dev/mapper/vg0-mylv 9.9G 3.8M 9.6G 1% /Spring_dir ## 可用9.9
3、复制文件至LV中,并查看文件 [[email protected] ~] # cp /etc/{fstab,issue} /Spring_dir/
[[email protected] ~] # cat /Spring_dir/{fstab,issue}
4、扩展 [[email protected] ~] # lvextend -L +5G /dev/mapper/vg0-mylv
[[email protected] ~] # resize2fs /dev/vg0/mylv
5、查看文件系统可用空间 [[email protected] ~] # df -lhP
Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-mylv 15G 3.5M 15G 1% /Spring_dir ##可用15G
6、查看文件,验证文件是否损坏 [[email protected] ~] # cat /Spring_dir/{fstab,issue}
|
缩减:
1
2
3
4
5
6
7
|
1、卸载 2、检测 3、缩减文件系统空间 4、缩减LV空间 5、挂载 6、查看文件系统可用空间 7、查看文件是否损坏 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
1、卸载 [[email protected] ~] # umount /Spring_dir/
2、检测 [[email protected] ~] # e2fsck -f /dev/vg0/mylv
3、缩减文件系统空间 [[email protected] ~] # resize2fs /dev/vg0/mylv 1G
4、缩减LV空间 [[email protected] ~] # lvreduce -L 5G /dev/mapper/vg0-mylv
Do you really want to reduce vg0 /mylv ? [y /n ]: y
5、挂载 [[email protected] ~] # mount /dev/mapper/vg0-mylv /Spring_dir/
6、查看文件系统可用空间 [[email protected] ~] # df -lhP
Filesystem Size Used Avail Use% Mounted on /dev/md127 9.3G 23M 9.0G 1% /backup
/dev/md126 9.8G 23M 9.3G 1% /mydata
/dev/mapper/vg0-mylv 976M 2.8M 943M 1% /Spring_dir
7、查看文件是否损坏 [[email protected] ~] # cat /Spring_dir/{fstab,issue}
# # /etc/fstab # Created by anaconda on Thu Aug 3 08:30:25 2017 # # 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 # ... |
快照:lvcreate -L #[KMGTE] -s -n lv_snap_NAME -p r lvpath
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
1.查看原卷大小 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_home myvg -wi-ao---- 4.88g
lv_root myvg -wi-ao---- 48.83g
lv_swap myvg -wi-ao---- 1.95g
lv_usr myvg -wi-ao---- 14.65g
lv_var myvg -wi-ao---- 9.77g
mylv vg0 -wi-ao---- 5.00g
2、创建快照卷 [[email protected] ~] # lvcreate -L 200M -s -n lv_snap -p r /dev/vg0/mylv
Logical volume "mylv_snap" created.
[[email protected] ~] #
4、挂载快照卷 [[email protected] ~] # mount /dev/vg0/lv_snap /mnt
5、显示内容 [[email protected] ~] # ls /mnt
fstab issue lost+found 6、显示快照卷的可用空间 [[email protected] ~] # df -lPh
Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-mylv 976M 2.8M 943M 1% /Spring_dir
/dev/mapper/vg0-lv_snap 976M 2.8M 943M 1% /mnt ## 同原卷大小,与快照卷是指向原卷Inode的另一个路径不谋而合。
7、查看原卷和快照卷的内容 [[email protected] ~] # cat /mnt/fstab /Spring_dir/fstab
相同 8、在原卷中增加内容 [[email protected] ~] # cp -r /etc/pam.d /Spring_dir/ ## 源为单个目录,用-r选项。目标存在为目录。复制,原名。
9、查看快照卷是否也有此目录? [[email protected] ~] # ls -l /mnt
总用量 15 -rw-r--r-- 1 root root 1211 8月 12 18:09 fstab -rw-r--r-- 1 root root 47 8月 12 17:39 issue drwx------ 2 root root 12288 8月 12 17:37 lost+found 10、在原卷中,删除所有文件 [[email protected] ~] # rm -rf /Spring_dir/*
11、快照卷中的文件:仍然存在 [[email protected] ~] # ls -l /mnt
总用量 15 -rw-r--r-- 1 root root 1211 8月 12 18:09 fstab -rw-r--r-- 1 root root 47 8月 12 17:39 issue drwx------ 2 root root 12288 8月 12 17:37 lost+found 12、备份快照卷至 /Spring_dir
[[email protected] ~] # cp -a /mnt/* /Spring_dir/
[[email protected] ~] # ls /Spring_dir/
fstab issue lost+found |
删除: lvremove lvpath
1
2
3
4
5
6
|
13、卸载 [[email protected] ~] # umount /mnt
14、删除卷 [[email protected] ~] # lvremove /dev/vg0/lv_snap
Do you really want to remove active logical volume lv_snap? [y /n ]: y
Logical volume "lv_snap" successfully removed
|