git: 7269df3b49 - main - update translation of books/handbook/zfs to Russian
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 12 Aug 2026 14:08:57 UTC
The branch main has been updated by vladlen:
URL: https://cgit.FreeBSD.org/doc/commit/?id=7269df3b49ea141ef5e66a2106745d11ea9b8931
commit 7269df3b49ea141ef5e66a2106745d11ea9b8931
Author: Vladlen Popolitov <vladlen@FreeBSD.org>
AuthorDate: 2026-08-12 14:08:48 +0000
Commit: Vladlen Popolitov <vladlen@FreeBSD.org>
CommitDate: 2026-08-12 14:08:48 +0000
update translation of books/handbook/zfs to Russian
Differential Revision: https://reviews.freebsd.org/D58794
---
.../content/ru/books/handbook/zfs/_index.adoc | 2051 ++-
.../content/ru/books/handbook/zfs/_index.po | 14483 +++++++++++++------
2 files changed, 11575 insertions(+), 4959 deletions(-)
diff --git a/documentation/content/ru/books/handbook/zfs/_index.adoc b/documentation/content/ru/books/handbook/zfs/_index.adoc
index b296f93b6c..3ad8d280ee 100644
--- a/documentation/content/ru/books/handbook/zfs/_index.adoc
+++ b/documentation/content/ru/books/handbook/zfs/_index.adoc
@@ -7,7 +7,7 @@ part: 'Часть III. Администрирование системы'
prev: books/handbook/geom
showBookMenu: 'true'
tags: ["ZFS", "filesystem", "administration", "zpool", "features", "terminology", "RAID-Z"]
-title: 'Глава 22. Файловая система Z (ZFS)'
+title: 'Глава 23. Файловая система Z (ZFS)'
weight: 26
---
@@ -18,7 +18,7 @@ weight: 26
:toclevels: 1
:icons: font
:sectnums:
-:sectnumoffset: 22
+:sectnumoffset: 23
:partnums:
:source-highlighter: rouge
:experimental:
@@ -50,7 +50,7 @@ endif::[]
ZFS — это продвинутая файловая система, разработанная для решения основных проблем, присущих предыдущему программному обеспечению подсистем хранения данных.
-Первоначально разработанная в Sun(TM), дальнейшая разработка открытой версии ZFS переместилась в http://open-zfs.org[проект OpenZFS].
+Первоначально разработанная в Sun Microsystems(TM), дальнейшая разработка открытой версии ZFS переместилась в https://openzfs.org[проект OpenZFS].
ZFS имеет три основные цели проектирования:
@@ -58,29 +58,26 @@ ZFS имеет три основные цели проектирования:
* Объединенное хранилище: добавление физических устройств хранения в пул и выделение пространства из этого общего пула. Пространство доступно для всех файловых систем и томов и увеличивается за счет добавления новых устройств хранения в пул.
* Производительность: механизмы кэширования обеспечивают повышенную производительность. crossref:zfs[zfs-term-arc,ARC] — это продвинутый кэш для чтения, основанный на оперативной памяти. ZFS предоставляет второй уровень кэша для чтения на основе диска — crossref:zfs[zfs-term-l2arc,L2ARC], а также кэш для синхронной записи на основе диска под названием crossref:zfs[zfs-term-zil,ZIL].
-Полный список возможностей и терминологии приведен в crossref:zfs[zfs-term, Особенности и терминология ZFS].
+Полный список возможностей и терминологии приведён в crossref:zfs[zfs-term, Особенности и терминология ZFS].
[[zfs-differences]]
== Что отличает ZFS от других
-ZFS — это не просто файловая система, она принципиально отличается от традиционных файловых систем. Объединение традиционно разделенных ролей менеджера томов и файловой системы даёт ZFS уникальные преимущества. Теперь файловая система осведомлена о структуре нижележащих дисков. Традиционные файловые системы могли существовать только на одном диске. Если было два диска, приходилось создавать две отдельные файловые системы. Традиционная конфигурация аппаратного RAID решала эту проблему, предоставляя операционной системе один логиче
ский диск, состоящий из пространства физических дисков, поверх которого операционная система размещала файловую систему. Даже в программных решениях RAID, таких как предоставляемые GEOM, файловая система UFS, находящаяся поверх RAID, считает, что работает с одним устройством. Комбинация менеджера томов и файловой системы в ZFS решает эту проблему и позволяет создавать файловые системы, которые совместно используют общий пул доступного хранилища. Одно из больших преимуществ осведомленности ZFS о физической структуре дисков заключается в том,
что существующие файловые системы автоматически расширяются при добавлении дополнительных дисков в пул. Это новое пространство становится доступным для файловых систем. ZFS также может применять разные свойства к каждой файловой системе. Это делает полезным создание отдельных файловых систем и наборов данных вместо единой монолитной файловой системы.
+ZFS — это не просто файловая система, она принципиально отличается от традиционных файловых систем. Объединение традиционно разделённых ролей менеджера томов и файловой системы даёт ZFS уникальные преимущества. Теперь файловая система осведомлена о структуре нижележащих дисков. Традиционные файловые системы могли существовать только на одном диске. Если было два диска, приходилось создавать две отдельные файловые системы. Традиционная конфигурация аппаратного RAID решала эту проблему, предоставляя операционной системе один логиче
ский диск, состоящий из пространства физических дисков, поверх которого операционная система размещала файловую систему. Даже в программных решениях RAID, таких как предоставляемые GEOM, файловая система UFS, находящаяся поверх RAID, считает, что работает с одним устройством. Комбинация менеджера томов и файловой системы в ZFS решает эту проблему и позволяет создавать файловые системы, которые совместно используют общий пул доступного хранилища. Одно из больших преимуществ осведомленности ZFS о физической структуре дисков заключается в том,
что существующие файловые системы автоматически расширяются при добавлении дополнительных дисков в пул. Это новое пространство становится доступным для файловых систем. ZFS также может применять разные свойства к каждой файловой системе. Это делает полезным создание отдельных файловых систем и наборов данных вместо единой монолитной файловой системы.
[[zfs-quickstart]]
== Краткое руководство по началу работы
+Установщик FreeBSD может установить систему непосредственно в пул ZFS, конфигурация, известная как Root-on-ZFS; см. crossref:bsdinstall[bsdinstall-part-zfs,Разметка диска с использованием Root-on-ZFS с помощью мастера]. В этом разделе показано, как создавать и управлять дополнительными пулами ZFS и наборами данных на работающей системе.
+
FreeBSD может монтировать пулы и наборы данных ZFS во время инициализации системы. Чтобы включить эту функцию, запустите:
[source, shell]
....
-# service zfs enable
+# sysrc zfs_enable="YES"
....
-или добавьте эту строку в [.filename]#/etc/rc.conf#:
-
-[.programlisting]
-....
-zfs_enable="YES"
-....
+Это добавляет `zfs_enable="YES"` в [.filename]#/etc/rc.conf#. Выполнение `service zfs enable` вносит то же изменение.
Затем запустите службу:
@@ -89,28 +86,27 @@ zfs_enable="YES"
# service zfs start
....
-Примеры в этом разделе предполагают использование трёх SCSI-дисков с именами устройств [.filename]#da0#, [.filename]#da1# и [.filename]#da2#. Пользователям оборудования SATA следует использовать имена устройств [.filename]#ada#.
+Примеры в этом разделе предполагают использование трёх SATA-дисков с именами устройств [.filename]#ada0#, [.filename]#ada1# и [.filename]#ada2#. Пользователям оборудования SCSI/SAS следует использовать имена устройств [.filename]#da#, пользователям оборудования NVMe — имена устройств [.filename]#nda#.
[[zfs-quickstart-single-disk-pool]]
=== Пул на одном диске
-Чтобы создать простой, не избыточный пул, используя одно дисковое устройство:
+Сначала создайте раздел GPT на пустом диске. Затем добавьте раздел типа `freebsd-zfs`, из которого создается один нерезервируемый пул:
[source, shell]
....
-# zpool create example /dev/da0
+# gpart create -s gpt ada1
+# gpart add -t freebsd-zfs ada1
+# zpool create example /dev/ada1p1
....
Для просмотра нового пула ознакомьтесь с выводом команды `df`:
[source, shell]
....
-# df
-Filesystem 1K-blocks Used Avail Capacity Mounted on
-/dev/ad0s1a 2026030 235230 1628718 13% /
-devfs 1 1 0 100% /dev
-/dev/ad0s1d 54098308 1032846 48737598 2% /usr
-example 17547136 0 17547136 0% /example
+# df /example
+Filesystem 1K-blocks Used Avail Capacity Mounted on
+example 17547136 0 17547136 0% /example
....
Этот вывод показывает создание и монтирование пула `example`, который теперь доступен как файловая система. Создайте файлы для пользователей, чтобы посмотреть, что все работает:
@@ -127,7 +123,7 @@ drwxr-xr-x 21 root wheel 512 Aug 29 23:12 ..
-rw-r--r-- 1 root wheel 0 Aug 29 23:15 testfile
....
-Этот пул пока не использует расширенные функции и свойства ZFS. Чтобы создать набор данных в этом пуле с включенным сжатием:
+Этот пул пока не использует расширенные функции и свойства ZFS. Чтобы создать набор данных в этом пуле с включённым сжатием:
[source, shell]
....
@@ -150,11 +146,8 @@ drwxr-xr-x 21 root wheel 512 Aug 29 23:12 ..
....
# zfs umount example/compressed
# df
-Filesystem 1K-blocks Used Avail Capacity Mounted on
-/dev/ad0s1a 2026030 235232 1628716 13% /
-devfs 1 1 0 100% /dev
-/dev/ad0s1d 54098308 1032864 48737580 2% /usr
-example 17547008 0 17547008 0% /example
+Filesystem 1K-blocks Used Avail Capacity Mounted on
+example 17547008 0 17547008 0% /example
....
Для повторного монтирования файловой системы, чтобы сделать её снова доступной, используйте `zfs mount` и проверьте с помощью `df`:
@@ -164,9 +157,6 @@ example 17547008 0 17547008 0% /example
# zfs mount example/compressed
# df
Filesystem 1K-blocks Used Avail Capacity Mounted on
-/dev/ad0s1a 2026030 235234 1628714 13% /
-devfs 1 1 0 100% /dev
-/dev/ad0s1d 54098308 1032864 48737580 2% /usr
example 17547008 0 17547008 0% /example
example/compressed 17547008 0 17547008 0% /example/compressed
....
@@ -176,9 +166,9 @@ example/compressed 17547008 0 17547008 0% /example/compressed
[source, shell]
....
# mount
-/dev/ad0s1a on / (ufs, local)
+/dev/ada0p1 on / (ufs, local)
devfs on /dev (devfs, local)
-/dev/ad0s1d on /usr (ufs, local, soft-updates)
+/dev/ada0p2 on /usr (ufs, local, soft-updates)
example on /example (zfs, local)
example/compressed on /example/compressed (zfs, local)
....
@@ -196,13 +186,13 @@ example/compressed on /example/compressed (zfs, local)
[source, shell]
....
# df
-Filesystem 1K-blocks Used Avail Capacity Mounted on
-/dev/ad0s1a 2026030 235234 1628714 13% /
-devfs 1 1 0 100% /dev
-/dev/ad0s1d 54098308 1032864 48737580 2% /usr
-example 17547008 0 17547008 0% /example
-example/compressed 17547008 0 17547008 0% /example/compressed
-example/data 17547008 0 17547008 0% /example/data
+Filesystem 1K-blocks Used Avail Capacity Mounted on
+/dev/ada0p1 2026030 235234 1628714 13% /
+devfs 1 1 0 100% /dev
+/dev/ada0p2 54098308 1032864 48737580 2% /usr
+example 17547008 0 17547008 0% /example
+example/compressed 17547008 0 17547008 0% /example/compressed
+example/data 17547008 0 17547008 0% /example/data
....
Обратите внимание, что все файловые системы в пуле имеют одинаковое доступное пространство. Использование `df` в этих примерах показывает, что файловые системы занимают столько места, сколько им нужно, и все используют один и тот же пул. ZFS устраняет такие понятия, как тома и разделы, и позволяет нескольким файловым системам совместно использовать один пул.
@@ -221,16 +211,22 @@ example/data 17547008 0 17547008 0% /example/data
Диски выходят из строя. Один из способов избежать потери данных при отказе диска — использование RAID. ZFS поддерживает эту возможность в своей конструкции пула. Пуллы RAID-Z требуют трёх или более дисков, но предоставляют больше полезного пространства, чем зеркальные пуллы.
-В этом примере создаётся пул RAID-Z с указанием дисков для добавления в пул:
+Этот пример создает пул RAID-Z. Сначала на каждом диске создаются разделы GPT, затем укажите эти разделы GPT для добавления в пул с помощью ключевого слова `raidz`:
[source, shell]
....
-# zpool create storage raidz da0 da1 da2
+# gpart create -s gpt ada0
+# gpart add -t freebsd-zfs ada0
+# gpart create -s gpt ada1
+# gpart add -t freebsd-zfs ada1
+# gpart create -s gpt ada2
+# gpart add -t freebsd-zfs ada2
+# zpool create storage raidz ada0p1 ada1p1 ada2p1
....
[NOTE]
====
-Sun(TM) рекомендует использовать от трёх до девяти устройств в конфигурации RAID-Z. Для сред, требующих единого пула из 10 или более дисков, рекомендуется разбить его на меньшие группы RAID-Z. Если доступно два диска, ZFS-зеркалирование обеспечит избыточность при необходимости. Подробнее см. в man:zpool[8].
+Рекомендовано использовать от трёх до девяти устройств в конфигурации RAID-Z. Для сред, требующих единого пула из 10 или более дисков, рекомендуется разбить его на меньшие группы RAID-Z. Если доступно два диска, ZFS-зеркалирование обеспечит избыточность при необходимости. Подробнее см. в man:zpool[8].
====
Предыдущий пример создал пул `storage`. В этом примере в этом пуле создаётся новая файловая система с именем `home`:
@@ -258,22 +254,22 @@ Sun(TM) рекомендует использовать от трёх до де
# ln -s /storage/home /usr/home
....
-Данные пользователей теперь хранятся в только что созданном [.filename]#/storage/home#. Проверьте это, добавив нового пользователя и войдя в систему под его учётной записью.
+Данные пользователя теперь хранятся в только что созданном [.filename]#/storage/home#. Проверьте это, добавив нового пользователя и войдя в систему под его учётной записью.
Создайте снимок файловой системы для последующего отката:
[source, shell]
....
-# zfs snapshot storage/home@08-30-08
+# zfs snapshot storage/home@2026-07-11
....
ZFS создаёт снимки набора данных, а не отдельного каталога или файла.
-Символ `@` является разделителем между именем файловой системы или именем тома. Перед удалением важного каталога создайте резервную копию файловой системы, а затем откатитесь к более раннему снимку, в котором каталог ещё существует:
+Символ `@` является разделителем между именем файловой системы или тома и именем снимка. Перед удалением важного каталога создайте резервную копию файловой системы, а затем откатитесь к более раннему снимку, в котором каталог ещё существует:
[source, shell]
....
-# zfs rollback storage/home@08-30-08
+# zfs rollback storage/home@2026-07-11
....
Чтобы перечислить все доступные снимки, выполните команду `ls` в каталоге [.filename]#.zfs/snapshot# файловой системы. Например, чтобы увидеть сделанный снимок:
@@ -287,7 +283,7 @@ ZFS создаёт снимки набора данных, а не отдель
[source, shell]
....
-# zfs destroy storage/home@08-30-08
+# zfs destroy storage/home@2026-07-11
....
После тестирования сделайте [.filename]#/storage/home# настоящим [.filename]#/home# с помощью следующей команды:
@@ -302,16 +298,16 @@ ZFS создаёт снимки набора данных, а не отдель
[source, shell]
....
# mount
-/dev/ad0s1a on / (ufs, local)
+/dev/ada0p1 on / (ufs, local)
devfs on /dev (devfs, local)
-/dev/ad0s1d on /usr (ufs, local, soft-updates)
+/dev/ada0p2 on /usr (ufs, local, soft-updates)
storage on /storage (zfs, local)
storage/home on /home (zfs, local)
# df
Filesystem 1K-blocks Used Avail Capacity Mounted on
-/dev/ad0s1a 2026030 235240 1628708 13% /
+/dev/ada0p1 2026030 235240 1628708 13% /
devfs 1 1 0 100% /dev
-/dev/ad0s1d 54098308 1032826 48737618 2% /usr
+/dev/ada0p2 54098308 1032826 48737618 2% /usr
storage 26320512 0 26320512 0% /storage
storage/home 26320512 0 26320512 0% /home
....
@@ -323,6 +319,8 @@ storage/home 26320512 0 26320512 0% /home
daily_status_zfs_enable="YES"
....
+man:periodic[8] также может выполнять запланированные проверки пула; см. crossref:zfs[zfs-zpool-scrub,Проверка пула].
+
[[zfs-quickstart-recovering-raid-z]]
=== Восстановление RAID-Z
@@ -347,35 +345,35 @@ all pools are healthy
pool: storage
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.
+ 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: none requested
+ 'zpool replace'.
+ scan: none requested
config:
- NAME STATE READ WRITE CKSUM
- storage DEGRADED 0 0 0
- raidz1 DEGRADED 0 0 0
- da0 ONLINE 0 0 0
- da1 OFFLINE 0 0 0
- da2 ONLINE 0 0 0
+ NAME STATE READ WRITE CKSUM
+ storage DEGRADED 0 0 0
+ raidz1-0 DEGRADED 0 0 0
+ ada0p1 ONLINE 0 0 0
+ ada1p1 OFFLINE 0 0 0
+ ada2p1 ONLINE 0 0 0
errors: No known data errors
....
-"OFFLINE" показывает, что администратор перевел [.filename]#da1# в автономный режим с помощью:
+"OFFLINE" показывает, что администратор перевел [.filename]#ada1p1# в автономный режим с помощью:
[source, shell]
....
-# zpool offline storage da1
+# zpool offline storage ada1p1
....
-Выключите компьютер и замените диск [.filename]#da1#. Включите компьютер и верните [.filename]#da1# в пул:
+Выключите компьютер и замените диск [.filename]#ada1p1#. Заново создайте GPT-раздел типа `freebsd-zfs` на новом диске. Включите компьютер и верните [.filename]#ada1p1# в пул:
[source, shell]
....
-# zpool replace storage da1
+# zpool replace storage ada1p1
....
Далее снова проверьте статус, на этот раз без `-x`, чтобы отобразить все пулы:
@@ -383,17 +381,17 @@ errors: No known data errors
[source, shell]
....
# zpool status storage
- pool: storage
+ pool: storage
state: ONLINE
- scrub: resilver completed with 0 errors on Sat Aug 30 19:44:11 2008
+ scan: resilvered 3.21G in 00:04:36 with 0 errors on Sat Jul 11 10:32:19 2026
config:
- NAME STATE READ WRITE CKSUM
- storage ONLINE 0 0 0
- raidz1 ONLINE 0 0 0
- da0 ONLINE 0 0 0
- da1 ONLINE 0 0 0
- da2 ONLINE 0 0 0
+ NAME STATE READ WRITE CKSUM
+ storage ONLINE 0 0 0
+ raidz1-0 ONLINE 0 0 0
+ ada0p1 ONLINE 0 0 0
+ ada1p1 ONLINE 0 0 0
+ ada2p1 ONLINE 0 0 0
errors: No known data errors
....
@@ -407,7 +405,7 @@ ZFS использует контрольные суммы для проверк
[WARNING]
====
-Отключение контрольных сумм возможно, но _не_ рекомендуется! Контрольные суммы занимают мало места и обеспечивают целостность данных. Большинство функций ZFS не будут работать корректно при отключенных контрольных суммах. Их отключение не приведет к заметному повышению производительности.
+Отключение контрольных сумм возможно, но _не_ рекомендуется! Контрольные суммы занимают мало места и обеспечивают целостность данных. Большинство функций ZFS не будут работать корректно при отключённых контрольных суммах. Их отключение не приведет к заметному повышению производительности.
====
Проверка контрольных сумм данных (называемая _scrubbing_) обеспечивает целостность пула `storage` с помощью:
@@ -417,22 +415,22 @@ ZFS использует контрольные суммы для проверк
# zpool scrub storage
....
-Продолжительность очистки зависит от объёма хранимых данных. Большие объёмы данных требуют пропорционально больше времени для проверки. Поскольку очистка интенсивно использует операции ввода-вывода, ZFS позволяет выполнять только одну очистку одновременно. После завершения очистки просмотрите статус с помощью `zpool status`:
+Продолжительность очистки зависит от объёма хранимых данных. Большие объёмы данных требуют пропорционально больше времени для проверки. Поскольку очистка интенсивно использует операции ввода-вывода, ZFS позволяет выполнять только одну очистку на каждом пуле одновременно. После завершения очистки просмотрите статус с помощью `zpool status`:
[source, shell]
....
# zpool status storage
- pool: storage
+ pool: storage
state: ONLINE
- scrub: scrub completed with 0 errors on Sat Jan 26 19:57:37 2013
+ scan: scrub repaired 0B in 00:19:16 with 0 errors on Sat Jul 11 10:32:19 2026
config:
- NAME STATE READ WRITE CKSUM
- storage ONLINE 0 0 0
- raidz1 ONLINE 0 0 0
- da0 ONLINE 0 0 0
- da1 ONLINE 0 0 0
- da2 ONLINE 0 0 0
+ NAME STATE READ WRITE CKSUM
+ storage ONLINE 0 0 0
+ raidz1-0 ONLINE 0 0 0
+ ada0p1 ONLINE 0 0 0
+ ada1p1 ONLINE 0 0 0
+ ada2p1 ONLINE 0 0 0
errors: No known data errors
....
@@ -449,47 +447,45 @@ errors: No known data errors
[[zfs-zpool-create]]
=== Создание и удаление пулов хранения данных
-Создание пула хранения ZFS требует принятия окончательного решения о нескольких параметрах, так как структура пула не может быть изменена после создания. Наиболее важное решение — это выбор типов vdev, в которые будут объединены физические диски. Подробнее о возможных вариантах см. в списке crossref:zfs[zfs-term-vdev,типов vdev]. После создания пула большинство типов vdev не позволяют добавлять диски в vdev. Исключения составляют зеркала (mirror), которые позволяют добавлять новые диски в vdev, и страйпы (stripe), которые могут быть преобразованы в зеркала путём д
бавления нового диска к vdev. Хотя добавление новых vdev расширяет пул, компоновка пула не может быть изменена после его создания. Вместо этого необходимо создать резервную копию данных, удалить пул и воссоздать его.
+Самое важное решение при создании пула хранения ZFS — это выбор типов vdev для группировки физических дисков. См. список crossref:zfs[zfs-term-vdev,типов vdev] для получения подробной информации о возможных вариантах. Типы vdev определяют характеристики избыточности, ёмкости и производительности пула. Раскладка пула не фиксируется навсегда при его создании. Зеркала позволяют добавлять новые диски в vdev, а полосы (stripes) обновляются до зеркал путём присоединения нового диска к vdev. Vdev RAID-Z увеличиваются на один диск за раз с помощью crossref:zfs[zfs-zpool-raidz-expansion,расш
ирения RAID-Z], которое требует OpenZFS 2.3 или более поздней версии, впервые доступной во FreeBSD 15.0. Добавление новых vdev расширяет пул в любое время, а crossref:zfs[zfs-zpool-attach,удаление верхних уровней vdev] возможно в определённых пределах. Изменение формы активного пула занимает время и пропускную способность ввода-вывода, поэтому выбор подходящих типов vdev заранее остаётся важным.
-Создание простого зеркального пула:
+Создайте простой зеркальный пул на дисках, содержащих GPT-разделы типа `freebsd-zfs`:
[source, shell]
....
-# zpool create mypool mirror /dev/ada1 /dev/ada2
+# zpool create mypool mirror /dev/ada1p1 /dev/ada2p1
# zpool status
pool: mypool
state: ONLINE
- scan: none requested
config:
NAME STATE READ WRITE CKSUM
mypool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
- ada1 ONLINE 0 0 0
- ada2 ONLINE 0 0 0
+ ada1p1 ONLINE 0 0 0
+ ada2p1 ONLINE 0 0 0
errors: No known data errors
....
-Чтобы создать более одного vdev одной командой, укажите группы дисков, разделенные ключевым словом типа vdev, в данном примере `mirror`:
+Чтобы создать более одного vdev одной командой, укажите группы дисков, разделённые ключевым словом типа vdev, в данном примере `mirror`:
[source, shell]
....
-# zpool create mypool mirror /dev/ada1 /dev/ada2 mirror /dev/ada3 /dev/ada4
+# zpool create mypool mirror /dev/ada1p1 /dev/ada2p1 mirror /dev/ada3p1 /dev/ada4p1
# zpool status
pool: mypool
state: ONLINE
- scan: none requested
config:
NAME STATE READ WRITE CKSUM
mypool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
- ada1 ONLINE 0 0 0
- ada2 ONLINE 0 0 0
+ ada1p1 ONLINE 0 0 0
+ ada2p1 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
- ada3 ONLINE 0 0 0
- ada4 ONLINE 0 0 0
+ ada3p1 ONLINE 0 0 0
+ ada4p1 ONLINE 0 0 0
errors: No known data errors
....
@@ -500,32 +496,65 @@ errors: No known data errors
[source, shell]
....
-# zpool create mypool raidz2 /dev/ada0p3 /dev/ada1p3 /dev/ada2p3 /dev/ada3p3 /dev/ada4p3 /dev/ada5p3
+# zpool create mypool raidz2 /dev/ada0p1 /dev/ada1p1 /dev/ada2p1 /dev/ada3p1 /dev/ada4p1 /dev/ada5p1
# zpool status
pool: mypool
state: ONLINE
- scan: none requested
config:
NAME STATE READ WRITE CKSUM
mypool ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
- ada0p3 ONLINE 0 0 0
- ada1p3 ONLINE 0 0 0
- ada2p3 ONLINE 0 0 0
- ada3p3 ONLINE 0 0 0
- ada4p3 ONLINE 0 0 0
- ada5p3 ONLINE 0 0 0
+ ada0p1 ONLINE 0 0 0
+ ada1p1 ONLINE 0 0 0
+ ada2p1 ONLINE 0 0 0
+ ada3p1 ONLINE 0 0 0
+ ada4p1 ONLINE 0 0 0
+ ada5p1 ONLINE 0 0 0
errors: No known data errors
....
+ZFS выравнивает и подбирает размер своих минимальных записей для каждого vdev на основе значения `ashift` этого vdev, которое является логарифмом размера сектора по основанию 2. OpenZFS определяет размер сектора, сообщаемый дисками при создании vdev, и выбирает `ashift` соответствующим образом. Некоторые диски сообщают секторы в 512 байт для совместимости, но внутренне используют секторы в 4096 байт. Создавайте пулы на таких дисках с явным параметром `-o ashift=12`, чтобы принудительно установить выравнивание по 4096 байт:
+
+[source, shell]
+....
+# zpool create -o ashift=12 mypool mirror /dev/ada1p1 /dev/ada2p1
+....
+
+Установка переменной man:sysctl[8] `vfs.zfs.vdev.min_auto_ashift` в значение `12` дает тот же результат для создания пула и для последующих операций `zpool add` и `zpool attach`. `ashift` — это свойство каждого vdev, а не пула в целом. Оно фиксируется при создании vdev и не может быть изменено впоследствии, поэтому проверьте его перед записью данных в пул.
+
Уничтожьте пул, который больше не нужен, чтобы повторно использовать диски. Перед уничтожением пула необходимо размонтировать файловые системы в этом пуле. Если какой-либо набор данных используется, операция размонтирования завершится неудачей без уничтожения пула. Принудительное уничтожение пула выполняется с помощью `-f`. Это может привести к неопределённому поведению приложений, у которых были открыты файлы в этих наборах данных.
+[[zfs-zpool-props]]
+=== Свойства пулов
+
+Подобно наборам данных, пулы имеют свойства, которые сообщают о состоянии и управляют поведением. Отобразите каждое свойство пула с помощью `zpool get all _mypool_` или укажите конкретные свойства:
+
+[source, shell]
+....
+# zpool get health,capacity mypool
+NAME PROPERTY VALUE SOURCE
+mypool health ONLINE -
+mypool capacity 27% -
+....
+
+Измените изменяемое свойство с помощью `zpool set`:
+
+[source, shell]
+....
+# zpool set comment="Backup pool" mypool
+# zpool get comment mypool
+NAME PROPERTY VALUE SOURCE
+mypool comment Backup pool local
+....
+
+Такие свойства, как `size`, `capacity`, `fragmentation` и `health`, являются статусными значениями только для чтения. Другие изменяют поведение пула; в этой главе используется `autoexpand` для автоматического расширения пула (crossref:zfs[zfs-zpool-online,Увеличение размера пула]), `autoreplace` с горячими резервными дисками (crossref:zfs[zfs-zpool-spares,Горячие резервные диски и автоматическая замена с помощью zfsd]), `autotrim` на пулах с SSD (crossref:zfs[zfs-zpool-trim,TRIM and Initialization]) и `compatibility` для переносимых пулов (crossref:zfs[zfs-zpool-upgrade,Обновление пула дисков]). Устанавливайте свойства при создании пула, передавая
`-o` команде `zpool create`, как показано выше с `ashift`. man:zpoolprops[7] описывает все свойства пула.
+
[[zfs-zpool-attach]]
=== Добавление и удаление устройств
-Существует два способа добавления дисков в пул: подключение диска к существующему vdev с помощью `zpool attach` или добавление vdev в пул с помощью `zpool add`. Некоторые crossref:zfs[zfs-term-vdev,типы vdev] позволяют добавлять диски в vdev после его создания.
+Существует два способа добавления дисков в пул: подключение диска к существующему vdev с помощью `zpool attach` или добавление vdev в пул с помощью `zpool add`. Некоторые crossref:zfs[zfs-term-vdev,типы vdev] позволяют добавлять диски в vdev после его создания. Виртуальные устройства (vdev) RAID-Z принимают новые диски исключительно посредством crossref:zfs[zfs-zpool-raidz-expansion,расширения RAID-Z].
Пул, созданный с одним диском, не обладает избыточностью. Он может обнаружить повреждение данных, но не может его исправить, так как нет другой копии данных. Свойство crossref:zfs[zfs-term-copies,Копии (copies)] может восстановить данные после небольшого сбоя, например, повреждённого сектора, но не обеспечивает такой же уровень защиты, как зеркалирование или RAID-Z. Начиная с пула, состоящего из однодискового vdev, используйте `zpool attach` для добавления нового диска в vdev, создавая зеркало. Также используйте `zpool attach` для добавления новых дисков в зеркальную груп
пу, увеличивая избыточность и производительность чтения. При разметке дисков, используемых для пула, повторите разметку первого диска на втором. Используйте `gpart backup` и `gpart restore` для упрощения этого процесса.
@@ -536,7 +565,6 @@ errors: No known data errors
# zpool status
pool: mypool
state: ONLINE
- scan: none requested
config:
NAME STATE READ WRITE CKSUM
@@ -545,14 +573,9 @@ config:
errors: No known data errors
# zpool attach mypool ada0p3 ada1p3
-Make sure to wait until resilvering finishes before rebooting.
-
-If you boot from pool 'mypool', you may need to update boot code on newly attached disk _ada1p3_.
-
-Assuming you use GPT partitioning and _da0_ is your new boot disk you may use the following command:
-
- gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
+Make sure to wait until resilver is done before rebooting.
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1
+partcode written to ada1p1
bootcode written to ada1
# zpool status
pool: mypool
@@ -560,9 +583,9 @@ bootcode written to ada1
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
- scan: resilver in progress since Fri May 30 08:19:19 2014
- 527M scanned out of 781M at 47.9M/s, 0h0m to go
- 527M resilvered, 67.53% done
+ scan: resilver in progress since Sat Jul 11 11:15:25 2026
+ 738M scanned at 105M/s, 522M issued at 74.6M/s, 781M total
+ 522M resilvered, 66.84% done, 00:00:03 to go
config:
NAME STATE READ WRITE CKSUM
@@ -575,7 +598,7 @@ errors: No known data errors
# zpool status
pool: mypool
state: ONLINE
- scan: resilvered 781M in 0h0m with 0 errors on Fri May 30 08:15:58 2014
+ scan: resilvered 781M in 00:00:16 with 0 errors on Sat Jul 11 11:18:36 2026
config:
NAME STATE READ WRITE CKSUM
@@ -587,7 +610,7 @@ config:
errors: No known data errors
....
-Если добавление дисков к существующему vdev невозможно, как в случае с RAID-Z, альтернативным методом является добавление другого vdev в пул. Добавление vdev повышает производительность за счет распределения записей между vdev. Каждый vdev обеспечивает свою собственную избыточность. Возможно смешивание типов vdev, таких как `mirror` и `RAID-Z`, но это не рекомендуется. Добавление не избыточного vdev к пулу, содержащему mirror или RAID-Z vdev, подвергает риску данные во всем пуле. Распределение записей означает, что отказ не избыточного диска приведет к потере части
каждого блока, записанного в пул.
+Если добавление дисков к существующему vdev невозможно, альтернативным методом является добавление другого vdev в пул. Добавление vdev повышает производительность за счет распределения записей между vdev. Каждый vdev обеспечивает свою собственную избыточность. Возможно смешивание типов vdev, таких как `mirror` и `RAID-Z`, но это не рекомендуется. Добавление не избыточного vdev к пулу, содержащему mirror или RAID-Z vdev, подвергает риску данные во всем пуле. Распределение записей означает, что отказ не избыточного диска приведет к потере части каждого блока, зап
санного в пул.
ZFS распределяет данные по всем vdev. Например, при использовании двух зеркальных vdev это фактически эквивалентно RAID 10, где записи распределяются по двум наборам зеркал. ZFS выделяет пространство таким образом, что каждый vdev достигает 100% заполненности одновременно. Наличие vdev с разным количеством свободного места снижает производительность, так как больше данных записывается на менее заполненный vdev.
@@ -600,7 +623,7 @@ ZFS распределяет данные по всем vdev. Например,
# zpool status
pool: mypool
state: ONLINE
- scan: resilvered 781M in 0h0m with 0 errors on Fri May 30 08:19:35 2014
+ scan: resilvered 781M in 00:00:16 with 0 errors on Sat Jul 11 12:11:56 2026
config:
NAME STATE READ WRITE CKSUM
@@ -612,13 +635,41 @@ config:
errors: No known data errors
# zpool add mypool mirror ada2p3 ada3p3
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada2
+partcode written to ada2p1
bootcode written to ada2
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada3
+partcode written to ada3p1
bootcode written to ada3
# zpool status
pool: mypool
state: ONLINE
- scan: scrub repaired 0 in 0h0m with 0 errors on Fri May 30 08:29:51 2014
+ scan: resilvered 781M in 00:00:16 with 0 errors on Sat Jul 11 09:58:28 2026
+config:
+
+ NAME STATE READ WRITE CKSUM
+ mypool ONLINE 0 0 0
+ mirror-0 ONLINE 0 0 0
+ ada0p3 ONLINE 0 0 0
+ ada1p3 ONLINE 0 0 0
+ mirror-1 ONLINE 0 0 0
+ ada2p3 ONLINE 0 0 0
+ ada3p3 ONLINE 0 0 0
+
+errors: No known data errors
+....
+
+`zpool add` также присоединяет выделенные устройства журнала и кэша к существующему пулу. crossref:zfs[zfs-term-vdev-log,Журнал] vdev хранит журнал намерений ZFS на отдельном хранилище с низкой задержкой, ускоряя синхронные записи, такие как те, что выполняются базами данных и NFS. Зеркалируйте устройства журнала, потому что потеря незеркалированного устройства журнала вместе с сбоем системы стоит пулу последних нескольких секунд синхронных записей; см. раздел crossref:zfs[zfs-advanced-zil-slog,"Синхронные записи, ZIL и SLOG"] для рекомендаций по размеру и настройке. crossref:zfs[zfs
-term-vdev-cache,Кэш] vdev расширяет crossref:zfs[zfs-term-arc,ARC] вторым уровнем кэша чтения на быстром хранилище. Устройства кэша не требуют избыточности, так как ZFS вместо этого читает любой блок, который не удалось прочитать из кэша, с исходных дисков пула. Содержимое кэша, crossref:zfs[zfs-term-l2arc,L2ARC], по умолчанию сохраняется после перезагрузки.
+
+Добавьте зеркальный журнальный vdev и NVMe-устройство кэша к существующему пулу:
+
+[source, shell]
+....
+# zpool add mypool log mirror ada4p2 ada5p2
+# zpool add mypool cache nda0p2
+# zpool status mypool
+ pool: mypool
+ state: ONLINE
+ scan: resilvered 781M in 00:00:16 with 0 errors on Sat Jul 11 09:58:28 2026
config:
NAME STATE READ WRITE CKSUM
@@ -629,11 +680,17 @@ config:
mirror-1 ONLINE 0 0 0
ada2p3 ONLINE 0 0 0
ada3p3 ONLINE 0 0 0
+ logs
+ mirror-2 ONLINE 0 0 0
+ ada4p2 ONLINE 0 0 0
+ ada5p2 ONLINE 0 0 0
+ cache
+ nda0p2 ONLINE 0 0 0
errors: No known data errors
....
-Удаление устройств vdev из пула невозможно, а удаление дисков из зеркала возможно только при сохранении достаточной избыточности. Если в группе зеркала остаётся единственный диск, эта группа перестает быть зеркалом и становится страйпом, что подвергает весь пул риску в случае выхода из строя оставшегося диска.
+Команда `zpool detach` удаляет отдельные диски из зеркального виртуального устройства (vdev) при условии сохранения достаточной избыточности. Если в группе зеркала остаётся единственный диск, эта группа перестает быть зеркалом и становится страйпом, что подвергает весь пул риску в случае выхода из строя оставшегося диска.
Удалить диск из трёхдисковой зеркальной группы:
@@ -642,7 +699,7 @@ errors: No known data errors
# zpool status
pool: mypool
state: ONLINE
- scan: scrub repaired 0 in 0h0m with 0 errors on Fri May 30 08:29:51 2014
+ scan: scrub repaired 0B in 00:01:11 with 0 errors on Sat Jul 11 03:14:02 2026
config:
NAME STATE READ WRITE CKSUM
@@ -657,7 +714,31 @@ errors: No known data errors
# zpool status
pool: mypool
state: ONLINE
- scan: scrub repaired 0 in 0h0m with 0 errors on Fri May 30 08:29:51 2014
+ scan: scrub repaired 0B in 00:01:11 with 0 errors on Sat Jul 11 03:14:02 2026
+config:
+
+ NAME STATE READ WRITE CKSUM
+ mypool ONLINE 0 0 0
+ mirror-0 ONLINE 0 0 0
+ ada0p3 ONLINE 0 0 0
+ ada1p3 ONLINE 0 0 0
+
+errors: No known data errors
+....
+
+`zpool remove` удаляет целые vdev верхнего уровня из пула. ZFS эвакуирует vdev, копируя все выделенные ему данные на другие vdev в пуле, а затем отсоединяет диски. Удаление работает для горячих резервов, кэша, журналов, специальных и дедупликационных устройств, а также для data vdev, которые являются одиночными дисками или зеркалами. Data vdev не могут быть удалены из пулов, содержащих vdev RAID-Z верхнего уровня, и все vdev верхнего уровня в пуле должны использовать одинаковый `ashift`. Эвакуация выполняется в фоновом режиме, и пул остается онлайн на протяжении всего п
роцесса; следите за прогрессом с помощью `zpool status`. После завершения удаления ZFS сохраняет таблицу в памяти, сопоставляющую блоки удаленного vdev с их новыми местоположениями. Таблица небольшая, но постоянная; `zpool remove -n` оценивает использование памяти перед началом удаления.
+
+Удалите один из двух зеркальных vdev из пула:
+
+[source, shell]
+....
+# zpool remove mypool mirror-1
+# zpool status mypool
+ pool: mypool
+ state: ONLINE
+ scan: scrub repaired 0B in 00:01:11 with 0 errors on Sat Jul 11 03:14:02 2026
+remove: Evacuation of mirror in progress since Sat Jul 11 10:15:31 2026
+ 1.71G copied out of 2.32G at 111M/s, 73.71% done, 0h0m to go
config:
NAME STATE READ WRITE CKSUM
@@ -665,10 +746,139 @@ config:
mirror-0 ONLINE 0 0 0
ada0p3 ONLINE 0 0 0
ada1p3 ONLINE 0 0 0
+ mirror-1 ONLINE 0 0 0
+ ada2p3 ONLINE 0 0 0
+ ada3p3 ONLINE 0 0 0
+
+errors: No known data errors
+# zpool status mypool
+ pool: mypool
+ state: ONLINE
+ scan: scrub repaired 0B in 00:01:11 with 0 errors on Sat Jul 11 03:14:02 2026
+remove: Removal of vdev 1 copied 2.32G in 0h0m, completed on Sat Jul 11 10:15:53 2026
+ 10.9K memory used for removed device mappings
+config:
+
+ NAME STATE READ WRITE CKSUM
+ mypool ONLINE 0 0 0
+ mirror-0 ONLINE 0 0 0
+ ada0p3 ONLINE 0 0 0
+ ada1p3 ONLINE 0 0 0
+ indirect-1 ONLINE 0 0 0
+
+errors: No known data errors
+....
+
+Запись `indirect-1` является заполнителем для переотображённых блоков удалённого vdev и не содержит дисков. Отмените выполняющееся удаление с помощью `zpool remove -s`.
+
+[[zfs-zpool-raidz-expansion]]
+=== Расширение RAID-Z
+
+Расширение RAID-Z увеличивает существующий vdev RAID-Z на один диск за раз, не изменяя его уровень чётности.
+
+[NOTE]
+====
+Расширение RAID-Z требует OpenZFS 2.3 или более поздней версии, впервые доступной в FreeBSD 15.0. Пулы, созданные в более ранних версиях, требуют включения функции `raidz_expansion` с помощью `zpool upgrade` перед расширением.
+====
+
+Чтобы расширить vdev RAID-Z, выполните `zpool attach`, указав имя vdev RAID-Z, как показано в `zpool status`, и новый диск:
+
+[source, shell]
+....
+# zpool attach mypool raidz2-0 ada6p3
+....
+
+Расширение перераспределяет существующие данные по увеличенному набору дисков в фоновом режиме, при этом пул остается online и используется. Добавьте `-w`, чтобы заставить `zpool attach` ожидать завершения расширения. `zpool status` сообщает о ходе выполнения в строке `expand:`:
+
+[source, shell]
+....
+# zpool status mypool
+ pool: mypool
+ state: ONLINE
+ scan: scrub repaired 0B in 06:14:36 with 0 errors on Sat Jul 11 04:31:19 2026
+expand: expansion of raidz2-0 in progress since Sat Jul 11 09:42:12 2026
+ 1.83T / 5.36T copied at 186M/s, 34.14% done, 05:31:43 to go
+config:
+
+ NAME STATE READ WRITE CKSUM
+ mypool ONLINE 0 0 0
+ raidz2-0 ONLINE 0 0 0
+ ada0p3 ONLINE 0 0 0
+ ada1p3 ONLINE 0 0 0
+ ada2p3 ONLINE 0 0 0
+ ada3p3 ONLINE 0 0 0
+ ada4p3 ONLINE 0 0 0
+ ada5p3 ONLINE 0 0 0
+ ada6p3 ONLINE 0 0 0
errors: No known data errors
....
+Когда расширение завершается, ёмкость нового диска становится доступной:
+
+[source, shell]
+....
+# zpool status mypool | grep expand:
+expand: expanded raidz2-0 copied 5.36T in 08:23:35, on Sat Jul 11 18:05:47 2026
+....
+
+Блоки, записанные до расширения, сохраняют прежнее соотношение данных и чётности и продолжают занимать место соответствующим образом. Таким образом, полный прирост ёмкости от нового диска применяется к данным, записанным после расширения, тогда как старые данные выигрывают только при перезаписи, например, с помощью crossref:zfs[zfs-zfs-rewrite,`zfs rewrite`]. Повторите процедуру для увеличения vdev на несколько дисков, подключая их по одному.
+
+[[zfs-zpool-draid]]
+=== Пулы dRAID
+
+dRAID — это вариант RAID-Z, который распределяет резервную емкость горячего резерва по всем дискам в vdev. crossref:zfs[zfs-term-vdev-draid,dRAID] vdev состоит из внутренних групп RAID-Z плюс опциональных _распределенных резервов_, равномерно распределенных по каждому диску. Когда диск выходит из строя, ZFS выполняет перестроение в распределенный резерв, читая и записывая на все оставшиеся диски параллельно, завершая процесс за долю времени, которое требуется для ресилверинга на один резервный диск. Замена вышедшего из строя диска затем перестраивает его из распр
еделенного резерва, восстанавливая полную защиту. dRAID ориентирован на пулы с множеством дисков, где время перестроения RAID-Z становится опасно большим.
+
+Тип vdev описывает полную компоновку, согласно man:zpoolconcepts[7]:
+
+[.programlisting]
+....
+draid[parity][:datad][:childrenc][:sparess]
+....
+
+_parity_ — это уровень чётности внутренних групп, от 1 до 3, по умолчанию 1. _data_ — это количество устройств данных на группу резервирования, по умолчанию 8. _children_ — это общее количество дисков, служащее перекрестной проверкой при перечислении многих устройств. _spares_ — это количество распределенных горячих резервов, по умолчанию 0.
+
+Создайте пул из 24-дискового vdev dRAID с двойной четностью, 8 дисками данных на группу избыточности и 2 распределенными резервными дисками:
+
+[source, shell]
+....
+# zpool create mypool draid2:8d:24c:2s ada0 ada1 ada2 ada3 ada4 ada5 ada6 ada7 ada8 ada9 ada10 ada11 ada12 ada13 ada14 ada15 ada16 ada17 ada18 ada19 ada20 ada21 ada22 ada23
+....
+
+Распределенные запасные диски отображаются в разделе `spares` в `zpool status`, с именами вроде `draid2-0-0` для первого запасного диска первого vdev.
+
+dRAID обменивает эффективность использования пространства на скорость перестроения. В отличие от RAID-Z, dRAID использует фиксированную ширину полосы, дополняя мелкие записи нулями. При стандартных 8 дисках данных и секторах 4 КБ минимальное выделение составляет 32 КБ, что снижает полезную ёмкость и эффективность сжатия для наборов данных, где преобладают мелкие блоки. Ёмкость распределённых запасных дисков также резервируется заранее, независимо от того, произойдёт ли сбой диска когда-либо. Объединение пула dRAID со crossref:zfs[zfs-zpool-special,специал
ным vdev] удерживает метаданные и мелкие блоки вне широких полос и возвращает большую часть потерянной эффективности. Для пулов с несколькими дисками RAID-Z остаётся лучшим выбором.
+
+[[zfs-zpool-special]]
+=== Специальные классы выделения
+
+Специальные классы выделения привязывают vdev-устройства к конкретным типам данных пула. Vdev crossref:zfs[zfs-term-vdev-special,special] хранит метаданные пула, такие как непрямые блоки и dnode, а также, опционально, блоки данных небольших файлов. Vdev `dedup` хранит таблицы crossref:zfs[zfs-term-deduplication,дедупликации]. Размещение этих метаданных на быстрых устройствах, таких как зеркала NVMe, ускоряет операции, требовательные к метаданным, например обход каталогов, `zfs list` и поиск при дедупликации в пулах, состоящих в остальном из более медленных дисков.
+
+Добавьте зеркальный специальный vdev к существующему пулу:
+
+[source, shell]
+....
+# zpool add mypool special mirror nda0 nda1
+....
+
+Новые выделения метаданных затем направляются в специальный vdev; существующие метаданные остаются на месте, пока не будут перезаписаны.
+
+Установка свойства `special_small_blocks` набора данных позволяет специальному vdev хранить блоки данных размером до указанного значения:
+
+[source, shell]
+....
+# zfs set special_small_blocks=16K mypool/projects
+....
+
+Допустимые значения — ноль, который отключает хранение блоков данных в специальном классе, или степень двойки от 512 байт до 1 МБ в FreeBSD 14.x; FreeBSD 15.0 принимает значения вплоть до максимального размера блока в 16 МБ. Установка этого свойства на `recordsize` набора данных отправляет все блоки данных этого набора данных в специальный класс. Когда специальный vdev заполняется, новые выделения перетекают обратно в обычный класс вместо сбоя.
+
+[WARNING]
+====
+Специальный vdev — это не кэш. Он хранит единственную копию метаданных пула, выделенных ему, и его потеря уничтожает пул. Согласуйте избыточность special и dedup vdev с избыточностью data vdev, например, используя зеркало.
+====
+
+Удаление специального или дедупликационного vdev с помощью `zpool remove` возможно с учётом ограничений, описанных в crossref:zfs[zfs-zpool-attach,Добавление и удаление устройств]. На практике требование соответствия `ashift` часто препятствует удалению, когда специальный vdev использует устройства с иным размером сектора, чем data vdev.
+
[[zfs-zpool-status]]
=== Проверка состояния пула
@@ -679,7 +889,7 @@ errors: No known data errors
# zpool status
pool: mypool
state: ONLINE
- scan: scrub repaired 0 in 2h25m with 0 errors on Sat Sep 14 04:25:50 2013
+ scan: scrub repaired 0B in 02:25:36 with 0 errors on Sat Jul 11 06:51:26 2026
config:
NAME STATE READ WRITE CKSUM
@@ -695,6 +905,17 @@ config:
errors: No known data errors
....
+Опции подстраивают вывод под конкретную задачу:
+
+* `-v` выводит подробную информацию об ошибках данных, печатая полный список ошибок, обнаруженных с момента последней полной очистки пула, включая имена затронутых файлов.
+* `-x` отображает состояние пулов с ошибками или пулов, которые в противном случае недоступны, скрывая исправные пулы.
+* `-s` отображает количество медленных операций ввода-вывода на каждом конечном vdev, то есть операций, которые не завершились в течение 30 секунд.
+* `-e` отображает только неисправные vdev, сокращая вывод для пулов с большим количеством устройств; этот флаг требует FreeBSD 14.1 или более поздней версии.
+* `-p` отображает числа как точные, разбираемые значения вместо округлённых, удобочитаемых.
+* `-t` отображает статус crossref:zfs[zfs-zpool-trim,TRIM] для каждого vdev.
+
+См. man:zpool-status[8] для полного списка опций.
+
[[zfs-zpool-clear]]
=== Сброс состояния ошибки
@@ -712,7 +933,6 @@ errors: No known data errors
# zpool status
pool: mypool
state: ONLINE
- scan: none requested
config:
NAME STATE READ WRITE CKSUM
@@ -725,11 +945,11 @@ errors: No known data errors
# zpool replace mypool ada1p3 ada2p3
Make sure to wait until resilvering finishes before rebooting.
-When booting from the pool 'zroot', update the boot code on the newly attached disk 'ada2p3'.
+When booting from the pool 'mypool', update the boot code on the newly attached disk 'ada2p3'.
-Assuming GPT partitioning is used and [.filename]#da0# is the new boot disk, use the following command:
+Assuming GPT partitioning is used and ada0 is the new boot disk, use the following command:
- gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
+ gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada2
# zpool status
pool: mypool
@@ -737,9 +957,9 @@ Assuming GPT partitioning is used and [.filename]#da0# is the new boot disk, use
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
- scan: resilver in progress since Mon Jun 2 14:21:35 2014
- 604M scanned out of 781M at 46.5M/s, 0h0m to go
- 604M resilvered, 77.39% done
+ scan: resilver in progress since Sat Jul 11 14:21:35 2026
+ 781M / 781M scanned, 604M / 781M issued at 101M/s
+ 604M resilvered, 77.39% done, 00:00:01 to go
config:
NAME STATE READ WRITE CKSUM
@@ -754,7 +974,7 @@ errors: No known data errors
# zpool status
pool: mypool
state: ONLINE
- scan: resilvered 781M in 0h0m with 0 errors on Mon Jun 2 14:21:52 2014
+ scan: resilvered 781M in 00:00:17 with 0 errors on Sat Jul 11 14:21:52 2026
config:
NAME STATE READ WRITE CKSUM
@@ -766,6 +986,8 @@ config:
errors: No known data errors
....
+На зеркальных vdev-устройствах добавление `-s` к `zpool replace` или `zpool attach` выполняет _последовательное восстановление_ вместо восстанавливающего ресильверинга. Последовательное восстановление копирует данные в порядке расположения на диске без проверки контрольных сумм каждого блока, восстанавливая избыточность гораздо быстрее. Поскольку копирование пропускает проверку контрольных сумм, ZFS автоматически запускает crossref:zfs[zfs-zpool-scrub,scrub] пула после завершения последовательного восстановления. Последовательное восстановление работает н
зеркальных и crossref:zfs[zfs-zpool-draid,dRAID] vdev-устройствах, но не на RAID-Z. Перезапустите текущий resilver с начала с помощью `zpool resilver _mypool_`.
+
[[zfs-zpool-resilver]]
=== Обработка неисправных устройств
@@ -785,8 +1007,7 @@ errors: No known data errors
status: One or more devices could not be opened. Sufficient replicas exist for
the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
- see: http://illumos.org/msg/ZFS-8000-2Q
- scan: none requested
+ see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-2Q
config:
NAME STATE READ WRITE CKSUM
@@ -803,9 +1024,9 @@ errors: No known data errors
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
- scan: resilver in progress since Mon Jun 2 14:52:21 2014
- 641M scanned out of 781M at 49.3M/s, 0h0m to go
- 640M resilvered, 82.04% done
+ scan: resilver in progress since Sat Jul 11 14:52:21 2026
+ 781M / 781M scanned, 641M / 781M issued at 128M/s
+ 640M resilvered, 82.04% done, 00:00:01 to go
config:
NAME STATE READ WRITE CKSUM
@@ -820,7 +1041,7 @@ errors: No known data errors
# zpool status
pool: mypool
state: ONLINE
- scan: resilvered 781M in 0h0m with 0 errors on Mon Jun 2 14:52:38 2014
+ scan: resilvered 781M in 00:00:17 with 0 errors on Sat Jul 11 14:52:38 2026
config:
NAME STATE READ WRITE CKSUM
@@ -832,10 +1053,95 @@ config:
errors: No known data errors
....
+[[zfs-zpool-spares]]
+=== Горячие резервные диски и автоматическая замена с помощью zfsd
+
+Пулы с избыточными vdev могут регистрировать crossref:zfs[zfs-term-vdev-spare,горячие резервные] диски, которые находятся в режиме ожидания для замены вышедшего из строя устройства. Резервный диск должен быть не меньше устройства, которое он заменяет. Укажите резервные диски при создании пула, перечислив их после ключевого слова `spare`, как в `zpool create _mypool_ mirror _ada0p3_ _ada1p3_ spare _ada3p3_`, или добавьте их в существующий пул с помощью `zpool add`:
+
+[source, shell]
+....
+# zpool add mypool spare ada3p3
+# zpool status
+ pool: mypool
+ state: ONLINE
+config:
+
+ NAME STATE READ WRITE CKSUM
+ mypool ONLINE 0 0 0
+ mirror-0 ONLINE 0 0 0
+ ada0p3 ONLINE 0 0 0
+ ada1p3 ONLINE 0 0 0
+ spares
+ ada3p3 AVAIL
+
+errors: No known data errors
+....
+
+Запасной диск остается неиспользуемым, отображаясь как `AVAIL`, пока устройство не выйдет из строя. Активируйте запасной диск вручную с помощью `zpool replace`, указав отказавшее устройство и запасной диск:
+
+[source, shell]
+....
+# zpool replace mypool ada1p3 ada3p3
+# zpool status
*** 19130 LINES SKIPPED ***