PVE 添加新硬盘到新的 LVM 卷组
近期得到一个 Ryzen U5500U 的迷你主机,一番配置后采用了免费的 PVE 虚拟机环境。
我对 LVM 的感觉一直都是“过于复杂”,日常使用也会经常放弃它来使用简单的 ext4 凑合着用。
但是!对于虚拟机平台来说,LVM 有这么几个优点让我想尝试:
- 动态调整“分区大小”来作为虚拟硬盘让虚拟机使用
- 虚拟机内的硬盘大小不受物理硬盘的大小限制1
- 原生支持快照
LVM 概览
翻译自维基百科的 LVM 介绍图片,相关来源与原授权协议如下:
This vector image was created with Inkscape, and then manually edited by Perhelion - Own work, CC BY-SA 3.0 de, https://commons.wikimedia.org/w/index.php?curid=11624545 / https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)
本人在此基础上添加了中文注释。
添加新的硬盘
假设你的新硬盘设备是一个 1TB 的硬盘,在 Linux 下识别为 /dev/sda
,并预计划分 300G 作为数据储存备份(ISO 镜像、LXC 模板)使用。
首先将硬盘格式化为 GPT (并建立一个分区):
sgdisk -N 1 /dev/sda
将这个分区格式化为物理卷:
pvcreate --metadatasize 256M -y -ff /dev/sda1
※ --metadatasize
可忽略,默认为 1M。我这里的 256M
有点夸张,但设定后改不了了…
※ -ff
将跳过检查并强制重新配置 PV。
然后就是将这个物理卷加入一个到新的卷组内:
vgcreate --metadatasize 256M ssd1 /dev/sda1
※ --metadatasize
可忽略。
建立一个新的逻辑卷并命名为 data
,占用所有卷组空间:
lvcreate --extents 100%FREE --poolmetadatasize 256M \
--chunksize 256K --thin --name data ssd1
※ --poolmetadatasize
与 --chunksize
可忽略。
建立一个分区用于储存 PVE 的备份、镜像等数据:
lvcreate --name storage --virtualsize 300G ssd1/data
mkfs.ext4 /dev/ssd1/storage
建立挂载目录并设定自动挂载:
mkdir /media/ssd1-storage
echo '/dev/ssd1/storage /media/ssd1-storage ext4 defaults,noatime,errors=remount-ro 0 2' >> /etc/fstab
mount -a
最后依次在数据中心→储存添加这个 LVM-Thin 和新的挂载目录作为储存,或添加下属内容至 /etc/pve/storage.cfg
:
dir: ssd1-storage
path /media/ssd1-storage
content iso,backup,snippets,vztmpl
prune-backups keep-all=1
shared 0
lvmthin: ssd1-lvm
thinpool data
vgname ssd1
content rootdir,images
最终配置完成的效果:
参考
- Proxmox VE 7.0 Complete Guide: https://syncbricks.com/proxmox-ve-7-0-tutorial/
- New Bing 问答
可以从多个硬盘共同划出空间来用。 ↩︎