2

我将主机目录配置disk为非特权 LXD 容器中的设备,例如/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

我发现 by 的挂载点lxd是 from /dev/sda2,根分区的挂载点也是 from /dev/sda2,所以应该在同一个设备上。

4

1 回答 1

1

这不是容器问题。您无法跨安装点创建硬链接,即使它是您(绑定)安装到 FS 层次结构中不同位置的同一设备。

在你的系统上试试这个:

> 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
于 2018-07-13T14:41:43.400 回答