zfs
посмотрим состояние дисков
sysctl kern.disks
kern.disks: ada4 ada3 ada2 ada1 ada0 cd0
по умолчанию создается пул c линейной записью
zpool create -f Pool1 /dev/ada1 /dev/ada2
df -h | grep Pool
Pool1 19G 19K 19G 0% /Pool1
Создание пула - зеркала
сначала удалим Pool1
zpool destroy Pool1
Создадим pool с зеркалированием
zpool create -f pool2 mirror /dev/ada1 /dev/ada2
df -h | grep pool
pool2 9.6G 19K 9.6G 0% /pool2
Создадим пул c spare диском
сначала удалим Pool2
zpool destroy pool2
zpool create -f pool3 mirror /dev/ada1 /dev/ada2 spare /dev/ada3
zdb -DD mypool
Сброс ошибок пула
zpool clear tank
посмотрим статус пулов
zpool status
zpool list
Статусы могут быть следующие
DEGRADED — Один или несколько устройства верхнего уровня находятся в нерабочем состоянии, т.к. были отключены. Но дальнейшее функционирование возможно. FAULTED — Один или несколько устройства верхнего уровня находятся в состоянии FAULT. Дальнейшее функционирование не возможно. OFFLINE — Пул был отключен командой «zpool offline». ONLINE — Пул находится в состоянии ONLINE и нормально функционирует. REMOVED — Устройство (Пул) было физически удалено при работающей системе. UNAVAIL — Устройство (Пул) недоступно
Снова создадим пул с линейной записью
создадим raidz из наших дисков
Разберем pool
zpool destroy pool3
zpool create pool4 raidz ada1 ada2 ada3
добавление удуление дисков к пулу
создадим зеркалируемый пул
zpool create -f pool5 mirror /dev/ada1 /dev/ada2
Добавление и удаление элементов (дисков) из пула, c зеркалирование осуществляется с помощью команд:
zpool attach pool5 /dev/ada1 /dev/ada3
zpool detach pool5 /dev/ada1 /dev/ada3
для линейного пула
предварительно удалив зеркальный пул
zpool create -f pool6 /dev/ada1 /dev/ada2
Добавление и удаление элементов (дисков) из пула, не использующего зеркалирование осуществляется с помощью команд: zpool add pool6 /dev/ada3
zpool replace pool6 /dev/ada1 /dev/ada4
zpool detach pool6 /dev/ada1
Добавление кеширующих устроиств
zpool add poolx cache /dev/adaX
Преобразование линейного пула в пул с избыточностью
удалим все созданные пулы
zpool destroy pool6
zpool create -f pool7 /dev/ada1
zpool attach -f pool7 /dev/ada1 /dev/ada2
Работа с файловой системой
zfs create pool7/fs
mount -t zfs pool7/fs mnt монтирование в другую
также можно указать точку монтирования для файловой системы
zfs get mountpoint pool7/fs
zfs set mountpoint=/mnt pool7/fs
zfs get mountpoint pool7/fs
активируем сжатие
zfs set compression=gzip pool7/fs
создадим файл
ls -lR / > /root/ls.txt
du -h /root/ls.txt
cp /root/ls.txt /mnt/
du -h /mnt/ls.txt
отключим компрессию
zfs set compression=off pool7/fs
cp /root/ls.txt /mnt/ls2.txt
du -h /mnt/ls2.txt
удалим файловую систему
zfs destroy pool7/fs
Ограничим систему в размере
zfs create pool7/fs2 zfs set reservation=1G pool7/fs2
создадим квоту
zfs set quota=1G pool7/fs2
dd if=/dev/zero of=/pool7/fs2/data.raw bs=10M
zfs set quota=1.5G pool7/fs2
dd if=/dev/zero of=/pool7/fs2/data.raw bs=10M
посмотрим df
сделаем снапшот
zfs snapshot pool7/fs2@snapname
просмотрим снапшот
zfs list -t snapshot
находятся они
ls /pool7/fs2/.zfs/snapshot/test/
создание клона из снапшота
zfs clone pool7/fs2@test pool7/fs5
дедеупликация
zfs set dedup=on pool7/fs3
проверка dd
восстановление удаленного пула
zpool create pool8 /dev/ada1 /dev/ada2
поместим файл на пул
и удалим пул
zpool destroy pool8
Посмотрим отстатки пулов
zpool import -D
zpool import -D 10897174341869309846
После того как мы превратили снапшот в клон, он больне не зависит от своего источника. И его можно удалять:
# 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 и оставление клона
невозможно
zfs create pool8/fs zfs snapshot pool8/fs@sn1
zfs clone pool8/fs@sn1 pool8/fs3
пробуем удалить snapshot
zfs list -t snapshot
zfs destroy pool8/fs@sn1
zfs promote pool8/fs3
перенос
https://trofimoff.net/zfs-pamyatka
просмотр информации о файле по inode
zdb -dddd pool/fs 19234
Передача и получение ZFS
ZFS send отправляет снапшот файловой системы, который может быть переслан в файл или на другую машину в потоковом режиме. ZFS receive принимает такой поток и записывает копию снапшота обратно в файловую систему ZFS. Это отлично подходит для создания бэкапов или отправки копий по сети (к примеру, через ssh) для копирования файловой системы.
Для примера, создадим снапшот и сохраним его в файл:
sudo zfs snapshot -r mypool/projects@snap2 sudo zfs send mypool/projects@snap2 > ~/projects-snap.zfs
И вернем его обратно:
sudo zfs receive -F mypool/projects-copy < ~/projects-snap.zfs
перердача по сети
http://docs.oracle.com/cd/E19253-01/820-0836/6nci36qjq/index.html
работа с кешем
http://docs.oracle.com/cd/E19253-01/820-0836/6nci36qap/index.html
указание размера блока
zfs set recordsize=64k mypool/myfs
Восстановление пула
zpool import