실습과제
이번 실습과제로는 Server(b)에 LVM을 설정하는 실습을 수행하였다. 과제 수행 결과는 아래와 같다.


LVM을 설정하는 자세한 과정은 블로그에 따로 작성해두었다. 아래 링크를 클릭하면 해당 내용을 확인할 수 있다.
https://devlog-j.tistory.com/12
리눅스에 LVM 설정하기
이번에는 리눅스에 LVM을 설정하는 실습을 수행하였다. 우선 VMware로 들어가서 Server(b)에 각각 2GB, 3GB짜리 하드디스크를 추가한다. 그럼 아래와 같이 하드디스크 sde, sdf가 새로 추가된 것을 터미널
devlog-j.tistory.com
새로 배운 내용
이번 수업에서는 RAID1과 RAID0의 장점을 결합한 RAID1+0과 LVM을 설정해보았다. 또한 쿼터를 설정하여 각 사용자별로 사용가능한 저장공간을 설정하는 실습을 수행해보았다.
RAID1+0은 말 그대로 RAID1과 RAID0을 혼합한 방식으로, 예를 들어 하드디스크 4개가 있으면 2개씩 RAID1로 설정하고 생성된 RAID1 2개를 묶어 다시 RAID0으로 설정하는 것이다. 이렇게 RAID를 구성하면 데이터를 나누어 저장하여 저장속도가 빠른 RAID0의 장점과 데이터를 복사해두어 데이터의 안전성이 확보된다는 RAID1의 장점을 모두 확보할 수 있다. RAID1+0을 설정하는 과정은 아래와 같다.
우선 VMware에서 리눅스 Server에 하드디스크 4개를 추가한 후, 터미널에서 mdadm을 설치하고 각각의 디스크에 대한 파티션을 생성한다. 그리고 mdadm명령어를 이용하여 RAID1+0을 생성한다. sdb1과 sdc1, sdd1과 sde1로 각각 RAID1을 구성하고 생성된 2개의 RAID로 RAID0을 구성하면 된다.

생성된 RAID1+0에 대한 파일시스템을 만들고 이를 마운트할 디렉토리를 생성하여 마운트한다.

그럼 아래와 같이 생성된 RAID1+0이 잘 마운트된 것을 확인할 수 있다.

시험삼아 생성된 RAID1+0에 파일을 하나 저장해두고 결과를 확인해보았다.

이어서 RAID1+0이 부팅 시에 자동으로 마운트될 수 있도록 /etc/fstab에 RAID1+0의 내용을 추가해준다.

그리고 mdadm의 버그를 예방하기 위해 /etc/mdadm/mdadm.conf에 3개의 RAID의 ARRAY 내용을 추가한 후 'name=server:숫자'를 삭제한다.

최종적으로 update-initramfs -u 명령을 입력하고 재부팅하면 아래와 같이 RAID1+0이 정상적으로 작동하는 것을 확인할 수 있다.

다음으로, RAID1+0이 데이터의 안전성을 확보함을 확인하기 위해 VMware에서 각 RAID1에 포함되어 있는 하드디스크를 한 개씩 삭제하고 다시 리눅스를 부팅하였다. 하드디스크를 삭제하였으므로 예상대로 RAID1+0이 작동하지 않는다.

우선 md10의 작동을 멈추고 디스크가 1개씩 밖에 남지 않은 md2와 md3으로 RAID0(md10)을 다시 구성한다.

md10을 다시 마운트해보면, 아까 저장해둔 파일이 복원되었음을 확인할 수 있다.

이제, 하드디스크를 다시 추가해주기 위해 md10의 마운트를 해제하고 md10의 작동을 중지시킨다. 그리고 /etc/fstab에서 /dev/md10의 내용을 주석 처리하고 Server를 종료한다. 다시 VMware에서 Server에 하드디스크 2개를 추가하고 터미널에서 파티션을 생선한 후 md2와 md3에 추가한다.

다시 /etc/fstab의 주석을 제거하고 재부팅을 해주는데, 재부팅 후에도 RAID1+0이 작동하지 않는다면 이는 mdadm의 버그일 가능성이 있다. ls /dev/md*을 입력하여 RAID를 확인해보니, md127과 같은 알 수 없는 RAID가 생성되어 있었다. 따라서 md127을 멈추고 md10으로 RAID0을 다시 구성하였더니 RAID1+0이 정상적으로 작동하는 것을 확인할 수 있었다.

다음으로, 리눅스에 LVM을 설정해보았다. LVM이란 논리적 볼륨을 관리하기 위한 프로그램이다. LVM기반 시스템은 파티션과 같은 물리적 볼륨을 논리적으로 나누어 사용할 수 있다. 즉, 하드디스크가 2개만 있어도 논리적으로 저장공간을 3개로 나누어 사용할 수 있다는 것이다. 여기서 등장하는 용어들이 몇 가지 있는데 이를 정리하면 다음과 같다.
PV(Physical Volume): LVM에서 사용 가능한 블록 장치, 파티션
PE(Physicla Extent): PV를 구성하는 블록. 크기가 일정함
VG(Volume Group): PV들의 집합. LV를 할당할 수 있음. Linear 방식, Stripping 방식, Mirroring 방식으로 설정이 가능
LE(Logical Extent): LV를 구성하는 블록. 크기가 일정함
실습에서는 하드디스크 2개를 추가하고 논리볼륨을 3개로 나누어 보았다. LVM을 생성하는 과정은 실습과제를 정리한 블로그글에 자세히 나와 있으니 실습일지에는 추가하지 않도록 하겠다.
마지막으로 쿼터를 설정하여 사용자별 저장공간을 나누는 실습을 진행하였다. 리눅스는 다중 사용자 시스템이므로 여러 사용자가 동시에 접속하여 사용할 수 있다. 이는 저장공간을 함께 사용할 수 있다는 의미이기도 하므로 각 사용자가 사용할 수 있는 저장공간을 제한하는 것이 필요하다. 이때 사용하는 것이 바로 쿼터이다. 쿼터를 설정하는 과정은 아래와 같다.
우선, 새로운 하드디스크를 Server에 추가하고 파티션을 생성한 후 userHome이라는 디렉토리를 생성하여 마운트한다.

다음으로 adduser 명령어로 userHome을 홈 디렉터리로 갖는 사용자 user01과 user02를 추가한다.

다음으로 /etc/fstab에 마운트한 파티션에 대한 내용을 추가하는데, 이 때 아래와 같이 옵션으로 usrjquota=aquota.user,jqfmt=vfsv0 을 추가해준다.

이어서 remount 명령어로 userHome에 sdd1을 다시 마운트하고 quota를 설치한다.

다음으로 쿼터 DB를 생성한다. 이를 생성하는 과정은 아래 사진과 같다. 여기서 quotaoff -avug는 쿼터를 끄는 명령, quotacheck -augmn은 쿼터 관련 체크를 하는 명령, rm -f aquota.*는 생성된 쿼터 관련 파일을 삭제하는 명령, touch aquota.user aquota.group은 그룹의 쿼터 관련 파일을 생성하는 명령이다.

이어서 쿼터 관련 파일을 root 계정 외에는 접근하지 못하도록 설정한다.

다음으로 edquota -u 사용자 명령어를 통해 각 사용자의 사용 가능 저장공간을 설정한다.

이제 새로 생성한 사용자 계정으로 들어가 적당한 크기의 파일을 저장해본다. 처음에 /boot/vmlinuz.old 파일을 복사하여 저장하려고 했는데 저장이 되지 않아 파일의 권한을 확인해보니 root계정만 접근이 가능하도록 설정되어 있었다. 그래서 다른 파일을 찾아보았고 /boot/initrd.img 파일을 복사하여 user01 계정으로 저장해보았다. 그랬더니 용량을 초과한다는 문구가 나왔고 확인해보니 /boot/initrd.img 파일의 일부만 저장된 것을 확인할 수 있었다.

다음으로 edquota -p 명령어로 user02에도 user01과 동일하게 저장공간을 할당해주었다. 그리고 repquota 명령어로 userHome을 확인해보니 아래와 같은 내용을 확인할 수 있었다. 여기서 grace는 soft 용량을 초과한 부분에 대해 임시 보관해주는 기간을 의미한다.

문제가 발생하거나 고민한 내용 + 해결 과정
이번에 실습을 진행하면서 LV를 생성하는 과정에 어려움을 겪었다. LV를 설정하는 과정에서 이름을 지정하지 않고 Enter키를 눌려 버려 임시로 lvol0이라는 이름으로 LV가 생성되어 버린 것이다. 생성된 LV를 지우고 다시 만들기 위해 tldr, man, --help 페이지를 모두 찾아본 결과 lvremove 명령어를 찾을 수 있었고, 이를 사용하여 lvol0을 삭제하고 myLV1이라는 이름으로 LV를 다시 생성할 수 있었다.
참고할 만한 내용
이번 실습을 진행하면서는 따로 참고한 사이트는 없다. 참고한 내용이 있다면 lvm의 tldr, man, --help 내용이다.
회고
이번 실습에서는 RAID1+0, LVM과 쿼터에 대해 익힐 수 있었다. 저번 수업까지 들었을 때는 RAID5나 RAID6이 가장 우수한 RAID 방식이라고 생각했는데, RAID1+0에 대해 배우고 나니 RAID1+0이 RAID5나 RAID6보다 더 활용도가 높게 적용될 수도 있겠다는 생각이 들었다. 그리고 RAID를 묶어 또 다른 RAID를 구성할 수 있다는 점이 새로웠다. 이외에도 이번 실습을 통해 얻은 것이 있다면 바로 tldr, man, --help 페이지를 내가 스스로 참고하고 그곳에서 얻은 내용을 적용해 보았다는 것이다. 이전까지는 교수님이 활용하시는 모습을 보고 따라하는 정도였다면, 이번에는 실습하다 발생한 오류에 대해 나에게 필요한 명령어가 무엇인지 능동적으로 찾아보고 활용하는 경험을 한 것 같다. 이번 경험을 바탕으로 앞으로 tldr과 man 페이지와 더욱 친해질 수 있을 것 같다.
'Linux 실습일지' 카테고리의 다른 글
Linux 실습일지(8) - KDE, 리눅스 사용자 권한 (0) | 2023.02.01 |
---|---|
Linux 실습일지(7) - Bash Script (0) | 2023.02.01 |
리눅스에 LVM 설정하기 (1) | 2023.02.01 |
Linux 실습일지(5) - Linux RAID (0) | 2023.02.01 |
리눅스에 RAID 구성하기 (RAID 5) (0) | 2023.02.01 |