ZFS - некоторые заметки

Операционный системы семейства Unix/Linux
Аватара пользователя
ustim
Администратор
Сообщения: 152
Зарегистрирован: 17 янв 2017, 13:11
Откуда: Сочи
Контактная информация:

ZFS - некоторые заметки

Непрочитанное сообщение ustim »

Справка по структуре команд и их параметрам
$ man zpool
$ man zfs
Создать несколько «виртуальных устройств»Показать
Создать несколько «виртуальных устройств» (vdevs как описано в документации к zpool). Они также могут быть реальными разделами диска, если таковые доступны.
$ 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
Создать хранилище (пул устройств) и проверить его размер и испол...Показать
Создать хранилище (пул устройств) и проверить его размер и использование.
# 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
Удалить ZFS пулПоказать
Удалить ZFS пул
# zpool destroy myzfs
# zpool list
no pools available
Создание пула из дисков разного размераПоказать
При попытке создания пула, vdevs которого имеют разичный размер, возникнет ошибка.
Если использовать флаг ‘-f’, то пул создастся, но размер будет соответствовать меньшему устройству.
# zpool create myzfs mirror /disk1 /disk4
invalid vdev specification
use '-f' to override the following errors:
mirror contains devices of different sizes
Создать «зеркалируемое» хранилище.Показать
Создать «зеркалируемое» хранилище. В данном случае хранилище зеркалируется 3 раза.
# 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
Исключить устройство из пула.Показать
Исключить устройство из пула.
# 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
Добавляем устройство в пул.Показать
Добавляем устройство в пул. В этом случае мы создадим зеркало, если его до сих пор не было, а если
было, то в зеркале будет 3 устройства.
# 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
Удаление устройства из пулаПоказать
Попытка удалить устройство из пула.
В данном случае устройство используется в составе зеркала, поэтому надо применить команду «zpool detach».
# zpool remove myzfs /disk3
cannot remove /disk3: only inactive hot spares can be removed
# zpool detach myzfs /disk3
Добавление диска горячей замены к пулу.Показать
Добавление диска горячей замены к пулу.
# 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
Запретить использование выбранного устройстваПоказать
Запретить использование выбранного устройства (состояние offline). Пока устройство не будет возвращено к использованию (состояние online) на него не будет производиться запись и с него не будет производиться чтение. Чтобы временно отключить выбранное устройство используйте ключ -t. Перезагрузка вернет устройство в состояние online.
# 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
Разрешить использование выбранного устройстваПоказать
Разрешить использование выбранного устройства (состояние 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
Заменить один диск на другой в пуле устройствПоказать
Заменить один диск на другой в пуле устройств, например в случае неисправности /disk1.
# 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
«Чистка» хранилищаПоказать
«Чистка» хранилища. Проверяет все соответствия контрольных сумм. На зеркалируемых или RAID пулах ZFS автоматически исправит повреждения в данных.
ВНИМАНИЕ: «чистка» интенсивно использует операции ввода-вывода.
# zpool scrub myzfs
Экспорт хранилища для последующего импортирования на другой сист...Показать
Экспорт хранилища для последующего импортирования на другой системе.
# zpool export myzfs
# zpool list
no pools available
Импорт экспортированного хранилищаПоказать
Импорт экспортированного хранилища.
Если ключ -d не задан, команда ищет /dev/dsk.
Так как в данном примере мы используем файлы, необходимо указать директорию с файлами используемыми хранилищем.
# zpool import -d / myzfs
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
myzfs 95.5M 114K 95.4M 0% ONLINE -
Показать версию используемого пулаПоказать
Показать версию используемого пула. Флаг -v показывает возможности, поддерживаемые данным пулом. Используйте флаг -a, чтобы обновить все доступные пулы до новейшей из них версии. Обновленные пулы больше не будут доступны из систем, на которых работают более старые версии.
# 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.
Получить статистику по операциям ввода/выводаПоказать
Получить статистику по операциям ввода/вывода
# 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
Создать файловую систему и проверить ееПоказать
Создать файловую систему и проверить ее стандартной командой df -h. Файловые системы автоматически монтируются в /zfs (по умолчанию). См. раздел Mountpoints в руководстве к zfs.
# zfs create myzfs/colin
# df -h
Filesystem kbytes used avail capacity Mounted on
...
myzfs/colin 64M 18K 63M 1% /myzfs/colin
Получить список файловых систем zfsПоказать
Получить список файловых систем zfs
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
myzfs 139K 63.4M 19K /myzfs
myzfs/colin 18K 63.4M 18K /myzfs/colin
Попытка добавить одно устройство к зеркалируемому хранилищу пров...Показать
Попытка добавить одно устройство к зеркалируемому хранилищу провалилась
# 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
Добавление зеркалируемого набора устройств (vdevs)Показать
Добавление зеркалируемого набора устройств (vdevs).
# 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
Создать вторую файловую системуПоказать
Создать вторую файловую систему. Заметим, что обе файловые системы показывают доступные 159M, т.к. не заданы квоты. Любая из файловых систем может вырасти до размеров всего пула.
# 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
Зарезервировать указанное пространство для файловой системыПоказать
Зарезервировать указанное пространство для файловой системы, таким образом остальные пользователи не смогут занять все доступное место.
# 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
Сделать общий ресурс через NFSПоказать
Сделать общий ресурс через NFS. При этом, для того, чтобы ресурс был доступен после перезагрузки, не требуется вносить изменения /etc/dfs/dfstab
# zfs set sharenfs=on myzfs/colin2
# zfs get sharenfs myzfs/colin2
NAME PROPERTY VALUE SOURCE
myzfs/colin2 sharenfs on local
Сделать общий ресурс по протоколу CIFS/SMBПоказать
Сделать общий ресурс по протоколу CIFS/SMB. Таким образом мы предоставим доступ к нашей файловой системе ZFS пользователям Windows.
# zfs set sharesmb=on myzfs/colin2
# zfs get sharesmb myzfs/colin2
NAME PROPERTY VALUE SOURCE
myzfs/colin2 sharesmb on local
Создать snapshot под названием testПоказать
Создать snapshot под названием test.
# 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
Посмотреть весь список снэпшотов
zfs list -t snapshot
Откатится к ранее созданному snapshot testПоказать
Откатится к ранее созданному snapshot test.
# zfs rollback myzfs/colin@test
Клонирование файловой системы (версии test)Показать
Напрямую к snapshot’у обращаться нельзя. Необходимо клонировать файловую систему (версии test). Клон может располагаться в любом месте иерархии ZFS и будет сделан того же типа, что и оригинал.
# 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
Уничтожить выбранную файловую системуПоказать
Уничтожить выбранную файловую систему.
# 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
Попытка уничтожить файловую систему, у которой есть вложенияПоказать
Попытка уничтожить файловую систему, у которой есть вложения. В данном случае snapshot. Необходимо либо удалить snapshot, либо сделать клона и вынеся его из данной файловой системы.
# 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 -
Переименование файловой системы и отдельное переименование snaps...Показать
Переименование файловой системы и отдельное переименование 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 -
Отобразить свойства данного пулаПоказать
Отобразить свойства данного пула. В дальнейшем данная команда может быть дополнена другими опциями.
# 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Показать
Отмонтировать файловую систему в ZFS.
# zfs unmount myzfs/bob
# df -h
myzfs 159M 20K 159M 1% /myzfs
Монтировать в ZFS файловую системуПоказать
Монтировать в ZFS файловую систему. Это происходит автоматически при загрузке.
# zfs mount myzfs/bob
# df -h
myzfs 159M 20K 159M 1% /myzfs
myzfs/bob 159M 18K 159M 1% /myzfs/bob
Создается snapshot, который передается на вход команды zfs revei...Показать
Создается snapshot, который передается на вход команды zfs reveive. В данном случае, в качестве примера, использовано zfs reveive на localhost, но можно делать резервные копии на удаленном хосте или в локальном файле.
# 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 -
Показать историю команд для всех хранилищПоказать
Показать историю команд для всех хранилищ. Можно посмотреть историю только для одного хранилища указав его имя в командной строке. Храниться история только для существующих хранилищ. При удалении хранилища его история удаляется.
# 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
Используйте ключ -f, чтобы удалить хранилище с существующими фай...Показать
Используйте ключ -f, чтобы удалить хранилище с существующими файловыми файловыми системами.
# zpool destroy -f myzfs
# zpool status -v
no pools available
Вся информация взята отсюда. Огромное спасибо автору за проделанную работу!

Аватара пользователя
ustim
Администратор
Сообщения: 152
Зарегистрирован: 17 янв 2017, 13:11
Откуда: Сочи
Контактная информация:

ZFS - Ограничиваем кэш память

Непрочитанное сообщение ustim »

Открываем (создаем) файл

Код: Выделить всё

nano /etc/modprobe.d/zfs.conf

Добавляем в него
# Min 512MB / Max 4096 MB Limit
options zfs zfs_arc_min=536870912
options zfs zfs_arc_max=4294967296
После внесения изменений, закрываем и выполняем

Код: Выделить всё

update-initramfs -u
После чего перезагружаемся и наслаждаемся освободившейся памятью

Ответить