Переименование пула
Переименование пула с данными выполняется достаточно тривиально:
# zpool import -h | tab invalid option 'h' usage: import [-d dir] [-D] import [-o mntopts] [-o property=value] ... [-d dir | -c cachefile] [-D] [-f] [-R root] -a import [-o mntopts] [-o property=value] ... [-d dir | -c cachefile] [-D] [-f] [-R root] <pool | id> [newpool]
Т.е. нужно просто экспортировать его и импортировать под другим именем. В случае, когда на этом пуле находится корневая файловая система, нужно выполнить ещё ряд действий. Для примера я переименую свой пул "amd64" в "z". Для этого я загружусь с USB flash и импортирую пул:
# zpool import pool: amd64 id: 1287517875050811283 state: ONLINE status: The pool was last accessed by another system. action: The pool can be imported using its name or numeric identifier and the '-f' flag. see: http://www.sun.com/msg/ZFS-8000-EY config: amd64 ONLINE ad4p3 ONLINE # zpool import -f -R /mnt amd64 z
После импорта я имею переименованный пул и смонтированные файловые системы в altroot=/mnt.
# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT z 59,5G 13,8G 45,7G 23% ONLINE /mnt # zfs list NAME USED AVAIL REFER MOUNTPOINT z 13,8G 43,2G 520M none z/distfiles 1,54G 43,2G 1,54G /mnt/usr/ports/distfiles z/home 7,47G 43,2G 7,47G /mnt/usr/home z/local 1,30G 43,2G 1,30G /mnt/usr/local z/obj 1,77G 43,2G 1,77G /mnt/usr/obj z/ports 176M 43,2G 176M /mnt/usr/ports z/src 407M 43,2G 407M /mnt/usr/src z/tmp 226M 43,2G 226M /mnt/tmp z/usr 264M 43,2G 264M /mnt/usr z/var 161M 43,2G 1,10M /mnt/var z/var/crash 51,8M 43,2G 51,8M /mnt/var/crash z/var/db 107M 43,2G 107M /mnt/var/db z/var/tmp 1,28M 43,2G 1,28M /mnt/var/tmp
Посмотрим на свойства пула:
# zpool get all z NAME PROPERTY VALUE SOURCE z size 59,5G - z used 13,8G - z available 45,7G - z capacity 23% - z altroot /mnt local z health ONLINE - z guid 1287517875050811283 - z version 13 default z bootfs z local z delegation on default z autoreplace off default z cachefile none local z failmode wait default z listsnapshots off default
Свойство cachefile у этого пула установлено в none. Это результат использования опции -R при импорте. Для успешной загрузки с этого пула нам необходимо обновить файл /boot/zfs/zpool.cache, который находится в корневой файловой системе пула - z. Но эта файловая система не смонтирована (у неё свойство mountpoint=none), поэтому нужно изменить её точку монтирования и обновить устаревший zpool.cache (в нём ещё содержится информация о старом пуле amd64).
# zfs umount -a # zfs set mountpoint=/ z # mount /dev/da0s1a on / (ufs, local) devfs on /dev (devfs, local, multilabel) z on /mnt (zfs, local, noatime)
Теперь обновим содержимое файла zpool.cache выполнив команду:
# zpool set cachefile=/mnt/boot/zfs/zpool.cache z
И в файле /mnt/boot/loader.conf нужно обновить строку vfs.root.mountfrom
в соответствие с новым именем пула:
# echo 'vfs.root.mountfrom="zfs:z"' >> /mnt/boot/loader.conf
Теперь возвращаем значение свойства mountpoint корневой файловой системы обратно в none и перезагружаемся:
# zfs set mountpoint=none z