먼저 몇 가지 배경. 저는 Thecus N4200Pro NAS 어레이에 많은 양의 데이터를 저장합니다. 어레이에 있는 4개 드라이브 중 하나에 스마트 오류가 표시된다는 보고를 받았습니다.
- 그래서 문제가 있는 드라이브(#4)를 교체하고 재구축을 시작했습니다. 재구축하는 동안 약 60%의 시간 동안 어레이의 다른 드라이브 중 하나가 떨어져 나갑니다(이 경우 #1).
- 좋아요..종료하고 원래 #4로 다시 교체해 다시 작동하는지 확인했습니다. 주사위가 없습니다.
- 그래서 불량 드라이브를 교체하여 복구할 수 있는지 확인하기 위해 시스템을 종료하고 #1과 #2를 교체하고 #4를 반 재구성된 드라이브로 교체했습니다. 돌이켜 보면 이건 짜증나는 일이다. 첫 번째 디스크 이후에 닫고 거기에서 모든 원본 디스크를 복제해야 합니다.
- 장치가 재부팅되고 물론 RAID 조립에 실패하며 디스크 3과 4만 예비로 표시된다는 것만 표시됩니다.
- 이 시점에서 모든 것을 닫고 모든 디스크를 제거한 후 복제하여 번호 매기기 순서를 추적했습니다.
- 4개의 클론 디스크를 모두 unbutu 16.04 LTS 상자에 올바른 드라이브 순서로 넣고 부팅했습니다.
- 4개의 디스크가 모두 디스크 내에 표시된 파티션과 함께 표시됩니다. 또한 raid5 배열과 raid1 배열도 표시합니다.
raid1 배열은 NAS의 시스템 정보로, 이와는 아무런 관련이 없습니다. raid5 배열은 제가 관심을 갖고 있는 배열입니다. 여기에는 모든 데이터가 포함되어 있지만 그 안에 있는 어떤 것도 액세스할 수 없습니다. 이제 파기를 시작할 시간입니다.
cat /proc/mdstat
먼저 배열을 보기 위해 달려갔습니다 .
jake@ubuntu-box:~$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4]
[raid10]
md0 : active raid1 sdd1[3]
1959884 blocks super 1.0 [4/1] [___U]
md1 : inactive sdd2[3](S) sdc2[2](S) sdb2[1](S) sda2[0](S)
3899202560 blocks
unused devices: <none>
좋습니다. 두 개의 배열이 표시됩니다. 따라서 우리는 다음에서 md1의 세부 정보를 얻습니다.mdadm --detail /dev/md1
jake@ubuntu-box:~$ sudo mdadm --detail /dev/md1
/dev/md1:
Version : 0.90
Raid Level : raid0
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
State : inactive
UUID : e7ab07c3:b9ffa9ae:377e3cd3:a8ece374
Events : 0.14344
Number Major Minor RaidDevice
- 8 50 - /dev/sdd2
- 8 34 - /dev/sdc2
- 8 18 - /dev/sdb2
- 8 2 - /dev/sda2[/CODE]
흠..이상하네요 raid를 raid0으로 표시하지만 그렇지 않습니다. 이제 각 개별 파티션을 확인해 보겠습니다.mdadm --examine /dev/sdXX
디스크 1
jake@ubuntu-box:~$ sudo mdadm --examine /dev/sda2/
dev/sda2:
Magic : a92b4efc
Version : 0.90.00
UUID : e7ab07c3:b9ffa9ae:377e3cd3:a8ece374
Creation Time : Thu Aug 18 14:30:36 2011
Raid Level : raid5
Used Dev Size : 974800000 (929.64 GiB 998.20 GB)
Array Size : 2924400000 (2788.93 GiB 2994.59 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Tue Mar 13 14:00:33 2018
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 1
Spare Devices : 1
Checksum : e52c5f8 - correct
Events : 20364
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 0 8 2 0 active sync /dev/sda2
0 0 8 2 0 active sync /dev/sda2
1 1 8 18 1 active sync /dev/sdb2
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
디스크 2
jake@ubuntu-box:~$ sudo mdadm --examine /dev/sdb2/
dev/sdb2:
Magic : a92b4efc
Version : 0.90.00
UUID : e7ab07c3:b9ffa9ae:377e3cd3:a8ece374
Creation Time : Thu Aug 18 14:30:36 2011
Raid Level : raid5
Used Dev Size : 974800000 (929.64 GiB 998.20 GB)
Array Size : 2924400000 (2788.93 GiB 2994.59 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Tue Mar 13 14:56:30 2018
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Checksum : e597e42 - correct
Events : 238868
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 1 8 18 1 active sync /dev/sdb2
0 0 0 0 0 removed
1 1 8 18 1 active sync /dev/sdb2
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
디스크 3
jake@ubuntu-box:~$ sudo mdadm --examine /dev/sdc2/
dev/sdc2:
Magic : a92b4efc
Version : 0.90.00
UUID : e7ab07c3:b9ffa9ae:377e3cd3:a8ece374
Creation Time : Thu Aug 18 14:30:36 2011
Raid Level : raid5
Used Dev Size : 974800000 (929.64 GiB 998.20 GB)
Array Size : 2924400000 (2788.93 GiB 2994.59 GB)
Raid Devices : 4
Total Devices : 3
Preferred Minor : 1
Update Time : Tue Mar 13 15:10:07 2018
State : clean
Active Devices : 1
Working Devices : 2
Failed Devices : 2
Spare Devices : 1
Checksum : e598570 - correct
Events : 239374
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 2 8 34 2 active sync /dev/sdc2
0 0 0 0 0 removed
1 1 0 0 1 faulty removed
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
그리고 디스크 4
jake@ubuntu-box:~$ sudo mdadm --examine /dev/sdd2/
dev/sdd2:
Magic : a92b4efc
Version : 0.90.00
UUID : e7ab07c3:b9ffa9ae:377e3cd3:a8ece374
Creation Time : Thu Aug 18 14:30:36 2011
Raid Level : raid5
Used Dev Size : 974800000 (929.64 GiB 998.20 GB)
Array Size : 2924400000 (2788.93 GiB 2994.59 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Tue Mar 13 11:03:10 2018
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Checksum : e526d87 - correct
Events : 14344
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 3 8 50 3 active sync /dev/sdd2
0 0 8 2 0 active sync /dev/sda2
1 1 8 18 1 active sync /dev/sdb2
2 2 8 34 2 active sync /dev/sdc2
3 3 8 50 3 active sync /dev/sdd2
따라서 이 세트 사이에는 매직 넘버와 UUID가 모두 적합합니다. #4를 재구축하는 대신 교체된 #4를 백업으로 재구축하려고 하기 때문에 이벤트가 완전히 엉망이 되었습니다.
디스크 4에는 내가 원래 뽑은 드라이브였고 아무것도 덮어쓰지 않았기 때문에 올바른 RAID 정보와 순서가 있습니다. 디스크 1~3은 아이템 교환으로 인한 다양한 혼란스러운 상황을 보여준다.
그럼 두 가지 질문 -
왜 raid0으로 표시되나요?
mdadm --detail
mdadm --examine /dev/sdd2
실수로 만든 클러스터가 아닌 필요한 모든 것을 볼 수 있도록 처음 3개의 디스크에 대한 정보를 업데이트할 수 있습니까 ? 나생각하다이러한 파티션이나 디스크의 정보를 업데이트할 수 있는 방법을 찾을 수 있다면 RAID는 올바르게 재조립되고 스스로 재구축되어 데이터에 액세스할 수 있게 됩니다.
제가 직접 이 문제를 해결하기 위해 최선을 다하고 많이 검색했기 때문에 어떤 아이디어라도 도움이 될 것입니다.
답변1
당신은 말한다:
재구축 중에 어레이의 다른 드라이브 중 하나가 떨어지는 시간의 약 60%
이는 RAID-5의 알려진 위험이며 오늘날 RAID-5를 사용하기에 안전하지 않은 것으로 간주되는 이유 중 하나입니다. RAID-5 어레이의 두 드라이브가 동시에 실패하면 데이터를 복구할 수 없습니다. 불행하게도 드라이브 하나에 장애가 발생한 어레이를 재구축하면 다른 드라이브에 충분한 스트레스가 가해져 재구축 중에 다른 드라이브에 장애가 발생할 가능성이 크게 높아질 수 있습니다. 재구축 시간이 길어질수록(즉, 드라이브가 더 크고 다른 실제 작업을 수행하는 데 더 바빠질수록) 이런 일이 발생할 가능성은 더 높아집니다.
이는 RAID 어레이가 수년간 사용되었고 드라이브가 예상 수명에 가까워지고 있는 경우 특히 그렇습니다. 또는 어레이의 모든 드라이브가 동일한 생산에서 실행되고 유사한 결함("잘못된 배치"인 경우) 또는 유사한 기대 수명이 있는 경우.
4-디스크 RAID-5 어레이(즉, 스트라이프 데이터용 디스크 3개, 패리티용 디스크 1개)의 드라이브 전체에 데이터가 스트라이프되는 방식으로 인해 두 드라이브에 장애가 발생하면각 파일의 최소 1/3이 손실됩니다.. 이는 하나 이상의 드라이브가 실패할 때 RAID-0 스트라이핑에서 발생하는 것과 유사합니다. 즉, 실패한 드라이브에 있던 스트라이프 부분이 사라집니다.
RAID-6은 모든 데이터가 손실되기 전에 두 개의 드라이브가 실패할 수 있도록 허용하여 이를 약간 개선하지만, 세 개의 드라이브가 동시에 실패하면 동일한 문제가 발생합니다.
RAID-1은 하나의 드라이브에 오류가 발생하면 다른 드라이브(또는 여러 드라이브에 미러링된 경우 다른 드라이브)에서 데이터를 검색할 수 있으므로 더 안전합니다. 미러 세트의 모든 드라이브에 오류가 발생하면 모든 것을 잃게 됩니다.
RAID-10은 RAID-1과 유사합니다. 미러 세트의 모든 드라이브가 동시에 종료되면 취약한 상태로 유지됩니다. RAID-10은 두 번의 드라이브 오류에도 살아남을 수 있지만오직실패한 드라이브가 동일한 미러 세트에 없는 경우. 예를 들어 드라이브 a, b, c, d와 두 개의 미러링된 쌍(a+b 및 c+d)이 있고 다른 쌍의 두 드라이브 조합(예: a+c, a+d, b +c 또는 b+d)가 실패하면 데이터가 손실되지 않을 수 있지만, a+b 또는 c+d가 실패하면 데이터가 손실됩니다.
RAID-1 및 RAID-10의 경우 각 미러 세트에 더 많은 드라이브를 포함하면 위험을 줄일 수 있습니다. 예를 들어, 6개 드라이브 RAID-10은 a+b, c+d, e+f(미러링된 쌍 3개, 총 용량 = 드라이브 수/2) 또는 a+b+c 및 d+e+로 구성할 수 있습니다. f(미러 트리플릿 2개, 총 용량 = 드라이브 수 / 3)
따라서 모든 RAID 레벨에는 치명적인 데이터 손실을 초래할 수 있는 오류 모드가 있습니다.
이 모든 것에서 기억해야 할 핵심 사항은 다음과 같습니다.
RAID는 정기 백업을 대체하지 않습니다.
답변2
그래서 몇 가지를 시도했습니다. 먼저, 오늘 아침에 컴퓨터를 다시 시작한 후 공격을 중단했습니다.
jake@ubuntu-box:~$ sudo mdadm -S /dev/md1
mdadm: stopped /dev/md1
그런 다음 배열의 uuid를 사용하여 어셈블하려고 합니다.
jake@ubuntu-box:~$ sudo mdadm --assemble /dev/md1 --
uuid=e7ab07c3:b9ffa9ae:377e3cd3:a8ece374
mdadm: /dev/md1 assembled from 1 drive - not enough to start the array.
글쎄, 그게 바로 내가 기대했던 것입니다. 그럼 강제로 시도해 봅시다:
jake@ubuntu-box:~$ sudo mdadm --assemble /dev/md1 --force --
uuid=e7ab07c3:b9ffa9ae:377e3cd3:a8ece374
mdadm: forcing event count in /dev/sdb2(1) from 238868 upto 239374
mdadm: forcing event count in /dev/sda2(0) from 20364 upto 239374
mdadm: /dev/md1 assembled from 3 drives - not enough to start the array.
흠..그거~해야 한다이미 직장에 있어요. RAID의 개별 파티션을 호출하여 수동으로 다시 조립해 보겠습니다.
jake@ubuntu-box:~$ sudo mdadm --assemble /dev/md1 /dev/sda2 /dev/sdb2
/dev/sdc2 /dev/sdd2 --force
mdadm: /dev/md1 has been started with 3 drives (out of 4).
빙고! 드라이브 4개 중 3개로 시작하는 것 같습니다. 이제 내 데이터에 액세스할 수 있다는 의미입니다! 웃으면서 세부 사항을 확인해 보겠습니다.
jake@ubuntu-box:~$ sudo mdadm --detail /dev/md1/dev/md1:
Version : 0.90
Creation Time : Thu Aug 18 14:30:36 2011
Raid Level : raid5
Array Size : 2924400000 (2788.93 GiB 2994.59 GB)
Used Dev Size : 974800000 (929.64 GiB 998.20 GB)
Raid Devices : 4
Total Devices : 3
Preferred Minor : 1
Persistence : Superblock is persistent
Update Time : Tue Mar 13 14:00:33 2018
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : e7ab07c3:b9ffa9ae:377e3cd3:a8ece374
Events : 0.239374
Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 8 18 1 active sync /dev/sdb2
2 8 34 2 active sync /dev/sdc2
6 0 0 6 removed
우리가 말하는 동안 데이터를 복사하고 있습니다. 따라서 데이터를 복구할 수 없는 것은 아닙니다. 습격을 강제로 재편성하는 올바른 명령을 아는 것이 중요합니다.