Предположим, что выдался очень плохой день, потому что в логах на Mac’е появилось сообщение о выходе из строя одного из дисков RAID:

22.11.10 13:13:13	kernel	AppleRAID::recover() member 46351C9C-8F55-474F-8FA9-0E72FEB27F10 from set "Flash RAID Set" (23E9F3B6-A492-4318-A058-7437C63BFF1D) has been marked offline.
22.11.10 13:13:13	kernel	AppleRAID::restartSet - restarting set "Flash RAID Set" (23E9F3B6-A492-4318-A058-7437C63BFF1D).

Грустно, но ведь бекапы у вас, конечно же, есть. Если нет, а RAID был 0-го уровня (страйпинг, когда данные разбиваются на части и пишутся без резервирования на разные диски), то срочно нужно брать внешний диск и списывать всё, что удастся списать. Есть шансы, что большая часть данных (в худшем случае все) будет потеряна.

Рекомендую перечитать мои статьи “О пользе offsite-бекапов” и “Клонирование диска как часть стратегии резервного копирования (SuperDuper!)“.

Ещё соображение. Никогда не ставьте RAID0, если не осознаёте, что делаете. Это вполне допустимо для очень быстрого промежуточного хранилища, но сохранять важные данные категорически недопустимо. Лучше RAID5 – можно пережить выход из строя одного диска. Но скорость записи не очень. Если нужна большая скорость и большая надёжность, то идеален RAID10 (зеркалирование + страйпинг), но нужно в два раза больше дисков. А если дисков мало, и нужна надёжность, то – RAID1 (зеркалирование).

Вопрос в том, как определить, какой именно диск вышел из строя для его замены (вопрос восстановления RAID после сбоя я не рассматриваю, программные RAID я не восстанваливал, но хочу провести такие эксперименты).

В логе говорится, что “member 46351C9C-8F55-474F-8FA9-0E72FEB27F10 … has been marked offline”. Этот идентификатор является UUID диска.

Я хочу показать где можно найти данные по диску. Не факт, что при вышедшем из строя диске хоть что-то удастся посмотреть, но попытаться стоит. А лучше сохранить нужную информацию заранее, сразу же после создания RAID.

Для теста я создал RAID1 из двух USB-флеш.

Начинаем поиск с mount и diskutil. В mount увидим, какое устройство смонтировано как RAID Set.

$ mount
/dev/disk4 on /Volumes/Flash RAID Set (hfs, local, nodev, nosuid, journaled, noowners)

А в diskutil выясним, какие разделы задействованы:

$ diskutil list
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *2.1 GB     disk2
   1:                 Apple_RAID                         2.0 GB     disk2s1
   2:                 Apple_Boot Boot OSX                134.2 MB   disk2s2
/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme NO NAME                *2.1 GB     disk3
   1:                 Apple_RAID                         1.9 GB     disk3s1
   2:                 Apple_Boot Boot OSX                134.2 MB   disk3s2
/dev/disk4
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Flash RAID Set         *1.9 GB     disk4

Смотрим информацию по RAID Set (disk4):

$ diskutil info /dev/disk4
   Device Identifier:        disk4
   Device Node:              /dev/disk4
   Part Of Whole:            disk4
   Device / Media Name:      Flash RAID Set

   Mount Point:              /Volumes/Flash RAID Set
   Escaped with Unicode:     /Volumes/Flash%FF%FE%20%00RAID%FF%FE%20%00Set

   File System:              Journaled HFS+
   Type:                     hfs
   Name:                     Mac OS Extended (Journaled)

   Partition Type:           Apple_HFS
   Media Type:               Generic
   Volume UUID:              ECCE6D2D-F7A5-353D-81E7-5A896449A1E8

   This disk is a RAID Set.  RAID Set Information:
      Set Name:          Flash RAID Set
      RAID Set UUID:     23E9F3B6-A492-4318-A058-7437C63BFF1D
      Level Type:        Mirror
      Status:            Online
      Chunk Count:       58878

Поле “RAID Set UUID” – это тот UUID, который виден в сообщении “restarting set ‘Flash RAID Set’ (23E9F3B6-A492-4318-A058-7437C63BFF1D)”.

Смотрим информацию по разделам, из которых состоит RAID Set (в нашем случае – RAID Slice’ы, так как используется RAID1):

$ diskutil info /dev/disk2s1
   Device Identifier:        disk2s1
   Device Node:              /dev/disk2s1
   Part Of Whole:            disk2
   Device / Media Name:      Raid Partition 3

   Partition Type:           Apple_RAID

   This disk is a RAID Slice.  RAID Slice Information:
      Parent Set Name:          Flash RAID Set
      Parent RAID Set UUID:     23E9F3B6-A492-4318-A058-7437C63BFF1D
      RAID Slice UUID:          46351C9C-8F55-474F-8FA9-0E72FEB27F10
      Level Type:               Mirror
      Status:                   Online
      Slice:                    1/2
      Sequence:                 1
      Chunk Count:              58878

$ diskutil info /dev/disk3s1
   Device Identifier:        disk3s1
   Device Node:              /dev/disk3s1
   Part Of Whole:            disk3
   Device / Media Name:      Raid Partition 4

   Partition Type:           Apple_RAID

   This disk is a RAID Slice.  RAID Slice Information:
      Parent Set Name:          Flash RAID Set
      Parent RAID Set UUID:     23E9F3B6-A492-4318-A058-7437C63BFF1D
      RAID Slice UUID:          C6283D59-7DC9-420D-8139-695204CBEA51
      Level Type:               Mirror
      Status:                   Online
      Slice:                    2/2
      Sequence:                 1
      Chunk Count:              58878

Здесь можно чётко отнести RAID Slice к конкретному RAID Set (на случай, если Set’ов много) и получить UUID Slice’а. “Member 46351C9C-8F55-474F-8FA9-0E72FEB27F10″ относится к /dev/disk2, именно его я отключил в горячем режиме.

Диски определены, можно их менять. Как идентифицировать конкретный физический диск – ещё отдельный вопрос. Один из вариантов – открыть Profiler и там посмотреть модель и/или серийный номер, а дальше идентифицировать физически.