본문 바로가기
프로그래밍 놀이터/Script(Python)

[책 정리] 08-2. 파일 시스템 관리하기 - 리눅스 커맨드라인 쉘 스크립트 바이블

by 돼지왕 왕돼지 2020. 4. 28.
반응형

논리 볼륨 관리하기


-

파티션 확장은 같은 실제 하드 드라이브에 사용 가능한 공간의 범위까지로 제한된다.

하드 드라이브에 더 이상 사용할 수 있는 공간이 없다면 더 큰 하드 드라이브를 구해서 수동으로 새 드라이브에 기존의 파일시스템을 옮겨야 한다.

이보다 편리한 방법은 다른 하드 드라이브 파티션을 기존의 파일시스템에 추가함으로서 기존의 파일시스템에 동적으로 더 많은 공간을 추가하는 방법이다.

리눅스 논리 볼륨 관리자(Linux Logical Volume Manager, LVM) 소프트웨어 패키지가 이런 일을 할 수 있다.

LVM 은 전체 파일 시스템을 재구축할 필요 없이 리눅스 시스템의 디스크 공간을 조작할 수 있는 쉬운 방법을 제공한다.



* 논리 볼륨 관리 레이아웃 살펴보기


-

여러 PV(Physical volume) 요소는 볼륨 그룹(Volume Group, VG)을 만들어 함께 모아둔다.

LVM 은 실제 하드 드라이브와 같은 VG 를 다루지만 실제로는 VG 는 여러 하드 드라이브에 분산된 여러 개의 물리적 파티션으로 구성될 수 있다.

VG 는 실제로 파일시스템을 포함하는 논리 파티션을 만들 수 있는 플랫폼을 제공한다.


구조의 최종 계층은 논리 볼륨(Logical Volume, LV)이다.

LV 는 리눅스에 파일시스템을 만들기 위한 파티션 환경을 만들며 이 파티션은 리눅스에서는 실제 하드 디스크의 파티션과 비슷하게 동작한다.

리눅스 시스템은 물리적 파티션처럼 LV를 처리한다.


사용자는 표준 리눅스 파일시스템 중 어느 하나를 사용하여 LV 를 포맷하고 마운트 지점에서 리눅스 가상 디렉토리에 추가할 수 있다.



* 리눅스에서 LVM 사용하기


-

리눅스 LVM 으로 사용자는 단순한 커맨드라인 명령을 사용하여 리눅스 논리 볼륨 관리 환경을 완벽하게 관리할 수 있다.

LVM1, LVM2 이렇게 두 가지 버전이 있다.

커널 2.6 이상인 경우 LVM2 를 이용할 수 있다.



** 스냅샷 찍기


-

원래의 리눅스 LVM 은 논리 볼륨이 활성화되어 있는 동안 다른 장치에 기존 논리 볼륨을 복사할 수 있다.

이 기능을 스냅샷이라고 한다.

스냅샷은 잠글 수 없는 중요한 데이터를 백업하기 위한 훌륭한 도구다.

전통적인 백업 방법은 보통 백업 매체에 복사할 때 파일을 잠근다.

스냅샷을 이용하면 복사를 수행하는 동안 웹 서버 또는 db 서버를 계속 실행할 수 있다.

아쉽지만 LVM1 은 읽기 전용 스냅샷만 만들 수 있다.

LVM 은 활성 논리 볼륨에 대한 읽기 및 쓰기 스냅샷을 만들 수 있다.

이 기능은 빠른 fail-over(장애가 발생했을 때 대체 시스템으로 운영을 넘기는 기능) 또는 데이터를 변경하는 앱을 실험하다가 실패했을 경우 이를 복원할 필요가 있을 때 특히 유용하다.



** 스트라이핑


-

LVM2 가 제공하는 기능으로, striping 은 하나의 논리 볼륨을 여러 개의 물리적 하드 드라이브에 걸쳐 만들 수 있다.

리눅스 LVM 이 논리 볼륨에 파일을 기록할 때 파일의 데이터 블록은 여러 하드 드라이브에 걸쳐 분산된다.

각각의 연속된 데이터의 블록은 그 다음 하드 드라이브에 기록된다.

스트라이핑은 리눅스가 한 하드 드라이브 안에서 읽기/쓰기 헤드를 다른 위치로 옮기기 위해서 기다리지 않고 한 파일에 대한 여러 데이터 블록을 동시에 여러 하드 드라이브에 쓸 수 있으므로 디스크 성능 향상을 돕는다. 읽을 때도 마찬가지다.



-

LVM 스트라이핑은 RAID 스트라이핑과 다르다.

LVM 스트라이핑은 결함을 자체 처리할 수 있는 환경인 페리티 엔트리를 제공하지 않는다.

LVM 스트라이핑은 하드 드라이브 오류가 일어났을 때 파일이 손실될 수 있는 가능성을 높인다.



** 미러링


-

LVM 논리 볼륨은 정전이나 디스크 장애에 물리적 정전이나 디스크 장애에 마찬가지로 취약하다.

파일 시스템이 손상되고 나면 이를 복구할 수 없을 가능성은 항상 존재한다.


LVM 스냅샷 프로세스로 언제든지 논리 볼륨의 백업 사본을 만들 수 있다는 점 때문에 안심이 되지만 일부 환경에서는 이 정도로는 충분하지 않다.

DB 서버와 같이 데이터 변경이 많이 이루어지는 시스템은 마지막 스냅샷 이후 기록의 수백 또는 수천 개의 레코드를 저장했을 수도 있다.



-

이 문제에 대한 해결책은 LVM 미러다.

미러는 실시간으로 업데이트 되는 논리 볼륨의 완전한 사본이다.

미리 논리 볼륨을 만들 때 LVM 은 미러 사본에 원래의 논리 볼륨을 동기화한다.

원래의 논리 볼륨의 크기에 따라 이 작업을 완료하는 데에는 시간이 약간 걸릴 수 있다.


최초의 동기화가 완료된 후 LVM 은 파일시스템에서 쓰기 작업을 할 때마다 쓰기를 두 번 한다.

한번은 메인 논리 볼륨에 또 한번은 미러된 복사본에 쓴다.

물론 성능저하를 가져오지만, 안정성은 높아진다.




* 리눅스 LVM 사용하기


** 물리 볼륨 정의하기


-

작업의 첫 번째 단계는 물리적 파티션을 리눅스 LVM 이 사용하는 물리 볼륨 익스텐트로 변환하는 것이다.

fdisk 명령을 사용하는데, 기본 리눅스 파티션을 만든 후 t 명령으로 파티션 유형을 변경한다.


pvcreate 명령은 PV 에 사용할 물리 파티션을 정의한다.

이 작업은 단지 파티션에 리눅스 LVM 시스템의 물리 볼륨이라는 태그를 붙여 놓는 것이다.

$ sudo pvcreate /dev/sdb1

$ sudo pvdisplay /dev/sdb1 # 만들어진 물리 볼륨 확인



** 볼륨 그룹 만들기


-

볼륨 그룹을 만들려면 vgcreate 명령을 사용한다.

$ sudo vgcreate Vol1 /dev/sdb1

$ sudo vgdisplay Vol1 # 만들어진 볼륨 그룹 확인



** 논리 볼륨 만들기


-

리눅스 시스템은 물리적 파티션처럼 논리 볼륨을 다루며, 논리 볼륨에 파일시스템을 정의한 다음 가상 디렉토리에 파일시스템을 마운트할 수 있다.

논리 볼륨을 만들려면 lvcreate 명령을 사용한다.

다른 리눅스 LVM 명령은 보통 커맨드라인 옵션을 사용하지 않아도 되지만 lvcreate 명령은 최소한 몇 가지 옵션을 입력해야 한다.


옵션에 대한 자세한 설명은 생략한다.

$ sudo lvcreate -l 100%FREE -n lvtest Vol1 

$ sudo lvdisplay Vol1 



** 파일시스템 만들기


-

$ sudo mkfs.ext4 /dev/Vol1/lvtest

$ sudo mount /dev/Vol1/lvtest /mnt/my_partition



** LVM 수정하기


-

LVM 을 사용할 때 장점은 동적으로 파일시스템을 수정할 수 있다는 것이다.

다음 명령들을 사용하면 된다.


vgchange : 볼륨 그룹의 활성화 및 비활성화 한다.

vgremove : 볼륨 그룹을 제거한다.

vgextend : 볼륨 그룹에 물리 볼륨을 추가한다.

vgreduce : 볼륨 그룹에서 물리 볼륨을 제거한다.

lvextend : 논리 볼륨의 크기를 늘린다.

ivreduce : 논리 볼륨의 크기를 줄인다.



-

논리 볼륨의 크기를 직접 늘리거나 줄일 때에는 주의해야 한다.

논리 볼륨에 저장된 파일시스템은 크기의 변화에 대응하여 수정되어야 한다.

대부분의 파일시스템은 리포맷을 위한 커맨드라인 프로그램을 포함한다. resize2fs 같은 녀석이다.




요약


-

리눅스에서 저장장치로 작업을 하려면 파일시스템에 대해 알고 있어야 한다.

파일 및 폴더를 저장하기 위해 수많은 파일시스템을 제공한다.

각각의 파일시스템 유형은 저장장치와 상호작용하기 위해 각자 다른 명령을 사용한다.


저장장치에 파일시스템을 설치하기 전에 먼저 장치를 준비한다.

fdisk 명령은 저장장치를 파티션함으로써 파일시스템을 준비할 수 있도록 한다.

인기 있는 파인시스템은 ext4 및 XFS 와 같은 것들이다.

이들은 저널링 파일시스템 기능을 제공한다.


저장장치 파티션에 직접 파일시스템을 만들 때 디스크 공간이 부족해도 파일시스템의 크기를 쉽게 변경할 수 없는 한계가 있다.

그러나 리눅스는 가상 파티션을 생성하는 논리 볼륨 관리를 지원한다.

LVM 패키지는 여러 저장장치에 파일시스템을 구축하는 논리 볼륨을 만드는 커맨드라인 명령을 제공한다.



반응형

댓글