하나의 장치로 소프트웨어 RAID 1을 만들 수 있습니까


20

미러를 만들 단일 디스크가 있습니다. 이 디스크를 호출하자 sda. 방금 동일한 크기의 다른 디스크를 구입했습니다 sdb. sda그리고 sdb하나 개의 파티션 호출이 sda1sdb1각각.

공격대를 만들 때 sda깨끗하게 닦고 다시 시작하고 싶지 않습니다 sdb. 내 생각의 기차는해야했다 :

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=1 /dev/sda1

... sdb디스크 없이 배열을 만들고 다음과 같이 실행하십시오 (이 단계를 달성하는 방법을 잘 모르겠 기 때문에 다음 명령을 크게 생각합니다)

mdadm /dev/md0 --add /dev/sdb1

참고 sdb1와 비슷한 형식으로 가정합니다sda1

이게 가능해?


그래 넌 할수있어. 만큼 간단하지 않으므로 --add조심해야하지만 매우 복잡 하지는 않습니다 . Ubuntu에서 디스크 미러링을 설정하는 방법을 참조하십시오 . (새로운 규칙으로 인해 그 질문을 중복으로 제안 할 수 없습니다.)
Gilles 'SO-stop

답변:


28

제목의 질문에 대한 간단한 대답은 "예"입니다. 그러나 실제로하고 싶은 것은 기존 데이터를 미러링하는 다음 단계입니다.

기존 디스크를 변환 할 수 있지만 메타 데이터 위치로 인해 언급 한 것처럼 위험합니다. 새 디스크로 빈 (깨진) 미러를 만들고 기존 데이터를 복사하는 것이 훨씬 좋습니다. 그런 다음 작동하지 않으면 미러되지 않은 원본으로 다시 부팅하면됩니다.

먼저 누락 된 드라이브로 /dev/sdb1/dev/md0것으로 초기화하고 파일 시스템을 초기화하십시오 (ext3을 가정하고 있지만 선택은 당신의 것입니다)

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sdb1 missing
mkfs -text3 /dev/md0

이제 /dev/sda1대부분 루트 파일 시스템 ( /) 그래서 안전을 위해 당신은 모두에 액세스 할 수있는 라이브 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.


내가 필요한 것을 완벽하게 : D
whoami

2
cp파일 시스템을 복사 하는 데 사용하지 마십시오. 하드 링크, 확장 된 속성, tar또는 rsync적절한 옵션과 함께 사용할 수 없습니다. Live CD를 부팅 할 때 uid 사용자 매핑이 다르므로주의하십시오 (tar / rsync의 --numeric-owner 옵션 참조). extx 파일 시스템 복제에 대해서는 clone2fs를 참조하십시오.
Stéphane Chazelas

1
옵션은하기 cp(-R) 재귀 적으로 그 일을, 링크를 (-d), 모드, 소유권과 타임 스탬프 (-p)을 보존 처리하고 하나 개의 파일 시스템 (-x)에 머물고,하지만 난 당신이 바로 하드 링크 및 확장에 대한 것 같아요 속성.
StarNamer

rsync -aH --delete /mnt/olddisk/ /mnt/newarray/좋은 옵션입니다. -vih --progress실제로 무엇을하고 싶으면 추가 하십시오.
rudolfbyker

4

물론 두 번째 디스크가 현재임을 지정하여 만들 수 있습니다 missing.

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 missing /dev/sda1

고마워, Im probablly는 여기에 OCD이지만 / dev / sda1 이전에 누락을 추가 한 이유가 순서입니까?
whoami

나는 순서가 중요하지 않다고 생각합니다.
eppesuig

3
조심해! --metadata = 1.2 (새로운 기본값)를 사용하면 시작시 RAID 메타 데이터 (1MB)가 삽입됩니다 (콘텐츠를 재정의 함). 그리고 md 어레이의 시작은 / dev / sda1 내에서 1MB를 시작합니다 (/ dev / md0은 / dev / sda1보다 1MB 더 짧습니다). metadata = 0.9 (이전 기본값)를 사용하면 메타 데이터 (64kB)가 끝에 삽입되어있는 항목을 재정의합니다. 따라서 --metadata = 0.9를 사용하고 FS의 크기를 먼저 조정하십시오. 무엇을하든 백업을 미리 수행하십시오.
Stéphane Chazelas

3

그렇게 할 수 있습니다. 약간 조심해야하지만, 잘못 입력하지 않도록주의를 기울이고 셋업에 문제가없는 경우에는 위험하지 않습니다 ¹.

라이브 시스템에서 어떤 조작도하지 않는 것이 좋습니다. 경우에 따라 가능하지만 추가 관리가 필요합니다. Parted 또는 SystemRescueCD 와 같은 liveCD / liveUSB에서 부팅하십시오 .

먼저 mdraid 메타 데이터 (수퍼 블록)를위한 공간을 확보하기 위해 볼륨을 약간 줄여야합니다. 메타 데이터 형식여러 가지 가 있으므로 디스크 끝에 메타 데이터를 넣는 형식 을 사용해야합니다. (일부 설치에서는 수퍼 블록을 처음에 배치하기에 충분한 공간이 있지만 더 복잡하고 위험하기 쉽습니다.)

수퍼 블록을위한 공간을 확보하려면 블록 장치에서 마지막 128kB를 사용하지 않아야합니다. 따라서 파일 시스템을 축소해야합니다 /dev/sda1. 이것이 ext2 / ext3 / ext4 파일 시스템 인 경우을 사용하여 현재 파일 시스템 크기를 구한 tune2fs /dev/sda1다음 resize2fs /dev/sda1 NNNNNN이 해당 크기에서 128kB를 뺀 위치에서 실행하십시오 . 대신 Parted를 사용 하여이 작업을 수행 할 수 있습니다 . extN 파일 시스템을 축소해야 할 경우 먼저 마운트를 해제해야합니다. btrfs 파일 시스템은 실시간으로 축소 될 수 있습니다.

블록 장치의 마지막 128kB가 사용 가능한지 확인한 후 전화 mdadm --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을 이해하고 부팅 할 수 있습니다. RAID를 이해하지 못하는 Grub1과 같은 부트 로더는 미러 볼륨에서 투명하게 읽지 만 부트 로더가 읽는 드라이브가 실패하면 시스템이 부팅되지 않습니다. RAID 볼륨이 파티션에있는 경우 두 드라이브 모두에 ​​Grub의 부트 섹터를 설치하십시오.

¹ 백업이 있어야합니다. "위험하지 않음"은 "데이터 도박"이 아니라 "필요하지 않을 것"을 의미합니다.

디스크 미러링 설정 방법 (RAID-1) 에서 다시 게시 및 약간 조정

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.