添加 磁盘/lvm.md

This commit is contained in:
2026-03-31 10:16:43 +08:00
parent c6b6b991f4
commit 36fdd1ba5c

206
磁盘/lvm.md Normal file
View File

@@ -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]#
```