웹사이트 검색

Ubuntu 16.04에서 mdadm으로 RAID 어레이를 관리하는 방법


소개

RAID 어레이는 개별 디스크를 특정 구성의 가상 저장 장치에 결합하여 향상된 성능과 중복성을 제공합니다. Linux에서 mdadm 유틸리티를 사용하면 소프트웨어 RAID 어레이를 쉽게 만들고 관리할 수 있습니다.

이전 가이드에서 Ubuntu 16.04에서 mdadm을 사용하여 RAID 어레이를 생성하는 방법을 다루었습니다. 이 가이드에서는 Ubuntu 16.04 서버에서 RAID 어레이를 관리하는 방법을 보여줍니다. RAID 어레이 관리는 대부분의 경우 매우 간단합니다.

정보: 가상 사설 서버에서 RAID 설정의 비효율성으로 인해 DigitalOcean 드롭릿에 RAID 설정을 배포하는 것을 권장하지 않습니다. 데이터 센터 디스크 복제의 효율성은 베어메탈 하드웨어의 설정에 비해 RAID의 이점을 무시할 수 있게 만듭니다. 이 자습서는 기존 RAID 설정에 대한 참조를 목표로 합니다.

전제 조건

이 가이드를 완료하려면 루트가 아닌 sudo 사용자에 대한 액세스 권한이 필요합니다. Ubuntu 16.04 초기 서버 설정 가이드에 따라 적절한 사용자를 설정할 수 있습니다.

위에서 언급했듯이 이 가이드에서는 RAID 어레이 관리를 다룹니다. 이 가이드를 시작하기 전에 Ubuntu 16.04에서 mdadm을 사용하여 RAID 어레이를 만드는 방법에 대한 가이드를 따라 하나 이상의 어레이를 만듭니다. 이 가이드에서는 작업할 어레이가 하나 이상 있다고 가정합니다.

RAID 장치에 대한 정보 쿼리

올바른 관리를 위한 가장 필수적인 요구 사항 중 하나는 어레이의 구조, 구성 요소 장치 및 현재 상태에 대한 정보를 찾는 기능입니다.

RAID 장치에 대한 자세한 정보를 얻으려면 -D 또는 --detail 옵션과 함께 RAID 장치를 mdadm에 전달하십시오.

  1. sudo mdadm -D /dev/md0

어레이에 대한 중요한 정보가 표시됩니다.

Output
/dev/md0: Version : 1.2 Creation Time : Mon Aug 8 21:19:06 2016 Raid Level : raid10 Array Size : 209584128 (199.88 GiB 214.61 GB) Used Dev Size : 104792064 (99.94 GiB 107.31 GB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Aug 8 21:36:36 2016 State : active Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : near=2 Chunk Size : 512K Name : mdadmwrite:0 (local to host mdadmwrite) UUID : 0dc2e687:1dfe70ac:d440b2ac:5828d61d Events : 18 Number Major Minor RaidDevice State 0 8 0 0 active sync set-A /dev/sda 1 8 16 1 active sync set-B /dev/sdb 2 8 32 2 active sync set-A /dev/sdc 3 8 48 3 active sync set-B /dev/sdd

이 보기에서 RAID 수준, 어레이 크기, 개별 조각의 상태, 어레이의 UUID, 구성 요소 장치 및 해당 역할을 볼 수 있습니다. 이 보기에서 제공되는 정보는 모두 레이블이 잘 지정되어 있습니다.

/dev/mdadm/mdadm.conf 파일에 추가하기에 적합한 배열에 대한 단축 세부 정보를 얻으려면 --brief 또는 를 전달할 수 있습니다. -b 상세 보기 플래그:

  1. sudo mdadm -Db /dev/md0
Output
ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=0dc2e687:1dfe70ac:d440b2ac:5828d61d

사람이 읽을 수 있는 RAID 장치 요약을 빠르게 얻으려면 -Q 옵션을 사용하여 쿼리하십시오.

  1. sudo mdadm -Q /dev/md0
Output
/dev/md0: 199.88GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.

RAID 장치에 대한 주요 정보를 한눈에 찾는 데 사용할 수 있습니다.

구성 요소 장치에 대한 정보 얻기

mdadm을 사용하여 개별 구성 요소 장치를 쿼리할 수도 있습니다.

구성 요소 장치와 함께 사용할 때 -Q 옵션은 어레이의 일부와 역할을 알려줍니다.

  1. sudo mdadm -Q /dev/sdc
Output
/dev/sdc: is not an md array /dev/sdc: device 2 in 4 device active raid10 /dev/md0. Use mdadm --examine for more detail.

-E 또는 --examine 옵션을 사용하여 더 자세한 정보를 얻을 수 있습니다.

  1. sudo mdadm -E /dev/sdc
Output
/dev/sdc: Magic : a92b4efc Version : 1.2 Feature Map : 0x0 Array UUID : 0dc2e687:1dfe70ac:d440b2ac:5828d61d Name : mdadmwrite:0 (local to host mdadmwrite) Creation Time : Mon Aug 8 21:19:06 2016 Raid Level : raid10 Raid Devices : 4 Avail Dev Size : 209584128 (99.94 GiB 107.31 GB) Array Size : 209584128 (199.88 GiB 214.61 GB) Data Offset : 131072 sectors Super Offset : 8 sectors Unused Space : before=130984 sectors, after=0 sectors State : active Device UUID : b0676ef0:73046e93:9d9c7bde:c80352bb Update Time : Mon Aug 8 21:36:36 2016 Bad Block Log : 512 entries available at offset 72 sectors Checksum : 8be1be96 - correct Events : 18 Layout : near=2 Chunk Size : 512K Device Role : Active device 2 Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)

이 정보는 배열 장치와 함께 -D 옵션을 사용할 때 표시되는 정보와 비슷하지만 배열에 대한 구성 요소 장치의 관계에 초점을 맞춥니다.

/proc/mdstat 정보 읽기

서버에서 어셈블된 각 어레이에 대한 자세한 정보를 얻으려면 /proc/mdstat 파일을 확인하십시오. 시스템에서 활성 어레이의 현재 상태를 찾는 가장 좋은 방법은 다음과 같습니다.

  1. cat /proc/mdstat
Output
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0] 209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU] unused devices: <none>

여기서 출력은 매우 조밀하여 작은 공간에 많은 정보를 제공합니다.

Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
. . .

Personalities 라인은 커널이 현재 지원하는 다양한 RAID 레벨과 구성을 설명합니다.

md0으로 시작하는 줄은 RAID 장치 설명의 시작 부분을 설명합니다. 뒤따르는 들여쓰기된 줄도 이 장치를 설명합니다.

. . .
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0]
. . .

첫 번째 줄은 어레이가 활성 상태이고(결함 없음) RAID 10으로 구성되었음을 나타냅니다. 그 다음에는 어레이를 구축하는 데 사용된 구성 요소 장치가 나열됩니다. 괄호 안의 숫자는 어레이에서 장치의 현재 "역할\을 나타냅니다(이는 장치에 제공되는 데이터 복사본에 영향을 미침).

. . .
      209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
. . .

이 예에 표시된 두 번째 줄은 가상 장치가 제공하는 블록 수, 메타데이터 버전(이 예에서는 1.2) 및 어레이의 청크 크기를 제공합니다. 이것은 RAID 10 어레이이므로 어레이의 레이아웃에 대한 정보도 포함합니다(이 예는 "가까운\ 레이아웃에 각 데이터 청크의 복사본 두 개를 저장하도록 구성되었습니다).

대괄호 안의 마지막 항목은 둘 다 정상 세트에서 현재 사용 가능한 장치를 나타냅니다. 숫자 괄호 안의 첫 번째 숫자는 정상 배열의 크기를 나타내고 두 번째 숫자는 현재 사용 가능한 장치 수를 나타냅니다. 다른 대괄호는 어레이 상태를 시각적으로 표시하며 "U\는 정상 장치를 나타내고 "_\는 결함이 있는 장치를 나타냅니다.

어레이가 현재 어셈블 중이거나 복구 중인 경우 진행 상황을 보여주는 다른 라인이 있을 수 있습니다. 다음과 같이 표시됩니다.

. . .
      [>....................]  resync =  0.9% (2032768/209584128) finish=15.3min speed=225863K/sec
. . .

이는 현재 적용 중인 작업과 현재 진행 상황을 다양한 방식으로 설명합니다. 또한 현재 속도와 완료까지의 예상 시간을 제공합니다.

시스템에서 현재 어떤 어레이가 실행되고 있는지 잘 파악한 후 취할 수 있는 여러 조치가 있습니다.

어레이 중지

어레이를 중지하기 위한 첫 번째 단계는 어레이를 마운트 해제하는 것입니다.

마운트된 디렉터리 밖으로 나가 다음을 입력하여 마운트 해제합니다.

  1. cd ~
  2. sudo umount /mnt/md0

다음을 입력하여 모든 활성 어레이를 중지할 수 있습니다.

  1. sudo mdadm --stop --scan

특정 어레이를 중지하려면 mdadm --stop 명령에 전달하십시오.

  1. sudo mdadm --stop /dev/md0

어레이가 중지됩니다. 다시 액세스하려면 어레이를 재조립해야 합니다.

어레이 시작

구성 파일 또는 /proc/mdstat에 정의된 모든 배열을 시작하려면 다음을 입력하십시오.

  1. sudo mdadm --assemble --scan

특정 배열을 시작하려면 mdadm --assemble에 인수로 전달할 수 있습니다.

  1. sudo mdadm --assemble /dev/md0

배열이 구성 파일에 정의된 경우 작동합니다.

어레이에 대한 올바른 정의가 구성 파일에서 누락된 경우에도 구성 요소 장치를 전달하여 어레이를 시작할 수 있습니다.

  1. sudo mdadm --assemble /dev/md0 /dev/sda /dev/sdb /dev/sdc /dev/sdd

어레이가 조립되면 평소와 같이 마운트할 수 있습니다.

  1. sudo mount /dev/md0 /mnt/md0

이제 마운트 지점에서 어레이에 액세스할 수 있어야 합니다.

어레이에 예비 장치 추가

예비 장치는 중복성을 제공하는 모든 어레이(예: RAID 1, 5, 6 또는 10)에 추가할 수 있습니다. 활성 장치에 장애가 발생하지 않는 한 스페어는 어레이에서 능동적으로 사용되지 않습니다. 이 경우 어레이는 데이터를 예비 드라이브로 다시 동기화하여 어레이를 전체 상태로 복구합니다. 중복되지 않는 어레이(RAID 0)에는 드라이브 장애 시 어레이가 유지되지 않으므로 예비 부품을 추가할 수 없습니다.

여분을 추가하려면 배열과 새 장치를 mdadm --add 명령에 전달하기만 하면 됩니다.

  1. sudo mdadm /dev/md0 --add /dev/sde

어레이가 성능 저하 상태가 아닌 경우 새 장치가 스페어로 추가됩니다. 장치가 현재 성능이 저하된 경우 예비 드라이브를 사용하여 재동기화 작업이 즉시 시작되어 결함이 있는 드라이브를 교체합니다.

스페어를 추가한 후 새 장치 방향을 반영하도록 구성 파일을 업데이트합니다.

  1. sudo nano /etc/mdadm/mdadm.conf

배열 정의에 해당하는 현재 줄을 제거하거나 주석 처리합니다.

. . .
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=d81c843b:4d96d9fc:5f3f499c:6ee99294

그런 다음 현재 구성을 추가합니다.

  1. sudo mdadm --detail --brief /dev/md0 | sudo tee -a /etc/mdadm/mdadm.conf

새 정보는 mdadm 유틸리티에서 배열을 어셈블하는 데 사용됩니다.

어레이의 활성 장치 수 늘리기

어셈블리 내의 활성 장치 수를 늘려 어레이를 확장할 수 있습니다. 정확한 절차는 사용 중인 RAID 수준에 따라 약간 다릅니다.

RAID 1 또는 10 사용

마지막 섹션에서 설명한 것처럼 새 장치를 예비 장치로 추가하여 시작하십시오.

  1. sudo mdadm /dev/md0 --add /dev/sde

어레이에서 현재 RAID 장치 수를 찾으십시오.

  1. sudo mdadm --detail /dev/md0
Output
/dev/md0: Version : 1.2 Creation Time : Wed Aug 10 15:29:26 2016 Raid Level : raid1 Array Size : 104792064 (99.94 GiB 107.31 GB) Used Dev Size : 104792064 (99.94 GiB 107.31 GB) Raid Devices : 2 Total Devices : 3 Persistence : Superblock is persistent . . .

이 예에서 어레이는 2개의 장치를 능동적으로 사용하도록 구성되어 있고 어레이에 사용 가능한 총 장치 수는 3개임을 알 수 있습니다(예비 장치를 추가했기 때문).

이제 추가 활성 장치를 갖도록 어레이를 재구성하십시오. 스페어는 추가 드라이브 요구 사항을 충족하는 데 사용됩니다.

  1. sudo mdadm --grow --raid-devices=3 /dev/md0

어레이가 추가 활성 디스크로 재구성되기 시작합니다. 데이터 동기화 진행률을 보려면 다음을 입력하십시오.

  1. cat /proc/mdstat

프로세스가 완료되면 장치를 계속 사용할 수 있습니다.

RAID 5 또는 6 사용

마지막 섹션에서 설명한 것처럼 새 장치를 예비 장치로 추가하여 시작하십시오.

  1. sudo mdadm /dev/md0 --add /dev/sde

어레이에서 현재 RAID 장치 수를 찾으십시오.

  1. sudo mdadm --detail /dev/md0
Output
/dev/md0: Version : 1.2 Creation Time : Wed Aug 10 18:38:51 2016 Raid Level : raid5 Array Size : 209584128 (199.88 GiB 214.61 GB) Used Dev Size : 104792064 (99.94 GiB 107.31 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent . . .

이 예에서 어레이는 3개의 장치를 능동적으로 사용하도록 구성되었으며 어레이에 사용 가능한 총 장치 수는 4개입니다(예비 장치를 추가했기 때문).

이제 추가 활성 장치를 갖도록 어레이를 재구성하십시오. 스페어는 추가 드라이브 요구 사항을 충족하는 데 사용됩니다. RAID 5 또는 RAID 6 어레이를 확장할 때 --backup-file이라는 추가 옵션을 포함하는 것이 중요합니다. 이것은 중요한 정보가 포함된 백업 파일이 저장될 어레이 외부 위치를 가리켜야 합니다.

백업 파일은 이 과정에서 매우 짧지만 중요한 시간 동안만 사용되며 그 후에는 자동으로 삭제됩니다. 이것이 필요한 시간이 매우 짧기 때문에 디스크에서 파일을 볼 수 없을 가능성이 높지만 문제가 발생하는 경우 어레이를 재구축하는 데 사용할 수 있습니다. 이 게시물에는 더 알고 싶은 추가 정보가 있습니다.

  1. sudo mdadm --grow --raid-devices=4 --backup-file=/root/md0_grow.bak /dev/md0

다음 출력은 중요 섹션이 백업됨을 나타냅니다.

Output
mdadm: Need to backup 3072K of critical section..

어레이가 추가 활성 디스크로 재구성되기 시작합니다. 데이터 동기화 진행률을 보려면 다음을 입력하십시오.

  1. cat /proc/mdstat

이 프로세스가 완료되면 장치를 계속 사용할 수 있습니다.

재구성이 완료되면 어레이의 파일 시스템을 확장하여 추가 공간을 활용해야 합니다.

  1. sudo resize2fs /dev/md0

이제 어레이에 해당 용량과 일치하는 파일 시스템이 있어야 합니다.

RAID 0 사용

RAID 0 어레이는 스페어 드라이브를 가질 수 없기 때문에(스페어가 손상된 RAID 0 어레이를 재구축할 기회가 없음) 어레이를 확장하는 동시에 새 장치를 추가해야 합니다.

먼저 어레이에 있는 현재 RAID 장치 수를 확인합니다.

  1. sudo mdadm --detail /dev/md0
Output
/dev/md0: Version : 1.2 Creation Time : Wed Aug 10 19:17:14 2016 Raid Level : raid0 Array Size : 209584128 (199.88 GiB 214.61 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent . . .

이제 새 드라이브 추가와 동일한 작업에서 RAID 장치 수를 늘릴 수 있습니다.

  1. sudo mdadm --grow /dev/md0 --raid-devices=3 --add /dev/sdc

어레이가 RAID 4로 변경되었음을 나타내는 출력이 표시됩니다.

Output
mdadm: level of /dev/md0 changed to raid4 mdadm: added /dev/sdc

이것은 정상적이고 예상되는 것입니다. 데이터가 모든 기존 디스크에 재분배되면 어레이가 다시 RAID 0으로 전환됩니다.

다음을 입력하여 작업 진행 상황을 확인할 수 있습니다.

  1. cat /proc/mdstat

동기화가 완료되면 추가 공간을 사용하도록 파일 시스템 크기를 조정합니다.

  1. sudo resize2fs /dev/md0

이제 어레이에 해당 용량과 일치하는 파일 시스템이 있어야 합니다.

어레이에서 장치 제거

결함이 있거나 디스크를 교체해야 하는 경우 RAID 어레이에서 드라이브를 제거해야 하는 경우가 있습니다.

장치를 제거하려면 먼저 배열 내에서 "failed\로 표시해야 합니다. mdadm --detail을 사용하여 실패한 장치가 있는지 확인할 수 있습니다.

  1. sudo mdadm --detail /dev/md0
Output
/dev/md0: Version : 1.2 Creation Time : Wed Aug 10 21:42:12 2016 Raid Level : raid5 Array Size : 209584128 (199.88 GiB 214.61 GB) Used Dev Size : 104792064 (99.94 GiB 107.31 GB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Thu Aug 11 14:10:43 2016 State : clean, degraded Active Devices : 2 Working Devices : 2 Failed Devices : 1 Spare Devices : 0 Layout : left-symmetric Chunk Size : 64K Name : mdadmwrite:0 (local to host mdadmwrite) UUID : bf7a711b:b3aa9440:40d2c12e:79824706 Events : 144 Number Major Minor RaidDevice State 0 0 0 0 removed 1 8 0 1 active sync /dev/sda 2 8 16 2 active sync /dev/sdb 0 8 32 - faulty /dev/sdc

강조 표시된 줄은 모두 드라이브가 더 이상 작동하지 않음을 나타냅니다(이 예에서는 /dev/sdc).

문제가 없는 드라이브를 제거해야 하는 경우 --fail 옵션을 사용하여 수동으로 실패로 표시할 수 있습니다.

  1. sudo mdadm /dev/md0 --fail /dev/sdc
Output
mdadm: set /dev/sdc faulty in /dev/md0

mdadm --detail의 출력을 보면 이제 장치에 결함이 있는 것으로 표시되어야 합니다.

장치가 실패하면 mdadm --remove를 사용하여 어레이에서 장치를 제거할 수 있습니다.

  1. sudo mdadm /dev/md0 --remove /dev/sdc
Output
mdadm: hot removed /dev/sdc from /dev/md0

그런 다음 예비 드라이브를 추가하는 데 사용하는 것과 동일한 mdadm --add 명령을 사용하여 새 드라이브로 교체할 수 있습니다.

  1. sudo mdadm /dev/md0 --add /dev/sdd
Output
mdadm: added /dev/sdd

어레이는 데이터를 새 드라이브에 복사하여 복구를 시작합니다.

어레이 삭제

포함된 모든 데이터를 포함하여 배열을 제거하려면 배열을 중지하는 데 사용한 프로세스를 따라 시작합니다.

먼저 파일 시스템을 마운트 해제합니다.

  1. cd ~
  2. sudo umount /mnt/md0

다음으로 어레이를 중지합니다.

  1. sudo mdadm --stop /dev/md0

그런 다음 RAID 장치를 대상으로 하는 --remove 명령을 사용하여 어레이 자체를 삭제합니다.

  1. sudo mdadm --remove /dev/md0

배열 자체가 제거되면 각 구성 요소 장치에서 mdadm --zero-superblock을 사용해야 합니다. 이렇게 하면 mdadm에서 배열의 일부로 구성 요소 장치를 조립하고 관리하는 데 사용하는 헤더인 md 수퍼 블록이 지워집니다. 여전히 존재하는 경우 다른 용도로 디스크를 재사용하려고 할 때 문제가 발생할 수 있습니다.

lsblk --fs 출력에서 FSTYPE 열을 확인하여 수퍼 블록이 어레이에 여전히 존재함을 확인할 수 있습니다.

  1. lsblk --fs
Output
NAME FSTYPE LABEL UUID MOUNTPOINT sda linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 sdb linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 sdc linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 sdd vda ├─vda1 ext4 DOROOT 4f8b85db-8c11-422b-83c4-c74195f67b91 / └─vda15

이 예에서 /dev/sda, /dev/sdb/dev/sdc는 모두 배열의 일부였으며 여전히 레이블이 지정되어 있습니다. 이와 같이.

다음을 입력하여 레이블을 제거합니다.

  1. sudo mdadm --zero-superblock /dev/sda /dev/sdb /dev/sdc

다음으로 /etc/fstab 파일에서 배열에 대한 모든 참조를 제거하거나 주석 처리해야 합니다.

  1. sudo nano /etc/fstab
. . .
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

완료되면 파일을 저장하고 닫습니다.

/etc/mdadm/mdadm.conf 파일에서도 배열에 대한 모든 참조를 제거하거나 주석 처리합니다.

  1. nano /etc/mdadm/mdadm.conf
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=bf7a711b:b3aa9440:40d2c12e:79824706 

완료되면 파일을 저장하고 닫습니다.

다음을 입력하여 initramfs를 업데이트합니다.

  1. sudo update-initramfs -u

이렇게 하면 초기 부팅 환경에서 장치가 제거됩니다.

결론

Linux의 mdadm 유틸리티를 사용하면 배열이 사용하는 규칙과 정보를 찾을 수 있는 위치를 이해하면 배열을 매우 쉽게 관리할 수 있습니다. 이 가이드는 완전하지는 않지만 일상적으로 수행해야 할 수 있는 일부 관리 작업을 소개하는 역할을 합니다.

mdadm을 사용하여 RAID 어레이를 만들고 관리하는 데 익숙해지면 다음에 탐색할 수 있는 다양한 방향이 있습니다. LVM과 같은 볼륨 관리 계층은 RAID와 긴밀하게 통합되어 공간을 논리 볼륨으로 유연하게 분할할 수 있습니다. 마찬가지로 LUKS 및 dm-crypt 암호화는 일반적으로 파일 시스템을 작성하기 전에 RAID 장치를 암호화하는 데 사용됩니다. Linux에서는 이러한 모든 기술을 함께 사용하여 스토리지 기능을 향상시킬 수 있습니다.