장애가 발생하기 전에 RAID 드라이브 교체(3년 전!)

장애가 발생하기 전에 RAID 드라이브 교체(3년 전!)

내 RAID 설정에서 현명한 방법은 드라이브가 고장나고 오래되기 전에 교체하는 것이라고 생각합니다. 클라우드 백업 공간을 많이 확보할 수 없고 결국 드라이브를 사용하지 않으려고 합니다. 마모로 인해 고장이 발생합니다.

GPT, grub, 작은 시스템 raid1 파티션 및 큰 raid5 기본 파티션이 있는 3개의 2TB 드라이브가 있습니다. 저는 아치 리눅스를 사용하고 있습니다.

드라이브를 하나씩 교체할 계획입니다. 나는 내 행동 계획을 게시하고 누군가가 그것이 작동하지 않는 이유를 생각할 수 있는지 또는 이를 수행할 수 있는 더 좋은 방법이 있는지 확인하고 싶었습니다.

1 단계:

/dev/sda물리적으로 플러그를 뽑고 /proc/mdstat어떤 장치에 오류가 있는지 검사하여 교체하려는 장치를 찾으십시오 /dev/sdx.

2단계:

다시 연결하고 sfdisk를 사용하여 파티션 테이블을 복사하세요.

sfdisk -d /dev/sdx > partition.layout

세 번째 단계:

같은 크기의 새 물리적 드라이브를 넣습니다.

네 번째 단계:

sfdisk /dev/sdx < partition.layout

다섯 번째 단계:

mdadm아치 위키의 지침에 따라 어레이에 새 드라이브를 추가하는 데 사용됩니다 .

mdadm --add /dev/md0 /dev/sdx1
mdadm --add /dev/md1 /dev/sdx2

6단계:

그럽을 다시 설치하시겠습니까? 재동기화가 완료될 때까지 기다린 다음 다른 2개 드라이브에 대해 전체 프로세스를 반복하시겠습니까?

내 질문은 주로 이것이 성공할 것인가?입니다. 내가 놓친 것이 있나요? 나는 분명한 것을 놓치고 모든 데이터를 잃고 싶지 않습니다.

도움이나 통찰력을 제공해 주셔서 대단히 감사합니다.

편집하다:

계속해서 논의를 이어가기 위해 mdadm과 smartmontools(smartd)가 하드 드라이브에 문제가 생기기 시작할 때 이메일을 통해 모니터링하고 알림을 보내는 방법을 알아냈다고 말하고 싶습니다. 내 휴대폰에 동기화된 Gmail 계정을 사용하여 ssmtp를 설정했습니다.

이미 새 드라이브를 구입했기 때문에 드라이브를 보관하고 문제가 발생하면 교체하겠습니다. 내가 이해한 바로는 결국 모든 하드 드라이브가 고장납니다. 어레이 성능을 저하시키지 않고 이를 수행하는 방법에 대한 제안과 팁을 제공해 주셔서 감사합니다. 업그레이드할 수 있게 되면 ECC 마더보드/메모리 등과 함께 ZFS를 사용할 것입니다. 이에 대한 조언을 제공해 주셔서 감사합니다. 정말 감사합니다 도움이 많이 되었어요 :D

답변1

의도적으로 RAID 성능을 낮추고 재동기화가 예기치 않게 실패할 수 있으므로 이는 좋지 않은 생각입니다. 새 디스크를 시스템에 연결한 다음( n+1디스크가 있으므로 ) 이를 사용하여 mdadm --replace동기화하는 것이 좋습니다. 이렇게 하면 이 기간 동안 RAID 성능이 저하되지 않습니다.

어떤 드라이브인지 확인하기 위해 드라이브를 실패하거나 제거할 필요가 없습니다. mdadm --examinemdstat 출력 [UUU]에서 ​​장치의 역할 번호를 볼 수 있습니다 . 드라이브의 일련 번호를 [012]사용 하거나 확인하여 드라이브 자체의 레이블과 비교할 수 있습니다. hdparmsmartctl

파티셔닝의 경우 현재 MSDOS보다 GPT를 사용하는 것이 더 나을 수 있습니다. 디스크를 교체할 뿐만 아니라 크기도 업그레이드하려는 경우 MSDOS 파티션이 거의 2TB에서 멈추므로 선택의 여지가 없을 수 있습니다.

개인적으로는 전혀 그런 일을 하지 않습니다. 디스크가 3년이 되었다면 어떻게 되나요? 디스크는 이보다 훨씬 오래 지속되며 새 디스크도 마찬가지로 실패합니다.

더 중요한 것은 디스크를 정기적으로(자동으로) 테스트하고 첫 번째 중단/수정 불가능/재할당된 섹터, 자체 테스트의 읽기 오류 또는 기타 문제가 나타날 때 디스크를 교체하는 것입니다.

더 중요한 것은 잃어버리고 싶지 않은 데이터를 백업하는 것입니다.

중복성을 높이기 위해 RAID6으로 전환할 수도 있지만 사전에 오류를 확인하는 한 두 디스크가 동시에 실패할 가능성은 거의 없습니다. 재구성이 수년 만에 첫 번째 읽기 테스트가 되도록 두지 마십시오.

답변2

첫 번째 단계는 불필요하며 여전히 /dev/sdX항상 안정적이라는 보장은 없습니다(즉, 동일한 장치를 가리킵니다). 최악의 경우 다시 삽입하면 일부 장기 실행 재동기화 작업이 트리거될 수 있습니다.

더 좋고 안정적인 방법은 드라이브의 일련 번호(S/N, SN)를 사용하는 것입니다. 이는 드라이브에 인쇄되며 시스템에서 쿼리할 수 있습니다.

예를 들어 무작위 시스템을 살펴보겠습니다.

# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sda2[0] sdb2[2]
      976245464 blocks super 1.2 [2/2] [UU]
      bitmap: 1/8 pages [4KB], 65536KB chunk

그런 다음 다음을 통해 sda의 일련 번호를 얻을 수 있습니다.

# hdparm -i /dev/sda

/dev/sda:

 Model=SAMSUNG HD103UJ, FwRev=1AA01113, SerialNo=S13PJ0123456789

(실제 일련번호를 수정했습니다)

아래 심볼릭 링크를 통해 일련번호를 확인할 수도 있습니다 /dev/disk/by-id.

# ls -l /dev/disk/by-id | grep 'sda$'
lrwxrwxrwx. 1 root root  9 2016-08-05 09:49 ata-SAMSUNG_HD103UJ_S13PJ0123456789 \
  -> ../../sda

따라서 교체하려는 드라이브의 일련 번호를 적어두고 시스템 전원을 끈 다음 일치하는 일련 번호(드라이브 라벨에 인쇄되어 있음)로 드라이브를 교체할 수 있습니다.

전문가 팁 #1: 새 드라이브를 추가할 때 추가 라벨에 일련 번호를 쓰고 라벨을 직접 보이는 면(예: 커넥터 면)에 부착하세요.

/dev/disk/by-id/...이러한 링크는 RAID에 새 장치를 추가할 때도 편리합니다.

전문가 팁 #2: 이기종 드라이브를 선택하세요.독립 제조업체, 이미 전원 켜기 시간이 다른 드라이브 등 따라서 시스템 문제로 인해 여러 번 실패할 가능성이 줄어듭니다.

전문가 팁 #3: BTRFS 또는 ZFS와 같은 체크섬 파일 시스템을 사용하세요. 체크섬의 이점 외에도 드라이브를 먼저 제거하지 않고도 드라이브를 교체할 수 있습니다.

답변3

아니요, 하드 드라이브를 교체하려고 서두르지는 않을 것입니다.

귀하의 경우에는 전용 RAID 파일 시스템으로 전환하는 것이 좋습니다. 개인적으로 가장 좋아하는 것은 ZFS이지만 BTRFS도 작동할 것이라고 생각합니다.

ZFS를 사용하면 새 HDD를 마운트하고 이를 핫 스페어로 풀에 추가하고 ZFS가 주기적으로 HDD를 "청소"(자동으로 오류 확인)하도록 하고, 정리에서 오류가 발견되면 핫 스페어를 활성화합니다. 그러면 ZFS가 자동으로 초기화하고 완료되면 결함이 있는 부분을 떼어낼 수 있습니다. 풀에 있는 HDD가 동일한 제조사/작동이 아닌 한 동시에 오류가 발생하지 않을 것이라고 합리적으로 확신할 수 있습니다(물론 얼마나 편집증적인지에 따라 다름).

다음번에는 HDD를 제거하지 않고도 찾을 수 있도록 HDD를 설치할 때 HDD에 라벨을 붙여야 한다는 것은 말할 필요도 없습니다... ;)

이 모든 작업을 기존 솔루션과 병행하여 수행한다면(케이스에 두 개의 추가 HDD를 위한 충분한 공간이 있는 경우) 미래에 대비할 수 있습니다. 모든 데이터를 새 디스크로 마이그레이션한 다음 기존 디스크를 향후 핫 스페어로 사용할 수 있습니다.

(참고: ZFS를 사용하는 경우(여기서는 예시로 사용됨) Google에서 "zfs ecc"를 검색하고 현명하게 선택하세요.

관련 정보