автозамена
задокументирована следующим образом:
autoreplace = on | выкл. Управляет автоматической заменой устройства. Если установлено значение «off», замену устройства должен инициировать администратор с помощью команды «zpool replace». Если установлено значение «on», любое новое устройство, обнаруженное в том же физическом месте, что и устройство, которое ранее принадлежало пулу, автоматически форматируется и заменяется. Поведение по умолчанию - «выключено». На это свойство также можно ссылаться по сокращенному имени столбца, «заменить».
Ниже приводится текущий статус этого параметра в интересующем меня пуле:
root@[...]:/# zpool get autoreplace zfs-pool
NAME PROPERTY VALUE SOURCE
zfs-pool autoreplace on local
Похоже, что он включен.
Один диск был удален из-за ошибок, связанных с SMART, и ZFS правильно опознала это устройство как недоступное. Зеркало, в котором использовался диск, было изменено на DEGRADED
и т. Д. Поскольку у меня было несколько запасных дисков, я использовал zpool replace zfs-pool FAULTY_DISK SPARE_DISK
, чтобы временно установить один запасной диск. Это необходимо, потому что с UB 16.04, который я использую, автоматическое использование запасных частей не работает должным образом или вообще не работает .
После того, как зеркало снова синхронизировалось и новый диск был физически подключен, Я перезапустил систему, потому что в противном случае использованные контроллеры препятствуют доступу к новому диску. Во время запуска контроллеры распознают новые диски, спрашивают, должны ли они быть включены или нет, и в первом случае новый диск будет доступен для ОС впоследствии. Диск был инициализирован, разделы созданы и т. Д. И был полностью доступен, как и ранее неисправный, в том же физическом слоте. Важно то, что ОС использовала то же имя для диска, что и раньше: / dev / sdf
и /dev/disk/by-path/pci-0000:15:00.0- scsi-0: 1: 0: 1-part *
Тем не менее, ZFS не использовала новый диск автоматически для замены старого. Несмотря на то, что в выводе состояния пула упоминается серийный номер старого диска как отсутствующего и путь, который он имел в прошлом, что было таким же, как у нового диска, уже полученного тем временем. Мне нужно было произвести замену нового диска вручную с помощью zpool replace zfs-pool pci-0000: 15: 00.0-scsi-0: 1: 0: 1-part3
. Это заставило ZFS поместить новый диск в правильное зеркало из-за того же пути, и после перенастройки резервный также был автоматически удален.
NAME STATE READ WRITE CKSUM
zfs-pool DEGRADED 0 0 0
mirror-0 ONLINE 0 0 0
pci-0000:05:00.0-scsi-0:1:0:0-part3 ONLINE 0 0 0
pci-0000:15:00.0-scsi-0:1:0:0-part3 ONLINE 0 0 0
mirror-1 DEGRADED 0 0 0
pci-0000:05:00.0-scsi-0:1:0:1-part3 ONLINE 0 0 0
spare-1 DEGRADED 0 0 0
replacing-0 DEGRADED 0 0 0
11972718311040401135 UNAVAIL 0 0 0 was /dev/disk/by-path/pci-0000:15:00.0-scsi-0:1:0:1-part3/old
pci-0000:15:00.0-scsi-0:1:0:1-part3 ONLINE 0 0 0 (resilvering)
pci-0000:15:00.0-scsi-0:1:0:3-part3 ONLINE 0 0 0
mirror-2 ONLINE 0 0 0
pci-0000:05:00.0-scsi-0:1:0:2-part3 ONLINE 0 0 0
pci-0000:15:00.0-scsi-0:1:0:2-part3 ONLINE 0 0 0
spares
pci-0000:05:00.0-scsi-0:1:0:3-part3 AVAIL
pci-0000:15:00.0-scsi-0:1:0:3-part3 INUSE currently in use
Хотя использованная команда является документом, работающим таким образом, мне интересно почему это было необходимо при включенной автозамене
? Разве это не должно было быть сделано сразу после того, как новый диск был успешно разбит на разделы?Или свойство autoreplace
необходимо для работы выданной команды? Не указано в документации, чтобы полагаться на этот параметр:
zpool replace [-f] pool old_device [new_device] [...] new_device требуется, если пул не является избыточным. Если new_device не указан, по умолчанию используется old_device. Эта форма замены полезна после того, как существующий диск вышел из строя и был физически заменен. В этом случае новый диск может иметь тот же путь / dev / dsk, что и старое устройство, даже если на самом деле это другой диск. ZFS распознает это.
ZFS зависит от ZED для обработки автоматической замены неисправных/отключенных дисков, поэтому вы должны быть уверены, что ZED работает . Однако последние выпуски ZED 0.8.x содержат ошибку, которая не позволяет ZFS автоматически разбивать замененный диск на разделы. Обратите внимание, что этой ошибки нет в выпусках 0.7.x ZFS/ZED.
РЕДАКТИРОВАТЬ: некоторые ответы основаны на ваших комментариях ниже:
выполняет ли ZED автоматическую замену каким-либо образом «внутри» или необходимы сценарии, например, для использования «горячих» резервов и других действий? ZED выполняет автозамену внутри своего FMA (агент управления неисправностями ). Другими словами, в каталоге агента не требуется никакого сценария.Эти сценарии обычно запускаются после FMA и должны запускать последующие действия, такие как запуск очистки, запись в системный журнал и т. д.
где я могу найти подробности об автоматическом разбиении на разделы, применяемом в случае автозамены? Я перенаправляю в ZFS отдельные разделы, а не целые диски. автоматическое разбиение на разделы работает только при передаче всего диска в ZFS (обратите внимание, что это сама ZFS, а не ZED, для разбиения затронутых дисков). При передаче существующих разделов в ZFS (т.е. с использованием sda1
в качестве vdev) таблица разделов вообще не затрагивается.