본문 바로가기

Linux

파티션, 파일 시스템, 영구 마운트 추가

디스크 파티셔닝
디스크 파티셔닝을 사용하면 하드 디스크를 파티션이라고 하는 여러 개의 논리 스토리지 단위로 나눌 수 있음.
디스크 파티셔닝이 필요하거나 유용한 상황
  • 애플리케이션 또는 사용자가 사용할 수 있는 공간을 제한
  • 동일한 디스크에서 여러 운영 체제를 부팅할 수 있음
  • 사용자 파일에서 운영 체제와 프로그램 파일을 구분
  • OS 가상 메모리 스왑에 대해 별도 영역을 만듬
  • 디스크 사용을 제한하여 진단 도구 및 백업 이미징의 성능을 향상
MBR 파티션 스키마
  • 1982년 이후 MBR(Master Boot Record) 파티션 스키마에 BIOS 펌웨어를 실행하는 시스템에서 디스크 파티션 방식이 지정
  • 최대 네 개의 주 파티션을 지원
  • Linux 시스템에서 관리자는 확장 및 논리 파티션을 사용하여 최대 15개의 파티션을 만들 수 있음.
  • 파티션 크기 데이터는 32비트 값으로 저장되므로 MBR 스키마로 파티션된 디스크의 최대 디스크 및 파티션 크기는 2TiB로 제한
  • 더욱 큰 용량의 하드 드라이브가 새로 등장하면서 기존 MBR 스키마의 구성표의 2TiB 디스크 및 파티션 크기 제한이 문제가 되면서 GPT(GUID Partion Table)로 대체되고 있음.
  • 파티션 테이블 정보를 단일 제공
GPT 파티션 구성표
  • UEFI(Unified Extensible Firmware Interface) 펌웨어를 실행하는 시스템에서는 GPT가 물리적 하드 디스크에서 파티션 테이블을 배치하는 표준
  • GPT는 UEFI 표준의 일부이면 기존 MBR 기반 스키마의 여러 제한 사항을 해결.
  • GPT는 UEFI 사양에 따라 최대 128개 파티션을 지원하도록 기본 설정됨.
  • GPT는 논리 블록 주소에 64비트를 할당함.
  • 최대 8ZiB(제타바이트) 또는 80억 TiB의 파티션과 디스크를 지원할 수 있음
  • 128비트 GUID를 사용하여 각 디스크와 파티션을 고유하게 식별
  • 파티션 테이블 정보를 중복 제공
  • 주 GPT는 디스크 헤드에 상주하며, 백업 사본인 보조 GPT는 디스크의 마지막에 하우징됨.
  • GPT는 CRC Checksum 을 사용하여 GPT 헤더와 파티션 테이블에서 오류와 손상을 탐지.
참고
  • GPT의 한도가 8ZiB인 것은 블록 크기가 512byte이기 때문
  • 하드 드라이브 공급업체가 4,096byte 블록으로 전환됨에 따라 이 한도는 64ZiB로 증가함.
fdisk를 사용하여 MBR 파티션 관리
파티션 편집기는 관리자가 파티션 생성, 삭제, 유형 변경 등 디스크 파티션을 변경할 수 있는 프로그램
MBR 파티션 스키마가 있는 디스크의 경우 fdisk 파티션 편집기를 사용하여 작업 수행

MBR 디스크 파티션 만들기(8단계 필요)
  1. 파티션을 만들 디스크 장치를 지정
    root 사용자로 fdisk 명령을 실행하고 인수로 디스크 장치 이름을 지정.
    [root@ip-172-31-27-55 ~]# fdisk /dev/xvdf
    Welcome to fdisk (util-linux 2.23.2).

    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.

    Device does not contain a recognized partition table
    Building a new DOS disklabel with disk identifier 0x0877930b.

    Command (m for help): 


  2. 새로운 주 또는 확장 파티션을 요청
    새 파티션을 구성하려면 n을 입력하고 파티션을 주 파티션으로 만들지 확인 파티션으로 만들지를 지정
    기본적으로 주 파티션 유형이 선택됨
    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p


    참고
    디스크에 네 개보다 많은 파티션이 필요할 경우 3개의 주 파티션과 1개의 확장 파티션을 만들면 이 한도를 우회할 수 있음.
    이 확장 파티션은 여러 논리 파티션을 만들 수 있는 컨테이터의 역확을 함.

  3. 파티션 번호를 지정
    이 파티션 번호는 향후 파티션 작업에 사용할 디스크에서 새 파티션의 식별 번호로 사용됨
    기본값은 사용하지 않은 가장 낮은 파티션 번호
    Partition number (1-4, default 1): 1

  4. 디스크에서 새 파티션을 시작할 첫 번째 섹터를 지정
    기본값은 디스크에서 첫 번째로 사용 가능한 섹터
    First sector (2048-20971519, default 2048): 2048

  5. 디스크에서 새 파티션을 종료한 마지막 섹터를 지정
    기본값은 새 파티션의 첫 번째 섹터와 인접해 있으면서 할당되지 않은 마지막 가용 섹터
    Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 1050623

    마지막 섹터 번호 이외에도, 파티션의 원하는 크기를 나타낼 때 섹터 수로 표현된 숫자도 허용
    Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +52488 

    가장 간단한 입력 옵션은 새 파티션의 크기를 KiB, MiB 또는 GiB 단위로 지정하는 것
    Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +2G  

    파티션의 마지막 경계를 입력하면 파티션 생성 확인을 표시함
    Partition 1 of type Linux and of size 2 GiB is set

  6. 파티션 유형을 정의
    새로 새성된 파티션에 Linux 이외의 유형이 필요할 경우 t 명령을 입력하여 파티션 유형을 변경
    새 파티션 유형의 16진수 코드를 입력.
    필요할 경우 L 명령을 사용하여 모든 파티션 유형의 16진수 코드의 표를 표시할 수 있음.
    Command (m for help): t
    Selected partition 1
    Hex code (type L to list all codes): 82
    Changed type of partition 'Linux' to 'Linux swap / Solaris'


  7. 파티션 테이블의 변경 사항을 저장
    w 명령을 디스크 파티션 테이블에 변경 사항을 쓰고 fdisk 프로그램을 종료하여 파티션 생성 요청을 완료.
    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.


  8. 커널은 새 파티션 테이블을 다시 읽기 시작
    partprobe 명령을 실행하여 파티션 테이블 다시 읽기를 강제 실행
    [root@ip-172-31-27-55 dev]#partprobe /dev/xvdf
    [root@ip-172-31-27-55 dev]#cat /proc/partition
    major minor  #blocks  name
     202        1    8388608 xvda1
    202       80   10485760 xvdf
    202       81    2097152 xvdf1

중요
  • fdisk은 파티션 테이블의 모든 편집 내용들을 대기열에 추가하며 관리자가 디스크에 쓰기 위해 w 명령을 실행한 경우에만 파티션 테이블의 모든 변경사항을 디스크에 적용.
  • fdisk 세션을 종료하기 전에 w 명령을 실행하지 않은 경우 파티션 테이블에 대해 요청한 모든 변경 사항이 취소되고 디스크의 파티션 테이블이 변경되지 않음.
  • 이 기능은 fdisk에 오류가 있는 명령을 실행한 경우 특히 유용함.
MBR 디스크 파티션 제거하기(5단계 필요)
  1. 제거할 파티션이 포함된 디스크를 지정
    fdisk 명령을 실행하고 인수로 디스크 장치 이름을 지정
    [root@ip-172-31-27-55 dev]# fdisk /dev/xvdf
    Welcome to fdisk (util-linux 2.23.2).

    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.

    Command (m for help): 

  2. 삭제할 파티션의 파티션 번호를 식별
    p를 입력하여 파티션 테이블을 출력하면 fdisk에서 디스크 및 해당 파티션에 대한 정보를 표시
    Command (m for help): p

    Disk /dev/xvdf: 10.7 GB, 10737418240 bytes, 20971520 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x0877930b

        Device Boot      Start         End      Blocks   Id  System
    /dev/xvdf1            2048     4196351     2097152   82  Linux swap / Solaris

  3. 파티션 삭제를 요청
    d 명령을 입력하여 파티션 제거를 시작하고 제거할 파티션의 파티션 번호를 지정
    Command (m for help): d
    Selected partition 1
    Partition 1 is deleted

  4. 파티션 테이블의 변경 사항을 저장
    w 명령으로 변경 사항을 디스크 파티션 테이블에 써서 파티션 제거 요청을 완료
    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.

  5. 커널은 새 파티션 테이블을 다시 읽기 시작
    partprobe으로 커널이 파티션 테이블을 다시 읽도록 알려줌
    [root@ip-172-31-27-55 dev]# partprobe /dev/xvdf

gdisk로 GPT 파티션 관리
GPT 파티션 스키마가 있는 디스크의 경우 gdisk 파티션 편집기를 사용하여 파티션을 관리할 수 있습니다.

경고
  • fdisk에 GPT 지원이 추가되기는 했지만 아직 실험적 단계이므로 GPT 파티션 구성표로 파티션된 디스크에서 파티션을 변경할 경우에는 gdisk 명령을 사용해야 함.
GPT 디스크 파티션 만들기(8단계 필요)
  1. 파티션을 만들 디스크 장치를 지정
    gdisk 명령을 실행하고 인수로 디스크 장치 이름을 지정
    [root@ip-172-31-27-55 dev]# gdisk /dev/xvdf
    GPT fdisk (gdisk) version 0.8.10

    Partition table scan:
      MBR: not present
      BSD: not present
      APM: not present
      GPT: not present

    Creating new GPT entries.

    Command (? for help): 

  2. 새 파티션을 요청
    n을 입력하여 새 파티션을 만듬
    Command (? for help): n

  3. 파티션 번호를 지정
    이 파티션 번호는 향후 파티션 작업에 사용할 디스크에서 파티션의 식별 번호로 사용됨
    기본값은 사용하지 않은 가장 낮은 파티션 번호
    Partition number (1-128, default 1): 1

  4. 새 파티션이 시작될 디스크 위치를 지정
    gdisk에서는 두 가지 입력 유형이 가능함.
    첫 번째 입력 유형은 새 파티션의 첫 번째 섹터를 나타내는 절대 디스크 섹터 번호
    두 번째 입력 유형은 디스크에서 사용 가능한 섹터의 첫 번째 인접 블록에서 첫 번째 또는 마지막 섹터에 상대적인 위치를 기준으로 파티션의 시작 섹터를 나타냄. 이 상대적 섹터 위치 형식을 사용할 경우 KiB, MiB, GiB, TiB 또는 PiB 단위로 입력 지정
    예를 들어, +512M 값은 사용 가능한 다음 인접 섹터 그룹의 맨 앞에서 512MiB 뒤에 있는 섹터 위치를 나타냄. 반대로 -512M은 사용 가능한 이 인접 섹터 그룹의 마지막에서 512MiB 앞에 있는 섹터를 나타냄.
    First sector (34-20971486, default = 2048) or {+-}size{KMGTP}:

  5. 디스크에서 새 파티션을 종료할 마지막 섹터를 지정
    기본값은 새 파티션의 첫 번째 섹터와 인접해 있으면서 할당되지 않은 마지막 가용 섹터임.
    Last sector (2048-20971486, default = 20971486) or {+-}size{KMGTP}: +2G
    절대 끝 섹터 번호 이외에도, gdisk는 사용 가능한 인접 섹터 그룹의 맨 앞 또는 끝에서 KiB, MiB, GiB, TiB 또는 PiB 단위로 새 파티션의 끝 경계를 더 간단하게 지정하는 입력 방법을 제공
    +512M 값은 첫 번째 섹션에서 512MiB 뒤에 있는 끝 파티션 위치를 나타냄.
    -512M 값은 사용 가능한 인접 섹션의 끝에서 512MiB 앞에 있는 끝 파티션 위치를 나타냄.
     
  6. 파티션 유형을 정의
    gdisk로 만든 새 파티션의 유형은 기본적으로 Linux 파일 시스템으로 설정됨.
    다른 파티션 유형을 원할 경우 해당 16진수 코드를 입력함.
    필요할 경우 L 명령을 사용하여 모든 파티션 유형의 16진수 코드의 표를 표시할 수 있음.
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): 8e00
    Changed type of partition to 'Linux LVM'

  7. 파티션 테이블의 변경 사항을 저장
    w 명령으로 변경 사항을 디스크 파티션 테이블에 써서 파티션 생성 요청을 완료
    gdisk에서 최종 확인 메시지를 표시하면 y를 입력
    Command (? for help): w

    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!

    Do you want to proceed? (Y/N): y
    OK; writing new GUID partition table (GPT) to /dev/xvdf.
    The operation has completed successfully.

  8. 커널은 새 파티션 테이블을 다시 읽기 시작
    partprobe 명령을 실행하여 파티션 테이블 다시 읽기를 강제 실행
    [root@ip-172-31-27-55 dev]# partprobe /dev/xvdf

GPT 디스크 파티션 제거하기(5단계 필요)
  1. 제거할 파티션이 포함된 디스크를 지정
    gdisk 명령을 실행하고 인수로 디스크 장치 이름을 지정
    [root@ip-172-31-27-55 dev]# gdisk /dev/xvdf
    GPT fdisk (gdisk) version 0.8.10

    Partition table scan:
      MBR: protective
      BSD: not present
      APM: not present
      GPT: present

    Found valid GPT with protective MBR; using GPT.

    Command (? for help): 

  2. 삭제할 파티션의 파티션 번호를 식별
    p를 입력하여 삭제할 파티션의 Number 필드의 숫자를 참고
    Command (? for help): p
    Disk /dev/xvdf: 20971520 sectors, 10.0 GiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): D81D1455-6D2A-4B55-9D92-1B1EE8249EBA
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 20971486
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 16777149 sectors (8.0 GiB)

    Number  Start (sector)    End (sector)  Size       Code  Name
       1            2048         4196351   2.0 GiB     8E00  Linux LVM

  3. 파티션 삭제를 요청
    d 명령을 입력하여 파티션 제거를 시작
    Command (? for help): d
    Using 1

  4. 파티션 테이블의 변경 사항을 저장
    w 명령으로 변경 사항을 디스크 파티션 테이블에 써서 파티션 제거 요청을 완료
    gdisk에서 최종 확인 메시지를 표시하면 y를 입력
    Command (? for help): w

    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!

    Do you want to proceed? (Y/N): y
    OK; writing new GUID partition table (GPT) to /dev/xvdf.
    The operation has completed successfully.

  5. 커널은 새 파티션의 테이블을 다시 읽기 시작
    partprobe으로 커널이 파티션 테이블을 다시 읽도록 알려줌.
    [root@ip-172-31-27-55 dev]# partprobe /dev/xvdf

파일 시스템 만들기
Red Hat Enterprise Linux는 다양한 파일 시스템 유형을 지원하지만, xfsext4 두 가지가 가장 일반적
xfs는 Red Hat Enterprise Linux의 설치 프로그램인 anaconda에서 기본적으로 사용됨

  • mkfs
    블록 장치에 파일 시스템을 적용하는 데 사용
    유형을 지정하지 않은 경우 ext2 적용 됨
    파일 시스템 유형을 적용하려면 -t 옵션 사용
    [root@ip-172-31-27-55 proc]# mkfs -t xfs -f /dev/xvdf1
    meta-data=/dev/xvdf1             isize=256     agcount=4, agsize=131072 blks
                =                           sectsz=512   attr=2, projid32bit=1
                =                           crc=0
    data       =                           bsize=4096  blocks=524288, imaxpct=25
                =                           sunit=0       swidth=0 blks
    naming   =version 2                bsize=4096  ascii-ci=0 ftype=0
    log        =internal log             bsize=4096  blocks=2560, version=2
                =                           sectsz=512  sunit=0 blks, lazy-count=1
    realtime  =none                     extsz=4096  blocks=0, rtextents=0

참고

파일 시스템 마운트
  • 수동으로 파일 시스템 마운트
    [root@ip-172-31-27-55 dev]#mount /dev/xvdf1 /mnt
    [root@ip-172-31-27-55 proc]# mount | grep xvdf
    /dev/xvdf1 on /mnt type xfs (rw,relatime,attr2,inode64,noquota)

  • 영구적으로 파일 시스템 마운트
    /etc/fstab 편집(행당 총 여섯 개의 필드가 있으며 공백으로 구분됨)
    [root@ip-172-31-27-55 proc]# cat /etc/fstab
    #
    LABEL=/     /           ext4    defaults,noatime  1   1
    tmpfs       /dev/shm    tmpfs   defaults        0   0
    devpts      /dev/pts    devpts  gid=5,mode=620  0   0
    sysfs       /sys        sysfs   defaults        0   0
    proc        /proc       proc    defaults        0   0
    UUID=4029371c-f0ac-4c39-a25c-14db66f7f81f /mnt xfs defaults 1 1 
    필드 정의
    첫 번째 필드 사용할 장치를 지정(UUID 또는 장치 파일(/dev/xvdf1) 사용).
    두 번째 필드 마운트 포인트
    세 번째 필드 파일 시스템 유형
    네 번째 필드 장치에 적용하는 옵션 목록(이 필드는 필수이며, defaults라고 하는 일반적인 옵션 집합이 있음. 기타 옵션은 mount man page 참조)
    마지막 두 필드 덤프 플래그와 fsck 순서(덤프 플래그는 dump 명령과 함께 사용하여 장치 콘텐츠를 백업하는데 사용.
    fsck 순서 필드는 파일 시스템을 분리할 때 문제가 있었던 경우 부팅 시 fsck를 실행해야 하는 지를 결정.
    fsck 순서 값은 복수 파일 시스템을 점검해야 할 경우 파일 시스템에서 fsck를 실행해야 하는 순서를 나타냄 
     
참고
  • 클라우드 공급업체가 가상머신의 기본 저장소 레이어를 변경하는 경우와 같이 블록 장치 식별자가 특정 시나리오에서 변경될 수 있으므로 UUID(universally unique identifier)를 사용하는 것이 좋음. 블록 장치 파일이 변경될 수 있지만, UUID는 장치의 수퍼 블록에서 변경되지 않고 유지됨
  • blkid 명령을 사용하여 시스템에 연결된 블록 장치를 스캔하고 할당된 UUID, 파일 시스템 format 과 같은 데이터를 보고할 수 있음.
    [root@ip-172-31-27-55 proc]# blkid
    /dev/xvda1: LABEL="/" UUID="4c43efdc-89d1-4223-ae2c-8e76713be7e0" TYPE="ext4"
    /dev/xvdf1: UUID="4029371c-f0ac-4c39-a25c-14db66f7f81f" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="9842594c-cbb2-4f7f-92bd-f53823fae857" 

  • /etc/fstab 에 잘못된 항목이 있을 경우 시스템이 부팅되지 않을 수 있음. 이 상황을 방지하기 위해 관리자는 새 파일 시스템을 분리하고 /etc/fstab를 읽는 mount -a 를 사용하여 항목을 확인하고 파일 시스템을 다시 마운트해야 함. mount -a 명령이 오류를 반환할 경우 시스템을 재부팅하기 전에 해결해야 함.
References
  • fdisk(8), gdisk(8), mkfs(8), mount(8), fstab(5) man pages