Proxmox VM Environment Storage 以及挂载
Proxmox (aka. PVE) 最直观的查看storage情况的途径就是WebUI。然而有的时候这个 WebUI有一些限制,比如具体挂载是怎么实现的,以及如何清楚的去除一个 storage,都不是很清楚。这篇文章算是个人摸索 Proxmox 在 Storage 方面的一些使用经验。
storage.cfg
Web UI 上面显示的 storage,是直接由这个 storage config file 决定的:
# Path:
/etc/pve/storage.cfg
# Example content
dir: local
path /var/lib/vz
content vztmpl,iso,rootdir
prune-backups keep-all=1
shared 0
zfspool: local-zfs
pool rpool/data
content images,rootdir
sparse 1
zfspool: dpool
pool dpool
content images,rootdir
mountpoint /dpool
nodes pve
pbs: pbs
datastore hdd-WD-4T-Red
server 10.0.0.252
content backup
fingerprint <finger_print>
prune-backups keep-all=1
username root@pam
我这里给出的例子包括了三类,共4个存储
- dir类:就是直接的文件系统挂载,这类就是支持QCOW2这种image的选择。有时我们也用这个类型存备份已经系统安装镜像。这里的
local
就是安装 Proxmox的时候,ZFS 直接给我们的,在 root 磁盘上面划分出来的。- 这给类别对新手最友好
- 因为底层是 ZFS,但是因为已经是FS,而不是 block storage,所以需要跟 zvol 区分。
- zfspool 类:这类实际上是 zvol,所以依旧是块存储而不是文件系统。主要是给 VM 做 image 用。不过实际使用中要慎重,很可能性能坑爹还可能有严重的写入放大。
- pbs类:这类实际上是一个远程的 Proxmox Backup Server 服务器,就是做备份用的。这里的Fingerprint 应该是在创建这个 storage的时候填入的。
以上没有涉及 LVM 以及 LVM-thin,这两个其实也是块存储,使用方面可能类似 ZVOL (aka zfspool)。而且相对ZFS的ZVOL,LVM更是久经考验,如果担心写入放大,担心性能问题,而且有良好备份的话,用LVM应该是更稳妥的选择。
这个文件的删除,是需要使用PVE提供的CLI来做的,参考链接。
简单来说要用:
pvesm remove <STORAGE_ID>
STORAGE_ID这里就是storage 的名字。至于常规的改动,应该能用WebUI就用WebUI。现在的版本可能连删除都可以在 WebUI里面做了。
Directory Mount 目录挂载
但是目前我们还没说目录是怎么挂载的。这部分只是针对于 DIR 类的storage。
Proxmox 没有用比较老旧的 /etc/fstab 来管理挂载,而是用了 SystemD,这样,目录挂载的处理跟一般的服务实际上是等同处理的。
这部分挂载的配置在 /etc/systemd/system/
目录下,比如我之前有一个 storage, 是本地磁盘 EXT4 普通 DIR的挂载。其配置文件就在:
cat /etc/systemd/system/mnt-pve-hdd\\x2d4T\\x2dWD\\x2dRed.mount
注意这里的
应该就是 mnt-pve-hdd\\x2d4T\\x2dWD\\x2dRed.mount
mnt-pve-hdd_4T_WD_Red.mount
. 这里 hdd_4T_WD_Red 是我的storage 的名称。
打开这个文件,其内容大体是
[Install]
WantedBy=multi-user.target
[Mount]
Options=defaults
Type=ext4
What=/dev/disk/by-uuid/<UUID_xxx>
Where=/mnt/pve/hdd-4T-WD-Red
[Unit]
Description=Mount storage 'hdd-4T-WD-Red' under /mnt/pve
这里我们可以看到,这个 mount 操作,在每次启动时,是需要在 multi-user.target
这一节点前完成的。而Proxmox里面那些需要disk mount的服务,都会在 multi-user.target 之后才运行。
因为不用 /etc/fstab,所以不要尝试修改fstab来调整启动时磁盘的挂载。如果需要调整,也要用 systemD 的命令行 systemctl 来调整。
比如,启用一个挂载(比如你有一个硬盘,换到另一个 Proxmox 机器上,然后你需要把这个硬盘添加进 Proxmox 的storage,同时你要保留原有数据所以不能format)
systemctl enable mnt-pve-hdd\\x2d4T\\x2dWD\\x2dRed.mount
或者,如果要停用一个挂载(比如你要把原本在当前Proxmox上面的一个硬盘拿走,在删除了这个storage 以后,你还要停止这个磁盘的挂载)
systemctl disable mnt-pve-hdd\\x2d4T\\x2dWD\\x2dRed.mount
总结
- storage.cfg 直接对应UI
- 其内容修改,最好用web UI或者 pvesm 命令。尽量不要手动直接修改。
- Directory的挂载是通过 SystemD (systemctl)完成的。所以其调整是通过修改systemctl的config文件以及sytemctl来控制的。
- 其他一些storage类型可能也是类似的,但是没有特别研究了。