RAID 구축

유희선·2025년 2월 16일
0

Linux

목록 보기
13/18

1️⃣ RAID 구축 과정

디스크 삽입 > 전원 on > 파티셔팅(디스크 수정+RAID 배열 생성) > 포맷팅(파일 시스템 생성) > 마운팅 > fstab > reboot

1) 현재 디스크 상황

OS ➡️ Hard Disk
Existing ext4 ➡️ Hard Disk 2
Raid0 ➡️ Hard Disk 2,3
Raid1 ➡️ Hard Disk 4,5
Raid5 ➡️ Hard Disk 6,7,8
*파일시스템 구조 : "ext4" 공통 진행

2️⃣ 진행 과정

Linux System(디스크 생성) 참고
기존 디스크를 활용하여 파티셔팅부터 진행
아래 순서를 따라서 진행해주시면 됩니다 ^^

1) 디스크 생성

Hard Disk 3~8 , 총 6개 디스크 생성

2) 전원 on

3) 파티셔팅

3-1) 디스크 수정

기존에 있던 디스크 파티션 type을 변환하여 사용

3-1-1) 파티션 ID 확인
<정리>
fdisk -l /(디스크이름)
[root@localhost ~]# fdisk -l /dev/nvme0n2
Disk /dev/nvme0n2: 5 GiB, 5368709120 bytes, 10485760 sectors
Disk model: VMware Virtual NVMe Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe5854d28

Device         Boot Start      End  Sectors Size Id Type
/dev/nvme0n2p1       2048 10485759 10483712   5G 83 Linux

Id : 83으로 'linux'로 되어 있는 것을 확인할 수 있음

<정리>
fdisk /dev/(디스크 이름)
p                        // print the partition table
t						 // change a partition type
L 						 // partition type List
3-1-2) 파티션 type 변경

해당 경고문은 현재 디스크가 사용 중이라는 것을 경고하고 있음.
해당 상태에서 파티션을 변경할 경우,
데이터 손실이나 시스템 오류가 발생할 수 있음.

아래 과정 먼저 진행!
2-1) 마운트 해제

<정리>
umount /dev/(디스크이름+파티션이름)
[root@localhost ~]# umount /dev/nvme0n2p1
<정리>
fdisk /dev/(디스크 이름)
p                        // print the partition table
t						 // change a partition type
fd						 // Linux raid auto
w						 // 저장
[root@localhost ~]# fdisk /dev/nvme0n2

Welcome to fdisk (util-linux 2.37.4).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): t
Selected partition 1

Hex code or alias (type L to list all): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'.

3-2) RAID 배열 생성

기존 데이터가 삭제될 우려가 있기 때문에
데이터가 있을 경우 백업 진행

<정리>
sfdisk -d /dev/(기존디스크이름) > /tmp/(기존디스크이름).dmp      // 디스크 파티션 정보 덤프
sfdisk -f /dev/(새로운디스크이름) > /tmp/(기존디스크이름).dmp    // 해당 정보 복원 , -f : 파티션 테이블을 강제로 작성할 때 사용
ls -l /dev/nvme0n*                                         // 확인방법
[root@localhost ~]# sfdisk -d /dev/nvme0n2 > /tmp/nvme0n2.dmp
[root@localhost ~]# sfdisk -f /dev/nvme0n3 < /tmp/nvme0n2.dmp
Checking that no-one is using this disk right now ... OK

Disk /dev/nvme0n3: 5 GiB, 5368709120 bytes, 10485760 sectors
Disk model: VMware Virtual NVMe Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3ef068cd

Old situation:

>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new DOS disklabel with disk identifier 0xe5854d28.
/dev/nvme0n3p1: Created a new partition 1 of type 'Linux raid autodetect' and of size 5 GiB.
/dev/nvme0n3p2: Done.

New situation:
Disklabel type: dos
Disk identifier: 0xe5854d28

Device         Boot Start      End  Sectors Size Id Type
/dev/nvme0n3p1       2048 10485759 10483712   5G fd Linux raid autodetect

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

[root@localhost ~]# ls -l /dev/nvme0n*
brw-rw----. 1 root disk 259,  0 Feb 16 08:34 /dev/nvme0n1
brw-rw----. 1 root disk 259,  1 Feb 16 08:34 /dev/nvme0n1p1
brw-rw----. 1 root disk 259,  2 Feb 16 08:34 /dev/nvme0n1p2
brw-rw----. 1 root disk 259,  3 Feb 16 10:03 /dev/nvme0n2
brw-rw----. 1 root disk 259, 11 Feb 16 10:03 /dev/nvme0n2p1
brw-rw----. 1 root disk 259,  5 Feb 16 10:10 /dev/nvme0n3
brw-rw----. 1 root disk 259, 12 Feb 16 10:10 /dev/nvme0n3p1
brw-rw----. 1 root disk 259,  6 Feb 16 10:11 /dev/nvme0n4
brw-rw----. 1 root disk 259, 13 Feb 16 10:11 /dev/nvme0n4p1
brw-rw----. 1 root disk 259,  7 Feb 16 10:11 /dev/nvme0n5
brw-rw----. 1 root disk 259,  4 Feb 16 10:11 /dev/nvme0n5p1
brw-rw----. 1 root disk 259,  8 Feb 16 10:11 /dev/nvme0n6
brw-rw----. 1 root disk 259, 14 Feb 16 10:11 /dev/nvme0n6p1
brw-rw----. 1 root disk 259,  9 Feb 16 10:11 /dev/nvme0n7
brw-rw----. 1 root disk 259, 15 Feb 16 10:11 /dev/nvme0n7p1
brw-rw----. 1 root disk 259, 10 Feb 16 10:11 /dev/nvme0n8
brw-rw----. 1 root disk 259, 16 Feb 16 10:11 /dev/nvme0n8p1

3-3) RAID 생성

<정리>
// RAID0 -> md0 지정 & RAID1 -> md1 지정
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/(디바이스이름) /dev/(디바이스 이름)
// RAID5 -> md5 지정
mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/(디바이스이름) /dev/(디바이스이름) /dev/(디바이스이름) 
y
// 확인
mdadm --detail /dev/md0,1,5   				// State : clean 확인
cat /proc/mdstat

// RAID 배열 정보 저장 (현재 존재하는 모든 RAID 배열의 정보를 /etc/mdadm.conf 파일에 추가)
mdadm --detail --scan >> /etc/mdadm.conf
// initramfs 업데이트 (부팅 시 RAID 배열이 올바르게 인식되도록)
dracut --force
[root@localhost ~]# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/nvme0n2 /dev/nvme0n3
mdadm: partition table exists on /dev/nvme0n2
mdadm: partition table exists on /dev/nvme0n2 but will be lost or
       meaningless after creating array
mdadm: partition table exists on /dev/nvme0n3
mdadm: partition table exists on /dev/nvme0n3 but will be lost or
       meaningless after creating array
Continue creating array [y/N]? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# mdadm --detail /dev/md0
State : clean 

4) 포맷팅

mkfs.ext4 /dev/(RAID 디렉토리)
mkfs.ext4 /dev/md0,1,5

5) 마운팅

// 디렉토리 생성
mkdir md0       
mkdir md1
mkdir md5

// mount
mount /dev/md0 /md0
mount /dev/md1 /md1
mount /dev/md5 /md5

// 확인 ,, I/O
cd /md0				// 디렉토리 이동
ls -al 				// lost+found 파일 찾기
touch ex			// 파일 생성

6) fstab

vi /etc/fstab
/dev/md0		/md0 			ext4		defaults 	0 0  // yy+p -> 해당 줄 복붙 
/dev/md1		/md1 			ext4		defaults 	0 0 
/dev/md5		/md5 			ext4		defaults 	0 0 

df -Th 					// 확인

7) reboot (재부팅)

3️⃣ RAID 구축 error 발생

1) 현상황

1-1) 발생원인

RAID 공간마다 디스크 하나씩 제거함 (2,4,6)

1-2) 확인방법

cat /proc/mdstat

md1, md5 -> 디스크 복구 : 살아남
md0      -> 죽어있는 상태 : 못 살림

2) 살리는 방법

md1, md5 -> 파티셔팅부터 진행

// 디스크 추가
mdadm /dev/md1 --add /dev/(추가할 디스크)    

mdadm /dev/md1 --add /dev/nvme0n4 
mdadm /dev/md5 --add /dev/nvme0n6 

md0 -> md0 제거 후, 처음부터 진행

mdadm --stop /dev/md0  // RAID 삭제
profile
가즈아😘

0개의 댓글