계획:
저는 수년간 개인 서버에서 Raid5 어레이를 개발해 왔으며 이제 이 애플리케이션에 더 적합한 것으로 옮겨야 할 때입니다. 미디어, 백업 등이 포함된 8TB 드라이브 6개를 축적했습니다.
모든 드라이브를 보관하기 위해 Synology 8베이 장치를 구입했지만 이제 지역 간에 데이터를 이동하려고 하는데 여기서 문제가 시작됩니다...
추가 8TB 장치를 구입했는데 Raid5의 장치 중 하나에 오류가 발생한 후 두 장치를 모두 사용하여 Synology에서 Raid1 볼륨을 만들었습니다. Synology에서는 다른 드라이브(또는 5개)를 추가할 때 Raid1을 Raid5로 업그레이드할 수 있습니다. 8테라바이트의 데이터를 이 새 드라이브로 이동하고 기존 저장 공간을 모두 사용하여 원래 40테라바이트 Raid 볼륨에서 총 16테라바이트의 데이터를 제거했습니다.
이제 계획은 원래 볼륨을 24TB로 줄이고, Raid5를 3+2 Raid6으로 재구성하고, 추가 드라이브 2개를 분리하여 Synology에 추가한 다음 나머지 공간 대부분을 이동하는 것입니다. 다시 말하지만, 모든 데이터가 포함되어야 합니다.
지금까지의 단계:
/dev/md127은 /srv/media에 마운트되고 LVM에 vg_data/lv_media를 포함합니다. 먼저 볼륨을 마운트 해제합니다.
umount /srv/media
계속하기 전에 fs가 건강한지 확인하세요.
e2fsck -ff /dev/vg_data/lv_media
LVM의 논리 볼륨을 사용 가능한 양(16TB)으로 줄입니다.
lvreduce -L -16t -r -v vg_data/lv_media
LVM이 세그먼트를 생성한 위치를 확인하십시오. (lv_media는 수년에 걸쳐 할당했기 때문에 더 이상 연속적이지 않습니다.)
pvs -v --segments /dev/md127
일부 세그먼트는 사이에 여유 공간이 있는 물리적 볼륨의 끝에 있습니다. 테일을 드라이브 시작에 더 가까운 간격으로 수동으로 이동합니다. 여기에는 세그먼트를 분할하거나 새 세그먼트를 생성하는 작업이 포함될 수 있지만 제 경우에는 충분한 공간을 확보하기 위해 세그먼트 하나를 이동했습니다.
pvmove --alloc anywhere /dev/md127:4982784-5046783 /dev/md127:284672-348671
LVM PV의 크기를 조정하여 RAID의 공간을 확보합니다.
pvresize -v --setphysicalvolumesize 24000g /dev/md127
RAID 축소(재구성 전)
mdadm --grow /dev/md127 --size=25769803776
이것이 내가 막히는 곳입니다. mdadm raid는 LVM이 이제 더 적은 공간을 사용하고 있다는 사실을 인정/확인하기를 거부하고 할당된 공간 이상으로 배열을 축소할 수 없다고 불평합니다.
mdadm: /dev/md127에 대한 장치 크기를 설정할 수 없습니다: 장치에 남은 공간이 없습니다.
어떤 아이디어라도 어떻게안전하게배열 크기를 줄이시겠습니까?
답변1
@frostschutz 당신은 정말 아름다워요! 어떻게 놓쳤는지는 모르겠지만 지난주에 매뉴얼 페이지를 너무 많이 읽었나 봐요!
mdadm --grow /dev/md127 --array-size=25769803776
이는 크기 변경 후에도 데이터가 그대로 유지되는지 확인하는 임시적이고 안전하며 되돌릴 수 있는 방법입니다. 그렇지 않은 경우에는 데이터에 영향을 주지 않고 동일한 방법으로 크기를 복원할 수 있습니다.
e2fsck -ff /dev/mapper/vg_data-lv_media
이 검사는 오류 없이 통과되었으므로 이제 진행해도 됩니다. Raid5에서 Raid6으로의 변경으로 인해 마이그레이션에 필요하지 않은 추가 복잡성이 도입된 것처럼 보였고 어레이의 모양을 변경하는 가장 안전한 방법은 프로세스에 추가 예비 디스크를 두는 것이므로
mdadm --grow /dev/md127 -l5 -n4 --backup-file /srv/cache/raid.backup
백업 파일은 SSD에 있습니다. 조금이나마 도움이 되길 바랍니다. 지금까지는 너무 좋았습니다. 이 이야기가 해피엔딩으로 끝났다면 저는 이 답변을 받아들일 것입니다...