![将块设备添加到 LXD 容器](https://linux22.com/image/1059825/%E5%B0%86%E5%9D%97%E8%AE%BE%E5%A4%87%E6%B7%BB%E5%8A%A0%E5%88%B0%20LXD%20%E5%AE%B9%E5%99%A8.png)
我想在容器中使用假块设备。我创建了循环设备并将磁盘添加到容器中,但我没有看到 /dev/ 目录列表。
# truncate -s 10G xfs.img
# mkfs.xfs xfs.img
# losetup -f xfs.img
# lxc config device add Cont01 BDisk disk source=/dev/loop0 path=/mnt/disk
# lxc exec Cont1 -- df -h
...
/dev/loop0 9.8G 36.0M 9.2G 0% /mnt/disk
# lxc exec Cont1 "ls /dev/ | grep loop"
#
我猜这与 apparmor 或安全策略有关。有人能建议一种让 LXC 访问假块设备的安全方法吗?
更新 挂载虚假块设备的方法:
$ lxc config device add ceph04 BDisk unix-block path=/dev/loop1
答案1
LXD GitHub 有很多与配置相关的文档。
https://github.com/lxc/lxd/blob/master/doc/configuration.md
在那里搜索“unix-block”你就会找到你需要的内容。
引文如下:
设备配置
LXD 将始终为容器提供标准 POSIX 系统运行所需的基本设备。这些设备在容器或配置文件配置中不可见,并且可能无法覆盖。
其中包括:
/dev/null (字符设备) /dev/zero (字符设备) /dev/full (字符设备) /dev/console (字符设备) /dev/tty (字符设备) /dev/random (字符设备) /dev/urandom (字符设备) /dev/net/tun (字符设备) /dev/fuse (字符设备) lo (网络接口)
任何其他内容都必须在容器配置或其配置文件之一中定义。默认配置文件通常包含一个网络接口,该接口将成为容器中的 eth0。
要向容器添加额外的设备,可以将设备条目直接添加到容器或配置文件中。
容器运行时可以添加或删除设备。
每个设备条目都由一个唯一名称标识。如果在后续配置文件或容器自己的配置中使用了相同的名称,则整个条目将被新定义覆盖。
设备条目通过以下方式添加:lxc config device add [key=value]...
= = = 结束引用 = = =
示例命令:
lxc 配置文件设备添加 [key=value]…
此外,如果您使用 LXD,我强烈建议您订阅 lxc-users 邮件别名,因为开发人员会监控该邮件并每天回答问答。
https://lists.linuxcontainers.org/
最后,Reddit 上有一个 LXD 子版块(如果您使用 Reddit?),它不是为了支持而存在,但确实提供了大量有关 LXD 的优秀信息。