跳至内容

Jixun's Blog 填坑还是开坑,这是个好问题。

PVE 添加新硬盘到新的 LVM 卷组

近期得到一个 Ryzen U5500U 的迷你主机,一番配置后采用了免费的 PVE 虚拟机环境。

我对 LVM 的感觉一直都是“过于复杂”,日常使用也会经常放弃它来使用简单的 ext4 凑合着用。

但是!对于虚拟机平台来说,LVM 有这么几个优点让我想尝试:

  • 动态调整“分区大小”来作为虚拟硬盘让虚拟机使用
  • 虚拟机内的硬盘大小不受物理硬盘的大小限制1
  • 原生支持快照

LVM 概览 #

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

将这个分区格式化为物理卷(PV/Physical Volume)

pvcreate --metadatasize 256M -y -ff /dev/sda1

--metadatasize 可忽略,默认为 1M。我这里的 256M 有点夸张,但设定后改不了了…
-ff 将跳过检查并强制重新配置 PV。

然后就是将这个物理卷(PV/Physical Volume)加入一个到新的卷组(VG/Volume Group)内:

vgcreate --metadatasize 256M ssd1 /dev/sda1

--metadatasize 可忽略。

建立一个新的逻辑卷(LV/Logical Volume)并命名为 data,占用所有卷组(VG/Volume Group)空间:

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

最后依次在数据中心(Datacenter)储存(Storage)添加这个 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

最终配置完成的效果:

配置完成后的PVE 数据中心的储存界面

参考 #

  1. Proxmox VE 7.0 Complete Guide: https://syncbricks.com/proxmox-ve-7-0-tutorial/
  2. New Bing 问答

  1. 可以从多个硬盘共同划出空间来用。 ↩︎

知识共享许可协议 本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

评论区