无法为LXD容器中已装入的主机文件建立硬链接

时间:2018-07-08 09:31:48

标签: hardlink lxd

我在没有特权的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,因此它应该在同一设备上。

1 个答案:

答案 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