Использование свойства пула altroot

Материал из OpenWiki
Перейти к: навигация, поиск

У ZFS пула есть несколько свойств, которые доступны для изменения. Одно из них - altroot. Это свойство определяет каталог файловой системы, который будет являться корневым для всех файловых систем пула. Для чего это нужно? Например, когда вы загружаетесь с загрузочного диска чтобы выполнить над пулом какие либо действия, или вы подключаете сторонний носитель, на котором находятся неизвестные пулы:

# 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

Для того чтобы при импорте пула его файловые системы не смонтировались поверх уже существующих, нужно определить это свойство. Для этого можно воспользоваться ключиком -o altroot=/mnt, либо просто использовать ключик -R /mnt (здесь в качестве каталога для монтирования указан /mnt).

# zpool import -R /mnt -f amd64 
# zpool list
NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
amd64  59,5G  13,8G  45,7G    23%  ONLINE  /mnt

Пул импортировался и его файловые системы (которые монтируются автоматически) оказались смонтированными в /mnt:

# zfs mount
amd64/tmp                       /mnt/tmp
amd64/usr                       /mnt/usr
amd64/home                      /mnt/usr/home
amd64/local                     /mnt/usr/local
amd64/obj                       /mnt/usr/obj
amd64/ports                     /mnt/usr/ports
amd64/distfiles                 /mnt/usr/ports/distfiles
amd64/src                       /mnt/usr/src
amd64/var                       /mnt/var
amd64/var/crash                 /mnt/var/crash
amd64/var/db                    /mnt/var/db
amd64/var/tmp                   /mnt/var/tmp

Причём, если вы создадите новую файловую систему в этом пуле, она автоматически будет смонтирована внутри /mnt:

# zfs create -o mountpoint=/tmp/1 amd64/temp
# zfs mount
amd64/tmp                       /mnt/tmp
amd64/usr                       /mnt/usr
amd64/home                      /mnt/usr/home
amd64/local                     /mnt/usr/local
amd64/obj                       /mnt/usr/obj
amd64/ports                     /mnt/usr/ports
amd64/distfiles                 /mnt/usr/ports/distfiles
amd64/src                       /mnt/usr/src
amd64/var                       /mnt/var
amd64/var/crash                 /mnt/var/crash
amd64/var/db                    /mnt/var/db
amd64/var/tmp                   /mnt/var/tmp
amd64/temp                      /mnt/tmp/1

Так же, надо заметить, что это свойство действительно только на время работы с пулом и не сохраняется между перезагрузками.