我正在运行 proxmox 2.3
自从我在新服务器上安装了 proxmox 后,我就无法在容器上使用 mount 和 unmount 脚本了,我也不知道为什么。Proxmox 根本就无法读取这些脚本。
以下是具有 +x 权限的 2 个脚本:
[root@prox /etc/vz/conf]$ l total 16K
-rwxr-xr-x 1 root root 180 May 6 03:03 100.mount
-rwxr-xr-x 1 root root 145 May 6 02:44 100.umount
-rwxr-xr-x 1 root root 97 May 11 19:00 103.mount
-rwxr-xr-x 1 root root 89 May 11 18:52 103.umount
我把脚本简化到了最大程度。
103.挂载:
#!/bin/bash
. /etc/vz/vz.conf
. ${VE_CONFFILE}
mount --bind /mnt/share /var/lib/vz/root/103/mnt
103.卸载:
#!/bin/bash
. /etc/vz/vz.conf
. ${VE_CONFFILE}
umount /var/lib/vz/root/103/mnt/
exit 0
如果我重新启动容器 103:
[root@prox /etc/vz/conf]$ vzctl --verbose restart 103
Restarting container
Stopping container ...
Container was stopped
Container is unmounted
Starting container ...
Container is mounted
Running container script: /etc/vz/dists/scripts/debian-add_ip.sh
Setting CPU units: 1000
Setting CPUs: 1
Running container script: /etc/vz/dists/scripts/debian-set_hostname.sh
Running container script: /etc/vz/dists/scripts/set_dns.sh
Running container script: /etc/vz/dists/scripts/set_ugid_quota.sh
Configure veth devices: veth103.0
Adding interface veth103.0 to bridge vmbr2 on CT0 for CT103
Container start in progress...
[root@prox /etc/vz/conf]$
这里我们看到proxmox没有读取103.mount。如果我进入conterner,目录“share”没有被挂载。
因此我直接在 shell 中尝试了命令行:
mount --bind /mnt/share /var/lib/vz/root/103/mnt
... 并且成功了。我还尝试了“mount -n --bind”和其他方法... 我没什么主意了。
所以,如果您对我如何解决这个问题有任何建议,谢谢!
答案1
由于在 Proxmox 论坛上也有人问过同样的问题,我也附和道,但为了帮助这里的其他人,我也想在这里提一下我的回应。
这篇文章的要点是,您的系统可能没有正确设置,无法找到脚本,更不用说调用脚本了。具体来说,目录/etc/vz/conf
应该是指向的符号链接/etc/pve/openvz
- 因为 Proxmox 还在那里存储您的 VM 配置文件,所以似乎并非如此(基于上面给出的输出ls
...)。将脚本移动到/etc/pve/openvz
应该可以解决问题,删除/etc/vz/conf
并用符号链接替换它/etc/pve/openvz
可以帮助您在自己的头脑中保持理智。
答案2
这是我使用的并且似乎有效:
在146.mount中:
#! /bin/bash
VEID=146
SRC=/mnt/nfs
VE_ROOT=/var/lib/vz/root/${VEID}
MPS="/u/tools /u/homes /u/releases /f"
for mp in $MPS; do
if [ ! -e ${VE_ROOT}${mp} ]; then mkdir -p ${VE_ROOT}${mp}; fi
mount -n --bind ${SRC}${mp} ${VE_ROOT}${mp} -o ${SRC}
done
MPS 列出了挂载在 /mnt/nfs (SRC) 下的挂载点,它们将绑定挂载到容器的根目录。我将它们直接添加到 /etc/fstab,以便它们始终挂载在 VM 主机上。
我原本计划通过从文件的基本名称计算 VEID 来通用化这一点,但在完成这项工作之前,我放弃了使用 OpenVZ,转而使用 KVM。类似这样的方法可能会奏效:
VEID=`basename $0 .mount`
并允许对所有 VZ 使用完全相同的挂载文件,但我尚未测试过。
可能还可以将 SRC 和 MPS 放入 /etc/vz/vz.conf 或其他不太可能被更新和源覆盖的配置文件中,就像您正在做的那样,以实现额外的简化。