Перенос trueos zfs partition to smaller hard drive
Перенос trueos zfs partition to smaller hard drive
В основе лежит:
- https://blog.grem.de/sysadmin/Shrinking-ZFS-Pool-2014-05-29-21-00.html
- https://lists.freebsd.org/pipermail/freebsd-questions/2016-May/271651.html
Кроме того можно выполнить grep tank и найти файла sys_install.log, в котором залогированы команды при помощи которых выполнялось создание разделов.
С описанием различий:
- Создание таблицы разделов:
gpart destroy ada1 gpart create -s GPT ada1 gpart add -t efi -s 110M ada1 gpart add -t freebsd-zfs -s 30G -l newdisk ada1 gpart add -t freebsd-zfs -s 4G -l newdswap ada1
- Создаем новый zpool:
zpool create -o cachefile=/tmp/zpool.cache newpool gpt/newdisk
- Выполняем перенос копируем данные диска и данные efi раздела:
zfs snapshot -r tank@shrink zfs send -vR tank@shrink | zfs receive -vFd newpool zfs destroy -r tank@shrink zfs destroy -r newpool@shrink dd if=/dev/ada0p1 of=/dev/ada1p1 bs=1024
-
? Делаем загрузочным:
zpool set bootfs=newpool/ROOT/initial newpool
-
Экспортируем и повторный импорт кеша:
cp /tmp/zpool.cache /tmp/newpool.cache zpool export newpool zpool import -N -c /tmp/newpool.cache -R /mnt newpool zfs set mountpoint=/ newpool/ROOT/initial cp /tmp/newpool.cache /mnt/boot/zfs/zpool.cache
Обратите внимание на -N в третьей команде, без нее при перезагрузке у меня pool пропадал.
Если 4 и 5 команды не сработают можно выполнить:
mount -t zfs newpool/ROOT/initial /mnt cp /tmp/newpool.cache /mnt/boot/zfs/zpool.cache
-
Правим точки монтирования почти как в оригинальной статье:
-
Удалить все лишнее из /mnt/etc/fstab
-
Проверить что установлен флаг zfs_enable="YES" в /mnt/etc/rc.conf
-
Проверить что точки монтирования наследуются:
zfs inherit mountpoint newpool/tmp zfs inherit mountpoint newpool/var zfs inherit mountpoint newpool/usr
В устанавливаемой в TrueOS версии не установка выполняется на в root, в tank/ROOT/initial
-
-
Настройка swap в /mnt/etc/fstab:
заменяем старый swap на новый:
/dev/gpt/newswap.eli none swap sw 0 0
-
Изменяем загрузочную конфигурацию:
Изменяем vfs.root.mountfrom в /mnt/boot/loader.conf на верный раздел:
zfs_load="YES" vfs.root.mountfrom="zfs:newpool/ROOT/initial"
При этом после загрузки будет выполнена загрузка в начальный образ системы. После чего используя sysadm можно переключиться на другой образ.
увеличить раздел можно потом с использованием: gpart modify и zpool online -e pool device.