GPT 파티셔닝을 사용한 mdadm RAID 구현

GPT 파티셔닝을 사용한 mdadm RAID 구현

현재 내 생각은 mdadm.

특히 드라이브는 소규모 서버 Dell T20의 SATA에 있는 1TB HDD입니다.

운영 체제는GNU/리눅스 데비안8.6(나중에 업그레이드됨:제시뻗기버스터)

내 경우에는 2TB의 패리티로 2TB의 디스크 공간이 만들어집니다.


또한 GPT 파티션 테이블을 사용하고 싶습니다. 작동하려면 순전히 터미널을 통해 이 작업을 수행하는 것을 선호한다고 구체적으로 어떻게 진행해야 할지 잘 모르겠습니다.

저는 RAID 어레이를 생성한 적이 없으므로 어떻게 진행해야 하는지 안내해 주시겠습니까?


노트:

  • 이 배열은 유일한 데이터용으로만 사용됩니다. 부팅이나 OS가 없습니다.

  • 저는 이 어레이의 목적 때문에 RAID-6을 선택했습니다. 두 번의 드라이브 오류로 인해 어레이가 살아남을 수 있어야 합니다. 하드웨어에 따라 드라이브가 4개로 제한되어 있으므로 제가 아는 한 RAID-6에 대한 대안은 없습니다. (RAID-6의 속도 저하가 보기 흉해 보일 수도 있지만 이 어레이에서는 문제가 되지 않습니다.)

답변1

이 답변에서는 모든 어레이 구성원(드라이브)의 모든 데이터가 삭제된다는 점을 분명히 하므로 먼저 백업하세요!


터미널을 열고root(su); 당신이 가지고 있다면sudo활성화된 경우 예를 들어 다음과 같이 할 수도 있습니다 sudo -i. 보다man sudo모든 옵션에 대해):

sudo -i

먼저, 이전에 데이터와 파일 시스템이 있었다면 드라이브를 지워야 합니다. sdi, sdj, sdk, 4명의 멤버가 있다고 가정합니다 sdl. 이 과정을 시각적으로 피드백할 목적으로pv(파이프 뷰어)여기에 사용되었습니다 :

pv < /dev/zero > /dev/sdi
pv < /dev/zero > /dev/sdj
pv < /dev/zero > /dev/sdk
pv < /dev/zero > /dev/sdl

또는 남은 것이 없는지 확인하기 위해 모든 드라이브에서 GParted를 엿볼 수 있습니다. 파일 시스템이 있거나 없는 파티션이 있으면 지우는 것만으로도 충분할 수 있습니다. 그러나 저는 위의 모든 드라이브를 제로화하는 것을 선호합니다. 관련 드라이브를 사용하려면 먼저 모든 파티션을 마운트 해제해야 합니다. 다음과 같은 한 줄로 수행할 수 있습니다.

umount /dev/sdi?; wipefs --all --force /dev/sdi?; wipefs --all --force /dev/sdi
umount /dev/sdj?; wipefs --all --force /dev/sdj?; wipefs --all --force /dev/sdj
umount /dev/sdk?; wipefs --all --force /dev/sdk?; wipefs --all --force /dev/sdk
umount /dev/sdl?; wipefs --all --force /dev/sdl?; wipefs --all --force /dev/sdl

그런 다음 GPT(GUID 파티션 테이블)를 사용하여 모든 드라이브를 초기화하고 모든 드라이브를 파티셔닝해야 하지만 GParted를 사용하면 프로세스에서 원하지 않는 파일 시스템이 생성되므로 이 작업을 수행하지 마세요. 대신에 사용하세요 gdisk:

gdisk /dev/sdi
gdisk /dev/sdj
gdisk /dev/sdk
gdisk /dev/sdl

모든 경우에 다음을 사용하십시오.

o Enter
y Enter결정을 확인하기 위한 새로운 빈 GUID 파티션 테이블(GPT)용
n Enter새 파티션용
Enter첫 번째 파티션의 기본값
Enter용 첫 번째 섹터의 기본값
Enter용 마지막 섹터의 기본값
fd00 Enter용 Linux RAID 유형용
w Enter변경 사항을 기록하여
y Enter결정 확인용


이제 드라이브를 검사할 수 있습니다.

mdadm --examine /dev/sdi /dev/sdj /dev/sdk /dev/sdl

다음과 같이 말해야 합니다.

(type ee)

그렇다면 이제 파티션을 검사합니다.

mdadm --examine /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1

다음과 같이 말해야 합니다.

No md superblock detected

그렇다면 RAID6 어레이를 생성할 수 있습니다.

mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1

배열이 완전히 생성될 때까지 기다려야 합니다. 이 프로세스는 다음과 같이 쉽게 수행할 수 있습니다 watch.

watch cat /proc/mdstat

배열을 생성한 후에는 세부 사항을 살펴봐야 합니다.

mdadm --detail /dev/md0

다음과 같이 말해야 합니다.

          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

이제 어레이에 파일 시스템을 생성합니다. 를 사용하면 ext4아래와 같습니다.숨겨진ext4lazyinit큰 배열의 경우 눈에 띄는 시간이 걸리기 때문에 명령을 피하는 것이 좋습니다. 따라서 이름은 "게으른 초기화"이므로 다음 항목은 피하는 것이 좋습니다.

mkfs.ext4 /dev/md0

대신, 전체 즉시 초기화를 강제해야 합니다( root데이터 배열이므로 0%가 예약되어 있음).

mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0 /dev/md0

이러한 옵션을 지정하면 생성 중에 inode와 저널이 즉시 초기화되므로 대규모 배열에 유용합니다.

지름길을 선택하고 ext4"더 나은 회피 명령"을 사용하여 파일 시스템을 생성한 경우 ext4lazyinit모든 inode를 초기화하는 데 상당한 시간이 소요되므로 완료될 때까지 지켜볼 수 있습니다(예: iotop또는 ) nmon.

어느 쪽이든 파일 시스템 초기화를 선택하면 초기화가 완료된 후 마운트해야 합니다.


이제 이 RAID6 배열에 대한 일부 디렉터리를 만듭니다.

mkdir -p /mnt/raid6

그리고 간단히 마운트하세요:

mount /dev/md0 /mnt/raid6

기본적으로 완료되었으므로 GParted를 다시 사용하여 모든 드라이브의 플래그 linux-raid와 함께 파일 시스템이 표시되는지 빠르게 확인할 수 있습니다.raid

그렇다면 GPT 파티션을 사용하여 RAID6 어레이를 올바르게 생성했으며 이제 여기에 파일을 복사할 수 있습니다.

파일 시스템 에 어떤 UUID md가 있는지 확인하십시오.

blkid /dev/md0

UUID를 클립보드에 복사합니다.

이제 편집해야 합니다 fstab. 즐겨 사용하는 텍스트 편집기를 사용하여nano, 그렇지만sudoedit다음을 사용하는 것이 더 좋습니다:

nano /etc/fstab

그리고 항목을 추가하세요.

UUID=<the UUID you have in the clipboard>    /mnt/raid6    ext4    defaults    0 0

나 자신은 플래그 세트를 사용하는 것을 권장하지 않습니다 defaults. 단지 라인이 지나치게 복잡하지 않기를 바랐을 뿐입니다.

다음은 UPS 백업 데이터 RAID에서 (대신 defaults) 사용하는 마운트 플래그입니다: nofail,nosuid,nodev,noexec,nouser,noatime,auto,async,rw,data=journal,errors=remount-ro


변경 사항을 저장한 후 올바른지 확인할 수 있습니다.

mount -av | grep raid6

다음과 같이 말해야 합니다.

already mounted

그렇다면 어레이 구성을 저장합니다. 아직 생성된 장치 가 없는 경우 md간단히 다음을 수행할 수 있습니다.

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

배열이 이미 존재하는 경우 구성 파일로 리디렉션하지 않고 이전 명령을 실행하면 됩니다.

mdadm --detail --scan

새 어레이를 구성 파일에 수동으로 추가하십시오.

결국에는 을 업데이트하는 것을 잊지 마십시오 initramfs. 그렇지 않으면 새 배열이 다음과 같이 자동 읽기 전용 어셈블만 수행하기 때문입니다 /dev/md127.

update-initramfs -u -k all

계획대로 모든 작업을 수행했는지 확인하고 그렇다면 다시 시작하세요.

reboot

답변2

2 x 4 파티션 대신 4개의 원시 블록 장치에 RAID 어레이를 생성하는 경우 모든 RAID 복구 작업이 반드시 전체 장치에서 작동할 수 있으며 그 반대의 경우도 마찬가지입니다.

예를 들어 디스크의 후반부에서 결국 I/O 오류가 발생하기 시작할 것으로 예상되는 경우, 파티션 위에 어레이가 있으면 어레이 중 하나만 인식하고 다른 어레이는 최소한 다음이 될 때까지 그대로 유지됩니다. 피해는 절반으로 퍼집니다. 이는 일시적인 유연성을 제공하거나 I/O 속도 저하를 방지할 수 있습니다.

반면, 개입을 시작하자마자 교체를 위해 물리 디스크 전체를 꺼내야 하기 때문에 어느 시점에서는 반드시 두 어레이 모두 성능을 저하시켜야 합니다. 또한 SSD의 경우 전체 디스크에 오류가 발생하는 경우가 점점 더 흔해지고 있으므로 어쨌든 이러한 이벤트로 인해 두 어레이 모두 영향을 받을 수 있습니다.

일반적인 파티셔닝 및 mdadm 문서에서 찾을 수 없는 프로세스의 세부 사항에 대해서는 말할 것이 없습니다.

관련 정보