У меня есть пул ZFS (зеркальный RAID) на двух дисках, который я перенес с сервера FreeBSD 11.0 на сервер LTS Ubuntu 16.04.2.
После импорта пула я вижу:
NAME USED AVAIL REFER MOUNTPOINT
zroot 993G 790G 104K /mnt/zfs
zroot/ROOT 989G 790G 96K none
zroot/ROOT/default 989G 790G 989G none
zroot/tmp 140K 790G 140K none
zroot/usr 3.37G 790G 96K none
zroot/usr/home 2.15G 790G 2.15G none
zroot/usr/ports 640M 790G 640M none
zroot/usr/src 608M 790G 608M none
zroot/var 1.66M 790G 96K none
zroot/var/audit 96K 790G 96K none
zroot/var/crash 96K 790G 96K none
zroot/var/log 476K 790G 476K none
zroot/var/mail 840K 790G 840K none
zroot/var/tmp 96K 790G 96K none
Я ожидаю увидеть полностью заполненное дерево каталогов под /mnt/zfs
в системе Ubuntu, содержащий 993 ГБ файлов. Вместо этого я вижу частично заполненное дерево каталогов без файлов внутри них:
$ tree /mnt/zfs
/mnt/zfs
├── tmp
├── usr
│ ├── home
│ ├── ports
│ └── src
└── var
├── audit
├── crash
├── log
├── mail
└── tmp
Я почти уверен, что мне здесь не хватает чего-то фундаментального.
Попытка №1: Установка точки монтирования для ROOT в соответствии с предложением @ Zoredache просто приводит к пустому каталогу ROOT:
$ sudo zfs set mountpoint=/mnt/zfs/ROOT zroot/ROOT
$ tree /mnt/zfs
/mnt/zfs
└── ROOT
Попытка №2: Установка точки монтирования для ROOT / default, согласно предложению @ user121391, также дает пустой каталог:
$ sudo zfs set mountpoint=/mnt/zfs/ROOT zroot/ROOT/default
$ tree /mnt/zfs
/mnt/zfs
0 directories, 0 files
Попытка №3: Установка отдельного каталога, похоже, работает, согласно другому предложению @ user131391:
$ sudo zfs set mountpoint=/mnt/zfs/usr/home zroot/usr/home
$ tree /mnt/zfs
/mnt/zfs
└── usr
└── home
└── duncan
├── tmp
│ ├── code
...
└── usb
17978 directories, 67539 files
Это здорово, но, к сожалению, это не помогает. Файлы, которые мне нужны, находятся под /usr/local/
, который не появляется в результате zfs list
. Но пространство явно используется, если посмотреть на размеры:
zroot/ROOT/default 989G 790G 989G none
zroot/usr 3.37G 790G 96K none
Попытка №4:
Дополнительная информация для Михаэля Кьёрлинга:
$ sudo zfs set mountpoint=/mnt/zfs/ROOT zroot/ROOT/default
$ sudo zfs get mountpoint,mounted zroot -t filesystem -r
NAME PROPERTY VALUE SOURCE
zroot mountpoint none local
zroot mounted no -
zroot/ROOT mountpoint none local
zroot/ROOT mounted no -
zroot/ROOT/default mountpoint /mnt/zfs/ROOT local
zroot/ROOT/default mounted no -
zroot/tmp mountpoint none local
zroot/tmp mounted no -
zroot/usr mountpoint none local
zroot/usr mounted no -
zroot/usr/home mountpoint none local
zroot/usr/home mounted no -
zroot/usr/ports mountpoint none local
zroot/usr/ports mounted no -
zroot/usr/src mountpoint none local
zroot/usr/src mounted no -
zroot/var mountpoint none local
zroot/var mounted no -
zroot/var/audit mountpoint none local
zroot/var/audit mounted no -
zroot/var/crash mountpoint none local
zroot/var/crash mounted no -
zroot/var/log mountpoint none local
zroot/var/log mounted no -
zroot/var/mail mountpoint none local
zroot/var/mail mounted no -
zroot/var/tmp mountpoint none local
zroot/var/tmp mounted no -
$ tree /mnt/zfs
/mnt/zfs
0 directories, 0 files
zroot и zroot / ROOT не содержат файлов, они просто контейнеры для других данных.
Основная часть ваших данных находится в zroot / ROOT / default.
Другие файловые системы zfs должны наследовать свою точку монтирования от zroot (не знаю, как эта информация потерялась при переходе с FreeBSD на Ubuntu):
zfs inherit mountpoint zroot/tmp
zfs inherit mountpoint zroot/usr
zfs inherit mountpoint zroot/usr/home
zfs inherit mountpoint zroot/usr/ports
... и так далее (возможно, это можно сделать с помощью -r, но я не проверял).
Единственная файловая система zfs, которая должна иметь точку монтирования none
это zroot / ROOT:
zfs set mountpoint=none zroot/ROOT
После всего этого вам нужно будет экспортировать и повторно импортировать пул, а также смонтировать файловые системы в правильном порядке:
zpool export zroot
Импортируйте пул в новую точку монтирования, но на самом деле ничего не монтируйте:
zpool import -a -N -r /mnt/zfs
Смонтируйте корневой пул:
zfs mount zroot/ROOT/default
Смонтируйте все остальное:
zfs mount -a
Проверить MOUNTPOINT
столбец. Похоже, точек монтирования ни для чего нет. Вы можете попробовать установить точки монтирования для своих наборов данных.
Например, я считаю, что это будет zroot/ROOT
к /mnt/zfs/ROOT
.
zfs set mountpoint=/mnt/zfs/ROOT zroot/ROOT
Я недостаточно знаю о ZFS, чтобы сказать вам, почему это не произойдет автоматически или должно произойти при импорте в систему Linux.