замена диска в корневом пуле zfs nexenta

Применимость: Nexenta

Слова для поиска:


Задача:

Вышел из строя диск в коневом пуле

root@storage2:~# zpool status
  pool: syspool
 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://www.sun.com/msg/ZFS-8000-4J
 scan: none requested
config:

        NAME          STATE     READ WRITE CKSUM
        syspool       DEGRADED     0     0     0
          mirror-0    DEGRADED     0     0     0
            c1t0d0s0  ONLINE       0     0     0
            c1t1d0s0  UNAVAIL      0   247     0  corrupted data

errors: No known data errors
Как его заменить чтобы была возможность загрузки системы с любого диска?

Решение:

Если отказ диска приводит к невозможности загрузки системы, загрузку перед заменой диска корневого пула придется выполнять с других носителей, например с компакт-диска или из сети.

  • Подключите требуемые кабели к диску, подготовленному для замены.
  • Убедитесь, что новый диск имеет метку SMI и подраздел 0.

См. информацию об изменении метки диска, предназначенного для корневого пула на следующей странице: http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide

  • Подключите новый диск к корневому пулу.
  • Убедитесь, что система его видит

root@storage2:~# prtvtoc /dev/rdsk/c1t?d?s0 | grep partition | awk '{print $2}' 
/dev/rdsk/c1t0d0s0
/dev/rdsk/c1t1d0s0
/dev/rdsk/c1t2d0s0

  • Неисправный диск нужно отправить его в офлайн, чтобы zfs не пыталась с него что-либо читать или записывать на него:
root@storage2:~# zpool offline syspool c1t1d0s0
  • Проверяем состояние пула:

root@storage2:~# zpool status
  pool: syspool
 state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-9P
 scan: none requested
config:

        NAME          STATE     READ WRITE CKSUM
        syspool       DEGRADED     0     0     0
          mirror-0    DEGRADED     0     0     0
            c1t0d0s0  ONLINE       0     0     0
            c1t1d0s0  OFFLINE      0   247     0

errors: No known data errors

fdisk /dev/rdsk/c1t2d0p0
             Total disk size is 2088 cylinders
             Cylinder size is 16065 (512 byte) blocks

                                               Cylinders
      Partition   Status    Type          Start   End   Length    %
      =========   ======    ============  =====   ===   ======   ===
          1       Active    Solaris2          1  2087    2087    100

  • Добавляем в пул новый исправный диск c1t2d0s0
zpool attach syspool c1t0d0s0 c1t2d0s0
  • Проверяем состояние пула

root@storage2:~# zpool status
  pool: syspool
 state: ONLINE
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 Wed Aug  1 08:04:31 2012
    504M scanned out of 1.98G at 8.39M/s, 0h3m to go
    503M resilvered, 24.85% done
config:

        NAME          STATE     READ WRITE CKSUM
        syspool       ONLINE       0     0     0
          mirror-0    ONLINE       0     0     0
            c1t0d0s0  ONLINE       0     0     0
            c1t2d0s0  ONLINE       0     0     0  (resilvering)

errors: No known data errors

  • Теперь можно установить на диск загрузчик

installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t2d0s0
stage1 written to partition 0 sector 0 (abs 16065)
stage2 written to partition 0, 274 sectors starting at 50 (abs 16115)

  • Неисправный диск теперь можно удалить и проверить перезагрузку
zpool detach syspool c1t1d0s0

Настройка автоматической загрузки системы с нового диска выполняется либо командой eeprom, либо командой setenv из загрузочного ППЗУ SPARC, либо перенастройкой BIOS SETUP для аррхитектуры x86*.

Смотрите также: