Post

파일 시스템과 파티션3

파일 시스템과 파티션3

목차

  • 디렉터리
  • LVM (Logical Volume Manager)

디렉터리

  • 지금까지 파티션에 대해 개념과 종류 등을 알아보았다. 그러면 이러한 파일 시스템은 구조가 어떻게 되어있을까? 바로 디렉터리 구조로 되어있는데, 이 구조는 트리 형태로 되어있다. 그렇다면 디렉터리 구조란 무엇인가. 자세히 알아보기로 하자. 디렉터리 구조는 파일 시스템에서 파일과 폴더(디렉터리)를 논리적으로 정리하는 방법으로, 트리 형태로 구성되며 최상위에 루트 디렉터리가 있다. 이 구조는 계층적(hierarchical)이며, 파일과 디렉터리를 체계적으로 정리하고 접근을 용이하게 하는데 중요한 역할을 한다.

그렇다면 디렉터리 구조에 대해 사진과 함께 하나하나 살펴보기로 하자.

Desktop View (사진 출처 : https://velog.io/@leyuri/Linux-%EB%A6%AC%EB%88%85%EC%8A%A4-%ED%8C%8C%EC%9D%BC-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%A1%B0)

  • 구조
    • / : 최상위 디렉터리로 루트(/) 디렉터리라고 함.
    • /bin : ‘System Binary’의 약어로 이진 파일이며, 리눅스에서 기본 명령어가 저장된 디렉터리
    • /usr : 시스템에서 사용되는 각종 프로그램이 설치되는 디렉터리
    • /etc : 리눅스 시스템의 각종 환경설정 파일과 디렉터리가 저장된 디렉터리
    • /sbin : 시스템 관리를 위한 명령어가 저장된 디렉터리
    • /lib : 프로그램의 각종 라이브러리 파일이 저장된 디렉터리로 유틸리티(Utility), 패키지(Package) 등의 파일 포함
    • /var :
      • 시스템에서 사용되는 동적인 파일을 저장하는 디렉터리
      • 각종 시스템 로그파일, 사용자 로그인에 대한 로그 기록
      • 메일서버를 운영한다면 사용자에게 전송된 메일을 임시로 저장하는 디렉터리
    • /tmp : 임시 디렉터리로 스티키 비트(Sticky Bit)가 설정되어 있음
    • /root : 시스템 관리자(root)의 홈 디렉터리
    • /proc :
      • 시스템의 각종 프로세서, 프로그램 정보 그리고 하드웨어 정보가 저장된 디렉터리
      • 가상 파일 시스템으로 하드디스크에 물리적인 용량을 가지지 않는 디렉터리
    • /dev : 시스템의 각종 장치에 접근하기 위한 장치 드라이버가 저장된 디렉터리
    • /home : 일반 사용자의 홈 디렉터리

LVM (Logical Volume Manager)

  • 다음은 LVM(Logical Volume Manager)이다. LVM 구조를 나타낸 그림 자료를 먼저 소개하면서 정리를 진행하기로 한다.

Desktop View (사진 출처 : https://docstore.mik.ua/manuals/hp-ux/en/5992-4589/ch01s02.html)

  • LVM은 Linux와 일부 Unix 계열 운영 체제에서 사용되는 디스크 관리 기술로, 물리적 저장 장치를 논리적으로 묶어 보다 유연하게 디스크 공간을 관리할 수 있게 해준다. LVM을 사용하면 파티션 크기를 동적으로 변경하거나, 여러 디스크를 하나의 논리적 볼륨(Logical Volume)으로 결합하는 등의 작업이 가능하다.
  • LVM 구성 요소
    • LVM은 다음과 같은 세 가지 주요 구성 요소로 구성된다.
      • 물리 볼륨(Physical Volume, PV) :
        • 물리적인 디스크 또는 디스크의 파티션을 의미한다.
        • 예를 들어, /dev/sda1이나 /dev/sdb와 같은 디스크 장치 또는 파티션이 물리 볼륨으로 사용될 수 있다.
        • LVM의 기본 단위로, 물리적 저장 장치를 LVM 관리 하에 두기 위해 Pvcreate 명령을 통해 물리 볼륨으로 변환한다.
      • 볼륨 그룹(Volume Group, VG) :
        • 하나 이상의 물리 볼륨을 그룹으로 묶어 만든 논리적인 스토리지 풀이다.
        • 볼륨 그룹은 물리 볼륨으로 구성되며, 그 위에 논리 볼륨을 생성할 수 있다.
        • 볼륨 그룹을 생성하면 여러 디스크를 하나의 큰 스토리지 공간으로 취급할 수 있다.
      • 논리 볼륨(Logical Volume, LV) :
        • 볼륨 그룹에서 필요한 크기만큼 할당하여 만든 논리적 디스크 공간이다.
        • 논리 볼륨은 사용자가 실제로 파일 시스템을 생성하고 데이터를 저장하는데 사용하는 공간으로, 일반적인 파티션처럼 취급될 수 있다.
        • LVM은 논리 볼륨을 유연하게 확장하거나 축소할 수 있는 기능을 제공한다.
  • LVM 작동 원리
    • LVM은 디스크 공간을 관리하는데 있어 다음과 같은 계층적 구조를 사용한다.
      • 물리 볼륨(PV) : 물리적 디스크나 파티션이 pvcreate 명령으로 LVM의 물리 볼륨으로 초기화된다.
      • 볼륨 그룹(VG) : 여러 물리 볼륨을 묶어서 하나의 큰 스토리지 풀로 결합한다. 이 풀 내에서 논리 볼륨을 생성하고 관리할 수 있다.
      • 논리 볼륨(LV) : 사용자는 볼륨 그룹에서 필요한 크기만큼 논리 볼륨을 생성한다. 논리 볼륨은 파일 시스템을 생성하고 데이터를 저장하는데 사용된다.
    • 이 과정은 다음과 같은 명령을 통해 수행된다.
      • pvcreate : 물리 볼륨 생성
      • vgcreate : 볼륨 그룹 생성
      • lvcreate : 논리 볼륨 생성

참조
pvcreate 원리 및 물리 볼륨 개념

  • 물리 볼륨(Physical Volume, PV)란 LVM에서 사용할 수 있도록 준비된 실제 저장 장치(디스크) 또는 파티션을 의미한다. 즉, LVM의 기본 구성 요소로, pvcreate 명령은 이러한 물리 볼륨을 생성하는데 사용된다. 달리 말하자면, 물리 볼륨을 LVM 시스템에서 사용할 수 있도록 디스크나 디스크 파티션을 준비하는 과정이라 할 수 있다. 이 명령을 사용하면, LVM에서 디스크나 파티션을 인식하고 관리할 수 있다.

  • pvcreate 원리

    • pvcreate 명령은 선택된 디스크나 파티션을 LVM의 물리 볼륨으로 초기화한다. 이 과정은 다음과 같은 단계를 포함한다.
        1. 디스크 또는 파티션 선택 :
          • 먼저, 물리 볼륨으로 사용할 디스크 전체 또는 디스크 특정 파티션을 선택한다.
          • 예를 들어, 디스크 전체(/dev/sdb)나 특정 파티션(/dev/sdb1)을 지정할 수 있다.
        1. 메타 데이터 생성 및 저장 :
          • pvcreate는 선택한 디스크나 파티션의 첫부분에 LVM 메타 데이터를 기록한다.
          • 이 메타 데이터는 LVM이 해당 디스크나 파티션을 인식하고 관리할 수 있도록 필수적인 정보를 포함하고 있다.
          • 메타데이터에는 다음과 같은 정보가 저장된다.
            • 물리 볼륨의 UUID(고유 식별자)
            • 물리 볼륨의 크기
            • 볼륨 그룹에 속할 수 있는지 여부
            • 물리 익스턴트(Physical Extent, PE) 크기 정보 등
        1. 디스크 레이아웃 설정 :
          • pvcreate는 물리 볼륨이 될 디스크 전체 공간을 물리 익스턴트(Physical Extent, PE)로 나눈다.
            • 물리 익스턴트는 LVM에서 관리하는 최소 단위로, 볼륨 그룹(VG)과 논리 볼륨(LV)에서도 사용된다.
          • 일반적으로 PE 크기는 기본값인 4MB이지만, 필요에 따라 조정할 수 있다.
        1. 물리 볼륨 등록 :
          • LVM은 생성된 물리 볼륨을 시스템의 LVM 메타 데이터에 등록한다.
          • 이를 통해 LVM은 해당 물리 볼륨을 인식하고, 볼륨 그룹(VG)을 생성할 때 이 물리 볼륨을 추가할 수 있다.
    • 즉, pvcreate에 대해 비유를 하자면 “디스크에 LVM 사용 가능”이란 태그를 붙이는 거와 같다고 할 수 있다. 이 태그를 붙이면 LVM은 해당 디스크나 파티션을 자신이 사용할 수 있는 공간으로 인식하게 된다. 또한, pvcreate 명령은 공장에서 원자재(디스크)를 공정 라인(LVM 시스템)에서 사용할 수 있도록 표준 포맷으로 정리하는 과정이라 할 수 있다. 그래서 이 과정이 완료되면 원자재는 공정에서 사용 가능해진다.
  • LVM 장점
    • 유연성 :
      • LVM은 논리 볼륨의 크기를 동적으로 확장하거나 축소할 수 있다.
      • 파일 시스템의 크기를 손쉽게 조정할 수 있어, 관리자가 디스크 공간을 보다 효율적으로 사용할 수 있다.
    • 데이터 보호 및 복구 :
      • LVM은 스냅샷(snapshot) 기능을 제공하여 특정 시점의 볼륨 상태를 저장할 수 있다.
      • 이를 통해 데이터 손상이나 실수로 인한 데이터 손실을 방지할 수 있다.
    • 스토리지 통합 및 확장성 :
      • 여러 개의 물리적 디스크를 하나의 볼륨 그룹으로 통합하여 더 큰 저장 공간을 제공하고, 필요할 때 쉽게 확장할 수 있다.
    • 디스크 I/O 성능 향상 : LVM은 스트라이핑(striping) 기능을 제공하여 여러 디스크에 데이터를 분산해 저장함으로써 읽기/쓰기 성능을 향상시킬 수 있다.
    • 온라인 크기 조정 : 대부분의 경우, LVM을 사용하면 파일 시스템을 마운트한 상태에서 크기를 조정할 수 있어 시스템 다운타임을 최소화할 수 있다.
  • LVM 단점
    • 복잡성 : 일반 파티션 관리보다 설정 및 관리가 더 복잡할 수 있다.
    • 성능 오버헤드 : 추가적인 추상화 계층이 생기면서 성능 오버헤드가 발생할 수 있다. 특히, 여러 볼륨 그룹이나 논리 볼륨을 사용할 때 성능 저하가 발생할 수 있다.
    • 데이터 손상 가능성 : LVM의 구조가 복잡해질수록 물리 볼륨 중 하나에 문제가 생기면 모든 논리 볼륨이 손상될 위험이 있다.
  • LVM 사용 예시
    • 그러면 사용 예시를 살펴보자. LVM 사용하는 과정은 물리 볼륨을 생성하고, 이를 묶어 볼륨 그룹을 만든 후, 논리 볼륨을 생성하는 순서로 진행된다. 이 예시에서는 하나의 새로운 디스크(/dev/sdb)를 LVM으로 설정하여 논리 볼륨을 생성하고, 파일 시스템을 마운트하는 과정을 단계별로 설명하고자 한다.
        1. 새로운 디스크 추가 및 확인
          • 먼저, 새로운 디스크인 /dev/sdb가 추가된 상태라고 가정해보자.
            • 디스크 확인
              1
              
              lsblk
              
            • 이 명령을 사용하여 시스템에 연결된 디스크와 파티션을 확인한다. 추가된 새로운 디스크 /dev/sdb가 목록에 표시된다.
        1. 물리 볼륨 생성
          • /dev/sdb를 LVM의 물리 볼륨으로 초기화한다.
          • 물리 볼륨 생성
            1
            
            sudo pvcreate /dev/sdb
            
          • 이 명령은 디스크 /dev/sdb를 물리 볼륨(PV)으로 초기화한다. 그 결과, 아래와 같은 내용이 출력됨을 확인할 수 있다.
            1
            
            Physical volume "/dev/sdb" successfully created.
            
          • 생성된 물리 볼륨 확인
            1
            
            sudo pvs
            
          • 위 명령을 통해 물리 볼륨이 제대로 생성되었는지 확인할 수 있다.
        1. 볼륨 그룹 생성
          • 이제 물리 볼륨 /dev/sdb를 포함하는 볼륨 그룹(VG)를 생성한다. 볼륨 그룹 이름을 myvg로 설정하겠다.
          • 볼륨 그룹 생성
            1
            
            sudo vgcreate myvg /dev/sdb
            
          • 이 명령은 물리 볼륨 /dev/sdb를 포함하는 myvg라는 이름의 볼륨 그룹을 생성한다. 그 결과, 아래와 같은 내용이 출력되면서 생성됨을 확인할 수 있다.
            1
            
            Volume group "myvg" successfully created
            
          • 생성된 볼륨 그룹 확인
            1
            
            sudo vgs
            
        1. 논리 볼륨 생성
          • 볼륨 그룹 myvg에서 논리 볼륨(LV)을 생성한다. 이 예시에서는 논리 볼륨의 이름을 mylv로 하고, 크기는 10GB로 설정한다.
          • 논리 볼륨 생성
            1
            
            sudo lvcreate -L 10G -n mylv myvg
            
          • 이 명령은 myvg 볼륨 그룹에서 10GB 크기의 논리 볼륨 mylv를 생성한다. 그 결과 아래와 같이 출력됨을 확인할 수 있다.
            1
            
            Logical volume "mylv" created.
            
          • 생성된 볼륨 확인
            1
            
            sudo lvs
            
        1. 파일 시스템 생성
          • 논리 볼륨 mylv에 파일 시스템을 생성하여 데이터를 저장할 준비를 한다. 이 예에서는 ext4 파일 시스템을 생성한다.
          • 파일 시스템 생성
            1
            
            sudo mkfs.ext4 /dev/myvg/mylv
            
          • 이 명령은 논리 볼륨 /dev/myvg/mylv에 ext4 파일 시스템을 생성한다.
        1. 마운트 디렉터리 생성 및 마운트
          • 파일 시스템이 생성된 논리 볼륨을 시스템에 마운트하여 사용할 수 있도록 한다.
            • 마운트 디렉터리 생성
              1
              
              sudo mkdir /mnt/mylv
              
            • 논리 볼륨 마운트
              1
              
              sudo mount /dev/myvg/mylv /mnt/mylv
              
            • 마운트 확인
              1
              
              df -h
              
            • 위 명령 사용하여 논리 볼륨이 /mnt/mylv에 올바르게 마운트되었는지 확인할 수 있다.
        1. fstab 파일에 영구 마운트 설정
          • 만약 영구 마운트 설정하고 싶을때 시스템 재부팅 시에도 논리 볼륨이 자동으로 마운트 되도록 fstab 파일을 수정한다.
          • fstab 파일 열기
            1
            
            sudo nano /etc/fstab
            
          • 다음 라인 추가
            1
            
            /dev/myvg/mylv /mnt/mylv ext4 defaults 0 0
            
          • 변경 사항을 저장하고 nano 편집기를 종료한다.
        1. 논리 볼륨 크기 조정 (확장)
          • LVM의 장점 중 하나는 논리 볼륨의 크기를 쉽게 조정할 수 있다는 점이다. 예를 들어, mylv 논리 볼륨을 5GB 더 확장하고 싶다면 다음과 같이 실행한다.
            • 논리 볼륨 확장
              1
              
              sudo lvextend -L +5G /dev/myvg/mylv
              
            • 결과
              1
              2
              
              Size of logical volume myvg/mylv changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
              Logical volume mylv successfully resized.
              
            • 파일 시스템 크기 조정
              1
              
              sudo resize2fs /dev/myvg/mylv
              
            • 이 명령은 파일 시스템 크기를 확장한 논리 볼륨 크기에 맞게 조정한다.
        1. LVM 스냅샷 생성
          • 데이터 백업이나 복구를 위해 스냅샷을 생성할 수 있다.
          • 스냅샷 생성
            1
            
            sudo lvcreate --size 1G --snapshot --name mylv_snapshot /dev/myvg/mylv
            
          • 이 명령은 mylv 논리 볼륨의 현재 상태를 캡처한 mylv_snapshot 스냅샷을 생성한다.
        1. 스냅샷 복구
          • 스냅샷을 사용하여 데이터를 복구할 수 있다.
          • 스냅샷 복구
            1
            
            sudo lvconvert --merge /dev/myvg/mylv_snapshot
            
          • 이 명령은 스냅샷 mylv_snapshot을 원래 논리 볼륨 mylv로 병합하여 복구한다.
This post is licensed under CC BY 4.0 by the author.