CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
25.07.2016

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки :: Файловые системы

Краткая справка по командам для работы с ZFS

Оригинал: ZFS Cheatsheet

Команды и их использование Значение
$ 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
Удалить хранилище.
# zpool create myzfs mirror /disk1 /disk4
invalid vdev specification
use '-f' to override the following errors:
mirror contains devices of different sizes
Попытка создать zfs pool с разными размерами 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 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                    -
[...]
Display properties for the given datasets. This can be refined further using options.
# 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 на localhost в данном случае, можно просто в файл). Может быть использовано для создания backup-копий на удаленных хостах.
# 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, чтобы удалить хранилище с существующими файловыми файловыми системами.



Комментарии

аноним, Thu Jul 9 11:19:23 2009:
для andr.mobi
zpool import -f xxx
andr.mobi, Fri Jun 13 20:18:39 2008:
Как правильно смонтировать RAIDZ-пул на другой машине? Вроде нужен export-import, а если export не было и восстановить со старой машины ничего нельзя по причине аварии/ремонта?

Очень всё красиво сделали, но вот очевидно нужная операция миграции на другую машину не очевидна и странно заморочена. Разве на девайсах RAIDZ недостаточно информации, чтобы zpool её просто перечитал? Я и не думал делать никакой export когда сносил старый винт, почему это так необходимо?
СанСан, Mon Nov 26 07:43:35 2007:
Круть, спа!
аноним, Tue Nov 13 16:37:10 2007:
ничего не понял. Вы сейчас о чём говорили? о_0

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds