mdadm을 사용하여 /boot 파티션을 RAID 1 어레이에 넣었습니다. 어레이는 과거에 여러 번 다운그레이드되었으며 물리적 드라이브를 제거하고 새 드라이브를 추가하고 어레이를 다시 가져올 때마다 새 드라이브 문자를 사용합니다. 배열에 이전 것을 그대로 두고 실패합니다. 더 이상 존재하지 않는 모든 구성 요소를 삭제할 수는 없는 것 같습니다.
[root@xxx ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdg1[10] sde1[8](F) sdb1[7](F) sdd1[6](F) sda1[4] sdc1[5]
358336 blocks super 1.0 [4/3] [UUU_]
존재하지 않는 드라이브와 파티션을 삭제하는 방법은 다음과 같습니다. 예를 들어, /dev/sdb1
.
[root@xxx ~]# mdadm /dev/md0 -r /dev/sdb1
mdadm: Cannot find /dev/sdb1: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r faulty
mdadm: Cannot find 8:49: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r detached
mdadm: Cannot find 8:49: No such file or directory
8:49
나는 이것이 에 표시된 메이저 및 마이너 숫자를 참조한다고 생각 --detail
하지만 여기서 어디로 가야 할지 잘 모르겠습니다. mdadm을 재부팅하거나 다시 시작하지 않으려고 합니다.
[root@xxx ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.0
Creation Time : Thu Aug 8 18:07:35 2013
Raid Level : raid1
Array Size : 358336 (350.00 MiB 366.94 MB)
Used Dev Size : 358336 (350.00 MiB 366.94 MB)
Raid Devices : 4
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Sat Apr 18 16:44:20 2015
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 3
Spare Devices : 0
Name : xxx.xxxxx.xxx:0 (local to host xxx.xxxxx.xxx)
UUID : 991eecd2:5662b800:34ba96a4:2039d40a
Events : 694
Number Major Minor RaidDevice State
4 8 1 0 active sync /dev/sda1
10 8 97 1 active sync /dev/sdg1
5 8 33 2 active sync /dev/sdc1
6 0 0 6 removed
6 8 49 - faulty
7 8 17 - faulty
8 8 65 - faulty
노트:이제 어레이가 합법적으로 다운그레이드되었으며 현재 거기에 새 드라이브를 설치하고 있습니다. 그러나 위에서 볼 수 있듯이 이것은 실제로 중요하지 않습니다. 여전히 /dev/sdb1
이 배열에서 삭제할 수 있습니다 .
답변1
이는 장치 노드가 더 이상 시스템에 존재하지 않기 때문입니다(드라이브가 손상되었을 때 udev가 해당 노드를 삭제했을 수 있음). 키워드를 사용 failed
하거나 대신 다음 을 사용하여 제거할 수 있어야 합니다 detached
.
mdadm -r /dev/md0 failed # all failed devices
mdadm -r /dev/md0 detached # failed ones that aren't in /dev anymore
mdadm 버전이 너무 오래되어 이 작업을 수행할 수 없는 경우 mknod
"장치를 다시 존재하게 만들어" 작동되도록 할 수 있습니다. 아니면 솔직히 무시하세요. 실제로는 문제가 되지 않으며 다음 재부팅 시 사라져야 합니다.
답변2
결국 내가 한 일은 mknod
내가 찾고 있던 장치를 만들기 위해 @derobert가 제안한 방식을 사용하는 것이었습니다. mdadm
mdadm이 알려준 메이저/마이너 번호를 시도했지만 작동할 때까지 삭제하려고 했던 다른 드라이브 문자를 찾을 수 없었습니다.
mknod /dev/sde1 b 8 17
--force
그런 다음 구성 요소를 제거하는 옵션을 사용해야 했습니다 .
mdadm /dev/md0 --remove --force /dev/sde1
그런 다음 생성된 블록 장치를 삭제했습니다.
rm /dev/sde1
답변3
배열의 디스크 수를 훑어봄으로써 이 문제를 해결할 수도 있습니다.
제 경우에는 raid-1 배열 /dev/md0
과 /dev/sda1
"삭제"를 사용했습니다. 저는 단지 하나의 드라이브만 사용하도록 축소했습니다.
mdadm -G /dev/md0 --raid-devices=1 --force
삭제 후에는 실제로 삭제됩니다(행은 더 이상 삭제되지 않습니다 mdadm --detail
).