LVM基础概念
Proxmox VE的LVM逻辑架构
- PD(physical Disk):
物理磁盘,如硬盘,或RAID硬盘。
- PP(physical partition):
物理分区,如硬盘的分区,或RAID硬盘的分区。
- PV(physical volume):
物理卷,在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区,一般一个PV对应一个PP
命令范例:
pvcreate /dev/sdb1
pvdisplay
- VG(volume group):
卷组,建立在物理卷上,每个卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组。
命令范例:
#vgextend pve /dev/sdb1
#vgreduce //从vg中移除pv
#vgremove //移除vg
- LV(logical volume):
逻辑卷,建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可以动态扩展和缩小空间。
命令范例:
lvs -a -o lv_full_name,parent,lv_size,modules,devices
lvcreate --type raid0 --name data --extents 100%FREE --stripesize 256k hybrid /dev/sdb1 /dev/sdc1
lvcreate --type thin-pool --extents 100%FREE --name data pve /dev/sda3
lvextend -rl +100%FREE /dev/pve/data
lvconvert --type cache-pool --poolmetadata hybrid/meta_cachepool --chunksize 256 hybrid/cache
lvreduce lvremove, lvmraid, lvmthin, lvmcache
- PE(physical extent):
物理块,是物理卷中可用于分配的最小存储单元(本文采用默认值4MiB),物理块大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理块大小需一致,新的PV加入到VG后,PE的大小自动更改为VG中定义的PE大小。
- LE(logical extent):
逻辑块,是逻辑卷中可用于分配的最小存储单元,逻辑块的大小取决于逻辑卷所在卷组中的物理块的大小。
- 常用的LVM部署命令:
功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce |
操作范例
- 没有逻辑卷时新加硬盘
#fdisk /dev/sdb //输入g, n, w
#pvcreate /dev/sdb1 //创建物理卷
#vgcreate hdd /dev/sdb1 //创建名为hdd的卷组
//(没有逻辑卷时用)用hdd卷组创建名为data的逻辑卷并分配全部空间
#lvcreate --name data -l 100%FREE hdd /dev/sdb1
- 以目录方式挂载新盘
#mkfs.ext4 /dev/pve/data
mkdir /mnt/data
mount /dev/hdd/data /mnt/data
#添加系统启动挂载
nano /etc/fstab
/dev/hdd/data /mnt/data ext4 defaults 0 0
- 已有逻辑卷时新加硬盘
#fdisk /dev/sdb //输入g, n, w
#pvcreate /dev/sdb1 //创建物理卷
#vgextend hdd /dev/sdb1 //将硬盘附加给卷组
//(已有逻辑卷时用)将卷组中所有剩余空间都分配给逻辑卷
#lvextend -rl +100%FREE /dev/hdd/data
//ext3、ext4专用
#resize2fs /dev/hdd/data
//xfs专用(xfs只能增加不能减少!!!不能减少!!!不能减少!!!)
#xfs_growfs /dev/hdd/data
//检查文件系统是否有错误
#e2fsck -f /dev/hdd/data
- 减少逻辑卷容量
lvreduce -L 80G /dev/hdd/data //将容量缩少到80G
- 从卷组中移除硬盘
# umount 目录 //如果有挂载过,需先卸载
# lvremove pve/data //先把逻辑组删掉
# vgreduce pve /dev/sdb1 //删掉卷组中的硬盘