我在没有特权的LXD容器(例如disk
)中将主机目录配置为/opt/app/var
设备,并在容器自身文件系统(例如/backup
)上创建了备份目录。
我使用rsync
通过硬链接将/opt/app/var
文件备份到/backup
,但是我得到了Invalid cross-device link
lxd容器设备配置:
devices:
var:
path: /opt/app/var
source: /opt/app/var
type: disk
在容器中:
$ cat /proc/mounts | grep opt
/dev/sda2 /opt/app/var ext4 rw,relatime,stripe=64,data=ordered 0 0
$ cat /proc/mounts | grep "/ "
/dev/sda2 / ext4 rw,relatime,stripe=64,data=ordered 0 0
$ cat /etc/fstab
LABEL=cloudimg-rootfs / ext4 defaults 0 0
我发现lxd
的挂载点来自/dev/sda2
,根分区挂载点也来自/dev/sda2
,因此它应该在同一设备上。
答案 0 :(得分:1)
这不是容器问题。 即使安装(绑定)的设备是同一台设备,也无法跨安装点创建硬链接。
在您的系统上尝试:
> cd /tmp/
> mkdir bar
> mkdir barm1
> mkdir barm2
> sudo mount --bind bar barm1
> sudo mount --bind bar barm2
> cd barm1
> echo foo > foo
> ll ../barm2/
drwxr-xr-x 2 user users 4096 Jul 13 15:56 ./
drwxrwxrwt. 19 root root 147456 Jul 13 15:57 ../
-rw-r--r-- 1 user users 4 Jul 13 15:56 foo
> cp --link foo ../barm2/foo2
cp: cannot create hard link '../barm2/foo2' to 'foo': Invalid cross-device link