Proxmox 2.3 不使用挂载脚本

Proxmox 2.3 不使用挂载脚本

我正在运行 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 或其他不太可能被更新和源覆盖的配置文件中,就像您正在做的那样,以实现额外的简化。

相关内容