$ man zpool $ man zfs
| Справка по структуре команд и их параметрам |
$ su Password: # cd / # mkfile 100m disk1 disk2 disk3 disk5 # mkfile 50m disk4 # ls -l disk* -rw------T 1 root root 104857600 Sep 11 12:15 disk1 -rw------T 1 root root 104857600 Sep 11 12:15 disk2 -rw------T 1 root root 104857600 Sep 11 12:15 disk3 -rw------T 1 root root 52428800 Sep 11 12:15 disk4 -rw------T 1 root root 104857600 Sep 11 12:15 disk5
| Создать несколько «виртуальных устройств» (vdevs как описано в документации к zpool). Они также могут быть реальными разделами диска, если таковые доступны. |
# zpool create myzfs /disk1 /disk2 # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT myzfs 191M 94K 191M 0% ONLINE -
| Создать хранилище (пул устройств) и проверить его размер и использование. |
# zpool status -v pool: myzfs state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM myzfs ONLINE 0 0 0 /disk1 ONLINE 0 0 0 /disk2 ONLINE 0 0 0errors: No known data errors | Более детальная информация о хранилище. |
# zpool destroy myzfs # zpool list no pools available
| Удалить ZFS пул |
# zpool create myzfs mirror /disk1 /disk4 invalid vdev specification use '-f' to override the following errors: mirror contains devices of different sizes
| При попытке создания пула, vdevs которого имеют разичный размер, возникнет ошибка. Если использовать флаг ‘-f’, то пул создастся, но размер будет соответствовать меньшему устройству. |
# zpool create myzfs mirror /disk1 /disk2 /disk3 # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT myzfs 95.5M 112K 95.4M 0% ONLINE - # zpool status -v pool: myzfs state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM myzfs ONLINE 0 0 0 mirror ONLINE 0 0 0 /disk1 ONLINE 0 0 0 /disk2 ONLINE 0 0 0 /disk3 ONLINE 0 0 0errors: No known data errors | Создать «зеркалируемое» хранилище. В данном случае хранилище зеркалируется 3 раза. |
# zpool detach myzfs /disk3 # zpool status -v pool: myzfs state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM myzfs ONLINE 0 0 0 mirror ONLINE 0 0 0 /disk1 ONLINE 0 0 0 /disk2 ONLINE 0 0 0errors: No known data errors | Исключить устройство из пула. |
# zpool attach myzfs /disk1 /disk3 # zpool status -v pool: myzfs state: ONLINE scrub: resilver completed with 0 errors on Tue Sep 11 13:31:49 2007 config: NAME STATE READ WRITE CKSUM myzfs ONLINE 0 0 0 mirror ONLINE 0 0 0 /disk1 ONLINE 0 0 0 /disk2 ONLINE 0 0 0 /disk3 ONLINE 0 0 0errors: No known data errors | Добавляем устройство в пул. В этом случае мы создадим зеркало, если его до сих пор не было, а если было, то в зеркале будет 3 устройства. |
# zpool remove myzfs /disk3 cannot remove /disk3: only inactive hot spares can be removed # zpool detach myzfs /disk3
| Попытка удалить устройство из пула. В данном случае устройство используется в составе зеркала, поэтому надо применить команду «zpool detach». |
# zpool add myzfs spare /disk3 # zpool status -v pool: myzfs state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM myzfs ONLINE 0 0 0 mirror ONLINE 0 0 0 /disk1 ONLINE 0 0 0 /disk2 ONLINE 0 0 0 spares /disk3 AVAILerrors: No known data errors | Добавление диска горячей замены к пулу. |
# zpool remove myzfs /disk3 # zpool status -v pool: myzfs state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM myzfs ONLINE 0 0 0 mirror ONLINE 0 0 0 /disk1 ONLINE 0 0 0 /disk2 ONLINE 0 0 0errors: No known data errors | Удаление диска горячей замены из пула. |
# zpool offline myzfs /disk1 # zpool status -v pool: myzfs state: DEGRADED status: One or more devices has been taken offline by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. scrub: resilver completed with 0 errors on Tue Sep 11 13:39:25 2007 config: NAME STATE READ WRITE CKSUM myzfs DEGRADED 0 0 0 mirror DEGRADED 0 0 0 /disk1 OFFLINE 0 0 0 /disk2 ONLINE 0 0 0errors: No known data errors | Запретить использование выбранного устройства (состояние offline). Пока устройство не будет возвращено к использованию (состояние online) на него не будет производиться запись и с него не будет производиться чтение. Чтобы временно отключить выбранное устройство используйте ключ -t. Перезагрузка вернет устройство в состояние online. |
# zpool online myzfs /disk1 # zpool status -v pool: myzfs state: ONLINE scrub: resilver completed with 0 errors on Tue Sep 11 13:47:14 2007 config: NAME STATE READ WRITE CKSUM myzfs ONLINE 0 0 0 mirror ONLINE 0 0 0 /disk1 ONLINE 0 0 0 /disk2 ONLINE 0 0 0errors: No known data errors | Разрешить использование выбранного устройства (состояние online). |
# zpool replace myzfs /disk1 /disk3 # zpool status -v pool: myzfs state: ONLINE scrub: resilver completed with 0 errors on Tue Sep 11 13:25:48 2007 config: NAME STATE READ WRITE CKSUM myzfs ONLINE 0 0 0 mirror ONLINE 0 0 0 /disk3 ONLINE 0 0 0 /disk2 ONLINE 0 0 0errors: No known data errors | Заменить один диск на другой в пуле устройств, например в случае неисправности /disk1. |
# zpool scrub myzfs
| «Чистка» хранилища. Проверяет все соответствия контрольных сумм. На зеркалируемых или RAID пулах ZFS автоматически исправит повреждения в данных. ВНИМАНИЕ: «чистка» интенсивно использует операции ввода-вывода. |
# zpool export myzfs # zpool list no pools available
| Экспорт хранилища для последующего импортирования на другой системе. |
# zpool import -d / myzfs # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT myzfs 95.5M 114K 95.4M 0% ONLINE -
| Импорт экспортированного хранилища. Если ключ -d не задан, команда ищет /dev/dsk. Так как в данном примере мы используем файлы, необходимо указать директорию с файлами используемыми хранилищем. |
# zpool upgrade This system is currently running ZFS pool version 8. All pools are formatted using this version. # zpool upgrade -v This system is currently running ZFS pool version 8.The following versions are supported: VER DESCRIPTION — ——————————————————– 1 Initial ZFS version 2 Ditto blocks (replicated metadata) 3 Hot spares and double parity RAID-Z 4 zpool history 5 Compression using the gzip algorithm 6 pool properties 7 Separate intent log devices 8 Delegated administration For more information on a particular version, including supported releases, see: Where 'N' is the version number.
| Показать версию используемого пула. Флаг -v показывает возможности, поддерживаемые данным пулом. Используйте флаг -a, чтобы обновить все доступные пулы до новейшей из них версии. Обновленные пулы больше не будут доступны из систем, на которых работают более старые версии. |
# zpool iostat 5 capacity operations bandwidth pool used avail read write read write ---------- ----- ----- ----- ----- ----- ----- myzfs 112K 95.4M 0 4 26 11.4K myzfs 112K 95.4M 0 0 0 0 myzfs 112K 95.4M 0 0 0 0
| Получить статистику по операциям ввода/вывода |
# zfs create myzfs/colin # df -h Filesystem kbytes used avail capacity Mounted on ... myzfs/colin 64M 18K 63M 1% /myzfs/colin
| Создать файловую систему и проверить ее стандартной командой df -h. Файловые системы автоматически монтируются в /zfs (по умолчанию). См. раздел Mountpoints в руководстве к zfs. |
# zfs list NAME USED AVAIL REFER MOUNTPOINT myzfs 139K 63.4M 19K /myzfs myzfs/colin 18K 63.4M 18K /myzfs/colin
| Получить список файловых систем zfs |
# zpool add myzfs /disk1 invalid vdev specification use '-f' to override the following errors: mismatched replication level: pool uses mirror and new vdev is file
| Попытка добавить одно устройство к зеркалируемому хранилищу провалилась. |
# zpool add myzfs mirror /disk1 /disk5 # zpool status -v pool: myzfs state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM myzfs ONLINE 0 0 0 mirror ONLINE 0 0 0 /disk3 ONLINE 0 0 0 /disk2 ONLINE 0 0 0 mirror ONLINE 0 0 0 /disk1 ONLINE 0 0 0 /disk5 ONLINE 0 0 0errors: No known data errors | Добавление зеркалируемого набора устройств (vdevs). |
# zfs create myzfs/colin2 # zfs list NAME USED AVAIL REFER MOUNTPOINT myzfs 172K 159M 21K /myzfs myzfs/colin 18K 159M 18K /myzfs/colin myzfs/colin2 18K 159M 18K /myzfs/colin2
| Создать вторую файловую систему. Заметим, что обе файловые системы показывают доступные 159M, т.к. не заданы квоты. Любая из файловых систем может вырасти до размеров всего пула. |
# zfs set reservation=20m myzfs/colin # zfs list -o reservation RESERV none 20M none
| Зарезервировать указанное пространство для файловой системы, таким образом остальные пользователи не смогут занять все доступное место. |
# zfs set quota=20m myzfs/colin2 # zfs list -o quota myzfs/colin myzfs/colin2 QUOTA none 20M
| Установить и показать квоты. |
# zfs set compression=on myzfs/colin2 # zfs list -o compression COMPRESS off off on
| Включить и проверить сжатие. |
# zfs set sharenfs=on myzfs/colin2 # zfs get sharenfs myzfs/colin2 NAME PROPERTY VALUE SOURCE myzfs/colin2 sharenfs on local
| Сделать общий ресурс через NFS. При этом, для того, чтобы ресурс был доступен после перезагрузки, не требуется вносить изменения /etc/dfs/dfstab. |
# zfs set sharesmb=on myzfs/colin2 # zfs get sharesmb myzfs/colin2 NAME PROPERTY VALUE SOURCE myzfs/colin2 sharesmb on local
| Сделать общий ресурс по протоколу CIFS/SMB. Таким образом мы предоставим доступ к нашей файловой системе ZFS пользователям Windows. |
# zfs snapshot myzfs/colin@test # zfs list NAME USED AVAIL REFER MOUNTPOINT myzfs 20.2M 139M 21K /myzfs myzfs/colin 18K 159M 18K /myzfs/colin myzfs/colin@test 0 - 18K - myzfs/colin2 18K 20.0M 18K /myzfs/colin2
| Создать snapshot под названием test. |
# zfs rollback myzfs/colin@test
| Откатится к ранее созданному snapshot test. |
# zfs clone myzfs/colin@test myzfs/colin3 # zfs list NAME USED AVAIL REFER MOUNTPOINT myzfs 20.2M 139M 21K /myzfs myzfs/colin 18K 159M 18K /myzfs/colin myzfs/colin@test 0 - 18K - myzfs/colin2 18K 20.0M 18K /myzfs/colin2 myzfs/colin3 0 139M 18K /myzfs/colin3
| Напрямую к snapshot’у обращаться нельзя. Необходимо клонировать файловую систему (версии test). Клон может располагаться в любом месте иерархии ZFS и будет сделан того же типа, что и оригинал. |
# zfs destroy myzfs/colin2 # zfs list NAME USED AVAIL REFER MOUNTPOINT myzfs 20.1M 139M 22K /myzfs myzfs/colin 18K 159M 18K /myzfs/colin myzfs/colin@test 0 - 18K - myzfs/colin3 0 139M 18K /myzfs/colin3
| Уничтожить выбранную файловую систему. |
# zfs destroy myzfs/colin cannot destroy 'myzfs/colin': filesystem has children use '-r' to destroy the following datasets: myzfs/colin@test
| Попытка уничтожить файловую систему, у которой есть вложения. В данном случае snapshot. Необходимо либо удалить snapshot, либо сделать клона и вынеся его из данной файловой системы. |
# zfs promote myzfs/colin3 # zfs list NAME USED AVAIL REFER MOUNTPOINT myzfs 20.1M 139M 21K /myzfs myzfs/colin 0 159M 18K /myzfs/colin myzfs/colin3 18K 139M 18K /myzfs/colin3 myzfs/colin3@test 0 - 18K - # zfs destroy myzfs/colin # zfs list NAME USED AVAIL REFER MOUNTPOINT myzfs 147K 159M 21K /myzfs myzfs/colin3 18K 159M 18K /myzfs/colin3 myzfs/colin3@test 0 - 18K -
| Вынесение клонированной файловой системы. Делается для того чтобы убрать зависимость от snapshot’а оригинала. Теперь snapshot является вложенным для клонированной файловой системы и оригинал файловой системы можно удалять. |
# zfs rename myzfs/colin3 myzfs/bob # zfs list NAME USED AVAIL REFER MOUNTPOINT myzfs 153K 159M 21K /myzfs myzfs/bob 18K 159M 18K /myzfs/bob myzfs/bob@test 0 - 18K - # zfs rename myzfs/bob@test myzfs/bob@newtest # zfs list NAME USED AVAIL REFER MOUNTPOINT myzfs 146K 159M 20K /myzfs myzfs/bob 18K 159M 18K /myzfs/bob myzfs/bob@newtest 0 - 18K -
| Переименование файловой системы и отдельное переименование snapshot. |
# zfs get all NAME PROPERTY VALUE SOURCE myzfs type filesystem - myzfs creation Tue Sep 11 14:21 2007 - myzfs used 146K - myzfs available 159M - myzfs referenced 20K - [...]
| Отобразить свойства данного пула. В дальнейшем данная команда может быть дополнена другими опциями. |
# zpool destroy myzfs cannot destroy 'myzfs': pool is not empty use '-f' to force destruction anyway
| Нельзя удалить пул с активными файловыми системами. |
# zfs unmount myzfs/bob # df -h myzfs 159M 20K 159M 1% /myzfs
| Отмонтировать файловую систему в ZFS. |
# zfs mount myzfs/bob # df -h myzfs 159M 20K 159M 1% /myzfs myzfs/bob 159M 18K 159M 1% /myzfs/bob
| Монтировать в ZFS файловую систему. Это происходит автоматически при загрузке. |
# zfs send myzfs/bob@newtest | ssh localhost zfs receive myzfs/backup # zfs list NAME USED AVAIL REFER MOUNTPOINT myzfs 172K 159M 20K /myzfs myzfs/backup 18K 159M 18K /myzfs/backup myzfs/backup@newtest 0 - 18K - myzfs/bob 18K 159M 18K /myzfs/bob myzfs/bob@newtest 0 - 18K -
| Создается snapshot, который передается на вход команды zfs reveive. В данном случае, в качестве примера, использовано zfs reveive на localhost, но можно делать резервные копии на удаленном хосте или в локальном файле. |
# zpool history History for 'myzfs': 2007-09-11.15:35:50 zpool create myzfs mirror /disk1 /disk2 /disk3 2007-09-11.15:36:00 zpool detach myzfs /disk3 2007-09-11.15:36:10 zpool attach myzfs /disk1 /disk3 2007-09-11.15:36:53 zpool detach myzfs /disk3 2007-09-11.15:36:59 zpool add myzfs spare /disk3 2007-09-11.15:37:09 zpool remove myzfs /disk3 2007-09-11.15:37:18 zpool offline myzfs /disk1 2007-09-11.15:37:27 zpool online myzfs /disk1 2007-09-11.15:37:37 zpool replace myzfs /disk1 /disk3 2007-09-11.15:37:47 zpool scrub myzfs 2007-09-11.15:37:57 zpool export myzfs 2007-09-11.15:38:05 zpool import -d / myzfs 2007-09-11.15:38:52 zfs create myzfs/colin 2007-09-11.15:39:27 zpool add myzfs mirror /disk1 /disk5 2007-09-11.15:39:38 zfs create myzfs/colin2 2007-09-11.15:39:50 zfs set reservation=20m myzfs/colin 2007-09-11.15:40:18 zfs set quota=20m myzfs/colin2 2007-09-11.15:40:35 zfs set compression=on myzfs/colin2 2007-09-11.15:40:48 zfs snapshot myzfs/colin@test 2007-09-11.15:40:59 zfs rollback myzfs/colin@test 2007-09-11.15:41:11 zfs clone myzfs/colin@test myzfs/colin3 2007-09-11.15:41:25 zfs destroy myzfs/colin2 2007-09-11.15:42:12 zfs promote myzfs/colin3 2007-09-11.15:42:26 zfs rename myzfs/colin3 myzfs/bob 2007-09-11.15:42:57 zfs destroy myzfs/colin 2007-09-11.15:43:23 zfs rename myzfs/bob@test myzfs/bob@newtest 2007-09-11.15:44:30 zfs receive myzfs/backup
| Показать историю команд для всех хранилищ. Можно посмотреть историю только для одного хранилища указав его имя в командной строке. Храниться история только для существующих хранилищ. При удалении хранилища его история удаляется. |
# zpool destroy -f myzfs # zpool status -v no pools available
| Используйте ключ -f, чтобы удалить хранилище с существующими файловыми файловыми системами. |