我发现使用zfs
设置的内容,lxd
过程中lxd init
可能正在执行的内容与我期望看到的内容之间存在一些差异。
我已经使用LXD大约一个月了,已经浏览了文档并进行了多次搜索,但它们似乎没有涉及这个主题。
有关我的问题的详细信息,请查看以下部分:
tank/lxd
数据集内容 从其{{1的装载位置移动ZFS池VDEV进入/mnt/tank/lxd/...
,还是其他事情要做? (a)如何确认/验证这两种情况? (b)更好的是,我怎样才能让LXD将所有内容保存/放入我使用/var/lib/lxd/...
设置的数据集中?zfs
下的所有内容都存储在我/var/lib/lxd/
期间指定的tank/lxd
中:我该怎么做? (一个好的ZFS / LXD方式更可取;我可以 lxd init
进入坦克并且mv /var/lib/lxd
目录指向ln -s
,但这似乎是一个糟糕的黑客,并希望避免它。必须有一个更好的方法。)提前致谢。
我在Ubuntu 18.04中使用LXD 3.0.0,将其设置为使用预先存在的ZFS池和数据集。这是在运行/mnt/tank/...
之前的样子:
lxd init
这看起来像我预期的那样。然后我运行$ sudo zpool create -m /mnt/tank tank raidz3 <6 storage SSDs omitted>
$ sudo zfs set compression=on tank
$ sudo zfs create tank/lxd
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 216K 1.31T 43.7K /mnt/tank
tank/lxd 41.7K 1.31T 41.7K /mnt/tank/lxd
并按如下方式跟进:
lxd init
这是$ lxd init
[...]
Create a new ZFS pool? (yes/no) [default=yes]: no
Name of the existing ZFS pool or dataset: tank/lxd
[...]
在完成上述内容后显示的:
zfs list
LXD创建了一些数据集,但$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 589K 1.31T 41.7K /mnt/tank
tank/lxd 250K 1.31T 41.7K none
tank/lxd/containers 41.7K 1.31T 41.7K none
tank/lxd/custom 41.7K 1.31T 41.7K none
tank/lxd/deleted 41.7K 1.31T 41.7K none
tank/lxd/images 41.7K 1.31T 41.7K none
tank/lxd/snapshots 41.7K 1.31T 41.7K none
已经不再像以前那样(即mountpoint
已经消失),也不再是我所期望的(tank/lxd
下的任何内容都没有列出)。简而言之,原始挂载点消失了,其他数据集没有像我预期的那样出现。
我可能在这里错了,但看起来好像 LXD已将lxd/...
下的数据移出ZFS池vdevs 并进入安装了操作系统的LVM上的/mnt/tank/lxd/...
目录。我不确定我错过了什么。
我可以使用/var/lib/lxd/
命令更改“正确”:
zfs set
并确认它们再次按预期显示:
$ sudo zfs set mountpoint=/mnt/tank/lxd tank/lxd
$ sudo zfs set mountpoint=/mnt/tank/lxd/containers tank/lxd/containers
$ sudo zfs set mountpoint=/mnt/tank/lxd/custom tank/lxd/custom
$ sudo zfs set mountpoint=/mnt/tank/lxd/deleted tank/lxd/deleted
$ sudo zfs set mountpoint=/mnt/tank/lxd/images tank/lxd/images
$ sudo zfs set mountpoint=/mnt/tank/lxd/snapshots tank/lxd/snapshots
但这似乎是部分解决方案,因为所有其他文件(例如$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 641K 1.31T 43.7K /mnt/tank
tank/lxd 252K 1.31T 43.7K /mnt/tank/lxd
tank/lxd/containers 41.7K 1.31T 41.7K /mnt/tank/lxd/containers
tank/lxd/custom 41.7K 1.31T 41.7K /mnt/tank/lxd/custom
tank/lxd/deleted 41.7K 1.31T 41.7K /mnt/tank/lxd/deleted
tank/lxd/images 41.7K 1.31T 41.7K /mnt/tank/lxd/images
tank/lxd/snapshots 41.7K 1.31T 41.7K /mnt/tank/lxd/snapshots
,密钥等)都留在lxd.db
下。所以,我不确定我是在“修理”任何东西,还是有任何东西要修理。
另外,我不清楚我是否真的使用/var/lib/lxd
命令实现了任何目标。例如,zfs set
不显示touch /var/lib/lxd/containers/hi.txt
下的文件,我希望 如果 两个人都看着同一个地方。
提前感谢您的帮助。
有人建议我尝试写一些文件作为测试,根据系统信息查看实际使用的空间。测试步骤如下:
/mnt/tank/lxd/containers/
命令让LXD做自己的事情并看看会发生什么。 (为简洁起见,下面省略了步骤。)结果不确定,可以在下面看到。
zfs set mountpoint
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 1.18G 1.31T 41.7K /mnt/tank
tank/lxd 1.18G 1.31T 41.7K none
tank/lxd/containers 270M 1.31T 41.7K none
tank/lxd/containers/base-server 251M 1.31T 588M /var/lib/lxd/storage-pools/lxd-pool/containers/base-server
tank/lxd/containers/dev-server 9.18M 1.31T 588M /var/lib/lxd/storage-pools/lxd-pool/containers/dev-server
tank/lxd/containers/qa-server 9.14M 1.31T 588M /var/lib/lxd/storage-pools/lxd-pool/containers/qa-server
tank/lxd/custom 125K 1.31T 41.7K none
tank/lxd/custom/dev-volume 41.7K 512G 41.7K /var/lib/lxd/storage-pools/lxd-pool/custom/dev-volume
tank/lxd/custom/qa-volume 41.7K 512G 41.7K /var/lib/lxd/storage-pools/lxd-pool/custom/qa-volume
tank/lxd/deleted 41.7K 1.31T 41.7K none
tank/lxd/images 937M 1.31T 41.7K none
tank/lxd/images/ab23ac2bda8cfb48c176a2d1e790181d5a1ed3522732a0cf8ff189dea848d3f1 588M 1.31T 588M none
tank/lxd/images/b36ec647e374da4816104a98807633a2cc387488083d3776557081c4d0333618 349M 1.31T 349M none
tank/lxd/snapshots 41.7K 1.31T 41.7K none
root@dev-server:~$ df -h
Filesystem Size Used Avail Use% Mounted on
tank/lxd/containers/dev-server 1.4T 589M 1.4T 1% /
none 492K 0 492K 0% /dev
udev 32G 0 32G 0% /dev/tty
tmpfs 100K 0 100K 0% /dev/lxd
tank/lxd/custom/dev-volume 512G 128K 512G 1% /mnt/tank
tmpfs 100K 0 100K 0% /dev/.lxd-mounts
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 160K 32G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 32G 0 32G 0% /sys/fs/cgroup
root@dev-server:~$ dd if=/dev/zero of=/root/test.img bs=8MB
^C3929+0 records in
3929+0 records out
31432000000 bytes (31 GB, 29 GiB) copied, 17.7005 s, 1.8 GB/s
root@dev-server:~$ ls -lh
total 512
-rw-r--r-- 1 root root 30G May 7 20:21 test.img
root@dev-server:~$ df -h
Filesystem Size Used Avail Use% Mounted on
tank/lxd/containers/dev-server 1.4T 589M 1.4T 1% /
none 492K 0 492K 0% /dev
udev 32G 0 32G 0% /dev/tty
tmpfs 100K 0 100K 0% /dev/lxd
tank/lxd/custom/dev-volume 512G 128K 512G 1% /mnt/tank
tmpfs 100K 0 100K 0% /dev/.lxd-mounts
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 160K 32G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 32G 0 32G 0% /sys/fs/cgroup
在创建/销毁测试文件之前和之后在主机上运行$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 1.18G 1.31T 41.7K /mnt/tank
tank/lxd 1.18G 1.31T 41.7K none
tank/lxd/containers 270M 1.31T 41.7K none
tank/lxd/containers/base-server 251M 1.31T 588M /var/lib/lxd/storage-pools/lxd-pool/containers/base-server
tank/lxd/containers/dev-server 9.18M 1.31T 588M /var/lib/lxd/storage-pools/lxd-pool/containers/dev-server
tank/lxd/containers/qa-server 9.14M 1.31T 588M /var/lib/lxd/storage-pools/lxd-pool/containers/qa-server
tank/lxd/custom 125K 1.31T 41.7K none
tank/lxd/custom/dev-volume 41.7K 512G 41.7K /var/lib/lxd/storage-pools/lxd-pool/custom/dev-volume
tank/lxd/custom/qa-volume 41.7K 512G 41.7K /var/lib/lxd/storage-pools/lxd-pool/custom/qa-volume
tank/lxd/deleted 41.7K 1.31T 41.7K none
tank/lxd/images 937M 1.31T 41.7K none
tank/lxd/images/ab23ac2bda8cfb48c176a2d1e790181d5a1ed3522732a0cf8ff189dea848d3f1 588M 1.31T 588M none
tank/lxd/images/b36ec647e374da4816104a98807633a2cc387488083d3776557081c4d0333618 349M 1.31T 349M none
tank/lxd/snapshots 41.7K 1.31T 41.7K none
命令也没有显示任何更改。我用一个更大的(100GB)测试文件重复了这个,但没有注意到差异。
答案 0 :(得分:1)
当Intent intent = new Intent(<YourFragment>.this.getContext(), AddStudentGradeActivity.class);
为mountpoint
时,它可能意味着以下两种情况之一:
none
命令明确卸载了该文件系统。zfs unmount
命令设置应挂载文件系统的位置,而不是使用mount
命令。我猜LXD正在做后者,而ZFS只是不知道它的安装位置。如果是这样,LXD可能还会向zfs mount
写入条目,以便在重新启动时在/etc/fstab
中重新创建这些安装。 (哎呀,也许LXD的作者甚至认为,如果挂载点不太方便输入,那么爱管闲事的ZFS爱好者将不太可能尝试存储或修改其VM数据目录中的内容。)
所以简短的回答是,我认为没有什么可以解决的。但是,我认为您对/var/lib/lxd/...
所做的更改也不会造成任何伤害。
您提到LXD目录中的zfs set
不会在touch ...
目录中创建任何内容。文件系统一次只能安装在一个地方,所以我认为/mnt/tank/...
下的相应目录只是当挂载点发生变化时ZFS留在原地的目录。如果您现在尝试将挂载点切换回/mnt
,它应该强制您在允许挂载发生之前删除您在那里触摸的文件(不允许“覆盖”来自两个不同文件系统的重复目录) 。如果由于某种原因希望将它们链接起来,可以使用符号链接来实现。
将来,您可以使用/mnt/...
找出文件写入的文件系统,以帮助调试此类问题。