当比较已安装硬盘的磁盘使用情况时,主机和容器之间的使用情况完全不同。我在主机和 lxc 容器中运行 Ubuntu 14.04。
硬盘已安装在主机上,并由 确认,/etc/mtab
其具有以下条目:/dev/nvme0n1 /mnt/SSD ext4 rw 0 0
。但是,驱动器未使用 安装/etc/fstab
。驱动器在 lxc 容器内使用 fstab 设置安装:/var/lib/lxc/container_name/fstab
。
来自主持人:
# du -hs /mnt/SSD/
20K /mnt/SSD/
# df -h
Filesystem Size Used Avail Use% Mounted on
udev 63G 4.0K 63G 1% /dev
tmpfs 13G 1.4M 13G 1% /run
/dev/mapper/sifr--vg-root 314G 241G 58G 81% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 63G 0 63G 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/sda1 236M 100M 124M 45% /boot
/dev/nvme0n1 1.1T 71M 1.1T 1% /mnt/SSD
来自容器:
$ du -hs /mnt/SSD/
16G /mnt/SSD/
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/sifr--vg-root 314G 241G 58G 81% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 13G 136K 13G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 63G 4.0K 63G 1% /run/shm
none 100M 0 100M 0% /run/user
- 同一个驱动器如何以及为何会显示两种不同的用途?
- 哪一个是正确的用法?
更新:
使用卸载驱动器后sudo umount /dev/nvme0n1
,我现在看到主机中的磁盘使用量为 16GB:
$ du -hs /mnt/SSD/
16G /mnt/SSD/
我/dev/sdb
使用安装了另一个驱动器/etc/fstab
,并使用相同的方法让容器访问它:/var/lib/lxc/container_name/fstab
。第二个驱动器的使用也一致,并且内容在容器和主机中都可用。
这两个驱动器之间的区别在于,它/dev/nvme0n1
是一个 nvme 驱动器,是手动安装的,而是/dev/sdb
一个磁性驱动器,是使用安装的/etc/fstab
。
什么可能导致行为上的差异以及如何/dev/nvme0n1
在容器中提供这种差异?
答案1
原因是,主机可以访问已安装的驱动器,而容器则不能。这是因为容器中没有安装任何内容。因此,当主机超出范围时/mnt/SSD
,它会访问 SSD 上的数据并将其存储在 SSD 上 ( ) ,而容器会访问其根磁盘上的目录 ( )。/dev/nvme0n1
/mnt/SSD
/dev/mapper/sifr--vg-root
要在容器中实现这一点,您需要bind
挂载,并且您可以在容器的文件系统中创建一个目录。为此,您需要create=dir
在容器的 fstab 中添加选项:
/mnt/SSD /moint/point/in/the/container none bind,create=dir
>
create=dir (将在路径上执行 mkdir_p)
create=file(将在目录名上执行 mkdir_p + 在路径上执行 fopen)