본문 바로가기
Linux/Rocky Linux

[Rocky Linux] 6. 디스크 관리와 복구

by 박기린 2024. 10. 24.
본 내용은 대학 강의시간에 배운 내용을 따로 정리하는 글로, 독자를 구체적으로 정하지 않고 썼습니다.
따라서 읽기에 많은 불편함이 있습니다.

다른 글을 읽으시는 것을 적극 권장드립니다.

디스크를 1개 장착하고 파티션 나누기

VM 설정에서

[Add - Hard Disk - SCSI - Create a virtual disk]로 온 다음,

사진처럼 1gb, 'Store virtual disk as a single file'로 지정합니다.

 

 

 

 

그러면 New Hard Disk가 추가된 것을 확인할 수 있습니다.

이제 가상의 물리 하드디스크가 장착되었으니, 파티션을 생성해야 합니다.

이제 VM 장치를 실행합니다.

 

 

 

 

 

정상적으로 새로운 하드디스크가 장착됐다면,

VMware의 우측 상단에 두 개의 하드디스크가 연결된 것이 확인됩니다.

 

 

 

 

# ls -l /dev/sd*

 

위 명령어를 통해 연결된 하드디스크를 확인할 수 있습니다.

 

sda부터 sdz까지 하드디스크가 추가될 때마다 이름이 지정됩니다.

sdb가 생성됐다는 것은 두 번째 하드디스크가 정상적으로 추가됐다는 뜻입니다.

 

이제 하드디스크를 본격적으로 사용하기 위해선, 파티션을 나눠야 합니다.

 

 

 

파티션 나누기

# fdisk /dev/sdb

fdisk를 이용해서 파티션을 나눌 수 있습니다.

처음에 파티션을 나눌 때는 n을 입력합니다.

 

 

 

그러면 파티션 타입을 어떻게 나눌 것이냐고 질문이 나오는데, P(primary)를 입력합니다.

 

 

 

 

당장 파티션은 1개만 나눌 것이기 때문에 1,

Firsit sector와 Last sector는 파티션의 크기를 의미합니다. enter만 계속 눌러주면, 자동으로 하드디스크 전체 크기를 잡아줍니다.

 

 

 

그러면 자동으로 파티션이 나눠지고,

다시 처음 상태인 command 입력상태에 들어와집니다.

이때 p를 입력하면, 파티션을 어떻게 나눌 것인지에 대해 예정된 사안을 알려줍니다.

 

 

 

 

 

다시 처음 상태인 command 입력상태에 들어와집니다.

이때 w를 누르면, 파티션이 나눠지고 완료됩니다.

 

 

 

 

 

이제 논리적인 파티션인 sdb1을 확인할 수 있습니다.

 

 

 

파일시스템 생성하기

파티션을 나눈 다음엔, 해당 파티션에 파일 시스템을 생성해야 합니다.

# mkfs.ext4 /dev/sdb1

위 명령어로 파티션에 파일 시스템을 생성합니다.

 

 

 

 

 

/mydata 폴더를 생성한 후, sdb1을 이 폴더에 마운트합니다.

 

 

 

 

 

재부팅될 때 자동으로 마운트

근데 여기서 끝나면, 재부팅할 때 마운트가 풀립니다.

따로 지정을 해야 합니다.

 

 

gedit /etc/fstab

fstab 폴더로 이동한 후,

 

 

위 파일의 최하단에

 

 

 

/dev/sdb1      /mydata            ext4                  defaults      0      0

위 코드를 입력합니다.

저장 후 재부팅합니다.

 

 

 

 

 

# df

위 명령어로 현재 연결된 디스크를 확인할 수 있는데, 재실행을 해도 자동으로 /mydata에 /sdb1이 연결된 것을 확인할 수 있습니다.

 

 

 

 


디스크 9개 준비하기

위 문단에서 한 것처럼, 위 표의 형태로 vm 설정에서 하드디스크를 장착합니다.

 

 

 

 

장착이 완료되면 위와 같은 모습입니다.

 

 

 

 

 

실행한 후, 잘 연결됐는지 확인합니다.

 

 

 

Linux raid autodetect 파티셔닝

아까와 동일하게 파티셔닝을 진행하는데, 추가로 한 가지 작업이 더 필요합니다.

 

 

 

 

바로, 파티션의 타입을 'Linux가 아닌 'Raid'로 변경해야 합니다.

 

 

 

 

[n - p - enter 반복]으로 파티션을 생성하고 나면,

Command 입력 상태가 됩니다. 이때 t를 누릅니다.

그러면 파티션 타입을 바꿀 수 있는데, 이때 fd를 누릅니다.

그러면 Raid 상태가 되고, w를 누르면 파티셔닝이 완료됩니다.

 

위 과정을 sdb부터 sdj까지 반복진행합니다.

 

 

 

 

파티셔닝이 끝나면, sdb하드디스크의 경우 뒤에 숫자가 붙어서 sdb1이 생성됩니다.

전부 파티셔닝이 잘 된 모습입니다.

 

 

 

 

 

 


Linear Raid 생성하기

두 번째와 세 번째 하드디스크를 연결해서, Linear Raid를 생성하겠습니다.

 

 

# mdadm --create /dev/md9 --level=linear --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm --create <하나로 묶을 Raid 디스크의 이름과 위치> --lever=<Raid 종류> --raid-devices=<묶을 디스크의 갯수> <묶을 디스크 경로1> <묶을 디스크 경로2>

위 명령어를 입력합니다.

 

 

 

그러면 sdb1과 sdc1가 묶여서 md9이 생성됩니다.

 

 

 

 

# mdadm --detail --scan

위 명령어로 현재 연결된 raid 디스크를 확인합니다.

 

 

 

 

 

 

mdadm --detail /dev/md9

위 명령어로 해당 디스크의 상태를 확인합니다.

 

 

 

 

 

# mkfs.ext4 /dev/md9

Raid 디스크도 동일하게 파일시스템을 생성합니다.

 

 

 

df로 연결을 확입합니다.

 

 

 

마운트가 재부팅할 때 자동으로 되도록, fstab 파일을 수정합니다.

 

 

 

 


Raid0 생성하기

mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1

위 명령어로 sdd1과 sde1을 묶어서 md0(Raid 0)을 생성합니다.

 

 

 

Linear Raid 생성과정과 동일하게,

- md0에 파일 시스템 생성

- md0을 raid0 폴더에 마운트

- fstab 수정

을 해줍니다.

 

 

 


Raid1 생성하기

mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdf1 /dev/sdg1

다른 방식과는 다르게, Raid1 방식은 부팅디스크로 쓸 수 없다고 경고가 나옵니다.

y를 눌러서 계속 진행합니다.

 

 

 

이후 과정은 Linear Raid 생성과정과 동일하게,

- md0에 파일 시스템 생성

- md0을 raid0 폴더에 마운트

- fstab 수정

을 해줍니다.

 

 

 


Raid5 생성하기

mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdh1 /dev/sdi1 /dev/sdj1

 

총 3개의 하드디스크를 묶어줍니다.

 

 

 

Linear Raid 생성과정과 동일하게,

- md0에 파일 시스템 생성

- md0을 raid0 폴더에 마운트

- fstab 수정

을 해줍니다.

 

 

근데, 여기서 끝내면 안 됩니다.

 

 

 


Raid 설정 저장하기

# mdadm --detail --scan

 

ARRAY /dev/md9 metadata=1.2 name=localhost.localdomain:9 UUID=10ad26fc:680d37e6:d919d5e9:fd8da456
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=3b49b602:cbedd210:b59d8254:043a5ef5
ARRAY /dev/md1 metadata=1.2 name=localhost.localdomain:1 UUID=ea46ef33:72daeee6:5d63a256:04c62e0f
ARRAY /dev/md5 metadata=1.2 name=localhost.localdomain:5 UUID=d1f3d48e:c1cf2f25:90a7517c:f9459d86

위 명령어를 누르면 나오는 값들을 복사합니다.

 

 

 

 

# gedit /etc/mdadm.conf

위 명령어를 통해, mdadm 설정파일로 갑니다.

 

 

 

name, localhost 항목만 제거한 뒤 저장합니다.

 

 

 

재부팅 후 df로 확인하면,

지금까지 설정한 raid들이 다시 잘 연결된 것을 확인할 수 있습니다.

여기까지 완성한 후, VMware 스냅샷을 꼭 남깁니다.

 

 

 

 

 


Raid 하드디스크 고장내기 & 복구모드 활용하기

우선 파일 결함 테스트를 위해서, 부트 파일을 각 레이드의 testFile 폴더에 복사합니다.

그리고 시스템 종료합니다.

 

 

 

하드디스크 위치를 확인하면서,

 

0:2

0:4

0:6

0:9

를 제거합니다.

 

 

 

 

부팅하면, 응급복구모드에 들어가집니다.

root 비밀번호를 입력해서 root 프롬포트로 들어갑니다.

 

 

 

 

살아있는 파티션들을 확인합니다.

원래는 sdj까지 있어야 하는데, 4개가 사라졌습니다.

 

 

 

 

 

df로 연결된 raid 드라이브를 확인합니다

raid1과 raid5는 결함허용 방식인 덕분에, 아직 연결되어 있는 것을 확인할 수 있습니다.

 

 

 

 

testfile도 살아있습니다.

 

 

 

raid1: RaidDevices는 2개이지만, 작동은 하나만 되고 있다는 것을 확인할 수 있습니다.

 

 

 

raid5: RaidDevices는 3개이지만, 작동은 2개만 되고 있다는 것을 확인할 수 있습니다.

 

 

 

 

# mdadm --run <레이드 위치>

Linear raid와 raid0은 강제로 작동시키려 해도, 작동하지 않습니다.

 

 

 

 

# mdadm --stop <레이드 위치>

따라서 정상이 아닌 raid는 부팅을 중단시킵니다.

 

 

 

 

 

# nano etc/fstab

정상이 아닌 raid의 경로를 fstab에서 전부 제거(주석처리)합니다.

 

 

 

 

 

 

이 상태로 재실행하면, 일단 다시 정상부팅이 됩니다.

 

 

 


Raid 하드디스크 교체하기

아까 제거한,

0:2

0:4

0:6

0:9

하드디스크를 다시 생성합니다.

 

다시 추가한다고 해서 바로 복구되지 않습니다. 다시 처음부터 수동으로 연결해야 합니다.

 

 

 

 

fdisk로 sdc, sde, sdg, sdi를 파티셔닝합니다.

파티셔닝할 때 [n - p - enter 3번 - t - fd - w]를 합니다.

 

 

 

 

Linear Raid인 md9 & Raid 0인 md0 복구하기

# mdadm --stop /dev/md9

 

기존의 md9을 중단한 후,

 

 

 

# mdadm --create /dev/md9 --level=linear --raid-devices=2 /dev/sdb1 /dev/sdc1

다시 md9을 생성합니다.

 

 

 

그러면 sdb1이 이미 연결된 곳이 있다는 경고 문구가 나오는데, 무시하고 y를 눌러서 진행합니다.

 

 

 

이제 md9은 정상적으로 작동합니다.

 

 

 

 

md0도 동일하게 sdd1과 sde1을 묶어서 생성합니다.

 

 

 

 

Raid1인 md1 & Raid5인 md5 복구하기

Raid1, Raid5는 아직 데이터가 살아있기 때문에, 위와 같이 완전히 초기화하는 방식은 사용하면 안 됩니다.

그래서 기존의 Raid에 새로운 장치를 추가하는 방식으로 진행합니다.

 

 

# mdadm /dev/md1 --add /dev/sdg1
# mdadm /dev/md5 --add /dev/sdi1

위 명령어를 통해, 각각 빈 공간을 채울 수 있습니다.

 

 

 

정상적으로 잘 추가된 것을 확인할 수 있습니다.

 

 

 

 

mdadm 재설정

mdadm --detail --scan
ARRAY /dev/md5 metadata=1.2 name=localhost.localdomain:5 UUID=d1f3d48e:c1cf2f25:90a7517c:f9459d86
ARRAY /dev/md1 metadata=1.2 name=localhost.localdomain:1 UUID=ea46ef33:72daeee6:5d63a256:04c62e0f
ARRAY /dev/md9 metadata=1.2 name=localhost.localdomain:9 UUID=8eb2e958:b48fa20c:114abcbc:1f7db946
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=fd04b315:0a2e1b8e:8c8595bd:f88a2690

아까와 동일하게 scan 정보를 복사한 후,

 

 

 

# gedit /etc/mdadm.conf

mdadm 설정 파일에 localhost와 name 부분을 제거해서 등록합니다.

 

 

 

 

 

# gedit /etc/fstab

부팅시 자동 마운트가 되도록, fstab 설정 파일의 주석을 제거합니다.

 

 

 

 

이제 시스템을 재부팅해도 잘 인식합니다.

반응형