LVM——Logical Volume Manager(逻辑卷管理)
LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性!
概念
①PE(Physical Extend) 物理拓展
②PV(Physical Volume) 物理卷
③VG(Volume Group) 卷组
④LV(Logical Volume) 逻辑卷
原理
(1)物理磁盘被格式化为PV,空间被划分为一个个的PE
(2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内
(3)LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
(4)LV现在就直接可以格式化后挂载使用了
(5)LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据
PV(物理卷)操作
创建:pvcreate + 物理设备/分区/raid
[root@localhost ~]# pvcreate /dev/hda{6,7,8,9}
Physical volume "/dev/hda6" successfully created
Physical volume "/dev/hda7" successfully created
Physical volume "/dev/hda8" successfully created
Physical volume "/dev/hda9" successfully created
删除pv:pvremove + 物理设备/分区/raid
[root@localhost ~]# pvremove /dev/sdb2
Labels on physical volume "/dev/sdb2" successfully wiped
扫描:pvscan
[root@localhost ~]# pvscan
No matching physical volumes found #找不到任何的 PV 存在!
查看:pvdisplay
[root@localhost ~]# pvdisplay
"/dev/hda6" is a new physical volume of "1.40 GB"
--- NEW Physical volume ---
PV Name /dev/hda6 #实际的 partition 分区名称
VG Name #因为尚未分配出去,所以空白!
PV Size 1.40 GB #就是容量说明
Allocatable NO #是否已被分配,结果是 NO
PE Size (KByte) 0 #在此 PV 內的 PE 大小
Total PE 0 #共分割出几个 PE
free PE 0 #沒被 LV 用掉的 PE
Allocated PE 0 #尚可分配出去的 PE 数量
PV UUID Z13Jk5-RCls-UJ8B-HzDa-Gesn-atku-rf2biN
移动:pvmove(数据搬迁)
[root@redhat6 ~]# pvmove /dev/sdb/dev/sdb: Moved: 0.8%
/dev/sdb: Moved: 28.3%
/dev/sdb: Moved: 42.5%
/dev/sdb: Moved: 57.2%
/dev/sdb: Moved: 72.8%
/dev/sdb: Moved: 92.6%
/dev/sdb: Moved: 100.0%
列出所有pv:pvs
root@ubuntu:/# pvs /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. PV VG Fmt Attr PSize PFree /dev/sda3 myVG lvm2 a-- 7.45g 7.45g /dev/sda4 myVG lvm2 a-- 4.66g 4.66g
VG(卷组)操作
创建:vgcreate + 卷组名(自定义) + 物理卷(pv)
root@ubuntu:/# vgcreate myVG /dev/sda{3,4} /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. Volume group "myVG" successfully created
删除:vgremove
[root@www ~]# vgremove vg1000 #删除卷组"vg1000" Volume group "vg1000" successfully removed
扩展:vgextend(新增一个pv到卷组)
root@ubuntu:/# vgextend myVG /dev/sda4 /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. Volume group "myVG" successfully extended
缩小:vgreduce(将一个pv从卷组中拿走,在执行之前一定要执行pvmove将该pv数据挪到其他pv)
root@ubuntu:/# vgreduce myVG /dev/sda4 /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. Removed "/dev/sda4" from volume group "myVG"
扫描:vgscan
显示:vgdisplay
root@ubuntu:/# vgdisplay /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. --- 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 12.11 GiB PE Size 4.00 MiB //可以修改,在创建时加选项 -s(+单位) Total PE 3099 Alloc PE / Size 0 / 0 Free PE / Size 3099 / 12.11 GiB VG UUID LhGoo2-IZIb-330C-0MQu-HEz1-J97y-BlP7AE
列出所有vg:vgs
root@ubuntu:/# vgs /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. VG #PV #LV #SN Attr VSize VFree myVG 2 0 0 wz--n- 12.11g 12.11g
LV(逻辑卷)操作
创建:lvcreate -L (大小) -n(指定名称) VG组名
1. 同一个卷组上可以创建多个逻辑卷
root@ubuntu:/# lvcreate -L 50M -n myLV myVG /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. Rounding up size to full physical extent 52.00 MiB Logical volume "myLV" created.
删除:lvremove ( 删除前需要先卸载 )
root@ubuntu:/# lvremove /dev/myVG/myLV /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. Do you really want to remove and DISCARD active logical volume myLV? [y/n]: y Logical volume "myLV" successfully removed
扩展:lvextend
缩小:lvreduce
列出:lvs
root@ubuntu:/# lvs /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert myLV myVG -wi-a----- 52.00m
展示:lvdisplay
root@ubuntu:/# lvdisplay /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. --- Logical volume --- LV Path /dev/myVG/myLV LV Name myLV VG Name myVG LV UUID arp8Y1-ThlO-oCas-5XGP-juPF-tB9x-5v2hyS LV Write Access read/write LV Creation host, time ubuntu, 2018-05-10 10:20:30 -0700 LV Status available # open 0 LV Size 52.00 MiB Current LE 13 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
挂载
挂载前先创建文件系统
root@ubuntu:/# mke2fs -j /dev/myVG/myLV
mke2fs用于快速格式化,选项
‘-b’ 分区时设定每个数据区块占用空间大小,目前支持1024, 2048 以及4096 bytes每个块。
‘-i’ 设定inode的大小
‘-N’ 设定inode数量,有时使用默认的inode数不够用,所以要自定设定inode数量。
‘-c’ 在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常慢
‘-L’ 预设该分区的标签label
‘-j’ 建立ext3格式的分区,如果使用mkfs.ext3 就不用加这个选项了
‘-t’ 用来指定什么类型的文件系统,可以是ext2, ext3 也可以是 ext4.
resize2fs重新调整文件系统大小
-p 当前分区有多大则调整到多大
扩展逻辑卷
可以在线进行,不需要卸载
顺序:扩展物理边界 --> 扩展逻辑边界
扩展物理边界 lvextend -L [+]大小 /逻辑卷路径
root@ubuntu:/# lvextend -L 100M /dev/myVG/myLV /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. Size of logical volume myVG/myLV changed from 52.00 MiB (13 extents) to 100.00 MiB (25 extents). Logical volume myLV successfully resized.
扩展逻辑边界 resize2fs /逻辑卷路径 大小(扩展到多大)
root@ubuntu:/mnt# resize2fs -p /dev/myVG/myLV resize2fs 1.42.13 (17-May-2015) Filesystem at /dev/myVG/myLV is mounted on /mnt/test; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/myVG/myLV is now 155648 (1k) blocks long.
缩小逻辑卷
顺序:缩小逻辑边界 --> 缩小物理边界
注意
1. 不能在线缩减,需要先卸载
root@ubuntu:/mnt# df -h Filesystem Size Used Avail Use% Mounted on udev 481M 0 481M 0% /dev tmpfs 100M 6.5M 94M 7% /run /dev/sda1 19G 4.8G 13G 27% / tmpfs 500M 252K 500M 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 500M 0 500M 0% /sys/fs/cgroup tmpfs 100M 44K 100M 1% /run/user/1000 /dev/mapper/myVG-myLV 144M 1.6M 135M 2% /mnt/test
root@ubuntu:/# umount /mnt/test
2. 确保缩减后的空间依然能够存下当前数据
3. 在缩减之前应该先强行检查文件,确保文件系统处于一致性状态
root@ubuntu:/# e2fsck -f #强行检查
缩小逻辑边界
resize2fs /逻辑卷路径 大小(扩展到多大)
root@ubuntu:/# resize2fs /dev/myVG//myLV 100M resize2fs 1.42.13 (17-May-2015) Resizing the filesystem on /dev/myVG//myLV to 102400 (1k) blocks. The filesystem on /dev/myVG//myLV is now 102400 (1k) blocks long.
缩小物理边界
lvreduce
root@ubuntu:/# lvreduce -L 100M /dev/myVG/myLV /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. WARNING: Reducing active logical volume to 100.00 MiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce myLV? [y/n]: y Size of logical volume myVG/myLV changed from 152.00 MiB (38 extents) to 100.00 MiB (25 extents). Logical volume myLV successfully resized.
重新挂载 root@ubuntu:/# mount /dev/myVG/myLV /mnt/test
检查磁盘情况 root@ubuntu:/# df -h Filesystem Size Used Avail Use% Mounted on udev 481M 0 481M 0% /dev tmpfs 100M 6.5M 94M 7% /run /dev/sda1 19G 4.8G 13G 27% / tmpfs 500M 252K 500M 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 500M 0 500M 0% /sys/fs/cgroup tmpfs 100M 44K 100M 1% /run/user/1000 /dev/mapper/myVG-myLV 93M 1.6M 87M 2% /mnt/test
现实快照卷
注意:
1. 声明周期为整个数据时长,在这段时间内,增长数据不能超过快照卷大小
2. 快照卷是只读
3. 和原卷在同一卷组内
eg:对 / dev / myVG / myLV 创建快照卷
root@ubuntu:/# lvcreate -L 50M -n myLV_snap -s -p r /dev/myVG/myLV /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. Rounding up size to full physical extent 52.00 MiB Logical volume "myLV_snap" created.
然后挂载就可以使用
root@ubuntu:/# mount /dev/myVG/myLV_snap /mnt/test2
最后对test2目录进行备份即可
#备份完成后进行卸载,然后删除快照卷 root@ubuntu:/mnt# umount /mnt/test2 root@ubuntu:/mnt# lvremove /dev/myVG/myLV_snap