LVM配置

1. 准备工作

  • 一块新磁盘(假设为 /dev/sdb)。
  • 安装
    lvm2
    
    工具:
    sudo apt install lvm2  # Debian/Ubuntu
    sudo yum install lvm2  # CentOS/RHEL
    

2. 配置 LVM

2.1 创建物理卷(PV)

将新磁盘初始化为物理卷:

pvcreate /dev/sdb

2.2 创建卷组(VG)

创建一个卷组(Volume Group, VG):

vgcreate vg_os /dev/sdb

2.3 创建 Thin Pool

创建 Thin Pool,作为虚拟磁盘的存储池。可以根据磁盘总大小合理分配。例如,预留 500GB 作为 Thin Pool:

lvcreate --type thin-pool --size 500G --name thin_pool vg_os

3. 创建虚拟磁盘(Thin Volume)

使用 Thin Pool 为 3 个操作系统创建虚拟磁盘,每个虚拟磁盘的虚拟大小为 1000GB:

lvcreate --type thin --virtualsize 1000G --name os1_disk vg_os/thin_pool
lvcreate --type thin --virtualsize 1000G --name os2_disk vg_os/thin_pool
lvcreate --type thin --virtualsize 1000G --name os3_disk vg_os/thin_pool

此时,每个虚拟磁盘的“虚拟大小”为 1000GB,但实际占用的空间取决于存储的数据量。


4. 监控和自动回收

4.1 监控 Thin Pool 使用情况

定期检查 Thin Pool 的使用情况,避免空间耗尽:

lvs -o +data_percent,metadata_percent vg_os/thin_pool

4.2 自动回收释放的空间

在 Thin Pool 中,删除数据后,空间会自动回收。但如果你使用的是虚拟机磁盘(如 qcow2 格式),需要手动执行以下操作:

  1. 在虚拟机中清空未使用的空间(例如,使用 zerofree 工具)。

  2. 在宿主机上使用 fstrim 命令通知 LVM 回收空间:

    fstrim -v /mnt/vm_disk
    

5. 使用虚拟磁盘

5.1 在虚拟机中使用虚拟磁盘

将虚拟磁盘分配给虚拟机。例如,使用 KVM:

virt-install --name=vm1 --ram=2048 --vcpus=2 --disk path=/dev/vg_os/os1_disk --cdrom=/path/to/iso --network bridge=br0

5.2 在物理机中使用虚拟磁盘

如果需要直接在物理机上使用虚拟磁盘,可以将其挂载到文件系统:

  1. 格式化虚拟磁盘:

    mkfs.ext4 /dev/vg_os/os1_disk
    
  2. 挂载虚拟磁盘:

    mkdir /mnt/os1
    mount /dev/vg_os/os1_disk /mnt/os1
    

6. 扩展 Thin Pool 空间(可选)

如果 Thin Pool 空间不足,可以扩展其大小:

lvextend --size +100G vg_os/thin_pool

7. 最佳实践

  • 监控磁盘使用:定期检查 Thin Pool 的空间使用情况,避免磁盘耗尽。
  • 备份数据:虽然 Thin Provisioning 提供了灵活的存储管理,但仍需定期备份重要数据。
  • 性能优化:如果性能是关键,可以将 Thin Pool 放在高性能存储设备(如 SSD)上。

通过以上步骤,你可以在新磁盘上配置 LVM,并为 3 个操作系统的虚拟磁盘实现“用多少占多少”和“删除数据自动回收”的效果。

posted @ 2025-08-15 08:47  狂客  阅读(34)  评论(0)    收藏  举报