Files
linux/磁盘/lvm.md
2026-03-31 10:16:43 +08:00

7.6 KiB
Raw Permalink Blame History

基础

物理卷(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)

[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]#