/* 테스트 1 버전 - 성능 최적화 적용 */ 마무: 리눅스독학

블로그 소개


*여러분들의 따듯한 댓글은 5%, 팔로우는 10% 블로그 포스팅 속도와 퀄리티를 높여줍니다.*

프로필

팔로우 해주시면 포스트할 때 큰 힘이 됩니다!!! 사실 저도 이 팔로우가 무슨 기능이 있는지는 모르겠습니다만, 팔로우 수가 늘면 '날 응원해주는 사람들이 있구나' 생각이 들어서 큰 힘이 됩니다.

팔로어

다른 페이지로 이동


리눅스 독학 페이지 운영체제 독학 페이지 네트워크 독학 페이지 시스템 해킹 하드웨어 독학 페이지 프로그래밍 독학 페이지 보안 페이지

오스 페이지 다이어트 정보 페이지 게임 정보 페이지 인생 꿀팁


****사진을 클릭하시면 페이지로 이동할 수 있습니다!****

<===***===↓↓↓You can use translate using chrome ↓↓↓===***===>

레이블이 리눅스독학인 게시물을 표시합니다. 모든 게시물 표시
레이블이 리눅스독학인 게시물을 표시합니다. 모든 게시물 표시

2020년 10월 28일 수요일

Virtual Box 설치 및 리눅스 설치

안녕하세요~ 마무입니다. 이번에는 "VMware"와 같이 유명한

무료 가상화 프로그램 Virtual Box 설치

와 "리눅스를 설치하는 방법"에 대해 포스트하겠습니다.사실 "VMware"도 무료 버젼이 있지만 뭔가 유로와 무료가 나눠져 있고 무료를 쓰면 찜찜하단 말이죠.. 그런분들인 경우 "Virtual Box"란 가상화 프로그램을 사용해 공부하시는 분들도 많습니다! 

"VM"이 뭔지, 리눅스를 배워야하는 이유, 세팅의 자세한 정보들은 VMware 리눅스 설치 포스트 에서 자세히 써놓았으니 정보들을 거기서 배우시고, 여기선 VirtualBox를 설치하시길 바래요!

---목차---

1. Virtual Box 설치
i) 플랫폼(platform)이란?

2. 리눅스 설치

-----------

입니다.

여기서 못 찾은 정보는 
에서 찾아보시면 있을 수 있습니다!!!




1. Virtual Box 설치



먼저 "virtual Box"를 설치하기 위해 당연히 구글에 검색을 해줍니다!




이렇게 구글에 "virtualbox"라고 치면 당연히 맨 상단에 "Oracle의 VirtualBox"가 뜨는데, 그냥 바로 다운 사이트로 이동하게 밑에 "Downloads"를 클릭해줍니다.

그러면






이렇게 영어로 된 화면이 나오실텐데, 당황하지 마시고 위 그림처럼 플랫폼 패키지(platform packages)의 "Windows hosts"를 클릭해서 다운을 받아줍니다. 

i) 플랫폼(platform)이란? 


컴퓨터 공학에서의 Platform(플랫폼) 이란 "무언가를 할 수 있게 해주는 시스템, 환경"을 말합니다. 컴퓨터에선 "응용프로그램들이 실행될 수 있게 환경을 만들어주는" "운영체제"가 바로 "플랫폼(Platform)"이죠.

물론 비슷한 의미로, 방송에서의 플랫폼이란, "방송을 할 수 있게 해주는 환경, 프로그램" 즉, 아프리카냐, 트위치냐, 카카오티비냐를 말하죠.

저희 대부분은 윈도우 운영체제를 쓰실테니, "windows hosts"를 눌러 설치를 하는겁니다.
혹시 애플 맥을 사용하시는 분이라면 "OS X"를, 리눅스는 "Linux distributions"를 눌러서 설치해주세요!

클릭을 하시고 다운을 받으시면



이렇게 설치파일인 "setup, 설치 마법사(Wizard)"프로그램이 뜨실 겁니다. 
"next"를 눌러주세요.

그리고



그 다음 여러가지로 "VirtualBox"와 함께 설치될 프로그램들과 저장될 위치를 보여주는데요, 보통 기본적으로 'C드라이브'에 깔려고 합니다. 

하지만 만약 C드라이브 공간이 부족하다 등 다른 드라이브에 깔고 싶으시다면
오른쪽에 있는 "Browse"를 클릭하시고



이렇게 "C"부분만 다른 드라이브 이름으로 바꿔주시고 OK누르시면 됩니다.
저 같은 경우 D드라이브에 설치하기 위해 "D"로 바꿨습니다.

그리고 다시 돌아가 "next"를 누르시면



이렇게 추가적인 옵션을 보여줍니다만 그냥 "next"를 눌러주시면 됩니다.

그러면



이렇게 빨간 글씨로 "Warning"이라 뜨는데, 이 "Vritualbox"나 "VMware"와 같은 가상화 프로그램들은 설치될 때 자기 가상화 머신(VM)이 쓸 가상의 네트워크 인터페이스를 만들거든요? 그것들 때문에 설치중 잠깐 인터넷 연결이 끊길거라고 경고하는 겁니다

만약 인터넷이 끊기면 안되는 중요한 작업중이라면 저장하시고, "Yes"를 눌러주세요.

다음 "Yes"를 누르시면



이렇게 설치 준비가 완료됐다고 뜹니다. 이제 설치하겠단 "Install"을 누르시면 설치가 됩니다.  이후 좀만 기달리시면




따란~ 이렇게 설치가 완료됐다고 뜨며, "Finish"를 누르시면 자동으로 설치된 "Virtualbox"가 실행됩니다.




그러면 이렇게 "Virtualbox"가 실행이 됩니다!! 저 같은 경우 이전에 사용하던 정보(VM)가 있어서  그대로 "서버1", "www서버"라는 이름의 가상머신이 있는 겁니다.

여러분들은 아무것도 없을텐데, 그게 정상입니다!



2. 리눅스 설치


아마 새로 설치하셔서 키시면





이렇게 화면이 나오실텐데, 화살표가 가리키는 "새로 만들기(N)"를 클릭해줍니다.






이름은 사실 아무렇게나 지어도 되지만, 나중에 "서버(서버 프로그램을 구동하는 컴퓨터)"용과 클라이언트(서버에 접속하는 컴퓨터) 등 여러개의 VM을 만들거니, 구분이 가능한 이름으로 지어줍니다.





메모리 크기는 자신의 컴퓨터가 메모리가 16기가 이상이다 그러시면 넉넉히
2기가, 메모리가 8기가 정도다 하면 어쩔 수 없이 1기가만 줍시다.

하지만 보통 2기가 이상 주는게 좋습니다만 만약 램이 부족해 1기가만 주셨다 해도, 이후 "swap(RAM 공간이 부족할 때 RAM역할로 사용하는 디스크 공간)"이란 공간을 배정할 때 좀더 넉넉히 주시면 되니(보통 RAM 2배 정도 주시면 됩니다.) 너무 걱정할 필요는 없습니다.






가상머신에서 사용하는 디스크이니, 디스크도 가상이겠죠? 그 가상 디스크를 만들겠다는 겁니다 "만들기"를 눌러주세요





보시면 "VDI, VHD, VMDK" 3개가 보이는데, "VDI란" VirtualBox 프로그램만 사용할 수 있는
가상디스크
이고, "VHD란" MicroVirtualFit 프로그램과 VirtualBox 둘다 사용할 수 있는 가상디스크

그리고 "VMDK란" VirtualBox와 VMware 둘다 사용가능한 가상 디스크입니다.

저 같은 경우 "VMware"도 쓰고 있기에, 혹시 몰라 VMDK를 선택하고 넘어가겠습니다.





"동적 할당"이란 "dynamic Allocation"과 같은 말로, 원래 "동적(Dynamic)"은 컴퓨터에서
"실시간으로 처리하는" 이란 뜻이 있습니다.

저희들이 와이파이나 가정에서 공유기를 통해 인터넷을 사용하면 보통 "DHCP"로 체크가 돼 있을텐데, 이 "DHCP(Dynamic Host Configuration Protocol)"란 실시간으로(자동으로) 남는 IP를 할당해주는 정책입니다.

마찬가지로 여기서 동적 할당이란, 실시간으로 VM(가상머신)이 사용하는 디스크 양만큼
내 실제 호스트(윈도우)에서 사용하는 디스크의 공간을 할당하겠다

라는 뜻입니다.

그래서 이 동적 할당을 체크하시면 이따가 10GB만큼 가상 디스크를 만든다해도 바로
제 실제 호스트(윈도우)에서 사용하는 디스크 공간이 바로 10GB 사라지는게 아니라, 가상머신이 가상디스크에 데이터를 저장할 때마다 저장한 크기만큼 10GB에 가까워지는 겁니다.

당연히 "동적 크기"를 체크해주시고

2GB 단위로 분할하기란, 가상머신에서 2GB이상의 크기의 데이터를 가상디스크에 저장할 때 2GB씩 나눠 저장할 것인지 그대로 저장할 것인지 선택하는 것인데

사실 이 둘의 속도차이는 그리 심하지 않다고 하니 2GB를 체크해줍니다.





디스크 크기입니다.  공부용으로서 버츄얼박스에선 8기가이상 주라고 하지만, 보통 서버역할을 할 가상머신이라면 30GB정도 주는게 좋습니다. 어짜피 동적 할당을 체크했기에
바로 30GB 사라지지 않기에 걱정은 안하셔도 됩니다.





이제 가상머신을 만들었으면, 가상머신에 설치할 OS(운영체제) 다운받아야죠?
https://www.centos.org/ 센토스 공식 사이트에 들어가

위 사진처럼 "More Download choices"를 눌러줍니다.






이중에서 최신 버젼을 사용하고 싶으시면 '8'쪽의 "mirrors"를 눌러주시면 되고
"2020년도 리눅스마스터 시험"을 준비하고 싶으시면 버전 '6' x86_64 아키텍처가 써있는 "CD모양을" 눌러주시면 됩니다.

저는 VMware에서 7버전 이상을 설치했으니, 이번에 Virtual Box에선 6.9이하 버전을 다운받아 보겠습니다.

참고로 i386은 32비트용이고 x86_64는 64비트라고 생각하시면 됩니다.





위에 "x86_64"와 같이 "CD모양"을 눌러주시면 이렇게 다운받을 수 있는 미러사이트들이 나오는데, 맨 위에 추천하는 4개의 국내 미러사이트중 아무거나 눌러서 다운 받으시면 됩니다.

개인적으론 맨 위 카카오톡이 젤 빠른 것 같아요



6.9이하의 버전인 경우 누르시면 이제 이렇게 여러 파일들이 헷갈리게 나오는데,
우린 "-bin-DVD1.iso" 이렇게 제일 용량이 큰 파일을 다운받아야합니다.

기본적으로 운영체제의 대부분의 기능은 "커널"이라 부르는 프로그램에 있으므로 용량이 제일 큽니다. 그러니 제일 큰 파일이 보통 정상적 커널입니다. (물론 각 용도에 따라 용량을 줄인 minimal 이런 것도 있습니다.)

클릭해서 다운해주세요!




다운 받은 뒤에, 머신에서 위에 호살표로 표시한 곳을 눌러줍니다.

그리고 다운받은 "CentOS iso"파일을 선택해주세요






그럼 이제 이렇게 삽입이 됩니다.






이후 가상머신을 시작시키면 이렇게 여러가지가 뜨는데, 맨 위에
"Install or Upgrade an existing system"에서 "enter"를 눌러주세요






그러면 실제 OS CD를 삽입했을 때, 문제가 있나 없나 테스트하는 과정이 나오는데
어짜피 우린 가상의 CD인 iso를 사용하므로 그냥 "SKIP"를 엔터해주세요




이제 언어 설정이 나오는데 스크롤을 내려 중간쯤에 있는 한국어를 선택하고
NEXT를 클릭해주세요





그 다음에 나오는 키보드 선택도 한국어를 선택하고 다음~




기본 저장 장치를 선택하고 다음을 눌러주세요




뭔가 경고를 하는데, 위에 써있듯이 저희 디스크는 "가상"이라서 이런 경고가 뜨는 겁니다.
걱정말고 주황색으로 표시한 곳을 눌러 넘어가세요~





호스트명을 정하라는데, 네트워크에서 식별되는 컴퓨터 이름을 말하는 것으로,
아무렇게나 짓는데, 저 같은 경우 웹사이트 서버로 사용할 것이기 때문에 'www'로 짓겠습니다.

아니면 localhost.localdomain 상태로 그냥 다음 누르셔도 됩니다.





UTC는 이제 국제 표준시죠? 체크하든 안 하든 큰 상관은 없어요~
맘대로 하시고 다음을 눌러주세요!






"ROOT 또는 root"는 유닉스/리눅스 계열 운영체제에서 가리키는 "관리자"로
모든 권한을 가지고 있는 슈퍼계정입니다.

모든 권한을 가진 계정이기에 절대로 해킹되선 안되는 1순위 아이디로, 패스워드는 원래
매우매우 복잡하게 하는게 맞습니다만, 저희가 만드는 VM은 해킹당할 일이 없으니
그냥 6자리 이상으로 만들면 됩니다.





모든 공간 사용을 체크하고 다음을 눌러줍니다.





이건 기본적으로 깔리는 프로그램(패키지)를 어떻게 할거냐 선택을 하는 것인데,
어짜피 필요한 프로그램(패키지)가 있으면 나중에 그때그때 다운 받으면 됨으로
그냥 Desktop을 선택하고 다음을 눌러줍니다.





설치중입니다.




재부팅을 눌러주세요




"앞으로"를 눌러주시고





GPL 라이센스에 동의를 해야 리눅스를 사용할 수 있습니다.
동의합니다를 체크후 앞으로를 눌러주세요






일반 계정을 만들어달라고 하는데, 이 과정을 넘어가면 귀찮은 과정이 더 생깁니다.
어짜피 일반 계정은 필요하니 까먹지 않을 아이디와 패스워드로 간단히 만들어줍니다.

이것도 설명했다시피 VM이기에 그냥 취약해도 "예"로 넘어가줍니다.







시간은 네트워크를 통해 날짜 및 시간을 동기화를 체크해주시고
'NTP서버'는 시간을 동기화해주는 서버라고 생각하시면 됩니다. 아무거나 선택하고 앞으로를 눌러주세요



KDUMP는 사실 공부하는 저희 입장에선 굳이 할 필욘 없습니다. 체크 안하고 넘어가셔도 되고, 해도 됩니다.






회원이면 여기에 보통 회원 아이디가 뜹니다. 여기에 안 뜨셔도
밑에 "기타..."를 눌러서 다른 아이디를 로그인할 수도 있습니다.





회원 아이디나 아니면 아까만든 관리자 아이디 "root"를 적어주고
로그인 누르시면 패스워드를 입력하라고 뜹니다.
패스워드를 적어주시면 이제 드디어 리눅스를 킨 겁니다.





참고로 "root"로 로그인을 하면 이렇게 경고를 주는데, 이걸 가지고 겁먹을 필요 없습니다. 원래 모든 권한이 있는 관리자 아이디이므로 당연한거니까요.

다시 보지 않습니다 누르고 닫기 해주세요~





따란 이렇게 GUI(Graphic User Interface), 즉 그림과 마우스와 키보드를 사용할 수 있는
모드로 리눅스가 켜집니다만 저희가 사용하는 명령어들은 터미널에서 쳐야합니다.






이렇게 마우스 우클릭을 눌러 "Open in Terminal"를 눌러주시면







이렇게 명령어를 실행할 수 있는 터미널이 나옵니다!




자 이렇게 해서 이번에는 "VMware"와 같은 가상화프로그램 "VirtualBox"를 설치하는 방법에 대해서 포스트해봤습니다.

당연히 생각보다 오랜 시간이 걸렸고요 ㅠㅠ 도움이 되셨다면, 따뜻한 댓글이나 팔로우를 해주세요! 저에게 정말 정말 큰 힘이 돼 포스트 퀄리티와 속도를 올려줍니다! 

그럼 다음에도 더 좋은 퀄리티 포스트로 찾아뵙겠습니다!
 



2020년 1월 21일 화요일

mdadm 매우 자세히!


안녕하세요 마무입니다~ 이번에는 지난번에 배운 RAID개념을 이용해
" 리눅스 RAID"를 "mdadm" 명령어를 통해 구성해볼 겁니다만 당연히 "소프트웨어 RAID" 입니다.

이 포스트를 다 읽으시면 이제 리눅스에서 완벽하게 소프트웨어 RAID를 구성할 수 
있으실 겁니다!

RAID 개념에 대한 전 포스트를 못 보신분들은
RAID 개념: https://mamu2830.blogspot.com/2020/01/raid-linear-0156100115.html
을 꼭 보고 오시고

마운트랑 파일시스템의 개념이 부족하신 분들은
마운트 : https://mamu2830.blogspot.com/2019/11/fdisk-df-etcfstab-blkid.html
파일시스템이란 :  https://mamu2830.blogspot.com/2019/10/chs-lba.html
을 보고 오시면 되겠습니다!

----목차----

1. 명령어 "mdadm"의 옵션과 파일들

i) --create [만들 /dev/md{숫자}] --level=[레이드버전] --raid-devices=[장치수] [레이드 만들 장치명1] [레이드 만들 장치명2]...
또는 -C [만들 /dev/md{숫자}] -l [레이드 버전] -n [장치 수] [레이드 만들 장치명1] [레이드 만들 장치명2]...

ii) "--level"와 같은 형식의 옵션과 "-l 형식"의 옵션의 차이점

iii) --detail [/dev/md{숫자}]
또는 -D [/dev/md{숫자}]

iv) --stop [풀 (/dev/md{숫자}]
또는 -S [풀 /dev/md{숫자}]

v) 레이드에 대한 슈퍼블록을 제거하는 옵션 "--zero-superblock", 그리고 슈퍼블록을
지웠는데도 파티션이 존재 하는 경우(sgdisk -Z)

vi) [장치를 추가할 /dev/md{숫자}] --add [추가할 장치명]
또는 [장치를 추가할 /dev/md{숫자}]  -a [추가할 장치명]

vii) [장치를 제거할 /dev/md{숫자}] --remove [제거할 장치명]
또는 [장치를 제거할 /dev/md{숫자}]  -r [제거할 장치명]

viii) 현재 RAID상황이 적혀있는 "/proc/mdstat" 파일


2. RAID 0, 1, 10, linear, 5 구성하기

i) 디스크 추가

ii) fdisk 명령어로 RAID용 파티션 만들어주기

iii) yum install -y 으로 "mdadm"다운받기

iv) RAID 0

v) RAID 1

vi) linear RAID

vii) RAID 5

viii) mkfs 명령어로 만든 RAID에 파일시스템 포맷하기

ix) 만든 RAID를 마운트하여 사용, /etc/fstab에 등록하기

x) 디스크를 제거한 다음, 복구기능 확인하기

xi) RAID 10

3. 소프트웨어 RAID 6에 Centos를 설치해보자



여기서 못 찾은 정보는 여기서 한번 찾아보세요!


------------


1. 명령어 "mdadm"의 옵션들

소프트웨어 레이드를 만들 때 사용하는 명령어는
mdadm('m'ultiple 'd'evice 'adm'inistration)라고 하는데요 특이하게 이 "mdadm" 명령어는 레이드를 만들 때 여러 옵션들이 필요하기에, 옵션들이 무엇무엇이 있는지 먼저 
알아보겠습니다!



i) --create [만들 /dev/md{숫자}] --level=[레이드버전] --raid-devices=[장치수] [레이드 만들 장치명1] [레이드 만들 장치명2]...


어우 뭔가 되게 복잡하게 옵션들이 있죠? "--create", "--level", "--raid-devices" 처럼
말이죠.

그런데 왜 이렇게 복잡하게 옵션을 한번에 적었을까요, 말 그대로 옵션이니까 순서는 중요하지 않으니 한 개씩 쓰면 좋을텐데 말이죠!

왜 한번에 썼냐면, 딱 예외적으로 "mdadm"을 이용해 RAID를 구성할 때는 옵션의 순서를 지켜야합니다.

다시 말해서 "--create [만들 /dev/md{숫자}]" 다음에 "--level=[레이드버전]" 그 다음에 
"--raid-devices=[총 장치수] [레이드 만들 장치명1] [레이드 만들 장치면2]..." 이렇게
순서를 지켜야 한다는 것이죠.

순서를 지켜야 한다는 것은 다시 말해 순서를 외워야 한다는 것인데, 외운다는 것에서
부터 벌써 우리들은 짜증이 납니다.. 그럴 수 밖에 없죠 ㅠㅠ

그래서 제가 그나마 외우는 형식을 알려드리려고 합니다. 보다 쉽게 이해하면서 외우기
위해서죠.

mdadm --create /dev/md0(/dev/md0이라는 이름의 파일로 레이드 볼륨을 만들겠다)
--level=0(레이드 레벨 0로) --raid-devices=2(레이드를 이루는 장치는 총 2개이며) 
/dev/sdc1 /dev/sdd1(/dev/sdc1와 /dev/sdd1로 이루어져 있다)

이런식으로, 논리적인 순서를 생각하시면서 외우시면 좀 더 쉽게 외워지실 겁니다!

물론 목차에서 설명했던 것처럼

mdadm -C [만들 /dev/md{숫자}] -l [레이드 버전] -n [장치 수] [레이드 만들 장치명1] [레이드 만들 장치명2]...

이렇게 "--create"와 같은 옵션 대신  "-C"와 같은 짧은 옵션을 사용하여 만들어도 됩니다.

그리고 같은 옵션이기 때문에 

mdadm --create [만들 /dev/md{숫자}] -l [레이드 버전] -n [장치 수] [레이드 만들 장치명1] [레이드 만들 장치명2]...

이렇게 긴 옵션과 짧은 옵션을 섞어서 사용해도 됩니다.

여기서 RAID를 만들 때의 옵션은 순서를 지켜야 한다는 것을 알았다쳐도,
또 하나의 어떠한 의문이 생기지 않습니까? 

그 의문이란 바로 "--level"와 같이 "--" 짝대기 두개와 단어가 합쳐진  옵션과 
"-l 또는 -L"와 같이 "-" 하나와 한 글자가 합쳐진 짧은 옵션차이가 무엇이냐 하는 
의문이죠 



ii)"--level"와 같은 형식의 옵션과 "-l" 형식의 옵션의 차이점


일단 확실한 것은 둘다 같은 "옵션"이라는 겁니다. 그러니까 둘다 생김새만 다르지 
사용하는 용도는 똑같습니다.

하지만 약간의 차이가 있으니, 일단 당연히 생김새도 "--level"과 "-l"처럼 다르지만
"--level" 같은 옵션은 "="가 뒤에 붙고 그 뒤에 띄어쓰기 없이 옵션 값을 넣는 경우가 있는가 하면, 또 어떤 경우엔 "--create [옵션 값]" 이렇게 띄어쓰기를 한 다음 값을 주는 경우가 있습니다.

"-l"과 같은 짧은 옵션은 무조건 띄어쓰기를 하고 옵션 값을 주는 것비교하면 상당히 
변칙적이죠

이런 변칙성 때문에 상당히 헷갈리고 고통받는 분들이 꽤 있으실 겁니다.
저 또한 그랬거든요 하지만 알고보면 규칙이 있다는 것!

"--level" 와 같은  옵션의 규칙

1. 주로 어떤 프로그램에서, 사용하는 명령어의 옵션이다.(여기선 mdadm이란 프로그램이 사용하는 옵션이죠?)

2. 프로그램에서 정해놓은 옵션 값중 하나를 줄 때는 "--level=5" 이렇게 띄어 쓰기 없이 
"="에 붙여서 옵션 값을 준다.
("mdadm" 프로그램에서 정해놓은 옵션 값들은 linear, 0, 1, 2, 3, 4, 5, 6 중 하나니깐!)

3. 프로그램에서 정하지 않은 옵션 값을 줄 때는 "--create /dev/md5"와 같이 띄어쓰기를
한 다음 옵션 값을 준다.(파일의 이름 같은 경우, 프로그램에서 정하지 않았고, 임의로 주기 때문에)

"프로그램에 정해놓은 옵션 값"이라는 것은 아직 공감이 잘 안되실텐데 나중에
"systemctl"이런 명령어를 통해 시스템 설정을 바꾸실 때 공감이 잘 되실겁니다.

다시 쉽게 정리하자면, "--level"와 같은 옵션에 값을 줄 때는
'레이드 레벨은 정해져 있지? 그러면 "=" 붙여서 띄어쓰기 없이 옵션 값을 줘야겠군!' 
이렇게 생각하시고

"--create"같은 경우엔
'파일의 이름은 만드는 사람에 따라 달라지므로, 프로그램에서 정하지 못했을거야! 
그러니 띄어쓰기를 한 다음 옵션 값을 줘야겠어!'

이렇게 생각하시면 덜 헷갈리며 외우기 좀 더 편하실 겁니다!



iii) --detail [/dev/md{숫자}]


mdadm --detail [/dev/md{숫자}]
또는 mdadm -D [/dev/md{숫자}] 이렇게 사용하며

이름 그대로, 옵션 값으로 준 레이드의 디테일한 정보를 보여주는 옵션입니다.
디테일한 정보를 보여주기에 주로 레이드에 문제가 생겼는지 확인하는 용도로 사용합니다.

또한 방금 만든 레이드에도 오류나 문제가 있을 수 있기 때문에,
레이드를 만들자마자 이 --detail 옵션으로 확인해주시는 게 좋습니다.



iv) --stop [해제할 /dev/md{숫자}]

mdadm --stop [/dev/md{숫자}]
또는 mdadm -S [/dev/md{숫자}] 이렇게 사용하며

이름 그대로. 옵션 값으로 준 레이드를 정지시키는 옵션입니다.
여기서 "레이드를 정지"라고 하면 약간 이해가 안 되실텐데 그림으로 설명하자면



이렇게 "mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdc1 /dev/sdd1"
라 명령어를 준 직후엔 윗 그림처럼 "mdadm"이 RAID를 유지(계산)하고 있는 상황입니다.

여기서 저희가 "mdadm --stop /dev/md0" 을 하면 이건 
"야 mdadm, 너 /dev/md0 계산 그만해"라고 하는 꼴이죠

그러면 계산 멈추라고 mdadm에게 말했으니



mdadm은 RAID계산을 멈췄으니 윗 그림처럼 "/dev/md0"은 사라지는 겁니다.

그런데 이 이후에 RAID 0을 구성했었던, /dev/sdc1 이나 /dev/sdd1을 이용해 다른
RAID를 구성하려고 하면 "appears to be part of a raid array" 이렇게 
다른 레이드의 구성요소로 보인다고 하며 뭐라 뜨는데

이건 파일시스템에서 배웠었던 메타데이터인 "슈퍼블록"이 남아있어서 그럽니다.
"mdadm --create"로 디스크들을 한번이라도 레이드로 묶으면 각 디스크에는
이 디스크는 RAID 0의 장치중 하나이고, 512KB씩 데이터를 분산저장해라 이런식의 
"사용설명서(슈퍼블록)" 같은 것이 남있는것이죠

그래서 "--zero-superblock"이란 명령어를 이용해 완전하게 슈퍼블록까지 지워준 다음 새로운 RAID를 만들어줘야 합니다


v) 레이드에 대한 슈퍼블록을 제거하는 --zero-superblock,
그리고 슈퍼블록을 지웠는데도 파티션이 존재 하는 경우


저희가 레이드를 "--STOP"만 한 상태에서 "/dev/sdc1과 /dev/sdd1"을 이용해 다른 
레이드를 구성하려고 한다면






이런식으로 RAID 0에 속해있다며 사용을 못합니다.
이 현상은 위에서 iv)에서 말했던 것처럼 각 파티션에 남아있는 레이드 슈퍼블록 때문에
그런 것이거든요

그림으로 보여드리자면










이런식으로 슈퍼블록(사용설명서)이 남아 있습니다.  완전히 깔끔하게 레이드를 새로 만들기 위해 "mdadm --zero-superblock /dev/{sdc1,sdd1}"을 해줄겁니다.

"{}"는 "find 명령어"편에서 신나게 배웠었죠? 기억 안나거나 모르시는 분들은 보고오시길!

이제 슈퍼블록을 지우면 






그림처럼 이제야 비로소 완벽히 레이드를 취소한 상태가 됩니다.

자 그런데 분명 슈퍼블록을 지웠는데도






이렇게 빨간색으로 밑줄을 친 곳처럼 (partition table exists on [파티션] but will be lost
or meaningless after creating array)라고 특정 파티션이 아직도 존재한다고 하는 경우가
있습니다.

이런 경우가 왜 생기나면 "fdisk /dev/sdc"으로 sdc1파티션을 만든게 아니라
실수로 fdisk /dev/sdc1에서 sdc1파티션을 만든 경우 이런 상황이 만들어집니다.
이렇게 되면 진짜 골 때립니다 파티션을 제거하고 다시 만들어도, 계속 저 문구가
뜨거든요

이런경우 당황하지 마시고
"sgdisk -Z /dev/sdc1" 을 해주신다음 재부팅을 해주세요(당연히 "mdadm --stop"으로
레이드 푸시고, "--zero-superblock /dev/sdc1" 으로 슈퍼블록 지우신 다음에 말이죠)

만약 sdc1 파티션을 이미 지운상태면, "fdisk /dev/sdc"로 sdc1파티션을 그대로 다시 
만들어준다음, "sgdisk -Z /dev/sdc1"을 하고 재부팅을 해주세요

재부팅을 한 뒤 레이드를 다시 만들려고 하시면





이제 이렇게 깔끔히 잘 되실겁니다~




vi) [장치를 추가할 /dev/md{숫자}] --add [추가할 장치명]


mdadm [디스크를 추가할 RAID 볼륨] --add [볼륨에 추가할 디스크]
또는 mdadm [디스크를 추가할 /dev/md{숫자}]  -a [볼륨에 추가할 디스크]
형식으로 사용을 하고

기존의 레이드 볼륨에 새로운 디스크를 추가할 때 사용하는 명령어이고,
복구 기능이 있는 RAID 볼륨에만 씁니다.

복구기능이 있는 RAID인 경우, 결함이 있는 디스크를 그냥 제거하고 새로운 디스크를 
 "--add"옵션으로 추가해주면 자동으로 복구가 되거든요

그럼 결함이 없는 멀쩡한 RAID에 디스크를 하나 추가하면 어떻게 되느냐?
(ex:3개의 디스크로 이루어진 RAID 5에 디스크를 하나를 추가한 상황이라 치면)

이미 RAID 5를 만들 때 "--raid-devices=3"라고 적었기에 4개의 디스크가 RAID 5가 되진
않고, 1개의 디스크가 spare(여분)용이 됩니다.

여분용 디스크는 뭐냐? 말 그대로 여분용으로 작동도 안하고 그대로 있다가 한 디스크가
결함이 생기면, 결함 있는 디스크와 바뀝니다.

어디까지나 복원기능이 있는 RAID 이야기이니,
RAID 0이나 linear RAID같은 복구 기능이 없는 RAID에선  --add 옵션을 사용하지 않는다는 것을 알아두세요

복구기능이 없는 non-redundant RAID(0, linear)는 --stop했다가 파티션 초기화 하고
새로 --create로 만들어야 합니다.




vii) [장치를 제거할 /dev/md{숫자}] --remove [제거할 장치명]


mdadm [장치를 제거할 RAID 볼륨] --remove [제거할 장치명] 
또는 mdadm [장치를 제거할 RAID 볼륨] -r [제거할 장치명]
이렇게 쓰이며

보통 RAID의 결함있는 디스크를 제거할 때 사용합니다. 
당연히 복구기능이 있는 RAID(1,5,6)에 쓰이고, 복구기능이 없는 RAID는 전부 --stop
했다가 새로 만듭니다.



viii) 현재 RAID상태가 적혀있는 "/proc/mdstat" 파일


곧 저희가 실제로 RAID를 구성할 텐데요, 아무래도 사람이기에 실수해서 다시
지웠다가 만들 수도 있고, 또 다른 목적에 의해 만들었던걸 다시 만들 수 있는데

그럴 때마다 저희는
"Device or resource busy"라던가 "appears to be part of a raid array"라던가
이미 사용되고 있다고 뜨는 걸 자주 보게 되실텐데요

그럼 활성화 되고 있는, 혹은 사용중인 레이드가 있는 건 어떻게 확인할까요?

그럴 때 사용하는 파일이 바로! "/proc/mdstat"입니다

"/proc(process)"란 프로세스 디렉토리에 있으니 즉,  현재 실행중인 어떠한 것에
대한 파일이고 md(multiple devices)stat(시간에 관련된 상태정보) 이름대로

레이드에 대한 상태정보가 적힌 파일입니다.

말 그대로 "파일"이기 때문에 읽으려면 vi든 more이든 cat이든 파일을 읽는 명령어를
아무거나 사용해도 되지만, 그냥 간단하게 확인만 할 거라서 보통 "cat"을 많이 씁니다.







이렇게 "cat /proc/mdstat"라고 치니 현재 RAID 0이 /dev/sdc1과 /dev/sdd1으로
만들어져 있는게 보이네요, 또한 이 RAID 0의 용량은 2091008블록(2091008 blocks)
이구여

1.2 버젼의 슈퍼블록을 쓰며(super 1.2), 각 디스크에 512KB씩 데이터를 분산 저장하네요
(512k chunks)  

chunks는 "덩어리"이런 뜻인데 그냥 전체 파일을 512KB씩 덩어리처럼 떼어내서
각 디스크에 저장한다 이렇게 생각하시면 될 것 같습니다.

어우 옵션 설명이 너무 길었죠.. 이제 본격적으로 RAID 1, 0, 10, linear, 5을 차례대로
만들어보겠습니다!



2. RAID 0, 1, 10, linear, 5 구성하기


저희가 RAID를 구성하기 전에 기본적으로 해야할 일이 있습니다.
바로 디스크 추가죠!


i) 디스크 추가


저희는 RAID 0(2개), RAID 1(2개), linear RAID(2개), RAID 5(3개)로 총
1GB크기의 SCSI 디스크를 "9개" 추가해줄 겁니다.





이렇게 하드웨어 세팅에 들어가서






이렇게 디스크를 1GB 크기로 9개를 추가해 줍니다.

리눅스에서 디스크는 추가한 순서대로 sda, sdb, sdc, sdd, sde, sdf, sdg .... 이렇게 생기는데
여기선 전부다 New Hard Disk(SCSI)이렇게 보이니까 어떤게 sdc인지 sdd인지 순서를
모르겠죠?

이럴 땐 당황하지 마시고 순서를 알고 싶은 디스크를 누르신다음





이렇게 표시한 'Advanced(더 세부적인..)'을 누르시면






이렇게 SCSI(SCSI 형식의 디스크의) 0(0번 슬롯의) : 2(0부터 시작하니, 2라는 건 3번째죠?)
라고 써져있습니다.

이 디스크는 3번째이니 이 디스크는 리눅스 내부에서 보면 "/dev/sdc"로 나올겁니다
이런 방식으로 어떤 디스크가 몇 번째 디스크인지 알 수 있습니다.

그러나 VMware에선 "7"번이 예약된 번호라고 하며 안 쓰입니다.
그러니 원래 8번째(0부터 시작했으니)인 하드디스크는 7번이 아닌 8번에 배치가
되는 것이죠

물론 VMware를 껏다 키면




이런식으로 제대로 순서가 나오긴 합니다. ㅎㅎ

자 이렇게 해서 총 9개의 SCSI의 1기가 디스크를 추가해줬으니 파티션을
나누고 RAID용으로 바꾸기 위해 리눅스를 키겠습니다.


ii) fdisk 명령어로 RAID용 파티션 만들어주기


리눅스 터미널에 들어가서 "ls /dev/sd* " 이렇게 치시면




이렇게 뜰 겁니다.

sdc1이나 sdd1와 같은 "1"로 끝나는 파일이 없다는 건 파티션이 하나도 없다는 뜻이에요
측 저희는 이제부터 /dev/sdc~ /dev/sdk까지 RAID 파티션을 만들어줄 겁니다.

"fdisk /dev/sdc" 이렇게 친 다음 추가하겠다는 "n"을 치고
어짜피 파티션은 하나만 쓸 것이기 때문에, 엔터만 눌러 디폴트로 1개의 파티션을
만들어 줍니다





이렇게 말이죠 (n누르고 전부 엔터) 그 다음

"p"로 확인해보시면






성공적으로 전체 디스크의 용량인 파티션이 만들어졌고, 오른쪽을 보시면
system 밑에 'linux'라고, 현재는 리눅스용인걸 볼 수 있습니다.

여기서 바꾸겠다는 "t"를 누르시고




이렇게 RAID의 16진수 "fd"를 입력해 줍니다.

물론 당연히 RAID의 16진수가 뭐였는지 기억이 안난다고 당황하실 필요는 없습니다
대문자 "L"를 하면 모든 종류가 나오기 때문이죠~

여기까지 끝낸다음 다시 "p"로 확인하고





이렇게 RAID용으로 바뀐 것을 잘 확인했으면 "w"를 입력해 저장하고 나가줍니다

자 이렇게 추가한 9개의 디스크를 모두 레이드 파티션을 만들어주시면





이렇게 모두 1이 달린 모습이 될 겁니다 ㅎㅎ 이제 "mdadm"명령어를 통해 RAID를
구성하면 끝~~~일 수도 있지만 "mdadm"프로그램이 없을 수도 있습니다.

그러니 "mdadm"을 먼저 다운해줄게요


iii) yum install -y 으로 "mdadm"다운받기


어려운 거 아니죠~





이렇게 바로 다운해줍니다. 물론 "yum"은 네트워크가 되야지 사용할 수 있다는 건
아시죠?






이렇게 뜨신다면 이미 최신버젼의 "mdadm"이 깔려있다는 것이므로 걱정할 필요 없습니다.

자 프로그램도 준비 됐기 때문에 RAID를 구성할 수 있습니다.


iv) RAID 0

이야 긴 글을 읽다가 드디어 본격적으로 RAID를 하나 구성해보네요

헷갈리지 않게 저희는 순서대로 "/dev/sdc1와 /dev/sdd1"을 RAID 0
"/dev/sde1와 /dev/sdf1"는 RAID 1
"/dev/sdg1와 /dev/sdh1"는 linear
"/dev/sdi1와 /dev/sdj1, /dev/sdk1"는 RAID 5로 만들겁니다.


"mdadm --create /dev/md0(레이드 0이니까 0으로 짓겠습니다.) --level=0 --raid-devices=2 /dev/sdc1 /dev/sdd1" 이렇게 레이드 0을 만들어줍니다





네 아주 잘 됐죠~


v) RAID 1

이번에는 /dev/sde1와 /dev/sdf1을 이용해 RAID 1을 만들어보겠습니다.

"mdadm --create /dev/md1(이번엔 레이드 1이니 1해볼게요) --level=1 
--raid-devices=2 /dev/sde1 /dev/sdf1" 이렇게 레이드 1을 만들어줍니다.





그런데 이상한 문구가 뜹니다. "this array has metadata at the start and may
not be suitable as a boot device. 

If you plan to store '/boot' on this device please 
ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90"
이라고 말이죠

이건 "지금 현재 만들려는 레이드는 메타데이터가 시작부분에 있어서, 부트용으로는 적합하지 않다" 라는 뜻입니다.

그래서 "만약 부트용 디렉토리랑 이 레이드 디바이스를 마운트해 사용할 생각이면
부트로더가 md/v1.x 메타데이터 (저흰 1.2 버젼 metadata죠?)가 이해하게 만들던가,
만들 때 --metadata=0.90 옵션을 추가해서 만들어 사용해라" 라고 경고하는 겁니다.

이런 경고가 안뜨게 하시고 싶으시면



레이드 1 만드실 때, "--metadata=0.90"을 붙이시면 됩니다.

그런데 어짜피 부트용으로 안쓸거면 그냥 무시하셔도 돼요~



vi) linear RAID


linear는 "--level=linear"라고 쓰면 됩니다.

"mdadm --create /dev/md/linear --level=linear --raid-devices=2 /dev/sdg1 /dev/sdh1"
이렇게 말이죠

어라? 왜 /dev/md[숫자] 형태가 아니라 "/dev/md/[이름]" 이렇게 만들었냐고요?
제가 미리 말씀을 못 드렸었네요 하하..

레이드 볼륨을 만들때 방법은 "/dev/md[숫자]" 또는 "/dev/md/[원하는 이름]" 이렇게 
총 2가지 입니다 ㅎㅎ





네 잘 만들어졌죠 그리고 참고로, /dev/md/[원하는 이름] 이렇게 만들경우'



 "/dev/md127"처럼 임의의 숫자로 볼륨이 만들어진다음 거기에
"/dev/md/[원하는 이름]"의 링크파일이 생깁니다!



vii) RAID 5

자 저희가 학수고대하던 RAID 5입니다!

만드는 거 딱히 어렵지 않죠? 장치가 3개 이상이라는 것만 다르죠~

"mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/{sdi1,sdj1,sdk1}"
이렇게 만들어 줍니다.





네 잘 만들어졌네요~~~


viii) mkfs 명령어로 만든 RAID에 파일시스템 포맷하기


마운트편에서 배웠었죠, 모든 볼륨은 사용하려면 관리해주는 파일시스템이
있어야 한다고 말이죠!

저희가 만들어준 /dev/md{0,1,5,127}을 모두 "mkfs"명령어를 이용해 파일시스템을
포맷해줍시다.

리눅스 7부턴 xfs를 기본 파일시스템으로 채택했으니, xfs로 만들어주겠습니다





항상 확인해주시고~  자 mkfs.[파일시스템 종류] [포맷할 볼륨]
해줍시다.


























오우 쉽다 그죠?




ix) 만든 RAID를 마운트하여 사용, /etc/fstab에 등록하기


자자 마운트편에서 제가 말했엇죠~ 배(볼륨)과 파일시스템(선장)이 있어도
선착장(디렉토리)가 없으면 교류를 할 수가 없죠~

마운트할 디렉토리를 만들어준다음, 마운트를 하고 영구적으로 사용하기 위해 
"blkid" 명령어로 UUID를 알아내서 "/etc/fstab"에 등록하겠습니다.

저는 헷갈릴 일이 없게 디렉토리들을 각각 "/raid0, /raid1, /raid5, /raid_linear" 이렇게
만들어줄 겁니다.




네, 잘 만들어졌네요~ 다시 말하지만 "{}"가 뭔지 모르시면 꼭 "find 포스트"를 보고 오시길
바랍니다~


디렉토리가 만들어졌으니 마운트해줘야죠~ 




네 제가 말했었죠, 컴퓨터 공학에선 무소식은 희소식이라구~

잘 됐겠지만 확인을 혹시 모르니 "mount -l"로 확인해 봅시다





최근에 만들어졌으니 맨 밑에만 보면 됩니다, 네 md{0,1,5,127}이 잘 마운트 됐죠?

이제 /etc/fstab에 등록을 할 건데, 전에도 말했다시피 항상 "UUID"로 등록하는게 매우
안전합니다.

"UUID"를 알아내기 위해 "blkid"명령어를 쳐봅니다.





네네 잘 확인했네요~ 하지만 저거 일일이 복사해서 /etc/fstab에 적기 너무 귀찮자나요?
여러 방법이 있지만





저는 위 사진처럼 "윈도우의 메모장"을 연다음 UUID를 복사하여 붙이고 사용할 때마다
일일이 복사하여 붙여넣습니다

참고로 "VMware"에서의 복사와 붙여넣기는 기존의 복사(ctrl+c)와 붙여넣기(ctrl+v)에서
"shift"만 더 붙이면 됩니다. 

즉 VMware에서 "shift+ctrl+c"로 복사해서 윈도우 메모장에 "ctrl+v"로 붙이는 거죠
반대로 하는 건 굳이 말 안해도 아시죠?





마운트 포스트에서 배운대로, 위 사진처럼 /etc/fstab에 등록해줍니다.
그런데 딱 한가지 "4번째 필드 default"에 추가로 "nofail"을 붙여줍니다(default,nofail)

왜 "nofail"를 붙이냐면, 저희가 다음에 복구기능을 확인하기 위해 몇몇 디스크를 제거할
건데 그러면 "/etc/fstab"에 등록한 디스크에 오류가 생겼기에 부팅이 안되서
"응급복구"모드로 들어가야 한단 말이죠

그런 과정을 없에기 위해 "nofail" 옵션을 준겁니다.

여기서 "5번째 필드 dump"는 1로 사용 안하시냐 의문이 있으실 수 있는데, 저 덤프는
저희 현재 사용하는 RAID랑은 관련이 없습니다.

말 그대로 다른 장치들(DVD, USB)이런 거에 덤프를 생성할 때 사용하는 걸로
나중에 백업 명령어를 다룰 때 사용할 겁니다.

자 위 사진처럼 잘 썼으면 :wq로 저장하고 나가 줍니다.

아 그리고 생각해보니 저희 "--detail"옵션을 안 써봤군요
"mdadm --detail /dev/md*"로 한번 보고 갑시다






제가 주황색으로 표시한 곳만 보시면 됩니다.

state : clean 으로 문제 없고
failed devices : 0을 보니 문제 있는 디스크도 없네요

정보가 너무 기니

RAID 5만 더 보고 넘어가도록 하겠습니다.




네 위처럼 클린 상태고 모든 디스크가 정상작동하고 있습니다~

자 그럼 이제 RAID를 사용하는 주목적인 복구를 한번 실험해볼겁니다.
복구가 안되는 레이드들(RAID 0, RAID linear)중 "RAID 0"를 대표로 실험할 것이고요

복구가 되는 레이드들(RAID 1,2,3,4,5,6,10...)중 "RAID 5"를 대표로 실험할 것입니다.



x) 디스크를 제거한 다음, 복구기능 확인하기


복구가 제대로 됐는지 확인하려면 데이터가 있어야 하지 않겠습니까?
저희는 RAID 0과 RAID 5로 실험을 할 것이기 때문에 /raid0과 /raid5의 디렉토리에
큰 용량의 파일을 넣어보겠습니다.

혹자는 '파일을 만들면 안되나요?' 라고 하실 수 있는데, RAID개념 포스트에서 다뤘다시피
striped 방식은 512KB의 청크사이즈로 나눠 저장하기에 512KB보다 큰 파일을 넣어야 
복구가 제대로 됐는지 확인 할 수 있습니다.

저희는 명령어 find를 배웠기에 512KB보다 큰 사이즈의 파일을 찾아서 복사 해넣으면 되는데, 아직 안 보시고 오신분들을 위해 제가 하나 찾아놨습니다.

"/var/log/messages" 파일을 복사해서 "/raid0"과 "/raid5"에 넣어주세요





잘 복사된 모습입니다.

이제  RAID 0, 5의 디스크를 하나씩 제거할 것인데, 잘못 제거하면 안되니 순서를
확실히 하고 갑시다.

RAID 0"/dev/sdc1(0:2)과 /dev/sdd1(0:3)"로 이루어졌었고
RAID 5"/dev/sdi1(0:9)와 /dev/sdj1(0:10), /dev/sdk1(0:11)"로 이루어졌었죠

sdd1(0:3)과 sdk1(0:11) 디스크를 제거하겠습니다.

centos를 먼저 종료한 뒤, 디스크를 제거해야 합니다.






삭제하기 전에 꼭 "Advanced.."를 누르셔서 확인을 하셔야 합니다.
확인을 해서 0:3과 0:11을 제거하시고





이렇게 제거한 다음 "ok"를 누르고 나가셔서 다시 리눅스를 켜줍니다.





다시 켜서 확인해보니, 복구기능이 없는 "/raid0"은 그냥 데이터가 사라져버렸고,
복구기능이 있는 "/raid5"는 아직 그대로 남아있네요






"--detail" 옵션으로 raid0을 확인해보니, 아예 "inactive", 즉 비활성상태가 됐네요
당연히 디스크 2개중 하나 /dev/sdd1은 사라졌고요





비활성상태가 됐다는 건, 결국 마운트도 끊어졌다는 이야기입니다.
"df -l"로 확인해보니 /raid5는 있는데 /raid0은 안보이죠


저희 예상은 볼 수 없는 절반크기의 파일이 있었을거라 예상했었지만
마운트가 끊어졌기에 "/raid0" 디렉토리에 아무것도 없었던 겁니다.


그에 비해서 복구기능이 있는 RAID5는 어떨까요?





inactive가 아닌 여전히 "clean"상태네요 물론 옆에 "degraded(구성요소가 바뀐)"이
붙어있지만요 그래서 마운트가 여전히 되어있던 겁니다.

그리고 당연히 디스크하나가 "removed"로 제거됐다고 뜹니다.





이렇게 파일의 끝 내용만 읽는 "tail"명령어를 이용하니 정상적으로 파일을 읽을 수
있고요, 즉 멀쩡하다는 것이죠


자 그럼 우리 이번에는 기존의 레이드볼륨에 디스크를 추가하는 mdadm의 "--add" 옵션
를 한번 써보겠습니다.

다시 리눅스를 종료하신다음, 1GB크기의 SCSI 디스크를 2개 추가해줍니다.




이렇게 말이죠

그리고

 


"Advanced"를 눌러서 확인해보시면 빈 공간에 자동으로 순서있게 디스크가 채워진 걸
볼 수 있습니다.

즉 저희가 추가한 디스크 2개는, 순서대로 "0:3과 0:11"에 들어갔을 겁니다.

다시 리눅스를 켜줍니다.

"--detail"로 확인해 보시면








여전히 디스크는 없어진 상태입니다. 이제 여기서 "--add"를 쓰는 겁니다.

물론 새로운 디스크를 추가했기에 다시 레이드용 /dev/sdd1 과 /dev/sdk1 파티션을 만들어줘야겠죠? "fdisk /dev/sdd", "fdisk /dev/sdk"를 하여 얼렁 만들어줍니다.

그리고 나서 "mdadm [레이드 볼륨] --add [추가할 디스크]" 해줍니다.







보시면 "md0(레이드0)"은 복구기능이 없기에 추가가 안됩니다.
하지만 "md5(레이드 5)"는 복구기능이 있기에 간단히 추가가 됩니다.


"mdadm --detail /dev/md5"로 확인해 보시면





위 사진처럼 다시 원상복귀가 된걸 볼 수 있습니다.

이렇듯 RAID의 복구 기능은 단순히 고장난 디스크를 제거하고, 새로운 디스크를 끼어넣기만 해도 복구가 된다는 걸 지금까지 확인한 겁니다.

'그럼 md0은 어떻게 해요?'

어떻게 하긴요~ /etc/fstab에서 지우고, 마운트 해제하고, 레이드 정지하고, 슈퍼블록 지우고, 새로운 RAID를 만들어야죠~


xi) RAID 10


레이드 개념 포스트에서 배웠었죠? "RAID10"은 RAID 1을 만든 뒤, 그것들 다시 RAID 0으로
묶는거라고 말이죠~

새로운 디스크 추가하기 귀찮으니 저희는 기존에 만들어 두었던 
"RAID 0"과 "RAID 1"을 제거하고, 2개씩 RAID 1로 묶고 묶은 걸 
RAID 0으로 다시 묶겠습니다.

1. /etc/fstab 파일을 열어서 RAID 0과 1을 지운 다음

2. "umount /dev/md1" 또는 "umount /raid1" 을 해줍니다.

3. "mdadm --stop /dev/md{0,1}" 을 해주시고

4. "mdadm --zero-superblock /dev/sd{c1,d1,e1,f1}" 을 해줍니다.


4단계를 하신 다음 다시 RAID 1을 2개 만들어 줍시다

mdadm --create /dev/md10 --level=1 --raid-devices=2 /dev/{sdc1,sdd1}
mdadm --create /dev/md11 --level=1 --raid-devices=2 /dev/{sde1,sdf1}

이렇게 말이죠 그런데 만약

mdadm: super1.x cannot open /dev/sdf1: Device or resource busy
mdadm: /dev/sdf1 is not suitable for this array.
mdadm: create aborted

이렇게 특정 파티션이 바쁘다며, 레이드에 적합하지 않다고 뜨신다면
sgdisk -Z [특정 파티션] 이렇게 하신다음 재부팅을 해주세요

그리고 다시 
mdadm --create /dev/md11 --level=1 --raid-devices=2 /dev/{sde1,sdf1}
이렇게 하시면 되실겁니다.

"cat /proc/mdstat"으로 확인해보시면




네 이렇게 현재 md10, md11 이렇게 RAID 1 두개가 만들어졌습니다.

이제 다시 RAID 0으로 두개를 묶어줄 겁니다. 어떻게? 아주 간단해요!
원래 디스크 파티션을 적던 공간에 레이드볼륨을 넣어주면 됩니다.

mdadm --create /dev/md100 --level=0 --raid-devices=2 /dev/{md10,md11}

이렇게 말이죠





네 잘 만들어진 걸 볼 수 있습니다.






"cat /proc/mdstat"으로 확인하면 RAID 0이라고 나오지만 말이죠 ㅋㅋ

"--detail"로 확인해도






디스크 이름이 md[숫자]로 된건 말곤 달라진 게 없습니다.

생각보다 되게 쉽죠?



오늘도 진~~~~~~~~짜 긴 글이 됐네요... 읽느라 고생하셨습니다!!

사실 이 포스트에 RAID6에 리눅스를 설치하기도 같이 하려고 했는데, 그러면 너무 길어져서 그건 다른 포스트에 쓰기로 했습니다.

제가 힘들게 쓴 만큼(매일 10시간 이상 3일동안) 꼭 도움이 됐길 바래요 ㅠㅠ

도움이 되셨다면, 따뜻한 댓글 달기, 팔로우, 좋아요 클릭 부탁합니다!

정말로 여러분의 성원은 저에게 다 느껴지고 그만큼 보람을 느끼고, 큰 힘이 되어 포스트 퀄리티를 높이는데 도움이 됩니다!

그럼 다음에 더 좋은 퀄리티의 포스트로 뵙겠습니다!