mod
parent
83a21ef9cf
commit
4830d49d54
133
zfs.md
133
zfs.md
|
@ -12,6 +12,11 @@
|
||||||
- [Загрузка модуля ядра](#загрузка-модуля-ядра)
|
- [Загрузка модуля ядра](#загрузка-модуля-ядра)
|
||||||
- [Автозагрузка модуля ядра](#автозагрузка-модуля-ядра)
|
- [Автозагрузка модуля ядра](#автозагрузка-модуля-ядра)
|
||||||
- [Создание пула](#создание-пула)
|
- [Создание пула](#создание-пула)
|
||||||
|
- [Постоянные идентификаторы диска](#постоянные-идентификаторы-диска)
|
||||||
|
- [Пул из одного диска](#пул-из-одного-диска)
|
||||||
|
- [Просмотр файловых систем в пуле](#просмотр-файловых-систем-в-пуле)
|
||||||
|
- [Удаление пула](#удаление-пула)
|
||||||
|
- [Создание пула с чередованием (RAID0, 2 VDEVs)](#создание-пула-с-чередованием-raid0-2-vdevs)
|
||||||
|
|
||||||
## Введение
|
## Введение
|
||||||
|
|
||||||
|
@ -150,4 +155,130 @@ zfs
|
||||||
|
|
||||||
В общем виде создание пула
|
В общем виде создание пула
|
||||||
|
|
||||||
zpool create -f -m <mount> <pool> [raidz(2|3)|mirror] <ids>
|
```bash
|
||||||
|
zpool create -f -m <mount-point> <pool-name> [raidz(2|3)|mirror] <ids>
|
||||||
|
```
|
||||||
|
|
||||||
|
`-f` - force, очистит диски, если на них есть данные
|
||||||
|
`-m` - указание точки монтирования. По-умолчанию используется `/<pool-name>`
|
||||||
|
|
||||||
|
`<ids>` - в самом простом виде можно использовать имена дисков `/dev/sdb`, но это нежелательно, т.к. при выходе из строя диска `/dev/sdb`, при следующей загрузке системы все последующие диски изменят своё имя - диск, который ранее назывался `/dev/sdc` теперь будет доступен как `/dev/sdb`. Это может привести к полной неработоспособности системы. Поэтому желательным является метод именования дисков по постоянным идентификаторам.
|
||||||
|
|
||||||
|
### Постоянные идентификаторы диска
|
||||||
|
|
||||||
|
- **by-id**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[root@zfs ~]# ls -lh /dev/disk/by-id
|
||||||
|
итого 0
|
||||||
|
lrwxrwxrwx 1 root root 9 апр 3 13:13 ata-QEMU_DVD-ROM_QM00003 -> ../../sr0
|
||||||
|
lrwxrwxrwx 1 root root 9 апр 3 13:13 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0 -> ../../sda
|
||||||
|
lrwxrwxrwx 1 root root 10 апр 3 13:13 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-part1 -> ../../sda1
|
||||||
|
lrwxrwxrwx 1 root root 10 апр 3 13:13 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-part2 -> ../../sda2
|
||||||
|
lrwxrwxrwx 1 root root 9 апр 3 13:13 scsi-0QEMU_QEMU_HARDDISK_drive-scsi1 -> ../../sdb
|
||||||
|
lrwxrwxrwx 1 root root 9 апр 3 13:13 scsi-0QEMU_QEMU_HARDDISK_drive-scsi2 -> ../../sdc
|
||||||
|
```
|
||||||
|
|
||||||
|
- **by-path**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[root@zfs ~]# ls -lh /dev/disk/by-path
|
||||||
|
итого 0
|
||||||
|
lrwxrwxrwx 1 root root 9 апр 3 13:13 pci-0000:00:01.1-ata-2 -> ../../sr0
|
||||||
|
lrwxrwxrwx 1 root root 9 апр 3 13:13 pci-0000:00:01.1-ata-2.0 -> ../../sr0
|
||||||
|
lrwxrwxrwx 1 root root 9 апр 3 13:13 pci-0000:01:01.0-scsi-0:0:0:0 -> ../../sda
|
||||||
|
lrwxrwxrwx 1 root root 10 апр 3 13:13 pci-0000:01:01.0-scsi-0:0:0:0-part1 -> ../../sda1
|
||||||
|
lrwxrwxrwx 1 root root 10 апр 3 13:13 pci-0000:01:01.0-scsi-0:0:0:0-part2 -> ../../sda2
|
||||||
|
lrwxrwxrwx 1 root root 9 апр 3 13:13 pci-0000:01:02.0-scsi-0:0:0:1 -> ../../sdb
|
||||||
|
lrwxrwxrwx 1 root root 9 апр 3 13:13 pci-0000:01:03.0-scsi-0:0:0:2 -> ../../sdc
|
||||||
|
```
|
||||||
|
|
||||||
|
- **GPT labels** - если метка была создана при инициации таблицы разделов GPT
|
||||||
|
|
||||||
|
### Пул из одного диска
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[root@zfs ~]# mkdir -p /srv/zfs_pools/zfs0
|
||||||
|
[root@zfs ~]# ls -lh /dev/disk/by-id | grep sdb
|
||||||
|
lrwxrwxrwx 1 root root 9 апр 3 13:13 scsi-0QEMU_QEMU_HARDDISK_drive-scsi1 -> ../../sdb
|
||||||
|
[root@zfs ~]# zpool create -f -m /srv/zfs_pools/zfs0 zfs0 scsi-0QEMU_QEMU_HARDDISK_drive-scsi1
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[root@zfs ~]# zpool status
|
||||||
|
pool: zfs0
|
||||||
|
state: ONLINE
|
||||||
|
config:
|
||||||
|
|
||||||
|
NAME STATE READ WRITE CKSUM
|
||||||
|
zfs0 ONLINE 0 0 0
|
||||||
|
scsi-0QEMU_QEMU_HARDDISK_drive-scsi1 ONLINE 0 0 0
|
||||||
|
|
||||||
|
errors: No known data errors
|
||||||
|
[root@zfs ~]# df -Th
|
||||||
|
Файловая система Тип Размер Использовано Дост Использовано% Cмонтировано в
|
||||||
|
udevfs devtmpfs 5,0M 96K 5,0M 2% /dev
|
||||||
|
runfs tmpfs 3,9G 644K 3,9G 1% /run
|
||||||
|
/dev/sda2 ext4 30G 3,3G 25G 12% /
|
||||||
|
tmpfs tmpfs 3,9G 0 3,9G 0% /dev/shm
|
||||||
|
tmpfs tmpfs 3,9G 0 3,9G 0% /tmp
|
||||||
|
tmpfs tmpfs 795M 0 795M 0% /run/user/500
|
||||||
|
zfs0 zfs 9,3G 128K 9,3G 1% /srv/zfs_pools/zfs0
|
||||||
|
[root@zfs ~]# zfs list
|
||||||
|
NAME USED AVAIL REFER MOUNTPOINT
|
||||||
|
zfs0 123K 9.20G 24K /srv/zfs_pools/zfs0
|
||||||
|
[root@zfs ~]#
|
||||||
|
```
|
||||||
|
|
||||||
|
### Просмотр файловых систем в пуле
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[root@zfs ~]# zfs list
|
||||||
|
NAME USED AVAIL REFER MOUNTPOINT
|
||||||
|
zfs0 123K 9.20G 24K /srv/zfs_pools/zfs0
|
||||||
|
[root@zfs ~]#
|
||||||
|
```
|
||||||
|
|
||||||
|
### Удаление пула
|
||||||
|
|
||||||
|
```bash
|
||||||
|
zpool destroy zfs0
|
||||||
|
```
|
||||||
|
|
||||||
|
### Создание пула с чередованием (RAID0, 2 VDEVs)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[root@zfs ~]# ls -lh /dev/disk/by-id/ | grep sd[bc]
|
||||||
|
lrwxrwxrwx 1 root root 9 апр 3 15:14 scsi-0QEMU_QEMU_HARDDISK_drive-scsi1 -> ../../sdb
|
||||||
|
lrwxrwxrwx 1 root root 9 апр 3 13:13 scsi-0QEMU_QEMU_HARDDISK_drive-scsi2 -> ../../sdc
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
zpool create -f zpool0 scsi-0QEMU_QEMU_HARDDISK_drive-scsi1 scsi-0QEMU_QEMU_HARDDISK_drive-scsi2
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[root@zfs ~]# zpool status
|
||||||
|
pool: zpool0
|
||||||
|
state: ONLINE
|
||||||
|
config:
|
||||||
|
|
||||||
|
NAME STATE READ WRITE CKSUM
|
||||||
|
zpool0 ONLINE 0 0 0
|
||||||
|
scsi-0QEMU_QEMU_HARDDISK_drive-scsi1 ONLINE 0 0 0
|
||||||
|
scsi-0QEMU_QEMU_HARDDISK_drive-scsi2 ONLINE 0 0 0
|
||||||
|
|
||||||
|
errors: No known data errors
|
||||||
|
[root@zfs ~]#
|
||||||
|
[root@zfs ~]# df -Th
|
||||||
|
Файловая система Тип Размер Использовано Дост Использовано% Cмонтировано в
|
||||||
|
udevfs devtmpfs 5,0M 96K 5,0M 2% /dev
|
||||||
|
runfs tmpfs 3,9G 652K 3,9G 1% /run
|
||||||
|
/dev/sda2 ext4 30G 3,3G 25G 12% /
|
||||||
|
tmpfs tmpfs 3,9G 0 3,9G 0% /dev/shm
|
||||||
|
tmpfs tmpfs 3,9G 0 3,9G 0% /tmp
|
||||||
|
tmpfs tmpfs 795M 0 795M 0% /run/user/500
|
||||||
|
zpool0 zfs 19G 128K 19G 1% /zpool0
|
||||||
|
[root@zfs ~]#
|
||||||
|
```
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,806 @@
|
||||||
|
# ZFS --- Справочник команд
|
||||||
|
|
||||||
|
- [ZFS --- Справочник команд](#zfs-----справочник-команд)
|
||||||
|
- [Работа с пулом ZFS #{.anchor}](#работа-с-пулом-zfs-anchor)
|
||||||
|
- [Работа с файловой и другими системами ZFS #{.anchor}](#работа-с-файловой-и-другими-системами-zfs-anchor)
|
||||||
|
- [Файловая система #{.anchor}](#файловая-система-anchor)
|
||||||
|
- [Snapshots (снепшоты или снимки состояния) #{.anchor}](#snapshots-снепшоты-или-снимки-состояния-anchor)
|
||||||
|
- [Снова вернемся к пулам #{.anchor}](#снова-вернемся-к-пулам-anchor)
|
||||||
|
|
||||||
|
Данный справочник является переводом [данной статьи](http://lildude.co.uk/zfs-cheatsheet). Авторы перевода: [Евгений Ратников](http://citkit.ru/articles/504/) и [Сгибнев Михаил](http://dreamcatcher.ru/). Огромное им спасибо за проделанную работу!
|
||||||
|
|
||||||
|
Не забывайте про страницы справки по командам работы с ZFS.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
man zpool
|
||||||
|
man zfs
|
||||||
|
```
|
||||||
|
|
||||||
|
Так как включить в пул (zpool) можно любые сущности файловой системы,
|
||||||
|
автор приводит примеры построения пулов и работы с ними с использованием
|
||||||
|
простых файлов. Итак, создадим несколько файлов, с которыми будем
|
||||||
|
работать подобно дискам.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
cd /
|
||||||
|
mkfile 100m disk1 disk2 disk3 disk5
|
||||||
|
mkfile 50m disk4
|
||||||
|
```
|
||||||
|
|
||||||
|
Мы создали 5 «виртуальных дисков». Четыре имею размер по 100 Мб, а один
|
||||||
|
--- 50 Мб. Это пригодится для демонстрации работы с устройствами
|
||||||
|
(разделами) разной ёмкости.
|
||||||
|
|
||||||
|
## Работа с пулом ZFS [\#](#%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d0%bf%d1%83%d0%bb%d0%be%d0%bc-zfs){.anchor}
|
||||||
|
|
||||||
|
Теперь создадим простой пул без избыточности, затем проверим его размер
|
||||||
|
и использование.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zpool create myzfs /disk1 /disk2
|
||||||
|
zpool list
|
||||||
|
|
||||||
|
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
|
||||||
|
myzfs 191M 94K 191M 0% ONLINE -
|
||||||
|
```
|
||||||
|
|
||||||
|
Созданы пул автоматически монтируется в каталог `/myzfs`. Посмотрим
|
||||||
|
более детальную информацию о нашем хранилище.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Из вывода видно, что в пул включены два диска. Пул без избыточности (не
|
||||||
|
mirror и не RAIDZ).
|
||||||
|
|
||||||
|
Теперь попробуем удалить только что созданный пул. Должны же мы это
|
||||||
|
уметь.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zpool destroy myzfs
|
||||||
|
zpool list
|
||||||
|
|
||||||
|
no pools available
|
||||||
|
```
|
||||||
|
|
||||||
|
Попробуем снова создать пул типа *MIRROR* (зеркало), но на этот раз
|
||||||
|
попытаемся включить в него диски разного размера. Zpool не даст нам
|
||||||
|
этого сделать. Чтобы безоговорочно создать такой пул, используйте опцию
|
||||||
|
`-f`, но в этом случае помните --- размер зеркала будет равен объему
|
||||||
|
наименьшего диска.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zpool create myzfs mirror /disk1 /disk4
|
||||||
|
|
||||||
|
invalid vdev specification
|
||||||
|
use '-f' to override the following errors:
|
||||||
|
mirror contains devices of different sizes
|
||||||
|
```
|
||||||
|
|
||||||
|
Создать зеркалируемое (*MIRROR*) хранилище можно на двух и более
|
||||||
|
устройствах. Сколько устройств в пуле типа `MIRROR` --- столько у нас
|
||||||
|
есть одинаковых копий данных.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Вместо зеркалирования можно использовать массивы *RAID*. Для этого
|
||||||
|
необходимо создавать пул типа `raidz` вместо `mirror`. Подробнее в
|
||||||
|
[хендбуке](https://docs.freebsd.org/en/books/handbook/zfs/).
|
||||||
|
|
||||||
|
Давайте теперь исключим один из дисков из пула. Так как этот диск
|
||||||
|
относится к зеркалу (*MIRROR*), то при его исключении никаких проблем не
|
||||||
|
возникает.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь давайте добавим к пулу новый диск. Если пул не был зеркальным, то
|
||||||
|
он им станет после добавления нового диска.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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 сообщит нам о том, что устройство не может быть удалено. Для
|
||||||
|
начала его нужно отключить.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zpool remove myzfs /disk3
|
||||||
|
|
||||||
|
cannot remove /disk3: only inactive hot spares can be removed
|
||||||
|
|
||||||
|
zpool detach myzfs /disk3
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь давайте попробуем добавить диск горячей замены (*hot spare*) к
|
||||||
|
нашему пулу.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
А теперь удалим его из пула.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь попробуем отключить один из дисков. Пока диск отключен, на него
|
||||||
|
не будет производиться запись и с него не будет производиться чтение.
|
||||||
|
Если использовать параметр `-t`, то при перезагрузке сервера диск
|
||||||
|
вернется в состояние онлайн автоматически.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Обратите внимание на состояние пула: **DEGRADED**
|
||||||
|
|
||||||
|
Теперь включим этот диск.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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**.
|
||||||
|
|
||||||
|
В данный момент в нашем пуле два диска: disc1 и disc2. Также в системе
|
||||||
|
имеется диск disc3, но он не подключен к пулу. Предположим, что disc1
|
||||||
|
вышел из строя и его нужно заменить на disc3.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Периодически для исправления ошибок необходимо выполнять процедуру
|
||||||
|
чистки (scrubbing) для пулов типа *MIRROR* или *RAID-Z*. Данная
|
||||||
|
процедура находит ошибки в контрольных суммах и исправляет их. Также
|
||||||
|
восстанавливаются сбойные блоки.
|
||||||
|
|
||||||
|
**Данная операция слишком ресурсоемка! Следует выполнять ее только во
|
||||||
|
время наименьшей нагрузки на пул.**
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zpool scrub myzfs
|
||||||
|
```
|
||||||
|
|
||||||
|
Если необходимо перенести пул в другую систему, то его необходимо
|
||||||
|
сначала экспортировать.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zpool export myzfs
|
||||||
|
pool list
|
||||||
|
|
||||||
|
no pools available
|
||||||
|
```
|
||||||
|
|
||||||
|
А затем импортировать в новой системе.
|
||||||
|
|
||||||
|
Если ключ `-d` не указать, то команда ищет `/dev/dsk`. Так как в данном
|
||||||
|
примере мы используем файлы, необходимо указать директорию с файлами
|
||||||
|
используемыми хранилищем.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zpool import -d / myzfs
|
||||||
|
zpool list
|
||||||
|
|
||||||
|
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
|
||||||
|
myzfs 95.5M 114K 95.4M 0% ONLINE -
|
||||||
|
```
|
||||||
|
|
||||||
|
Обновление версии пула. Показать версию используемого пула. Флаг `-v`
|
||||||
|
показывает возможности, поддерживаемые данным пулом. Используйте флаг
|
||||||
|
`-a`, чтобы обновить все доступные пулы до новейшей из них версии.
|
||||||
|
Обновленные пулы больше не будут доступны из систем, на которых работают
|
||||||
|
более старые версии.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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.
|
||||||
|
```
|
||||||
|
|
||||||
|
Если нужно получить статистику по операциям ввода/вывода пулов,
|
||||||
|
выполняем команду.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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 [\#](#%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%84%d0%b0%d0%b9%d0%bb%d0%be%d0%b2%d0%be%d0%b9-%d0%b8-%d0%b4%d1%80%d1%83%d0%b3%d0%b8%d0%bc%d0%b8-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%b0%d0%bc%d0%b8-zfs){.anchor}
|
||||||
|
|
||||||
|
### Файловая система [\#](#%d1%84%d0%b0%d0%b9%d0%bb%d0%be%d0%b2%d0%b0%d1%8f-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%b0){.anchor}
|
||||||
|
|
||||||
|
Создадим файловую систему в нашем пуле. Затем проверим автомонтирование
|
||||||
|
новой файловой системы.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zfs create myzfs/colin
|
||||||
|
df -h
|
||||||
|
|
||||||
|
Filesystem kbytes used avail capacity Mounted on
|
||||||
|
...
|
||||||
|
myzfs/colin 64M 18K 63M 1% /myzfs/colin
|
||||||
|
```
|
||||||
|
|
||||||
|
Получить список файловых систем ZFS можно следующей командой.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zfs list
|
||||||
|
|
||||||
|
NAME USED AVAIL REFER MOUNTPOINT
|
||||||
|
myzfs 139K 63.4M 19K /myzfs
|
||||||
|
myzfs/colin 18K 63.4M 18K /myzfs/colin
|
||||||
|
```
|
||||||
|
|
||||||
|
В данный момент в нашем пуле имеется одно зеркало, в которое входят два
|
||||||
|
диска: disc2 и disc3.
|
||||||
|
|
||||||
|
Давайте попробуем расширить наш пул. Попытаемся добавить к нему disc1
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Попытка добавления не удалась, т.к. она неоднозначно и при добавлении
|
||||||
|
диска к существующему зеркалу необходимо указать дополнительно один из
|
||||||
|
существующих в этом зеркале дисков, либо добавить минимум два диска для
|
||||||
|
формирования нового зеркала, которое будет входить в данный пул.
|
||||||
|
|
||||||
|
Добавим к пулу новое зеркало, состоящее из дисков: disc1 и disc5
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Добавим теперь к пулу еще одну файловую систему и посмотрим, как это
|
||||||
|
отразится на размере файловых систем, входящих в пул.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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 --- по умолчанию нет
|
||||||
|
никакого ограничения на файловые системы.
|
||||||
|
|
||||||
|
Чтобы явно управлять объемом файловых систем, можно прибегнуть к
|
||||||
|
резервированию --- выделению гарантированного объема для файловой
|
||||||
|
системы, либо квотированию --- ограничению файловой системы по
|
||||||
|
максимальному объему.
|
||||||
|
|
||||||
|
Давайте зарезервируем для файловой системы `/myzfs/colin` место в пуле,
|
||||||
|
равное 20 Мб. Остальные файловые системы, заполняя пул, в любом случае
|
||||||
|
оставят для этой файловой системы 20 Мб места.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zfs set reservation=20m myzfs/colin
|
||||||
|
zfs list -o reservation
|
||||||
|
|
||||||
|
RESERV
|
||||||
|
none
|
||||||
|
20M
|
||||||
|
none
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь для файловой системы `/myzfs/colin2` установим квоту в 20 Мб. Это
|
||||||
|
означает, что данная файловая система не сможет занять в пуле более 20
|
||||||
|
Мб, даже если пул будет полностью свободным.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zfs set quota=20m myzfs/colin2
|
||||||
|
zfs list -o quota myzfs/colin myzfs/colin2
|
||||||
|
|
||||||
|
QUOTA
|
||||||
|
none
|
||||||
|
20M
|
||||||
|
```
|
||||||
|
|
||||||
|
Также для файловой системы `/myzfs/colin2` включим сжатие. Сжатие
|
||||||
|
достаточно эффективно работает на уровне ZFS практически без потерь
|
||||||
|
производительности (конечно же, при условии, что производительности
|
||||||
|
сервера достаточно). Вместо `compression=on` можно использовать
|
||||||
|
`compression=gzip`.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zfs set compression=on myzfs/colin2
|
||||||
|
zfs list -o compression
|
||||||
|
|
||||||
|
COMPRESS
|
||||||
|
off
|
||||||
|
off
|
||||||
|
on
|
||||||
|
```
|
||||||
|
|
||||||
|
Чтобы сделать файловую систему доступной по протоколу NFS, достаточно
|
||||||
|
выполнить одну команду. Причем после перезагрузки сервера доступ к
|
||||||
|
файловой системе утерян не будет. Никаких дополнительных настроек
|
||||||
|
операционной системы производить не нужно.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zfs set sharenfs=on myzfs/colin2
|
||||||
|
zfs get sharenfs myzfs/colin2
|
||||||
|
|
||||||
|
NAME PROPERTY VALUE SOURCE
|
||||||
|
myzfs/colin2 sharenfs on local
|
||||||
|
```
|
||||||
|
|
||||||
|
Точно так же в одну команду ресурс можно сделать доступным по протоколу
|
||||||
|
SMB. Что пользователям ОС Windows наверняка пригодится.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zfs set sharesmb=on myzfs/colin2
|
||||||
|
zfs get sharesmb myzfs/colin2
|
||||||
|
|
||||||
|
NAME PROPERTY VALUE SOURCE
|
||||||
|
myzfs/colin2 sharesmb on local
|
||||||
|
```
|
||||||
|
|
||||||
|
Для повышения надежности (если у вас обычный пул, без избыточности),
|
||||||
|
можно использовать следующую опцию файловой системы.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zfs set copies=2 myzfs/colin2
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь в файловой системе будет храниться по две копии каждого блока.
|
||||||
|
Это имеет смысл, если пул без избыточности (*mirror* / *raidz*).
|
||||||
|
|
||||||
|
### Snapshots (снепшоты или снимки состояния) [\#](#snapshots-%d1%81%d0%bd%d0%b5%d0%bf%d1%88%d0%be%d1%82%d1%8b-%d0%b8%d0%bb%d0%b8-%d1%81%d0%bd%d0%b8%d0%bc%d0%ba%d0%b8-%d1%81%d0%be%d1%81%d1%82%d0%be%d1%8f%d0%bd%d0%b8%d1%8f){.anchor}
|
||||||
|
|
||||||
|
Создать снепшот файловой системы очень просто. Давайте создадим снепшот
|
||||||
|
для файловой системы `myzfs/colin` и назовем его *test*.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Если появится необходимость отката к снепшоту, достаточно выполнить одну
|
||||||
|
команду.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zfs rollback myzfs/colin@test
|
||||||
|
```
|
||||||
|
|
||||||
|
Снэпшот можно подмониторовать, как обычно. Например так.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
mount -t zfs myzfs/colin@test /mnt
|
||||||
|
```
|
||||||
|
|
||||||
|
Даже можно клонировать файловую системы из снепшота в новую файловую
|
||||||
|
систему.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь давайте удалим наши файловые системы `/myzfs/colin` и
|
||||||
|
`/myzfs/colin2`
|
||||||
|
|
||||||
|
Сперва удалим пустую файловую систему `/myzfs/colin2`
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Файловая система удалилась без проблем. Теперь удалим файловую систему,
|
||||||
|
для которой существует снепшот.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zfs destroy myzfs/colin
|
||||||
|
|
||||||
|
cannot destroy 'myzfs/colin': filesystem has children
|
||||||
|
use '-r' to destroy the following datasets:
|
||||||
|
myzfs/colin@test
|
||||||
|
```
|
||||||
|
|
||||||
|
Удаление невозможно, т.к. у файловой системы имеется дочерний объект.
|
||||||
|
Можно воспользоваться параметром `-r` чтобы удалить файловую систему
|
||||||
|
вместе со всеми дочерними объектами рекурсивно.
|
||||||
|
|
||||||
|
Мы можем отключить снепшот от `/myzfs/colin` и оставить его дочерним
|
||||||
|
только для `/myzfs/colin3`
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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 -
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь сделанный ранее снепшот для `/myzfs/colin` стал дочерним
|
||||||
|
объектом `/myzfs/colin3`. Таким образом у файловой
|
||||||
|
системы `/myzfs/colin` больше нет дочерних объектов и ее можно без труда
|
||||||
|
разобрать (удалить).
|
||||||
|
|
||||||
|
Если вдруг понадобиться переименовать ранее созданную файловую систему
|
||||||
|
или снепшот, то можно воспользоваться следующими командами.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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 -
|
||||||
|
```
|
||||||
|
|
||||||
|
### Снова вернемся к пулам [\#](#%d1%81%d0%bd%d0%be%d0%b2%d0%b0-%d0%b2%d0%b5%d1%80%d0%bd%d0%b5%d0%bc%d1%81%d1%8f-%d0%ba-%d0%bf%d1%83%d0%bb%d0%b0%d0%bc){.anchor}
|
||||||
|
|
||||||
|
Получить полную информацию о пулах можно следующим образом.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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 -
|
||||||
|
[...]
|
||||||
|
```
|
||||||
|
|
||||||
|
Если пул нам более не нужен, можем его удалить. Однако, нельзя удалить
|
||||||
|
пул, в котором имеются активные файловые системы.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zpool destroy myzfs
|
||||||
|
|
||||||
|
cannot destroy 'myzfs': pool is not empty
|
||||||
|
use '-f' to force destruction anyway
|
||||||
|
```
|
||||||
|
|
||||||
|
Чтобы принудительно удалить пул, используйте параметр `-f` (не
|
||||||
|
выполняйте это сейчас. Пул нам еще понадобится далее)
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zpool destroy -f myzfs
|
||||||
|
zpool status -v
|
||||||
|
|
||||||
|
no pools available
|
||||||
|
```
|
||||||
|
|
||||||
|
Отключить файловую систему от пула можно следующим образом.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zfs unmount myzfs/bob
|
||||||
|
df -h
|
||||||
|
|
||||||
|
myzfs 159M 20K 159M 1% /myzfs
|
||||||
|
```
|
||||||
|
|
||||||
|
Подключить файловую систему к пулу вот так.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
zfs mount myzfs/bob
|
||||||
|
df -h
|
||||||
|
|
||||||
|
myzfs 159M 20K 159M 1% /myzfs
|
||||||
|
myzfs/bob 159M 18K 159M 1% /myzfs/bob
|
||||||
|
```
|
||||||
|
|
||||||
|
Снепшот можно сделать и на удаленный ресурс (или другое место в
|
||||||
|
локальной системе).
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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 -
|
||||||
|
```
|
||||||
|
|
||||||
|
В данном случае снепшот передан `zfs receive` на локальном узле (в
|
||||||
|
демонстрационных целях). В реальной ситуации таким образом можно сделать
|
||||||
|
снепшот на другой узел сети.
|
||||||
|
|
||||||
|
Zpool ведет собственную историю всех команд. Посмотреть историю можно
|
||||||
|
следующим образом.
|
||||||
|
|
||||||
|
``` {tabindex="0"}
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Ну вот. Основные команды для работы с пулами ZFS усвоены.
|
||||||
|
|
||||||
|
Теперь можно удалить сам пул и файлы. Они нам больше не пригодятся.
|
||||||
|
|
||||||
|
::: {.flex .flex-wrap .justify-between}
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: book-comments
|
||||||
|
::: {#disqus_thread}
|
||||||
|
:::
|
||||||
|
|
||||||
|
Please enable JavaScript to view the [comments powered by
|
||||||
|
Disqus.](https://disqus.com/?ref_noscript)
|
||||||
|
|
||||||
|
[comments powered by
|
||||||
|
[Disqus]{.logo-disqus}](https://disqus.com){.dsq-brlink}
|
||||||
|
:::
|
||||||
|
:::
|
||||||
|
|
||||||
|
::: book-toc-content
|
||||||
|
- [ZFS --- Справочник команд](#zfs-----справочник-команд)
|
||||||
|
- [Работа с пулом ZFS #{.anchor}](#работа-с-пулом-zfs-anchor)
|
||||||
|
- [Работа с файловой и другими системами ZFS #{.anchor}](#работа-с-файловой-и-другими-системами-zfs-anchor)
|
||||||
|
- [Файловая система #{.anchor}](#файловая-система-anchor)
|
||||||
|
- [Snapshots (снепшоты или снимки состояния) #{.anchor}](#snapshots-снепшоты-или-снимки-состояния-anchor)
|
||||||
|
- [Снова вернемся к пулам #{.anchor}](#снова-вернемся-к-пулам-anchor)
|
Loading…
Reference in New Issue