RAID 어레이에서 단일 드라이브를 물리적으로 식별하려면 어떻게해야합니까?


16

4 개의 eSATA 디스크가있는 외장 드라이브 베이가 있습니다. 내 시스템에는 4 포트 eSATA 카드와 한 쌍의 내부 하드웨어 RAID1 드라이브가 있습니다. 외장 드라이브는 소프트웨어 RAID1 쌍과로 구성 /dev/md0되어 /dev/md1있습니다. 둘 다 storagevgLVM 볼륨 그룹 을 생성하기 위해 LVM 물리 볼륨으로 구성되었습니다 . 최근에 단일 드라이브가 오프라인 상태가되었지만 (케이블이 의심됩니다) 특히 부팅 순서가 초기화 순서가 다르기 때문에 확인해야 할 드라이브를 물리적으로 식별하는 좋은 방법이없는 것 같습니다. 주의가 필요한 디스크를 어떻게 찾을 수 있습니까?

답변:


15

디스크 유틸리티 (시스템-> 관리에 앉아 있음)는 모든 디스크의 일련 번호를 제공합니다.

다음은 내가 본 것입니다 (시리얼의 오른쪽 상단을보십시오). 이 드라이브가 mdadm RAID 어레이 내에 있음을 알 수 있습니다. 디스크 유틸리티는 원시 디스크 액세스를 위해 어레이에 침투 할 수 있습니다.

디스크 유틸리티

PC에 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/ 다소 쉽습니다.)


일련 번호를 사용하면 이미 외부 번호를 기록한 경우 잘 작동 할 수 있습니다. 전원을 끌 수 없지만 핫 스왑 드라이브가있는 시스템의 경우 LED를 통해 고장난 드라이브를 찾을 수있는 것이 좋습니다.
Kees Cook

또한 디스크 유틸리티에 드라이브가 연결되어있는 호스트 어댑터의 포트를 나타내는 "위치"식별자가 있음을 알 수 있습니다. 드라이브의 플러그를 뽑지 않으면 서 어떤 포트가 있는지 알 수 있지만 추측 할 수는 없습니다. 이것은 실제로 작동합니다.
Oli

귀하의 경우 RAID 어레이를 5 분 동안 중단하고 각 드라이브의 플러그를 뽑고 직렬을 얻는 것이 너무 불합리하지 않으며 기계를 끄지 않아도됩니다 ...하지만 공상이 아니라면 RAID를 중단해야합니다 재건.
Oli

"위치"가 항상 유용하지는 않습니다. 예를 들어 PATA의 경우 1 포트에 2 개의 디스크가있는 경우가 많으며 디스크가 마스터 / 슬레이브 협상을 위해 "AUTO"로 설정되어 있으면 어느 것이 어떤 것인지 알 수 없습니다. ? SATA에서 작동 할 수도 있습니다
JanC

1
PATA 드라이브가 여전히 존재합니까? 그 이후로 SATA 전용이었는데 ... 112gig 디스크가 큰 것으로 간주 된 이래. 포트 찾기 문제는 외부 드라이브 베이에 대해 이야기하기 때문에 실제로 여기에 포함되지 않습니다. 그러나 물론입니다. 소비자 마더 보드에서는 아마도 어떤 포트가 무엇인지 알기 위해 설명서를 참조해야 할 것입니다. 그럼에도 불구하고 소프트웨어는 다른 순서로 간주 할 수 있습니다.
Oli

5

드라이브 일련 번호 또는 포트 표시를 디스크의 공간 위치와 일치시키는 데 문제 가있는 경우 (실패한 드라이브가있는 cat /dev/sdz >/dev/nullsdz)을 실행 하고 LED로 드라이브를 찾거나 소음이 많은 서버 실에 있지 않은 경우 귀로 드라이브를 찾을 수 있습니다 ). 드라이브의 전원이 켜지지 않으면 어느 드라이브인지 알 수있을 것입니다. 다음에 디스크에 눈에 띄는 레이블을 부착하십시오.


이것은 빛을 그대로 두는 부작용이 있기 때문에 순수한 천재입니다. 다른 모든 것들이 깜박입니다
HDave

3

udisks명령 줄 또는 그놈 디스크 유틸리티 에 제공 되는 정보 에는 디스크 일련 번호가 포함됩니다. 내가 가진 디스크에서 일련 번호는 숫자와 바코드와 함께 윗면과 앞면 (커넥터가 들어있는 다른 쪽의 커넥터)에 인쇄됩니다. 불행히도, 대부분의 PC 케이스는 디스크를 꺼내지 않고 해당 시리얼을 읽을 수 없습니다 ...

에서 일련 번호를 찾을 수도 있습니다 /dev/disk/by-id/.

디스크가 오프라인 상태이므로 현재 커널에서 "보이지"않았다고 생각합니까? 이 경우 제거해야 할 수도 있습니다. 나열되지 않은 일련 번호를 가진 디스크를 원합니다.


2

소프트웨어 급습에서 이것은 일반적인 문제입니다. 하드웨어 RAID에는 하드웨어가 지원한다고 가정하고 드라이브와 관련된 LED를 깜박이는 기능이 있습니다.

그러나 소프트웨어 RAID를 사용하면 각 드라이브에 고유 한 메타 데이터가 있습니다. mdadm -E /dev/sda1어레이의 각 드라이브에 대한 명령 을 사용하여 각 드라이브에서 읽을 수 있으며 환경에 맞게 장치를 수정합니다. 따라서 드라이브가 문제를 발생시키고 현재 오프라인 상태 인 경우 온라인 상태 인 각 드라이브에서이를 실행하여 각 드라이브의 부 번호를 기록합니다. 그런 다음 MD를 지원하는 Live CD를 사용하면 시스템 복구 CD는 한 번에 하나의 드라이브 만 연결하고이 명령을 실행하여 범인을 찾는 것이 좋습니다. 이것은 아마도 당신이 원하는만큼 간단하지는 않지만 작동해야합니다.


아마도 물리적 드라이브에도 인쇄 된 Linux를 통해 얻을 수있는 일련 번호가있을 수 있습니다.
erjiang

1

lsscsi

$ lsscsi -l
[0 : 0 : 0 : 0] 디스크 ATA TOSHIBA THNS128G AGLA / dev / sda
  state = running queue_depth = 1 scsi_level = 6 type = 0 device_blocked = 0 시간 초과 = 30
[1 : 0 : 0 : 0] cd / dvd HL-DT-ST DVDRAM GT30N LT09 / dev / sr0
  state = running queue_depth = 1 scsi_level = 6 type = 5 device_blocked = 0 timeout = 30

디스크가 실행중인 상태가 아니라면 꽤 좋은 신호입니다. 따라서 / proc / mdstat는 어떤 멤버가 실패했는지 알려줍니다. 멋진 드라이브 케이지가 없다면 일련 번호로 드릴 다운해야한다고 가정하면 sg_inq가 도움이 될 것입니다.

드라이브 케이지가 양호하면 디스크 비콘을 활성화하여 결함있는 멤버를 식별 할 수 있어야합니다.

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


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

0

간단 해. 예를 들어 내 PC의 출력입니다.

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
그러나 이것이 외부 드라이브 인클로저의 물리적 위치에 대해서는 아무 것도 알려주지 않습니다.
Kees Cook

0

어레이에 SES 스마트가없고 디스크 작동 LED를 직접 구동 할 수 없으므로 펌웨어 지원이 필요합니다. 당신이 할 수있는 유일한 다른 것은 당신이 할 수있는만큼 I / O를 정지 한 다음 멤버 자체 dd또는 무언가에 무언가를 사용 sg_read하여 디스크에 대한 읽기 패턴을 사용하여 활동 LED를 사용하여 고유하게 식별 가능한 깜박임 패턴을 만듭니다. 당신이 원한다면 사람의 표지. 배열을 내리는 것이 옵션이 아닌 한 실제로 유일한 대안입니다.

이러한 종류의 서비스 용이성은 외부 스토리지 어레이를 차별화하는 것입니다. 일련 번호와 해당 위치를 스크라이브하여 미리 계획하지 않았으므로 결함있는 드라이브를 식별하기 위해 간단한 설정 차이를 수행 할 수 없습니다. 구현 여부에 관계없이 배포 한 솔루션에 대해 지불하는 가격입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.