From 36fdd1ba5cd69c11f4a76f823b3c3a14a3e151ae Mon Sep 17 00:00:00 2001 From: wwya Date: Tue, 31 Mar 2026 10:16:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E7=A3=81=E7=9B=98/lvm.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 磁盘/lvm.md | 206 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 磁盘/lvm.md diff --git a/磁盘/lvm.md b/磁盘/lvm.md new file mode 100644 index 0000000..39015d3 --- /dev/null +++ b/磁盘/lvm.md @@ -0,0 +1,206 @@ +## 基础 +### 物理卷(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]# +```