Замена диска в RAIDZ 2-0

raidz

Данный способ проверен на raidz2-0 и Debian 8

# zpool status
  pool: namepool
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
    invalid.  Sufficient replicas exist for the pool to continue
    functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
  scan: resilvered 7.38M in 0h1m with 0 errors on Mon Nov 28 15:06:05 2016
config:

    NAME                                            STATE     READ WRITE CKSUM
    namepool                                          DEGRADED     0     0     2
      raidz2-0                                      DEGRADED     0     0     9
        ata-ST1000VX000-1ES162_Z4Y9D7BQ             ONLINE       0     0     0
        ata-Hitachi_HDS721010CLA332_JP2911HQ0PW7AA  ONLINE       0     0     0
        11581403913854601336                        UNAVAIL      0     0     0  was /dev/disk/by-id/ata-ST31000528AS_9VPADQQ4-part1
        ata-ST1000DM003-1SB10C_Z9A17C6V             ONLINE       0     0     0
        ata-ST1000VX000-1ES162_Z4Y9L7WX             ONLINE       0     0     0
        ata-ST1000DM003-1SB10C_Z9A175DK             ONLINE       0     0     0
        ata-ST31500341AS_9VS39D0R                   ONLINE       0     0     0
        ata-ST1000VX000-1ES162_Z4YCJ6B7             ONLINE       0     0     0
        ata-ST1000VX000-1ES162_Z4YDJSV1             ONLINE       0     0     1
        ata-Hitachi_HDS721010CLA332_JP9911HD3TBPYH  ONLINE       0     0     0
        ata-Hitachi_HDS721010CLA332_JP9911HD3SX1NH  ONLINE       0     0     0
        ata-Hitachi_HDS721010CLA332_JP2911HQ2M6UYH  ONLINE       0     0     0

errors: No known data errors

Если диск вдруг перешёл в состояние UNAVAIL, то необходимо поднять историю логов SMART. Если история чиста, то можно попробовать вернуть диск в массив с помощью команды:

zpool online <имя массива> <имя диска>

Если диск не переходит в состояние online, то ему необходима замена.

Вынимаем старый и вставляем новый. В /dev/disk/by-id ищем серийный номер того диска, который вставили.

Далее выполняем команду замены:

zpool replace <имя массива> <имя старого диска> <путь к новому диску вместе с именем>

Этого должно хватить для замены. Но могут быть некоторые ошибки. О них ниже подробнее.

Ошибка #1

invalid vdev specification
use '-f' to override the following errors:
/dev/disk/by-id/ata-ST1000VX000-1ES162_Z4YECKT8 does not contain an EFI label but it may contain partition
information in the MBR.

Решение видно из самой ошибки. Просто добавить параметр -f.

Ошибка #2

cannot replace 11581403913854601336 with /dev/disk/by-id/ata-ST1000VX000-1ES162_Z4YECKT8: new device has a different optimal sector size; use the option '-o ashift=N' to override the optimal size

Решение видно тоже из самой ошибки - добавить параметр -o с опцией ashift=N. Но для того чтобы добавить этот параметр, необходимо узнать значение ashift, которое используется в текущем массиве. Для этого можно воспользоваться командой:

zdb | grep ashift
Комментарии