Шпаргалка по ZFS

Очень полезная таблица, жаль, что не попала мне раньше.

В данной таблице представленный все основные команды по ZFS. Очень помогла в понимании что такое ZFS. Советую всем забрать себе в закладки.!!!


$ 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     0
errors: 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     0
errors: 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     0
errors: 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     0
errors: 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    AVAIL   
errors: 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     0
errors: 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     0
errors: 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     0
errors: 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     0
errors: 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:
http://www.opensolaris.org/os/community/zfs/version/N
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     0
errors: 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, чтобы удалить хранилище с существующими файловыми файловыми системами.

Источник: http://dreamcatcher.ru/2010/01/10/Шпаргалка-по-zfs/ (283 перехода)

Файлы статьи:

Похожие статьи

  • Мониторинг онлайн ZFS Запись/Чтение
    Мониторинг онлайн ZFS Запись/Чтение

    zpool iostat -v 1
  • Замена диска в ZFS пуле – Proxmox 4.2
    Приветствую всех в данном блоге. Я сегодня расскажу, как заменить диск в ZFS!
    На данный момент имеется сервер, на котором установлен PROXMOX 4 на 4 диска, два из которых SSD. Дак вот решил заменить SSD — диски на обычные винты.

    Приступим!

    Вот так выглядит ZFS poll после установки Proxmox:
0 комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.