Как я могу физически идентифицировать один диск в массиве RAID?

16

У меня есть отсек для внешнего диска с 4 дисками eSATA. Моя система имеет 4-портовую карту eSATA, а также пару внутренних аппаратных дисков RAID1. Внешние диски находятся в программных парах RAID1 как /dev/md0и /dev/md1. Оба были настроены как физические тома LVM для создания моей storagevgгруппы томов LVM. Недавно один диск отключился (я подозреваю, что кабели), но, похоже, нет хорошего способа физически определить, какой диск мне нужно проверить, тем более, что порядок загрузки между загрузками не одинаков. Как найти диск, требующий внимания?

Кис Кук
источник

Ответы:

15

Дисковая утилита (находится в Системе -> Администрирование) выдаст вам серийные номера для всех ваших дисков.

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

Дисковая утилита

У меня есть 6 дисков той же модели в моем ПК, поэтому я нарисовал небольшую диаграмму, показывающую их положение в корпусе и серийный номер, чтобы я мог быстро найти их на серийном в чрезвычайной ситуации.

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

Изменить: я пытаюсь улучшить мой bash-fu, поэтому я написал эту версию командной строки, чтобы просто дать вам список серийных номеров дисков, которые являются текущими на вашем компьютере. fdiskможет выкинуть некоторые ошибки, но это не портит список:

for disk in `sudo fdisk -l | grep -Eo '(/dev/[sh]d[a-z]):' | sed -E 's/://'`;
do
    sudo hdparm -i $disk | grep -Eo 'SerialNo=.*' | sed -E 's/SerialNo=//';
done

(И вы можете разбить это на одну строку, если вам нужно - я разбил его для удобства чтения)

Редактировать 2: ls /dev/disk/by-id/ несколько проще;)

Оли
источник
Использование серийных номеров может работать хорошо, если вы уже записали их внешне. В случае системы, которая не может быть отключена, но имеет диски с «горячей» заменой, было бы неплохо найти неисправный диск с помощью светодиодов.
Кис Кук
Вы также заметите, что в Дисковой утилите есть идентификатор «Расположение», показывающий, к какому порту хост-адаптера подключен накопитель. Возможно, вы сможете определить, какие порты какие, без отключения дисков, но я не могу предположить, что это на самом деле работает.
Оли
В вашем случае остановка raid-массива на 5 минут, отключение каждого диска и получение последовательного порта не должно быть слишком необоснованным и не должно требовать выключения компьютера ... Но RAID придется отключить, если вы не хотите это восстановление.
Оли
«Расположение» не всегда полезно, например, в случае PATA на одном порту часто 2 диска, и если для обоих дисков установлено значение «AUTO» для согласования между главным и подчиненным устройствами, вероятно, нет способа выяснить, какой именно ? Это может работать для SATA, хотя
JanC
1
Диски PATA все еще существуют? Я был только SATA с тех пор ... Ну, так как 112-гигабайтный диск считался большим. Проблема обнаружения порта здесь не имеет значения, потому что мы говорим о внешнем отсеке для дисков. Но конечно. На потребительских материнских платах вам, вероятно, придется обратиться к руководству, чтобы понять, что такое порт ... Даже тогда программное обеспечение может приписывать им другой порядок.
Оли
5

Если у вас возникли проблемы с сопоставлением серийного номера диска или указания порта с пространственным расположением дисков, вы можете запустить cat /dev/sdz >/dev/null(где sdzнаходится неисправный диск) и найти диск по его индикатору (или на слух, если вы не находитесь в шумной серверной комнате). ). Если диск даже не включается, этого должно быть достаточно, чтобы определить, какой он есть. Обязательно нанесите на диски видимую метку в следующий раз.

Жиль "ТАК - перестань быть злым"
источник
это чистый гений, поскольку у него есть побочный эффект - оставить свет
включенным
3

Предоставляемая информация udisks(в командной строке или в дисковой утилите GNOME ) включает серийный номер диска. На имеющихся у меня дисках серийный номер напечатан на верхней стороне и на лицевой стороне (тот, что на другой стороне того, который содержит разъемы), как в виде цифр, так и со штрих-кодом. К сожалению, большинство случаев с ПК делают невозможным чтение этих сериалов без извлечения диска ...

Вы также можете найти серийные номера в /dev/disk/by-id/.

Поскольку ваш диск находится в автономном режиме, я полагаю, что он не "виден" ядром в настоящее время? В этом случае вам, возможно, придется идти путем исключения: вам нужен диск с серийным номером, которого нет в списке ...

Janc
источник
2

С программным рейдом это обычная проблема. Аппаратные рейды, как правило, имеют функцию, которая позволяет мигать светодиодом, связанным с диском, при условии, что ваше оборудование поддерживает это.

Но с программным RAID каждый диск имеет уникальные метаданные. Что вы можете прочитать его с каждого диска, используя команду mdadm -E /dev/sda1для каждого диска в массиве, изменяя устройства в соответствии с вашей средой. Так что если у вас возникла проблема, когда накопитель создает проблемы и в данный момент находится в автономном режиме. Я запускал это на каждом диске, который подключен к сети, записывая дополнительный номер для каждого диска. Тогда, используя Live CD, который поддерживает MD, система спасения компакт-дисков является хорошим вариантом: подключается только один диск за раз и запускается эта команда, чтобы найти виновника. Возможно, это не так просто, как хотелось бы, но это должно сработать.

3dinfluence
источник
Возможно, в Linux могут быть серийные номера, которые также напечатаны на физическом диске?
erjiang
1

lsscsi

$ lsscsi -l
[0: 0: 0: 0] диск ATA TOSHIBA THNS128G AGLA / dev / sda
  состояние = работает queue_depth = 1 scsi_level = 6 тип = 0 устройство_блокировано = 0 тайм-аут = 30
[1: 0: 0: 0] CD / DVD HL-DT-ST DVDRAM GT30N LT09 / dev / sr0
  состояние = работает queue_depth = 1 scsi_level = 6 тип = 5 устройство_блокировано = 0 тайм-аут = 30

если диск не в рабочем состоянии, это довольно хороший знак. Таким образом, / proc / mdstat скажет вам, какой член не прошел. Предполагая, что у вас нет подходящего отсека для дисков, вам придется развернуть его по серийному номеру, sg_inq должен помочь с этим.

Если у вас есть хорошая корзина для дисков, вы сможете включить дисковый маяк, чтобы помочь идентифицировать неисправный элемент.

http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg07307.html

ppetraki
источник
1

Чтобы получить серийные коды всех жестких дисков, запустите:

lsblk -i -o kname,mountpoint,fstype,size,maj:min,name,state,rm,rota,ro,type,label,model,serial


KNAME MOUNTPOINT   FSTYPE   SIZE MAJ:MIN NAME   STATE   RM ROTA RO TYPE LABEL         MODEL            SERIAL
sda                         3.7T   8:0   sda    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX4
sda1                        3.7T   8:1   `-sda1          0    1  0 part
sdb   /mnt/backup3 ext4     3.7T   8:16  sdb    running  0    1  0 disk backup_netops WDC WD4000F9YZ-0 WD-WCCXXX1
sdc                         3.7T   8:32  sdc    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX3
sdc1  /mnt/backup2 ext4     3.7T   8:33  `-sdc1          0    1  0 part
sdd                         3.7T   8:48  sdd    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX2
sdd1  /mnt/backup1 ext4     3.7T   8:49  `-sdd1          0    1  0 part
BVBMedia
источник
0

Это просто. Это, например, вывод на моем компьютере:

andrea@centurion:~$ cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdh1[1] sdg1[0]
      312568576 blocks [2/2] [UU]

unused devices: <none>

как вы можете видеть, я / dev / sdh1 и / dev / sdg1 присоединились к / dev / md0

Андреа Гранди
источник
1
Да, но это ничего не говорит мне о том, где они физически находятся в корпусе внешнего накопителя.
Кис Кук
0

Поскольку в вашем массиве нет SES-смартов, а индикатор активности диска не управляется напрямую, например, для этого вам необходима поддержка встроенного программного обеспечения. Единственное, что вы можете сделать, - это как можно лучше прекратить ввод-вывод, а затем использовать что-то вроде ddили sg_readна самих элементах для определения последовательности операций чтения на диск, которая создает уникально идентифицируемый мигающий шаблон с использованием индикатора активности, плохого индикатора. мужской маяк, если хотите. Это на самом деле ваша единственная альтернатива, если только не убрать массив.

Этот вид работоспособности - это то, что отличает внешние массивы хранения. Так как вы не планировали заранее, записывая серийные номера и их позиции, вы не можете сделать простую разницу между наборами для определения неисправного привода. Это цена, которую вы платите за развернутое вами решение, понимаете ли вы это или нет, но здравствуйте, живите и учитесь.

ppetraki
источник