Использование диска для одного и того же диска показывает 20 КБ на хосте и 16 ГБ в контейнере
При сравнении использования диска для смонтированного жесткого диска использование полностью отличается по сравнению между хостом и контейнером. Я использую Ubuntu 14.04 на хосте и в контейнере lxc.
Жесткий диск установлен на хосте, что подтверждается /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
Теперь я вижу использование 16 ГБ на хосте:
$ 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 (/dev/nvme0n1
) когда это выходит за рамки /mnt/SSD
в то время как контейнер имеет доступ к каталогу на своем корневом диске (/dev/mapper/sifr--vg-root
).
Чтобы иметь это в контейнере, вам нужен bind
mount и вы можете разрешить создание каталога в файловой системе контейнера. Для этого вам нужно добавить create=dir
опция в fstab контейнера:
/mnt/SSD /moint/point/in/the/container none bind,create=dir
>
create = dir (будет делать mkdir_p на пути)
create = file (создаст mkdir_p для dirname + fopen на пути)