몇 년 전 이 가이드에 따라 아치 설치를 설정할 때 Raid-0 mdadm raid 어레이를 설정했습니다.https://wiki.archlinux.org/title/RAID#설치또한 인터넷 검색을 통해 정확한 설정에 맞게 작동하도록 다른 곳에서 요청합니다.
내 운영 체제에 할당된 raid-0 어레이 부분을 축소하고 여유 공간을 사용하여 새 파티션을 만들고 해당 파티션에 다른 Linux 운영 체제를 설치하고 싶습니다.
이 운영 체제를 설치하는 동안 어레이를 재설정해야 합니까? 제가 이해한 바로는 이것이 소프트웨어 공격입니다. 제 OS 파티션에 어레이를 로드하기 위한 일부 구성이 있었던 것으로 기억합니다.
mdadm --grow /dev/md127 --size=3T (다른 400GB에 OS를 설치할 수 있도록 3.4T에서 3T로 축소)를 사용해 보았습니다. 이로 인해 다음 오류가 발생합니다.mdadm: Cannot set device size in this type of array.
fdisk와 같은 다른 소프트웨어를 사용해 보았지만 실수로 내 어레이를 손상시키는 작업을 작성하고 싶지 않습니다.
답변1
나는 RAID-0을 그다지 많이(전혀 사용하지 않음) 사용하지 않기 때문에 실제로 mdadm이 RAID-0 축소를 지원하지 않는 이유를 잘 모르겠습니다. 또 다른 방법은 배열을 다시 만드는 것 같지만mdadm --create
이 기능이 작동 하려면 디스크 순서, 데이터 오프셋, 레벨, 레이아웃 등을 올바르게 지정해야 합니다..
오류 메시지 자체는 일반적인 메시지이며 특별히 RAID-0을 전혀 언급하지 않습니다(실제로 Component size change is not supported for RAID0
여기에 언급되지 않은 코드에 또 다른 메시지가 있습니다). 매뉴얼 페이지에는 이에 대한 언급이 있습니다 RAID 0 array size cannot be changed
.
--layout=parity-last
일시적으로 RAID-0을 RAID-4로 변환(또는 RAID-5로 변환 사용 ) 하여 간접적으로 이 작업을 수행할 수 있습니다 . RAID-0과 RAID-4(패리티 디스크 누락)가 동일하기 때문에 이 변환은 디스크의 데이터를 변경하지 않고 즉시 이루어져야 합니다. 그런 다음 md RAID-4/5/6이 지원하므로 축소가 작동합니다.
그러나 이 작업을 테스트한 사람은 거의 없다고 확신합니다. 따라서... 여전히 약간의 위험이 있을 수 있습니다.
다음은 레벨 및 레이아웃 변경의 예입니다.
RAID-0 설정:
# head -c 100M /dev/urandom > a.img
# losetup --find --show a.img
/dev/loop0
# head -c 100M /dev/urandom > b.img
# losetup --find --show b.img
/dev/loop1
# mdadm --create /dev/md42 --level=0 --raid-devices=2 /dev/loop0 /dev/loop1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md42 started.
# head -c 42M /dev/md42 | md5sum
fff6e815ae3979b190e1a84f1b9fd776 -
RAID-4를 통해 RAID-0을 축소합니다.
# mdadm --grow /dev/md42 --size=21M
mdadm: Cannot set device size in this type of array.
# mdadm --grow /dev/md42 --level=4
mdadm: level of /dev/md42 changed to raid4
# mdadm --grow /dev/md42 --size=21M
mdadm: component size of /dev/md42 has been set to 21504K
# mdadm --grow /dev/md42 --level=0
mdadm: level of /dev/md42 changed to raid0
# echo 3 > /proc/sys/vm/drop_caches
# md5sum /dev/md42
fff6e815ae3979b190e1a84f1b9fd776 /dev/md42
데이터 오프셋을 고려 하지 않으므로 --size
각 구성 요소는 최소한 구성 요소 크기에 데이터 오프셋을 더한 값을 유지해야 합니다.
# mdadm --examine /dev/loop0
[…]
Avail Dev Size : 43008 sectors (21.00 MiB 22.02 MB)
Data Offset : 4096 sectors
따라서 이 예에서 장치 크기는 최소 43008 + 4096 = 47104 섹터여야 합니다. 배열이 더 큰 경우 mdadm에서 선택한 기본 데이터 오프셋도 훨씬 더 클 수 있으므로 파티션을 너무 많이 축소하지 않도록 주의하세요.
또한 이 접근 방식이 작동하지 않을 수 있는 raid0(다른 크기의 장치 사용)에 대한 몇 가지 특별한 경우가 있다는 점에 유의하세요. 이 답변에서는 mdadm 1.2 메타데이터와 동일한 크기의 드라이브를 사용한다고 가정합니다.