
MD RAID5 어레이를 보관하는 데 사용된 세 개의 디스크가 있습니다. 이후 나는 이 배열을 제거하고(또는 그렇게 생각했습니다) btrfs 및 스왑 공간에 대한 파티션을 만들었습니다. 머신을 재부팅할 때 MD는 여전히 이전 어레이를 보유하는 데 사용된 장치를 바인딩하므로 새 파일 시스템이 마운트되지 않습니다.
RAID 어레이의 이전 슈퍼블록이 남겨져 MD가 이를 실제 어레이라고 생각하여 디스크를 바인딩할 수 있다는 제안이 있었습니다. 제안된 해결 방법은 mdadm --zero-superblock을 사용하여 영향을 받는 디스크의 슈퍼블록을 지우는 것이었습니다. 그러나 이것이 디스크에 어떤 영향을 미치는지는 잘 모르겠습니다. 이 디스크에는 파티션이 있기 때문에 맹목적으로 일부를 제로화하기 시작하고 싶지 않습니다.
그렇다면 드라이브의 다른 파티션과 파일 시스템을 손상시키지 않고 MD 슈퍼블록을 안전하게 지우려면 어떤 절차를 따라야 합니까?
이 질문은 본질적으로 동일한 것을 묻지만, 다시 분할된 장치에서 mdadm --zero-superblock을 수행하는 것이 실제로 안전한지 여부에 대한 명확한 대답은 없습니다.mdadm 슈퍼블록 숨기기/섀도잉 파티션
답변1
https://raid.wiki.kernel.org/index.php/RAID_superblock_formats
슈퍼블록은 길이가 4K이고 장치 끝에서 최소 64K 및 128K 미만에서 시작하는 64K 정렬 블록에 기록됩니다. 즉, 슈퍼블록의 주소를 장치 크기를 64K의 배수로 반올림하고 그런 다음 64K를 뺍니다.) 각 장치의 사용 가능한 크기는 슈퍼 블록 앞의 공간 크기이므로 장치가 MD 어레이에 통합되면 64K에서 128K 사이가 손실됩니다.
그러니까, 이미 너무 늦었어안전하지 않을 수도 있습니다를 사용하려면 --zero-superblock
데이터가 있는지 없는지 모르기 때문에 -128K
x-RAID 파티션 끝에서 현재 파티션의 크기를 조정/축소한 다음 해당 부분을 지우고 파티션을 다시 늘려야 합니다.
기타 옵션 1: 전체 디스크를 채우도록 대용량 파일을 작성하면 RAID 슈퍼블록을 덮어쓰게 되며 mdadm에서 인식할 수 없습니다.
기타 옵션 2: 1과 유사:https://unix.stackexchange.com/questions/44234/clear-unused-space-with-zeros-ext3-ext4
답변2
wipefs --all /dev/sd[4ppropr14t3][123]
(물론 드라이브/파티션에 대한 글로브를 설정하십시오!)
답변3
이것이 제가 이것을 알아낸 방법입니다(제 경우에 매우 구체적일 수 있지만 가능한 한 일반적인 내용을 유지하려고 노력하겠습니다).
(장치에 대해 말할 때, RAID 배열 자체가 아니라 RAID 볼륨을 구성하는 장치를 의미합니다.)
저는 mdadm -E $DEVICE
어레이가 어떤 메타데이터 형식을 사용하고 있는지 알아내곤 했습니다. 나는 그때에 갔다raid.wiki.kernel.org슈퍼블록 형식에 대한 정보를 찾으려면 제 경우에는 버전 0.90이었습니다.
이 형식에는 장치 끝 부분에 슈퍼블록이 저장되어 있습니다. 이것이 내 상황이 발생하는 곳입니다. 내 이전 어레이는 파티셔닝 없이 드라이브에서 직접 만들어졌습니다. 이 때문에 나는 슈퍼블록이 장치의 맨 끝에 있어야 한다는 것을 알았습니다. 나의 새로운 파티셔닝에는 끝에 스왑 파티션이 포함되었습니다. 따라서 슈퍼블록이 위치한 곳에서는 잃을 데이터가 많지 않았다.
나는 이것저것 읽어보았고, 내가 도달한 결론은 mdadm --zero-superblock
슈퍼블록 자체만 0으로 만들기 때문에 내 경우에는 안전해야 한다는 것이었습니다. 나는 계속해서 세 장치 모두에서 슈퍼블록을 제거했습니다.
mdadm --stop $ONE_OF_THE_DEVICES
필요에 따라 이 줄을 반복하세요.
mdadm --zero-superblock $DEVICE
몇 가지 추가 의견/추측:
일반적으로 새 파티셔닝/파일 시스템에 공간이 필요한 경우 이미 덮어썼어야 합니다. 따라서 슈퍼블록이 여전히 존재한다면 이를 제로화해도 파티셔닝/파일 시스템이 손상되지 않아야 합니다. 그러나 나는 슈퍼블록이 하나 이상의 장치에서 이미 덮어쓰기되었지만 전부는 아닌 경우를 MD가 어떻게 처리하는지 잘 모르겠습니다. 매뉴얼 페이지에는 슈퍼블록이 유효하지 않은 경우 슈퍼블록을 0으로 만들기 위해 -f가 필요하다고 나와 있지만 이를 염두에 두십시오.