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

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



답변

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

다음은 내가 본 것입니다 (시리얼의 오른쪽 상단을보십시오). 이 드라이브가 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/ 다소 쉽습니다.)


답변

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


답변

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

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

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


답변

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

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


답변

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


답변

모든 하드 디스크의 시리얼 코드를 얻으려면 :

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

답변

간단 해. 예를 들어 내 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를