基本术语
来自百度百科-LVM
- 物理存储介质(PhysicalStorageMedia)
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。- 物理卷(Physical Volume,PV)
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。- 卷组(Volume Group,VG)
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。- 逻辑卷(Logical Volume,LV)
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。- 物理块(Physical Extent,PE)
PE是物理卷PV的基本划分单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。- 逻辑块(Logical Extent,LE)
逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
一、创建LVM逻辑卷并挂载
# 安装lvm2
apt install lvm2
# 查看scsi总线
ls /sys/class/scsi_host
# 查看结果 host0 host1 host2
# 扫描host0
echo '- - -' > /sys/class/scsi_host/host0/scan
# 扫描host1
echo '- - -' > /sys/class/scsi_host/host1/scan
# 扫描host2
echo '- - -' > /sys/class/scsi_host/host2/scan
# 查看磁盘 发现新硬盘/dev/sdb
fdisk --list
# 使用cfdisk初始化磁盘
# 使用GPT分区 创建Linux LVM类型的分区
cfdisk /dev/sdb
# 查看磁盘 发现新分区/dev/sdb1
fdisk --list
# 创建pv(物理卷)
# 参数1 设备路径
pvcreate /dev/sdb1
# 查看pv列表
pvs
# 查看pv详情
pvdisplay
# 创建vg(卷组)
# 参数1 -s PE大小(一个vg最多65534个PE 256M的vg最大容量为16T)
# 参数2 vg名称
# 参数3 pv名称
vgcreate -s 128M vg0 /dev/sdb1
# 查看vg列表
vgs
# 查看vg详情
vgdisplay
# 创建lv(逻辑卷)
# 参数1 -L 逻辑卷大小(实际容量 10G 500G等)
# 参数1 -l 逻辑卷大小(80%Free 100%VG等)
# 参数2 -n 逻辑卷名称
# 参数3 vg0为使用的vg组
lvcreate -l 100%Free -n vdisk0 vg0
# 查看lv列表
lvs
# 查看lv详情
lvdisplay
# 查看硬盘 发现/dev/mapper/vg0-vdisk0逻辑卷
fdisk --list
# 格式化逻辑卷
mkfs.ext4 /dev/vg0/vdisk0
# 创建挂载点
mkdir -p /opt/vdisk0
# 挂载逻辑卷
mount /dev/vg0/vdisk0 /opt/vdisk0
# 查看UUID
blkid /dev/vg0/vdisk0
# 查看文件系统
df -h
# 开机自动挂载
# 增加一行UUID=xxxxxxxx /opt/vdisk0 ext4 defaults 0 0
# <文件系统> <挂载点> <分区类型> <选项> <dump备份> <检验扇区>
nano /etc/fstab
二、LVM命令
命令 | 用途 |
---|---|
pvchange | 更改物理卷的属性 |
pvck | 检查物理卷元数据 |
pvcreate | 初始化磁盘或分区以供 LVM 使用 |
pvdisplay | 显示物理卷的属性 |
pvmove | 移动物理卷 |
pvremove | 删除物理卷 |
pvresize | 调整 LVM2 使用的磁盘或分区的大小 |
pvs | 查看物理卷列表 |
pvscan | 扫描物理卷的所有磁盘 |
vgcfgbackup | 备份卷组配置 |
vgcfgrestore | 恢复卷组配置 |
vgchange | 更改卷组的属性 |
vgck | 检查卷组元数据 |
vgconvert | 转换卷组元数据格式 |
vgcreate | 创建卷组 |
vgdisplay | 显示卷组的属性 |
vgexport | 导出卷组 |
vgextend | 将物理卷追加到卷组 |
vgimport | 导入卷组 |
vgimportclone | 导入并重命名重复的卷组(例如硬件快照) |
vgmerge | 合并两个卷组 |
vgmknodes | 重新创建卷组目录和逻辑卷特殊文件 |
vgreduce | 通过删除一个或多个物理卷来减少卷组 |
vgremove | 删除卷组 |
vgrename | 重命名卷组 |
vgs | 卷组列表 |
vgscan | 扫描卷组的所有磁盘 |
vgsplit | 将卷组一分为二,通过移动整个物理卷将任何逻辑卷从一个卷组移动到另一个卷组 |
lvchange | 更改逻辑卷的属性 |
lvconvert | 将逻辑卷从线性转换为镜像或快照 |
lvcreate | 在现有卷组中创建逻辑卷 |
lvdisplay | 显示逻辑卷的属性 |
lvextend | 扩展逻辑卷的大小 |
lvreduce | 减小逻辑卷的大小 |
lvremove | 删除逻辑卷 |
lvrename | 重命名逻辑卷 |
lvresize | 调整逻辑卷的大小 |
lvs | 逻辑卷列表 |
lvscan | 扫描(所有磁盘)的逻辑卷 |
lvmconfig | 显示lvm配置信息 |
lvmdiskscan | 扫描对 LVM2 可见的所有设备 |
lvmdump | 为诊断目的创建 lvm2 信息转储 |
三、LVM扩容
# 查看scsi总线
ls /sys/class/scsi_host
# 查看结果 host0 host1 host2
# 扫描host0
echo '- - -' > /sys/class/scsi_host/host0/scan
# 扫描host1
echo '- - -' > /sys/class/scsi_host/host1/scan
# 扫描host2
echo '- - -' > /sys/class/scsi_host/host2/scan
# 查看磁盘 发现新硬盘/dev/sdc
fdisk --list
# 使用cfdisk初始化磁盘
# 使用GPT分区 创建Linux LVM类型的分区
cfdisk /dev/sdc
# 查看磁盘 发现新分区/dev/sdc1
fdisk --list
# 创建pv(物理卷)
# 参数1 设备路径
pvcreate /dev/sdc1
# 查看VG
vgdisplay
# 使用vgextend把pv扩充至vg0
# 参数1 vg卷组
# 参数2 pv物理卷
vgextend vg0 /dev/sdc1
# 查看VG 发现有可用空间:Free PE/Size 239/<29.88 GiB
vgdisplay
# lv扩容 /dev/vg0/vdisk0
# 参数1 -l 按百分比调整
# 参数2 lv逻辑卷
lvextend -l +100%FREE /dev/vg0/vdisk0
# 调整分区大小 默认扩充所有空间
resize2fs -p /dev/vg0/vdisk0
# 查看调整后的分区
df -h
三、LVM减容
# 查看分区挂载
df -h
# 卸载挂载
umount /opt/vdisk0
# 检查分区
e2fsck -f /dev/vg0/vdisk0
# 调整分区大小为20G
resize2fs -p /dev/vg0/vdisk0 20G
# 挂载逻辑卷
mount /dev/vg0/vdisk0 /opt/vdisk0
# lv逻辑卷容量调整为20G(注意:可能会损坏数据)
lvreduce -L 20G /dev/vg0/vdisk0
# 查看分区挂载
df -h
# 查看vg可用空间
vgdisplay