我正在尝试将主机上的文件夹挂载到 LXC 容器。
主机/mnt/ssd/solr_data
创建了一个文件夹(当前位于根文件系统上,但稍后我将在那里安装 SSD 驱动器,所以我正在为此做好准备)。
/data
我希望该文件夹像在容器中一样安装。
所以在容器 fstab 文件中我有以下内容:
/mnt/ssd/solr_data /var/lib/lxc/Solr4StandAlone/rootfs/data ext4 defaults,noatime 0 0
但这是不行的,我在启动容器时收到此错误:
lxc-start: No such file or directory - failed to mount '/mnt/ssd/solr_data' on '/usr/lib/x86_64-linux-gnu/lxc//data'
lxc-start: failed to setup the mounts for 'Solr4StandAlone'
lxc-start: failed to setup the container
lxc-start: invalid sequence number 1. expected 2
lxc-start: failed to spawn 'Solr4StandAlone'
答案1
要在容器中自动创建目录,您还可以create=dir
在 fstab 中添加选项:
/mnt/ssd/solr_data /var/lib/lxc/Solr4StandAlone/rootfs/data none bind,create=dir
编辑:这是 LXC 特有的。看这个线程
就像我们已经有“可选”一样,这添加了两个新的 LXC 特定的安装标志:
create=dir (将在路径上执行 mkdir_p)
create=file(将在目录名上执行 mkdir_p + 在路径上执行 fopen)
这是由非特权容器所需的一些绑定安装驱动的。
答案2
添加/var/lib/lxc/Solr4StandAlone/config
一行:
lxc.mount.entry = /mnt/ssd/solr_data /var/lib/lxc/Solr4StandAlone/rootfs/data none bind 0 0
然后再次lxc-stop
停止你的容器和lxc-start
你的容器。
这就是所需要的一切。
参考:参考链接
答案3
截至 2015 年 9 月 30 日,安全补丁导致的更改破坏了配置文件中 lxc.mount.entry 的绝对路径安装。
相反,你可以使用相对路径
lxc.mount.entry = /mnt/ssd/solr_data data none bind 0 0
看:https://wiki.debian.org/LXC#Bind_mounts_inside_the_container
答案4
由于 LXC 随着时间的推移而发生了变化,这可能非常简单,但它让我有点困惑,所以想做出贡献。我还为此创建了一个要点,这样我就可以记住自己,但只需使用 lxc 配置设备就可以解决问题。
sudo lxc config device add Solr4StandAlone sdb disk source=/var/lib/lxc/Solr4StandAlone/rootfs/data path=mnt/ssd/solr_data
笔记由于 @biscuitNinja 提到的更改,将路径参数中的前斜杠保留很重要