내 전용 서버에는 2x1TB HDD가 포함된 RAID1 어레이가 있고 꽉 찼습니다.
새 하드 드라이브를 추가하고 싶습니다(이미 물리적으로 추가됨).
나는 무엇을 해야할지 모르겠습니다.
데이터가 손실될까봐 두렵습니다.
나는 이것을 찾았다지도 시간
[root@server ~]# fdisk -l
Disk /dev/nvme2n1: 1024.2 GB, 1024209543168 bytes, 2000409264 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/nvme1n1: 1024.2 GB, 1024209543168 bytes, 2000409264 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x844cebe6
Device Boot Start End Blocks Id System
/dev/nvme1n1p1 2048 67110911 33554432 fd Linux raid autodetect
/dev/nvme1n1p2 67110912 68159487 524288 fd Linux raid autodetect
/dev/nvme1n1p3 68159488 2000407215 966123864 fd Linux raid autodetect
Disk /dev/nvme0n1: 1024.2 GB, 1024209543168 bytes, 2000409264 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xcb3fcb0e
Device Boot Start End Blocks Id System
/dev/nvme0n1p1 2048 67110911 33554432 fd Linux raid autodetect
/dev/nvme0n1p2 67110912 68159487 524288 fd Linux raid autodetect
/dev/nvme0n1p3 68159488 2000407215 966123864 fd Linux raid autodetect
Disk /dev/md1: 535 MB, 535822336 bytes, 1046528 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/md2: 989.2 GB, 989175545856 bytes, 1931983488 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/md0: 34.3 GB, 34325135360 bytes, 67041280 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
답변1
너할 수 있는RAID1 추가...교체하는 경우둘 다디스크. 방금 해봤는데 다음과 같이 작동합니다.
- 작동 중인 RAID1 어레이(md0)에서 2x4T 드라이브(sda1 및 sdb1)로 시작
- 2개의 새로운 16T 드라이브를 구입하여 연결했습니다(sdc 및 sdd).
- 전체 드라이브 파티션(sdc1 및 sdd1)을 사용하여 파티션을 나누세요.
- RAID1에 둘 다 추가합니다.
mdadm /dev/md0 --add /dev/sdc1 /dev/sdd1
- 이전 드라이브 중 하나에 오류가 발생했습니다.
mdadm /dev/md0 -f /dev/sda1
- 동기화가 완료될 때까지 기다립니다.
watch cat /proc/mdstat
- 또 다른 오래된 드라이브에 오류가 발생했습니다.
mdadm /dev/md0 -f /dev/sdb1
- 동기화가 완료될 때까지 기다립니다.
watch cat /proc/mdstat
- 어레이에서 기존 드라이브를 제거합니다.
mdadm /dev/md0 -r /dev/sda1 /dev/sdb1
- 어레이 증가:
mdadm --grow /dev/md0 --size max
- 파일 시스템 확장:
resize2fs /dev/md0
..이제 원래 4TB 대신 14TB RAID1을 사용하게 되었습니다.
답변2
이를 통해 mdadm
raid1에서 raid5로의 마이그레이션 경로가 있습니다. 따라서 필요한 것은 새 드라이브, 그에 따라 파티션을 나누고 기존 RAID를 확장하는 것뿐입니다.
2개의 디스크를 사용하면 mdadm의 raid5는 raid1과 동일한 디스크 레이아웃을 사용하므로 즉시 raid5로 변환할 수 있습니다(이름만).
mdadm --grow /dev/md2 --level=5
2디스크 RAID5를 3디스크 RAID5로 확장한 다음 모든 데이터를 재구성합니다.
mdadm --grow /dev/md2 --raid-devices=3 --add /dev/newXp3
재구성이 완료되면 추가 저장 용량을 사용할 수 있게 되며 resize2fs
이에 따라 유사한 방법을 사용하여 파일 시스템을 확장할 수 있습니다.
노트:
완전히 명확하지는 않지만 raid1을 부팅 파티션으로 사용하고 있는 것 같습니다. 부트로더가 raid를 지원하지 않는 경우, 즉 버전 0.90 또는 1.0 메타데이터(메타데이터가 파티션 끝에 있음)를 사용하는 경우 raid5를 사용할 수 없으므로 부트로더는 raid 대신 일반 파일 시스템을 봅니다.
이는 raid1에서만 작동하므로 귀하 /dev/md0
및/또는 귀하의 장치에 대해 /dev/md1
raid1을 고수 해야 합니다. 레벨을 변경하지 않고도 위와 같이 디스크 3개로 늘릴 수 있습니다.
앞에서 언급했듯이 raid1을 3개 디스크로 늘리면 용량이 늘어나지 않지만(raid5 필요) 중복성은 늘어납니다(3방향 미러 raid1).
답변3
이 튜토리얼은 "RAID-1 성장"에 관한 것이기 때문에 쓸모없어 보이지만 이를 수행하는 데 가장 중요한 사항은 언급조차 하지 않습니다.당신은 할 수 없습니다(더 큰 드라이브로 재구축하지 않고는 불가능) - 어레이에 다른 드라이브를 추가하여 기껏해야 중복성을 추가할 수 있지만 어레이의 저장 용량은 여전히 동일합니다. RAID-1을 추가하면 더 많은 복사본이 있기 때문에 데이터가 더 안전해지지만 더 많은 저장 용량을 얻을 수는 없습니다.
RAID-1은 어레이의 모든 장치에 동일한 데이터를 미러링하며 동일한 크기의 드라이브가 여러 개 포함된 RAID-1 어레이의 용량은하나이러한 드라이브의 용량(다양한 크기의 드라이브에 대한 RAID-1의 용량은가장 작은안에).
저장 공간을 늘리려면 복구 모드(또는 복구 CD/DVD/USB/등)로 부팅하고 기존 RAID-1 어레이의 전체 백업을 수행하고 새 RAID-5 어레이로 복원해야 합니다. 또는 mdadm 대신 LVM의 RAID-5 기능을 사용할 수 있습니다. LVM은매우RHEL 및 Centos에서 잘 지원되고 문서화되어 있으며 이러한 배포판의 거의 기본 환경입니다. 또는 아래를 참조하여 ZFS를 사용할 수도 있습니다.
다른 1TB 드라이브(예: 다른 nvme 드라이브가 아닌 기계식 HDD)가 있는 경우 이를 백업 대상으로 사용할 수 있습니다. 그런 다음 3개의 nvme 드라이브를 모두 사용하여 새 RAID-5 어레이를 생성하고 모든 것을 여기에 복원합니다.
그렇지 않으면 새 nvme 드라이브를 백업 대상으로 사용하고 모든 것을 여기에 백업한 다음 원래 두 개의 nvme 드라이브를 사용하여 하나를 만들어야 합니다.퇴화된RAID-5 어레이, 모든 것을 여기에 복원한 다음 (RAID-5 어레이에서 시스템 실행을 테스트한 후), 새 nvme를 어레이에 추가합니다.
새 RAID-5 어레이는 2TB입니다(N 드라이브가 있는 RAID-5 어레이의 용량은 N-1이므로...3 x 1TB 드라이브는 RAID-5에서 2 x 1TB의 총 저장 용량을 갖습니다).
나는 rsync
백업 및 복원을 선호합니다. 충돌이나 정전 또는 프로세스가 중단되는 경우 처음부터 다시 시작하여 복사한 동일한 파일을 복사할 필요 없이 다시 시작하면 중단된 부분부터 계속할 수 있기 때문입니다. 전에 .
이 사이트에는 이를 수행하는 방법, 데이터를 새 드라이브로 마이그레이션하는 방법에 대한 질문 검색, ZFS 및(또는 ZFS)와 관련된 질문과 답변 에 특히 주의하는 방법에 대한 단계별 예제가 많이 있습니다 mdadm
. 디스크 이미지의 비트 복사본이 아닌 파일 기반 백업 및 복구를 수행하기를 원하므로 lvm
사용에 대해 이야기하는 내용은 무시하십시오 . dd
나는 수년에 걸쳐 이 주제에 관해 몇 가지 답변을 썼다는 것을 알고 있습니다(예:LVM으로 마이그레이션하는 방법은 무엇입니까?그리고기존 파티션을 파일 시스템과 통합할 수 있습니까?), 다른 사람들도 마찬가지입니다.
다 읽고 나면, 해야 할 일에 대한 단계별 계획을 적어보세요. 마이그레이션 재해는 신중한 계획을 통해 피할 수 있습니다. 계획을 세우지 않으면 재앙이 발생할 것이 거의 확실합니다. 특히 이전에 한 번도 해본 적이 없는 경우라면 더욱 그렇습니다. 저는 수년에 걸쳐 물리적 머신과 가상 머신을 모두 사용하여 수백 건의 마이그레이션을 수행했으며, 그렇게 하지 않으면 몇 가지 중요한 단계를 잊어버릴 수 있다는 것을 알기 때문에 여전히 시간을 들여 계획을 포인트 형식으로 기록합니다.
시스템에서 가상 머신을 실행할 수 있다면 RAID-1 어레이에 가상 머신을 설정하고 추가 디스크가 있는 RAID-1 어레이에 최소 Centos를 설치하여 마이그레이션을 연습하는 것이 좋습니다.앞으로실제 드라이브에서 사용해 보세요. VM의 가상 디스크는 클 필요가 없으며 각각 수백 MB면 충분합니다. 가장 작은 운영 체제(및 mdadm, lvm, rsync 및 기타 필요한 도구)에도 충분합니다. 이렇게 하면 실제 마이그레이션 계획이 훨씬 쉬워지고 이전에 한 번도 해본 적이 없는 작업을 계획하는 것은 어렵습니다.
프로세스를 이해하고 어떤 문제가 발생할 수 있는지(그리고 그 문제에서 복구하는 방법)를 알 때까지 여러 번 연습하세요. 또한 mdadm RAID-1에서 mdadm RAID-5로, mdadm RAID-1에서 LVM RAID-5 또는 ZFS로와 같은 다양한 유형의 마이그레이션을 연습하여 어느 것이 가장 적합한지 결정하는 데 도움을 받을 수 있습니다. 처음 설정을 완료한 후에는 RAID-1 가상 디스크의 복사본 두 개를 만들어서 더 쉽게 만들 수 있습니다. 그러면 또 다른 One 연습 실행을 위해 가상 머신을 "시작 상태"로 빠르고 쉽게 복원할 수 있습니다.
또 다른 옵션은 RAID-5 대신 ZFS RAIDZ를 사용하는 것입니다. 이 방법은 거의 동일한 저장 용량을 제공하지만 ZFS는 투명한 압축을 지원하므로 텍스트(예: 구성 파일, 로그 파일, 소스 코드, 마크다운 또는 TeX)와 같은 압축률이 높은 파일을 지원합니다. 파일, HTML, XML, json 등)은 디스크 공간을 덜 사용합니다. 이미 압축된 파일(예: PDF 및 대부분의 비디오, 이미지, 오디오 형식)은 이전과 동일한 공간을 사용합니다. 또한 ZFS에는 오류 감지 및 수정, 스냅샷, 다양한 속성(예: 압축 유형, 암호화, 레코드 크기 등)을 가진 다양한 유형의 데이터에 대해 별도의 데이터 세트를 생성하는 기능 등 다른 이점도 있습니다.
ZFS dkms 모듈과 ZFS 유틸리티를 설치해야 합니다. 이것은 Debian과 Ubuntu에서는 매우 간단하고 간단하지만 Centos에서는 해본 적이 없으므로 얼마나 어려울지 모르겠습니다. 이에 대한 블로그 게시물과 튜토리얼이 있을 것이라고 확신합니다.
답변4
그냥 댓글을 달려고 했는데 댓글을 달 수 있는 평판이 부족해서 답변으로 게시해야 합니다.
raid1에 다른 디스크를 추가하면 더 이상 공간이 없는 다른 미러가 추가됩니다. Raid5/6은 패리티 계산과 관련된 계산으로 인해 선호도가 떨어지고 있습니다[인용 필요]. 물론 응용 프로그램에 따라 다릅니다.
raid10은 raid1과 더 유사하지만 디스크 수가 증가함에 따라 크기가 커질 수 있습니다(원래는 중첩된 raid1/0(짝수의 드라이브 필요)이지만 raid10은 홀수 개의 드라이브를 사용할 수 있음). 동등 . 드라이브 2개 raid10은 raid1이므로 무료로 변경할 수 있습니다.
mdadm <device> --grow --raid-level=10
기본 레이아웃은 2에 가깝고 이 정도면 충분합니다. 드라이브 전체에 분산된 각 블록의 복사본 2개를 얻게 됩니다(현재는 2개이므로 여전히 RAID 1입니다).
그런 다음 새 드라이브를 추가합니다.
mdadm <device> --add /dev/new-disk
mdadm <device> --grow --raid-devices=3
이제 우리의 공격대에는 더 많은 여유 공간이 있지만 파일 시스템은 여전히 원래 크기이므로 마지막으로 다음과 같습니다.
resize2fs <device>