- LVM
- 概念
- 创建操作
- 分区监控
- 扩容与缩容
- 将数据快速转移到相同的卷组
- 删除整个逻辑卷
LVM
LVM (Logical Volume Manage) , 逻辑卷管理
- 作用: 整合分散的空间, 动态调整磁盘容量, 从而提高磁盘管理的灵活性;
- WARN: /boot 分区存放引导文件, 不能使用 LVM 创建, 必须独立出来;
概念
将众多的物理卷 (PV) 组成 卷组 (VG) , 再从卷组中划分出逻辑卷(LV)
零散空间存储 --> 整合的虚拟磁盘 --> 虚拟分区
物理卷(PV) 卷组(VG) 逻辑卷(LV)
- PV (Physical Volume), 物理卷
整个硬盘, 或使用fdisk 等工具简历的普通分区, 包括许多默认 4M 大小的 PE (Physical Extent, 基本单元/物理单元);

- VG (Volume Group), 卷组

- LV (Logical Volume), 逻辑卷
从卷组中分割出一块空间, 用于建立分区
创建操作
常用的命令
- 扫描 scan
- pvscan vgscan lvscan
- 建立 create
- pvcreate vgcreate lvcreate
- 显示 display
- pvdisplay vgdisplay lvdisplay
- 删除 remove
- pvremove vgremove lvremove
- 扩展 extend
- vgextend lvextend
- 减少 reduce
- vgreduce lvreduce
- vgreduce lvreduce
创建物理卷 ( 物理卷可以不用建立 )
// 可以跟多个分区, 连贯的话可以使用 /dev/sdb[1234] pvcreate /dev/sdb5 Physical volume "/dev/sdb5" successfully created
创建卷组 VG
// 创建卷组, -s 指定PE的大小, 默认 4M; 下面使用的是四个分区; vgcreate -s 8 vg0 /dev/sdb[1234] Volume group "vg0" successfully created // 查看卷组 vgdisplay /dev/vg0 --- Volume group --- VG Name vg0 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 99.99 GiB PE Size 8.00 MiB Total PE 25597 Alloc PE / Size 0 / 0 Free PE / Size 25597 / 99.99 GiB VG UUID fYBKCi-YraR-7ABL-NkBR-hpii-lTIC-jGDD0y
创建逻辑卷
// 创建逻辑卷 -L 给的大小 -n 逻辑卷名称 lvcreate -L 10G -n tian vg0 Logical volume "tian" created // 或者可以使用 -l 指定 PE 个数 lvcreate -l 2500 -n tian vg0 // 查看逻辑卷 lvdisplay /dev/vg0/tian --- Logical volume --- LV Path /dev/vg0/tian LV Name tian VG Name vg0 LV UUID kcJcqI-E2xU-phrt-c0RM-cBLa-p1h9-gmI1rx LV Write Access read/write LV Creation host, time localhost.localdomain, 2019-03-25 21:57:43 -0400 LV Status available # open 0 LV Size 19.53 GiB Current LE 2500 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:3
格式化逻辑卷
// 格式化(创建)文件系统;
mkfs.ext4 /dev/vg0/tian
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1281120 inodes, 5120000 blocks
256000 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
157 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
挂载分区
// 挂载到需要的目录, 或者创建挂载点进行挂载
mkdir /tian
mount /dev/vg0/tian /tian/
// 配置开机自动挂载, 查看 UUID , 使用 UUID进行挂载, 防止重启后盘符变化导致加载不了磁盘错误;
blkid /dev/vg0/tian
/dev/vg0/tian: UUID="dd0ca91d-aefb-46fd-97d9-7158f9668b20" TYPE="ext4"
vim /etc/fstab
... ...
UUID="dd0ca91d-aefb-46fd-97d9-7158f9668b20" /tian ext4 defaults 1 2
分区监控
查看命令
// 查看物理卷 pvs // 查看所有 pvs /dev/sdb1 // 指定分区 PV VG Fmt Attr PSize PFree /dev/sdb1 vg0 lvm2 a-- 10.00g 10.00g pvs /dev/sdb* // 通配符匹配 // 查看物理卷组 vgs // 查看所有卷组 vgs /dev/vg0 // 指定卷组查看 VG #PV #LV #SN Attr VSize VFree vg0 4 1 0 wz--n- 99.99g 80.46g // 查看逻辑卷 lvs // 查看所有逻辑卷 lvs /dev/vg0/tian // 查看指定的逻辑卷 LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert tian vg0 -wi-ao---- 19.53g // 查看pv , vg , lv 及指定挂载点 pvs ; echo ------------------------;vgs ; echo ------------------------;lvs ; echo ------------------------;df -hT /tian PV VG Fmt Attr PSize PFree /dev/sda3 vg_centos6 lvm2 a-- 147.80g 0 /dev/sdb1 vg0 lvm2 a-- 10.00g 10.00g /dev/sdb2 vg0 lvm2 a-- 20.01g 488.00m /dev/sdb3 vg0 lvm2 a-- 30.00g 30.00g /dev/sdb4 vg0 lvm2 a-- 39.98g 39.98g ------------------------ VG #PV #LV #SN Attr VSize VFree vg0 4 1 0 wz--n- 99.99g 80.46g vg_centos6 1 3 0 wz--n- 147.80g 0 ------------------------ LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert tian vg0 -wi-ao---- 19.53g LogVol00 vg_centos6 -wi-ao---- 40.00g LogVol01 vg_centos6 -wi-ao---- 40.00g LogVol02 vg_centos6 -wi-ao---- 67.80g ------------------------ Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vg0-tian ext4 20G 201M 19G 2% /tian
实时监控
// 动态实时查看, 用于监控; watch -n 选项表示多少秒刷新一次;
watch -n 1 ' pvs ; echo ------------------------;vgs ; echo ------------------------;lvs ; echo ------------------------;df -hT /tian'
// 动态查看只针对与挂载点
watch -n 1 'df -h /tian'
Every 10.0s: df -h /tian Mon Mar 25 23:02:01 2019 // 实时时间
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-tian 20G 352M 18G 2% /tian // 存储空间使用
扩容与缩容
xfs 类型的设备只能扩容, 不能缩容 !!
VG容量够, 扩容 逻辑卷
// 查看文件系统本来大小
df -hT
Filesystem Type Size Used Avail Use% Mounted on
... ...
/dev/mapper/vg0-tian ext4 20G 172M 19G 1% /tian
// 扩容 20个 G
lvextend -L +20G /dev/vg0/tian
Extending logical volume tian to 39.53 GiB
Logical volume tian successfully resized
// 扩容到 50G
lvextend -L 50G /dev/vg0/tian
// 调整(刷新)逻辑卷分区大小
resize2fs /dev/vg0/tian
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg0/tian is mounted on /tian; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 3
Performing an on-line resize of /dev/vg0/tian to 10362880 (4k) blocks.
The filesystem on /dev/vg0/tian is now 10362880 blocks long.
// 再次查看扩容后的大小
df -hT
Filesystem Type Size Used Avail Use% Mounted on
... ...
/dev/mapper/vg0-tian ext4 39G 176M 37G 1% /tian
// CentOS 7 上的xfs文件系统调整大小
xfs_growfs /dev/vg0/tian
逻辑卷缩小
// xfs 格式的文件系统不能缩小
// 查看没有缩小的时候的大小
df -hT
Filesystem Type Size Used Avail Use% Mounted on
... ...
/dev/mapper/vg0-tian ext4 30G 233M 28G 1% /tian
// 首先,需要卸载文件系统的挂载
umount /tian
// 使用 e2fsck 强制检查逻辑卷, 并关注使用空间, 默认块是 4 K;
e2fsck -f /dev/vg0/tian
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg0/tian: 13/1966080 files (15.4% non-contiguous), 182818/7864320 blocks
// 使用resize2fs 将文件系统减小到 10 G;
resize2fs /dev/vg0/tian 10G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vg0/tian to 2621440 (4k) blocks.
The filesystem on /dev/vg0/tian is now 2621440 blocks long.
// 根据使用的大小缩小, 可以预留出足够使用的大小; 两种方式缩小到 10 G;
lvreduce -L -20G /dev/vg0/tian
lvreduce -L 10G /dev/vg0/tian
// 挂载
mount /dev/vg0/tian /tian
// 查看挂在后的大小
df -hT
Filesystem Type Size Used Avail Use% Mounted on
... ...
/dev/mapper/vg0-tian ext4 9.9G 225M 9.2G 3% /tian
扩大卷组 (VG)
// 环境: 硬盘分区sdb[1234] , 123做卷组, 逻辑卷使用满, 卷组空间不足, 需要使用sdb4 进行扩容;
vgextend vg0 /dev/sdb4
Volume group "vg0" successfully extended
// 查看sdb[1234]各个分区的大小
lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 100G 0 disk
├─sdb1 8:17 0 10G 0 part
│ └─vg0-tian (dm-3) 253:3 0 60G 0 lvm /tian
├─sdb2 8:18 0 20G 0 part
│ └─vg0-tian (dm-3) 253:3 0 60G 0 lvm /tian
├─sdb3 8:19 0 30G 0 part
│ └─vg0-tian (dm-3) 253:3 0 60G 0 lvm /tian
└─sdb4 8:20 0 40G 0 part
// 查看扩容后的卷组; 大小 100 GiB;
vgdisplay /dev/vg0
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 4
Act PV 4
VG Size 99.99 GiB
PE Size 4.00 MiB
Total PE 25597
Alloc PE / Size 15360 / 60.00 GiB
Free PE / Size 10237 / 39.99 GiB
VG UUID 5DtUCI-dMDj-FVjX-dPZH-wCgf-o5Y1-e04kG5
// 再扩容逻辑卷正常按上面扩容就好
将数据快速转移到相同的卷组
// 将一个新的分区扩容卷组,sdb4 扩容 sdb[123] 的 vg0 卷组; // 通过 pvmove 命令转移空间数据 sdb1 --> sdb4 // 使用 vgreduce 将损坏的磁盘或者分区从卷组中移除 --> sdb1 // 使用 pvremove 将坏的磁盘或者分区从系统中删除(可选) --> sdb1 // 使用一些工具修复磁盘或者手动更换损坏磁盘 vgextend vg0 /dev/sdb4 pvs PV VG Fmt Attr PSize PFree /dev/sda3 vg_centos6 lvm2 a-- 147.80g 0 /dev/sdb1 vg0 lvm2 a-- 10.00g 12.00m /dev/sdb2 vg0 lvm2 a-- 20.01g 0 /dev/sdb3 vg0 lvm2 a-- 30.00g 0 /dev/sdb4 vg0 lvm2 a-- 39.98g 39.98g pvmove /dev/sdb1 /dev/sdb4 vgreduce vg0 /dev/sdb1 Removed "/dev/sdb1" from volume group "vg0" pvremove /dev/sdb1 Labels on physical volume "/dev/sdb1" successfully wiped pvs PV VG Fmt Attr PSize PFree /dev/sda3 vg_centos6 lvm2 a-- 147.80g 0 /dev/sdb2 vg0 lvm2 a-- 20.01g 0 /dev/sdb3 vg0 lvm2 a-- 30.00g 0 /dev/sdb4 vg0 lvm2 a-- 39.98g 29.99g // 挂载逻辑卷, 并查看内容, 没有问题
删除整个逻辑卷
// 先卸载mount挂载 // 删除 /etc/fstab 中配置的开机自动挂载 // lvremove 删除逻辑卷 // vgremove 删除卷组 // pvremove 删除物理卷 // 使用fdisk更改硬盘物理分区
来源:https://www.cnblogs.com/haorong/p/10594841.html