## 基础 ### 物理卷(pvcreate) ``` [root@localhost ~]# pvcreate /dev/sdb[1-3] # 将分区创建为物理卷 Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdb2" successfully created Physical volume "/dev/sdb3" successfully created [root@localhost ~]# pvcreate /dev/sdc # 将硬盘创建为物理卷 Physical volume "/dev/sdc" successfully created [root@localhost ~]# pvs # 查看创建的物理卷 PV VG Fmt Attr PSize PFree /dev/sdb1 myvg lvm2 a- 1.87G 1.87G /dev/sdb2 myvg lvm2 a- 1.87G 1.87G /dev/sdb3 myvg lvm2 a- 1.87G 1.87G /dev/sdc myvg lvm2 a- 20.00G 20.00G ``` ### 卷组(vgcreate) ``` [root@localhost ~]# vgcreate myvg /dev/sdb[1-3] /dev/sdc Volume group "myvg" successfully created [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 4 0 0 wz--n- 25.60G 25.60G [root@localhost ~]# [root@localhost ~]# vgdisplay --- Volume group --- VG Name myvg #卷组名 System ID Format lvm2 Metadata Areas 4 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 4 Act PV 4 VG Size 25.60 GB PE Size 4.00 MB #物理盘的基本单位:默认4MB Total PE 6553 Alloc PE / Size 0 / 0 Free PE / Size 6553 / 25.60 GB VG UUID wuNBgb-tP95-pVoX-ehHw-cMfN-hyem-PNMqwe [root@localhost ~]# ``` ### 逻辑卷(lvcreate) ``` shell [root@localhost ~]# lvcreate -L 2G -n mylv1 myvg #创建逻辑卷 Logical volume "mylv1" created [root@localhost ~]# lvs #查看逻辑卷 LV VG Attr LSize Origin Snap% Move Log Copy% Convert mylv1 myvg -wi-a- 2.00G ``` ## 运维操作 ### 扩大卷组 ``` [root@localhost ~]# pvcreate /dev/sdd #将新硬盘/sdd加入物理卷中 Physical volume "/dev/sdd" successfully created [root@localhost ~]# pvs #查看物理卷 /dev/cdrom: open failed: No medium found PV VG Fmt Attr PSize PFree /dev/sdb1 myvg lvm2 a- 1.87G 1.87G /dev/sdb2 myvg lvm2 a- 1.87G 1.87G /dev/sdb3 myvg lvm2 a- 1.87G 1.87G /dev/sdc myvg lvm2 a- 20.00G 18.00G /dev/sdd myvg lvm2 a- 20.00G 20.00G [root@localhost ~]# [root@localhost ~]# vgextend myvg /dev/sdd #扩展卷组 Volume group "myvg" successfully extended [root@localhost ~]# vgs #查看新增加的卷组 VG #PV #LV #SN Attr VSize VFree myvg 5 1 0 wz--n- 45.59G 43.59G [root@localhost ~]# ``` ### 扩大逻辑卷 (支持在线扩展) ``` # 扩展 2G 空间 [root@localhost mydata]# lvextend -L +2G /dev/myvg/mylv1 Extending logical volume mylv1 to 4.00 GB Logical volume mylv1 successfully resized # 扩展空闲所有 [root@localhost mydata]# lvextend -l +100%FREE /dev/myvg/mylv1 # ext4 文件系统 [root@localhost mydata]# resize2fs -p /dev/myvg/mylv1 # xfs 格式文件系统 [root@localhost mydata]# xfs_growfs -f /dev/myvg/mylv1 [root@localhost mydata]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert mylv1 myvg -wi-ao 4.00G ``` ### 缩减逻辑卷 - 不能在线缩减,得先卸载 - 确保缩减后的空间大小依然能存储原有的所有数据 ``` # 将/dev/myvg/mylv1 缩减到1G # ext4 [root@localhost ~]# umount /dev/myvg/mylv1 #卸载分区 [root@localhost ~]# e2fsck -f /dev/myvg/mylv1 #强制检查文件系统 [root@localhost ~]# resize2fs /dev/myvg/mylv1 1G #缩减逻辑大小 [root@localhost ~]# lvreduce -L 1G /dev/myvg/mylv1 #缩减物理边界大小 # xfs [root@localhost ~]# umount /dev/myvg/mylv1 #卸载分区 [root@localhost ~]# [root@localhost ~]# lvs #查看逻辑卷 /dev/cdrom: open failed: No medium found LV VG Attr LSize Origin Snap% Move Log Copy% Convert mylv1 myvg -wi-ao 1.00G [root@localhost ~]# mount /dev/myvg/mylv1 /mydata ``` ### 缩减磁盘空间 发现物理磁盘空间使用不足,将其中一块硬盘或分区拿掉。 ``` [root@localhost ~]# pvs /dev/cdrom: open failed: No medium found PV VG Fmt Attr PSize PFree /dev/sdb1 myvg lvm2 a- 1.87G 1.87G /dev/sdb2 myvg lvm2 a- 1.87G 1.87G /dev/sdb3 myvg lvm2 a- 1.87G 1.87G /dev/sdc myvg lvm2 a- 20.00G 19.00G /dev/sdd myvg lvm2 a- 20.00G 20.00G [root@localhost ~]# [root@localhost ~]# pvmove /dev/sdb1 No data to move for myvg [root@localhost ~]# vgreduce myvg /dev/sdb1 Removed "/dev/sdb1" from volume group "myvg" root@localhost ~]# pvremove /dev/sdb1 Labels on physical volume "/dev/sdb1" successfully wiped [root@localhost ~]# pvs /dev/cdrom: open failed: No medium found PV VG Fmt Attr PSize PFree /dev/sdb2 myvg lvm2 a- 1.87G 1.87G /dev/sdb3 myvg lvm2 a- 1.87G 1.87G /dev/sdc myvg lvm2 a- 20.00G 19.00G /dev/sdd myvg lvm2 a- 20.00G 20.00G [root@localhost ~]# ``` ### 实现快照,进行备份还原 在/mnt/lvm目录上,我们将原始的目录文件进行快照,然后将/mydata目录中的内容清空,并进行还原。 ``` [root@localhost ~]# cd /mydata/ [root@localhost mydata]# ls index.html lost+found [root@localhost mydata]# cat index.html test [root@localhost mydata]# lvcreate -L 30M -n backup -s -p r /dev/myvg/mylv1 #-L 快照大小 –n:快照名称 –p 权限只读 –s 创建快照 Rounding up size to full physical extent 32.00 MB Logical volume "backup" created [root@localhost mydata]# ll total 20 -rw-r--r-- 1 root root 5 Jun 28 01:04 index.html drwx------ 2 root root 16384 Jun 28 00:47 lost+found [root@localhost mydata]# mkdir /tmp/backup #创建挂载目录 [root@localhost mydata]# mount /dev/myvg/backup /tmp/backup/ #挂载 mount: block device /dev/myvg/backup is write-protected, mounting read-only [root@localhost mydata]# cd /tmp/backup/ [root@localhost backup]# ls index.html lost+found [root@localhost backup]# mkdir /tmp/lvmbackup #创建备份目录 [root@localhost backup]# tar jcf /tmp/lvmbackup/sandy.tar.bz2 index.html #打包并压缩文件 [root@localhost backup]# cd .. [root@localhost tmp]# cd lvmbackup/ [root@localhost lvmbackup]# ls #查看备份 sandy.tar.bz2 [root@localhost lvmbackup]# cd /mydata/ [root@localhost mydata]# ll total 20 -rw-r--r-- 1 root root 5 Jun 28 01:04 index.html drwx------ 2 root root 16384 Jun 28 00:47 lost+found [root@localhost mydata]# rm -rf * #删除所有文件 [root@localhost mydata]# [root@localhost mydata]# ll total 0 [root@localhost mydata]# tar xf /tmp/lvmbackup/sandy.tar.bz2 #还原备份数据 [root@localhost mydata]# ll total 4 -rw-r--r-- 1 root root 5 Jun 28 01:04 index.html [root@localhost mydata]# cat index.html test [root@localhost mydata]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 9.5G 1.8G 7.2G 21% / /dev/sda3 4.8G 138M 4.4G 4% /data /dev/sda1 251M 17M 222M 7% /boot tmpfs 60M 0 60M 0% /dev/shm /dev/mapper/myvg-mylv1 1008M 67M 901M 7% /mydata /dev/mapper/myvg-mylv1 1008M 67M 901M 7% /tmp/backup [root@localhost mydata]# ```