![하나의 장치로 소프트웨어 RAID 1을 생성할 수 있습니까?](https://linux55.com/image/28718/%ED%95%98%EB%82%98%EC%9D%98%20%EC%9E%A5%EC%B9%98%EB%A1%9C%20%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20RAID%201%EC%9D%84%20%EC%83%9D%EC%84%B1%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
미러링하려는 디스크가 있습니다. 이 디스크를 이라고 부르겠습니다 sda
. 방금 같은 크기의 다른 디스크를 구입했습니다 sdb
. 이름이 sda
이고 sdb
파티션이 sda1
입니다 sdb1
.
공격대를 생성할 때 깨끗이 지우고 다시 시작하고 싶지 않고 sda
미러링을 시작하기만 하면 됩니다 sdb
.
mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=1 /dev/sda1
... sdb
디스크 없이 어레이를 생성한 후 다음과 같은 명령을 실행합니다. (이 단계를 어떻게 구현해야 할지 모르기 때문에 다음 명령을 큰소리로 외칠 생각입니다.)
mdadm /dev/md0 --add /dev/sdb1
주석의 sdb1
형식이 다음과 같다고 가정합니다.sda1
가능합니까?
답변1
제목의 질문에 대한 간단한 대답은 "예"입니다. 하지만 실제로 하고 싶은 일은 다음 단계, 즉 기존 데이터를 미러링하는 것입니다.
기존 디스크를 변환하는 것은 가능하지만 위에서 언급한 것처럼 메타데이터 위치로 인해 위험합니다. 새 디스크로 빈(손상된) 이미지를 만들고 기존 데이터를 여기에 복사하는 것이 좋습니다. 그런 다음 작동하지 않으면 미러되지 않은 원래 상태로 다시 부팅하면 됩니다.
먼저, /dev/sdb1
누락된 드라이브가 있는 새 드라이브로 초기화 /dev/md0
하고 파일 시스템을 초기화합니다(ext3이라고 가정하지만 선택은 귀하의 몫입니다).
mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sdb1 missing
mkfs -text3 /dev/md0
이제 /dev/sda1
이것은 루트 파일 시스템( )일 가능성이 높 으므로 /
안전을 유지하려면 Live CD, 복구 디스크 또는 두 가지 모두에 액세스할 수 있는 기타 부팅 가능한 시스템에서 다음 단계를 수행해야 합니다 /dev/sda1
. /dev/md0
단일 사용자 모드로 전환 이 작업이 성공적으로 완료되었습니다.
파일 시스템의 전체 내용을 /dev/sda1
에 복사합니다 /dev/md0
.
mount /dev/sda1 /mnt/a # only do this if /dev/sda1 isn't mounted as root
mount /dev/md0 /mnt/b
cd /mnt/a # or "cd /" if it's the root filesystem
cp -dpRxv . /mnt/b
대신 다음 부팅 시 설치 되도록 편집 /etc/fstab
하거나 다른 방식으로 확인하십시오 . 시스템이 해당 시스템에서 부팅하도록 설정되어 있을 수 있으며 부팅 매개변수가 이를 루트 장치로 지정할 수 있으므로 재부팅 시 이 설정을 루트가 되도록 수동으로 변경해야 합니다. 장치 ( 루트 장치라고 가정). 재부팅 후 현재 설치되어 있는지( ), 다운그레이드된 이미지로 실행 중인지( ) 확인하세요. 배열에 추가 :/dev/md0
/dev/sda1
/dev/sda1
/dev/md0
/dev/sda1
/dev/md0
df
cat /proc/mdstat
/dev/sda1
mdadm /dev/md0 --add /dev/sda1
다시 빌드하면 덮어쓰게 되므로 /dev/sda1
어떤 메타데이터 버전을 사용하는지는 중요하지 않습니다. 언제나 그렇듯, 주요 변경 사항을 적용할 때는 전체 백업을 수행하거나(가능한 경우) 최소한 다시 생성할 수 없는 항목이 안전한지 확인하세요.
/dev/md0
루트로 사용 하려면(루트인 경우) 부팅 구성을 다시 생성해야 하며 항상 부팅 되도록 /dev/sda1
다시 생성해야 할 수도 있습니다 .mdadm.conf
/dev/md0
답변2
물론 디스크를 생성하고 두 번째 디스크가 현재 다음과 같도록 지정할 수 있습니다 missing
.
mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 missing /dev/sda1
답변3
당신은 이것을 할 수 있습니다. 조금 조심해야 하지만, 잘못 입력하지 않도록 매우 조심하고 설정에 함정을 남기지 않으면 위험하지 않습니다.
라이브 시스템에서는 아무 것도 하지 않는 것이 좋습니다. 이는 경우에 따라 가능하지만 특별한 주의가 필요합니다. liveCD/liveUSB에서 부팅합니다(예:헤어졌다또는시스템 복구 디스크.
먼저 mdraid 메타데이터(수퍼블록)를 위한 공간을 확보하기 위해 크기를 약간 줄여야 합니다. 가지다여러 메타데이터 형식, 디스크 끝에 메타데이터를 배치하는 메타데이터를 사용해야 합니다. (일부 설정에서는 처음에 슈퍼블록을 배치할 수 있는 충분한 공간이 있을 수 있지만 이는 더 복잡하고 위험하므로 이에 대해 논의하겠습니다.)
슈퍼블록을 위한 공간을 확보하려면 블록 장치의 마지막 128kB가 사용되지 않도록 해야 합니다. 따라서 /dev/sda1
ext2/ext3/ext4 파일 시스템인 경우 를 사용하여 현재 파일 시스템 크기를 가져온 다음 NNN이 해당 크기에서 128kB를 뺀 크기를 tune2fs /dev/sda1
실행합니다 . resize2fs /dev/sda1 NNN
당신은 이것을 할 수 있습니다헤어졌다대신에. extN 파일 시스템을 축소해야 하는 경우 먼저 마운트 해제해야 합니다. btrfs 파일 시스템은 실시간으로 축소될 수 있습니다.
블록 장치의 마지막 128kB가 사용 가능한지 확인한 후 mdadm --create
Create RAID-1 볼륨을 호출합니다. 이는 슈퍼블록을 제외한 볼륨의 어떤 부분에도 닿지 않습니다. 처음에는 볼륨에 구성 요소가 하나만 있고 다른 모든 구성 요소는 실패로 설정됩니다. --level=1
(또는 이와 동등한 것 )을 통과해야 합니다 -n 1
(이 방법은 RAID-1에서만 작동함) 및 --metadata=0.9
또는 --metadata=1.0
(기본 슈퍼블록 형식 1.2는 장치 시작 부분 근처에 슈퍼블록을 배치하므로 데이터를 덮어쓸 수 있음) --raid-devices
( )의 매개변수 -n
는 RAID 볼륨의 구성요소 수(누락된 구성요소 포함)입니다.
mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=1.0 /dev/sda1 missing
이제 어레이를 활성화하고 추가 구성 요소를 추가할 수 있습니다.
mdadm --add /dev/md0 /dev/sdb1
부트로더에 대한 참고 사항: Grub2는 Linux RAID-1을 이해하고 여기에서 부팅할 수 있습니다. Grub1과 같이 RAID를 지원하지 않는 부트 로더는 미러 볼륨에서 데이터를 투명하게 읽지만, 부트 로더가 읽는 드라이브에 오류가 발생하면 시스템이 부팅되지 않습니다. RAID 볼륨이 파티션에 있는 경우 두 드라이브 모두에 Grub의 부팅 섹터를 설치해야 합니다.
반드시 백업해 두십시오. "위험하지 않음"은 "데이터를 가지고 도박을 하는 것"이 아니라 "아마도 필요하지 않을 것"을 의미합니다.
약간의 수정을 거쳐 다시 출판됨디스크 미러링(RAID-1) 설정 방법