Linux에서 소프트웨어 RAID 구성
Azure의 Linux 가상 머신에서 소프트웨어 RAID를 사용하여 연결된 여러 데이터 디스크를 단일 RAID 디바이스로 표시하는 것이 일반적인 시나리오입니다. 일반적으로 단일 디스크를 사용하는 것에 비해 성능을 향상시키고 처리량을 향상시키는 데 사용할 수 있습니다.
데이터 디스크 연결
RAID 디바이스를 구성하려면 둘 이상의 빈 데이터 디스크가 필요합니다. RAID 디바이스를 만드는 주된 이유는 디스크 IO의 성능을 향상시키기 위해서입니다. IO 요구 사항에 따라 디스크당 최대 500 IO/ps 또는 디스크당 최대 5000 IO/ps의 Premium Storage를 사용하여 Standard Storage에 저장된 디스크를 연결하도록 선택할 수 있습니다. 이 문서에서는 Linux 가상 머신에 데이터 디스크를 프로비전하고 연결하는 방법에 대해 자세히 설명하지 않습니다. 빈 데이터 디스크를 Azure의 Linux 가상 머신에 연결하는 방법에 대한 자세한 지침은 Microsoft Azure 문서 "디스크 연결"을 참조하세요.
중요합니다
다른 크기의 디스크를 혼합하지 마세요. 이렇게 하면 raidset의 성능이 가장 느린 디스크의 성능으로 제한됩니다.
mdadm 유틸리티 설치
Ubuntu
sudo apt-get update sudo apt-get install mdadm
CentOS & Oracle Linux
sudo yum install mdadm
SLES 및 openSUSE
zypper install mdadm
디스크 파티션 만들기
이 예제에서는 /dev/sdc에 단일 디스크 파티션을 만듭니다. 새 디스크 파티션을 /dev/sdc1이라고 합니다.
fdisk
시작하여 파티션 만들기 시작sudo fdisk /dev/sdc Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0xa34cb70c. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u').
프롬프트에서 'n'을 눌러 new 파티션을 만듭니다.
Command (m for help): n
다음으로, 'p'를 눌러 p리마리 파티션을 만듭니다.
Command action e extended p primary partition (1-4)
'1'을 눌러 파티션 번호 1을 선택합니다.
Partition number (1-4): 1
새 파티션의 시작점을 선택하거나
<enter>
눌러 드라이브의 여유 공간 시작 부분에 파티션을 배치하는 기본값을 적용합니다.First cylinder (1-1305, default 1): Using default value 1
파티션의 크기를 선택합니다(예: '+10G' 형식). 10기가바이트 파티션을 만듭니다. 또는
<enter>
눌러 전체 드라이브에 걸쳐 있는 단일 파티션을 만듭니다.Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): Using default value 1305
다음으로, 파티션의 ID와 유형을 기본 ID '83'(Linux)에서 ID 'fd'(Linux raid auto)로 변경하십시오.
Command (m for help): t Selected partition 1 Hex code (type L to list codes): fd
마지막으로 드라이브에 파티션 테이블을 쓰고 fdisk를 종료합니다.
Command (m for help): w The partition table has been altered!
RAID 배열 만들기
다음 예제에서는 세 개의 개별 데이터 디스크(sdc1, sdd1, sde1)에 있는 세 개의 파티션을 "스트라이프"(RAID 수준 0)합니다. 이 명령을 실행한 후 /dev/md127라는 새 RAID 디바이스가 만들어집니다. 또한 이러한 데이터 디스크가 이전에 다른 소멸 RAID 배열의 일부인 경우
mdadm
명령에--force
매개 변수를 추가해야 할 수 있습니다.sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \ /dev/sdc1 /dev/sdd1 /dev/sde1
새 RAID 디바이스에서 파일 시스템 만들기
CentOS, Oracle Linux, SLES 12, openSUSE 및 Ubuntu
sudo mkfs -t ext4 /dev/md127
SLES 11
sudo mkfs -t ext3 /dev/md127
SLES 11 - boot.md 사용하도록 설정하고 mdadm.conf 만들기
sudo -i chkconfig --add boot.md sudo echo 'DEVICE /dev/sd*[0-9]' >> /etc/mdadm.conf
비고
SUSE 시스템에서 이러한 변경을 수행한 후 다시 부팅해야 할 수 있습니다. 이 단계는 SLES 12에서 필요하지 않습니다.
/etc/fstab에 새 파일 시스템 추가
중요합니다
/etc/fstab 파일을 잘못 편집하면 부팅할 수 없는 시스템이 발생할 수 있습니다. 확실하지 않은 경우 배포판의 설명서에서 이 파일을 올바르게 편집하는 방법에 대한 자세한 내용을 확인하세요. 또한 편집하기 전에 /etc/fstab 파일의 백업을 만드는 것이 좋습니다.
새 파일 시스템에 대해 원하는 탑재 지점을 만듭니다. 예를 들면 다음과 같습니다.
sudo mkdir /data
/etc/fstab을 편집할 때 UUID 사용하여 디바이스 이름이 아닌 파일 시스템을 참조해야 합니다.
blkid
유틸리티를 사용하여 새 파일 시스템에 대한 UUID를 확인합니다.sudo /sbin/blkid ........... /dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"
텍스트 편집기에서 /etc/fstab을 열고 새 파일 시스템에 대한 항목을 추가합니다. 예를 들면 다음과 같습니다.
UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee /data ext4 defaults 0 2
또는 SLES 11:
/dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee /data ext3 defaults 0 2
그런 다음 /etc/fstab을 저장하고 닫습니다.
/etc/fstab 항목이 올바른지 테스트합니다.
sudo mount -a
이 명령으로 인해 오류 메시지가 표시되면 /etc/fstab 파일의 구문을 확인하세요.
다음으로
mount
명령을 실행하여 파일 시스템이 탑재되었는지 확인합니다.mount ................. /dev/md127 on /data type ext4 (rw)
(선택 사항) Failsafe 부팅 매개 변수
fstab 구성
많은 배포판에는 /etc/fstab 파일에 추가할 수 있는
nobootwait
또는nofail
탑재 매개 변수가 포함됩니다. 이러한 매개 변수를 사용하면 특정 파일 시스템을 탑재할 때 오류가 발생할 수 있으며 RAID 파일 시스템을 제대로 탑재할 수 없는 경우에도 Linux 시스템이 계속 부팅되도록 할 수 있습니다. 이러한 매개 변수에 대한 자세한 내용은 배포 설명서를 참조하세요.예제(Ubuntu):
UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee /data ext4 defaults,nobootwait 0 2
Linux 부팅 매개 변수
위의 매개 변수 외에도 커널 매개 변수 "
bootdegraded=true
"는 RAID가 손상되거나 저하된 것으로 인식되는 경우에도(예: 데이터 드라이브가 실수로 가상 머신에서 제거된 경우) 시스템을 부팅하도록 허용할 수 있습니다. 기본적으로 부팅할 수 없는 시스템도 발생할 수 있습니다.커널 매개 변수를 올바르게 편집하는 방법에 대한 배포 설명서를 참조하세요. 예를 들어 많은 배포(CentOS, Oracle Linux, SLES 11)에서 이러한 매개 변수를 "
/boot/grub/menu.lst
" 파일에 수동으로 추가할 수 있습니다. Ubuntu에서 이 매개 변수는 "/etc/default/grub"의GRUB_CMDLINE_LINUX_DEFAULT
변수에 추가할 수 있습니다.
TRIM/UNMAP 지원
일부 Linux 커널은 디스크에서 사용되지 않은 블록을 버릴 수 있도록 TRIM/UNMAP 작업을 지원합니다. 이러한 작업은 삭제된 페이지가 더 이상 유효하지 않으며 삭제될 수 있음을 Azure에 알리기 위해 표준 스토리지에서 주로 유용합니다. 페이지를 삭제하면 대용량 파일을 만든 다음 삭제하는 경우 비용을 절감할 수 있습니다.
비고
배열의 청크 크기가 기본값(512KB)보다 작게 설정된 경우 RAID에서 무시 명령을 실행하지 않을 수 있습니다. 호스트의 매핑 해제 세분성도 512KB이기 때문입니다. mdadm의 --chunk=
매개 변수를 통해 배열의 청크 크기를 수정한 경우 커널에서 TRIM/unmap 요청을 무시할 수 있습니다.
Linux VM에서 TRIM 지원을 사용하는 두 가지 방법이 있습니다. 보통은 사용 중인 배포판에서 권장하는 방법을 참조하세요.
discard
에/etc/fstab
탑재 옵션을 사용합니다. 예:UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee /data ext4 defaults,discard 0 2
경우에 따라
discard
옵션은 성능에 영향을 줄 수 있습니다. 또는fstrim
명령을 명령줄에서 수동으로 실행하거나, 또는 정기적으로 실행하기 위해 crontab에 추가할 수 있습니다.Ubuntu
# sudo apt-get install util-linux # sudo fstrim /data
RHEL/CentOS
# sudo yum install util-linux # sudo fstrim /data