2개의 256GB SSD가 장착된 서버가 있습니다. 해당 파티션은 다음과 같습니다.
/dev/sda1 100GB linux-raid-autodetect
/dev/sda2 100GB linux-raid-autodetect
/dev/sda3 23,6GB linux-raid-autodetect
/dev/sdb1 100GB linux-raid-autodetect
/dev/sdb2 100GB linux-raid-autodetect
/dev/sdb3 23,6GB linux-raid-autodetect
2개의 raid1 장치가 빌드되어 실행 중입니다(mdadm 사용).
/dev/md1 (built of /dev/sda2 and /dev/sdb2) containing an ext4 filesystem mounted on /
/dev/md2 (built of /dev/sda3 and /dev/sdb3) containing swap filesystem
/dev/sda1 and /dev/sdb1 were used in former times and now are unused.
따라서 사용하지 않는 파티션 /dev/sdx1을 삭제하고 /dev/sdx2를 두 배 크기(200GB)로 늘리고 싶습니다.
나는 다음 단계를 따랐습니다.
mdadm --manage /dev/md1 --fail /dev/sda2
mdadm --manage /dev/md1 --remove /dev/sda2
그런 다음 fdisk로 이동하여 /dev/sda1 및 /dev/sda2를 삭제하고 이전 /dev/sda1 및 /dev/sda2의 완전히 여유 공간을 사용하는 새 파티션 /dev/sda2를 만들었습니다. 파티션 식별자를 linux-raid-autoDetect(fd)로 설정하고 파티션 테이블을 디스크에 썼습니다. 이 작업을 수행한 후 /dev/sda2를 /dev/md1로 읽었습니다.
mdadm --manage /dev/md1 --add /dev/sda2
그리고 레이드 동기화가 완료될 때까지 기다리세요. 모든 것이 예상대로 작동합니다. 결과는 /dev/sda2(200GB) 및 /dev/sdb2(100GB)를 포함하는 새로운 /dev/md1입니다. 이제 이전처럼 /dev/sdb를 계속 사용합니다. 전체 프로세스를 완료한 후 다음과 같은 SSD 파티션을 얻었습니다: /dev/sda2 200GB linux-raid-autoDetect /dev/sda3 23,6GB linux-raid-autoDetect
/dev/sdb2 200GB linux-raid-autodetect
/dev/sdb3 23,6GB linux-raid-autodetect
이는 이전과 동일한 RAID1의 일부입니다( /dev/md1 및 /dev/md2). 두 RAID 모두 제대로 작동합니다. 영향을 받지 않은 /dev/md2는 완벽하지만 새로운 /dev/md1은 100GB(이론적으로 사용 가능한 공간의 절반)만 표시합니다. 물론: RAID 장치의 크기를 최대 용량으로 조정해야 하며, 이 작업을 수행한 후 파일 시스템(ext4)의 크기를 조정해야 합니다. 그래서 시작했어요
mdadm --grow --array-size=max /dev/md1
...하지만 전혀 효과가 없습니다. 다음과 같은
resize2fs /dev/md1
결과는 "파일 시스템의 길이가 이미 26198016(4k) 블록입니다. 할 일이 없습니다!"입니다.
문제가 무엇입니까? 나는 이미 /dev/md1에서 시스템을 사용하고 있으므로 마운트되었습니다. RAID 및 파일 시스템의 크기를 조정하려면 복구 시스템을 사용해야 합니까(/dev/md1은 마운트되지 않음)? 아니면 내가 뭔가 잘못하고 있는 걸까요?
답변1
그동안 나는 그것을 고쳤습니다. mdadm 성장의 구문 오류입니다. 확실히 그렇습니다
mdadm --grow /dev/md1 --size=max
이렇게 하면 배열의 크기를 조정한 다음 파일 시스템의 크기를 조정할 수 있습니다. 이 모든 작업은 재부팅할 필요 없이 마운트된 파일 시스템에서 작동합니다.