GPT 파티션을 사용한 mdadm RAID 구현

GPT 파티션을 사용한 mdadm RAID 구현

나의 현재 아이디어는 mdadm.

구체적으로 드라이브는 소형 폼 팩터 서버인 Dell T20의 SATA 기반 1TB HDD입니다.

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

제 경우에는 2TB의 디스크 공간과 2TB의 패리티가 생성됩니다.


또한 GPT 파티션 테이블과 함께 사용하고 싶습니다. 작동하게 하려면 터미널을 통해서만 수행한다고 가정하고 정확히 어떻게 해야 할지 모르겠습니다.

저는 RAID 어레이를 생성한 적이 없으므로 진행 방법을 안내해 주실 수 있습니까?


노트:

  • 이 배열은 고유한 데이터에만 사용됩니다. 부팅이나 운영 체제가 없습니다.

  • 이 어레이의 목적 때문에 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첫 번째 섹터의 기본값 Linux RAID 유형의 경우 변경 사항을 입력하여 결정을 확인하십시오.
Enter
Enter
fd00 Enter
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"더 나은 회피 명령"을 사용하여 파일 시스템을 생성하기로 선택한 경우 모든 inode를 초기화하는 데 상당한 시간이 소요된다는 점에 유의하십시오 . 완료될 때까지 또는 를 ext4lazyinit사용하여 확인할 수 있습니다 .iotopnmon

파일 시스템 초기화를 위해 어떤 방법을 선택하든 초기화가 완료된 후 마운트해야 합니다.


이제 이 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 문서에서 찾을 수 없는 절차적 세부 사항에 대해서는 할 말이 많지 않습니다.

관련 정보