zpool
zpool [действие] [ключи]
Ключ | Описание |
---|---|
-f, --force | |
-d | Отключить все фичи по умолчанию |
-o property=value | включить фичу |
-O file-system-property=value | Настройки файловой системы |
-m |
точка монторования Если ее нет, то нужно выбрать legacy или none
|
Шпаргалка по командам
Справка по командам |
|
zpool createСоздать пул и посмотреть информацию о нём. Интересная особенность в *nix системах - Все является файлом. В том числе и диски. Поэтому, пул дисков можно эмулировать с помощью создания файлов Единственное ограничение, диск (или файл) должен быть не менее 64m для самого zfs При создании пула, создается фс от корня по названию пула |
|
zpool statusПодробная информация о пуле Пока не увидел разницу от ключа -v |
|
zpool destroyУничтожить пул При уничтожении пула, уничтожается и фс! |
|
zpool create mirrorСоздать зеркалированный пул |
При создании зеркала разного размера, выдется ошибка В этом случае можно указать ключ -f для принудительного создания. Тогда размер пула будет наименьшим из дисков
|
zpool detachОтключить диск от зеркала |
|
zpool attachДобавить диск к зеркалу Нужно передовать 2 диска, с какого на какой скопируются данные для дальнейшего зеркалирования |
|
zpool replaceЗаменить диск |
|
zpool add spareДобавить запасное устройство Автоматическая замена вышедшего из строя устройства. TODO: проверить |
|
Заменить диск на запасной |
|
zpool removeУдалить запасное устройство |
|
zpool offlineВывести указанное устройство из эксплуатации После этого попыток писать и читать это устройство не будет до тех пор, пока оно не будет переведено в online. Если использовать ключ -t, устройство будет переведено в offline временно. После перезагрузки устройство опять будет в работе (online). |
|
zpool onlineВключить диск |
|
zpool scrubВыполнить скраббинг «чистку» хранилища. Для того чтобы знать, что там все контрольные суммы верны. Если используется зеркало или RAIDZ автоматически восстанавливаются сбойные блоки. |
|
zpool exportЭкспортировать пул для импорта в другую систему |
|
zpool importИмпортировать пул Если ключ -d не указан, команда ищет /dev/dsk. Поскольку в примере используются файлы нужно указать каталог где они лежат |
|
zpool upgradeПоказать версию формата пулов У меня не работает :( |
Ключ -v говорит, что нужно показать какие функции поддерживаются текущей версией.
Ключ -a говорит, что нужно обновить до последней версии.
|
zpool iostatПосмотреть статистику ввода/вывода |
|
zfs createСоздать файловую систему Проверить её с помощью df -h. Файловая система автоматически монтируется в /test01. |
|
Создание ещё одной файловой системы. Обратите внимание, что обе файловые системы как будто бы имеют 128M свободных, ибо квоты не установлены. Каждая может расти до тех пор, пока не заполнит пул: |
|
zfs listСписок zfs файловых систем |
Также можно посмотреть командой df
|
zfs set reservationУстановка резервирования фс Проверка |
|
zfs set quotaУстановить и показать квоты. Максимальное занимаемое место |
Но ее можно увеличить
|
zfs set compressionВключить сжатие Проверка |
|
zfs snapshotСоздать snapshot под названием test-27-01-2018 |
Для вывода снапшотов нужно либо: использовать ключ -t snapshot
Либо установить у пула параметр listsnapshot=on
|
zfs rollbackОткатиться на снапшот |
|
zfs cloneКлонирование фс. Также используется для просмотра содержимого снапшота |
|
zfs destroyУничтожение фс |
Если в фс есть вложенные фс, то будет предложенно удалить рекурсивно
Также будут удалены связанные снапшоты |
zfs promoteВынисение клонированной фс Переключение всех снапшотов с оригинальной фс, на копию |
|
testtest |
|
Эксперименты
№ 1
4 файла по 100мб
cd /
# mkfile 100m disk1 disk2 disk3 disk4
# ls -lh /disk*
-rw------- 1 root wheel 100M Jan 27 18:27 /disk1
-rw------- 1 root wheel 100M Jan 27 18:27 /disk2
-rw------- 1 root wheel 100M Jan 27 18:27 /disk3
-rw------- 1 root wheel 100M Jan 27 18:27 /disk4
Первый зеркальный пул - size 80мб
# zpool create test01 mirror /disk1 /disk2
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
test01 80M 62K 79.9M - 1% 0% 1.00x ONLINE -
Помещается 48мб, еще свободно 32мб но создать уже ничего не получается!
# cd /test01/
root@freebsd2:/test01 # cat /dev/urandom > test
cat: stdout: No space left on device
root@freebsd2:/test01 # ls -lh
total 49065
-rw-r--r-- 1 root wheel 48M Jan 27 18:31 test
root@freebsd2:/test01 # zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
test01 80M 48.0M 32.0M - 44% 60% 1.00x ONLINE -
# touch test1
touch: test1: No space left on device
Вопрос почему?
№ 2
Пул из 2 обьединенных дисков по 100мб, size - 160мб
# zpool create test02 /disk3 /disk4
root@freebsd2:/test01 # zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
test02 160M 257K 160M - 1% 0% 1.00x ONLINE -
Помещается 128мб, свободно опять осталось 32мб
# cd /test02/
# cat /dev/urandom > test
cat: stdout: No space left on device
root@freebsd2:/test02 # ls -lh
total 131041
-rw-r--r-- 1 root wheel 128M Jan 27 18:37 test
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
test02 160M 128M 31.9M - 60% 80% 1.00x ONLINE -
№ 3
Пул из примера 2, размер 160мб, реально вмещается 128мб
Зарезервируем 30мб и посмотрим сколько вместиться
# zfs set reservation=30m test02
root@freebsd2:~ # cd /test02
root@freebsd2:/test02 # cat /dev/urandom > test
cat: stdout: No space left on device
root@freebsd2:/test02 # ls -lh
total 131041
-rw-r--r-- 1 root wheel 128M Jan 27 19:42 test
root@freebsd2:/test02 # zfs list -o reservation
RESERV
30M
Хоть и зарезервировали но сожрали все место
Попробуем добавить вложенную фс и установить для нее резервирование
# zfs create test02/test03
# zfs set reservation=30m test02/test03
# cat /dev/urandom > /test02/file
cat: stdout: No space left on device
# ls -lh /test02/
total 100174
-rw-r--r-- 1 root wheel 98M Jan 27 19:55 file
drwxr-xr-x 2 root wheel 2B Jan 27 19:55 test03
Урааа получилось! но почему-то использовать мы можем не все 30мб
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
test02 128M 41.5K 97.8M /test02
test02/test03 19K 30.0M 19K /test02/test03
# cat /dev/urandom > /test02/test03/file2
cat: stdout: No space left on device
# ls -lh /test02/test03
total 7943
-rw-r--r-- 1 root wheel 7.8M Jan 27 19:56 file2
Даже df говорит что у меня есть еще 22мб, но даже временную метку не получается создать
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ada0p2 9.0G 4.5G 3.7G 55% /
devfs 1.0K 1.0K 0B 100% /dev
test02 98M 98M 0B 100% /test02
test02/test03 30M 7.8M 22M 26% /test02/test03
# touch /test02/test03/hello
touch: /test02/test03/hello: No space left on device
№ 4
Создаем 2 фс
# dd if=/dev/urandom of=big_file bs=10M count=5
5+0 records in
5+0 records out
52428800 bytes transferred in 1.894308 secs (27677022 bytes/sec)
root@freebsd2:~ # cp big_file /test01/test04/ /test02/test03/
root@freebsd2:~ # ls -lh /test01/test04/ /test02/test03/
/test01/test04/:
total 51240
-rw-r--r-- 1 root wheel 50M Jan 27 20:36 big_file
/test02/test03/:
total 51240
-rw-r--r-- 1 root wheel 50M Jan 27 20:36 big_file
root@freebsd2:~ # df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ada0p2 9.0G 4.6G 3.7G 55% /
devfs 1.0K 1.0K 0B 100% /dev
test01 78M 19K 78M 0% /test01
test02 78M 19K 78M 0% /test02
test02/test03 128M 50M 78M 39% /test02/test03
test01/test04 128M 50M 78M 39% /test01/test04
Чет без разницы