내 이미지에는 두 개의 드라이브(linux sw raid/mdadm)가 있습니다. 드라이브 중 하나가 과거에 이미지를 남겼고 그 내용은 이제 며칠이 지났습니다. 현재 다운그레이드된 이미지(드라이브 하나 없음)를 사용하고 있으며 다음을 고려하고 있습니다.
- 업데이트 드라이브를 두 번째 드라이브에 복제
dd
- 두 번째 드라이브를 추가하고 다시 동기화하지만 다시 동기화 프로세스가 어떻게 작동하는지, 어떤 데이터를 덮어쓰게 될지 모르겠습니다(해당 미러에 LVM 볼륨이 있음)
나는 dd
이것이 안전한 접근 방식이라고 생각합니다. 어쨌든 나는 재동기화가 어떻게 작동하는지에 관심이 있습니다.
답변1
올바른 접근 방식도 비슷합니다 mdadm --add /dev/md0 /dev/sdb1
. 대신 올바른 배열을 사용 md0
하고 대신 올바른 파티션을 사용하십시오 sdb1
.
핵심은어레이가 실행 중입니다.. 복사할 데이터가 무엇인지 완전히 명확합니다. 현재 실행 중인 데이터입니다. 비트맵이 활성화되면 변경된 내용만 복사하므로 재동기화 속도가 상당히 빨라집니다. 그렇지 않으면 모든 것을 복사합니다.
편집증이 심하거나 디스크 시스템에서 쓰기 작업이 손실될 수 있고 비트맵이 잘못될 수 있다고 걱정하고 전체 복사를 강제로 수행해도 괜찮다면 다음을 사용하여 추가하려는 디스크의 슈퍼블록을 지울 수 있습니다 mdadm --zero-superblock /dev/sdb1
(다시 사용). 올바른 파티션).
배열이 현재 실행되고 있지 않은 경우(예를 들어 비정상적으로 종료되어 어셈블리를 다시 빌드하는 경우) 슈퍼블록에 저장된 업데이트 개수 필드를 사용하여 복사할 내용을 결정합니다. 업데이트 횟수가 너무 높은 디스크를 다시 추가하는 것을 거부할 수 있지만(수퍼블록을 0으로 설정) 활성 데이터를 덮어쓰지는 않습니다.
해당 접근 방식을 사용하면 dd
(a) 결국 슈퍼 블록이 복제되고 두 개의 디스크가 생성됩니다1(수퍼 블록은 어레이에서 디스크 위치를 저장함). (b) 일관성 없는 복사본을 얻게 됩니다. 복사하는 동안(또는 읽기 전용 모드에서) 어레이를 중지하지 않는 한. (그런 다음 a와 b를 수정하려면 위와 같이 슈퍼블록을 지우고 mdraid가 데이터를 복사하도록 해야 합니다.)
즉, mdraid(또는 다른 RAID)를 사용하기로 결정하면 중복적으로 관리할 수 있습니다. 너거의 없다그 문제를 해결하고 싶습니다. LVM과 동일: 데이터를 이동하려는 경우 pvmove
등을 사용할 수 있습니다. 당신은 사용하지 않습니다 dd
.
추신: "어쨌든 드라이브가 미러를 벗어났습니다."는 받아들여야 할 사항이 아닙니다. 그것을 알아내십시오.왜그것은 거울을 떠난다. 새 커널을 사용하더라도 불량 블록이 더 이상 드라이브에서 누락되지 않으므로 임의의 드라이브 손실이 발생해서는 안 됩니다. 스마트 상태 등을 확인하세요.
답변2
비트맵을 사용하도록 RAID-1을 구성한 경우(맨 페이지 참조) --re-add
연결이 중단된 후 기록된 영역만 기록되므로 훨씬 빠릅니다.
어떤 방식으로든(비트맵 전체 동기화 없이도) dd를 사용하는 것보다 /sys/block/md0/md/sync_speed_*를 통해 더 쉽게 동기화 속도를 구성할 수 있습니다.
dd와 동기화하려면 이 시간 동안 활성 디스크를 읽기 전용으로 설정해야 합니다. 따라서 MD 드라이버가 작업을 수행하도록 해야 합니다. 아직 수행하지 않은 경우: 비트맵을 추가하세요.