본문 바로가기
[Cloud & Infrastructure]/[Linux]

[Linux] 디스크, 파티션,볼륨 그리고 AWS EBS 볼륨 탑재하기

by 코드몽규 2022. 10. 3.
반응형

Linux를 다루다 보면 디스크, 파티션 그리고 볼륨이라는 단어를 많이 듣는다. 

 

실제로 혼동하기 쉬운 개념이며 정확하게 알고 구분하여 알아야 하는 내용이라 정리해보려 한다. 

 

또한 AWS EBS를 기준으로 실제 디스크를 파티셔닝하고 마운트 하는 과정부터

 

LVM을 활용하여 볼륨을 효율적으로 사용하는 방법까지 정리한 포스팅이다.

 


디스크(Disk)

 - 디스크는 일반적으로 서버에 장착되어 있는 물리적인 저장장치를 의미한다. 옛날에는 HDD가 주로 사용되었을 때는 HDD를 의미하기도 했지만, 최근에는 SSD, NVME 심지어 가상 디스크도 디스크라고 부르고 있다. 

 


파티션(Partition)

- 파티션은 물리적인 저장장치를 사용할 목적에 따라 구역을 나눈것이다. 디스크를 하나의 집이라고 생각하면 파티션은 여러 개의 방이라고 생각하면 편하다.

 

Disk의 구조를 나타낸 그림

 

  • MBR : Master Boot Recoder

 디스크에서 가장 먼저 읽히는 부분으로 디스크의 전체적인 관리를 한다고 볼 수 있다.  Primary (주 파티션) 마다 각각 Boot Sector (부트 섹터)가 할당된다. 즉, 부트섹터는 2개 이상 존재할 수 있다는 말이다. 이때는 OS(운영체제)가 설치된 디스크의 Boot sector에 BootRecoder(부트 레코더)를 기록해놓은 후 MBR에 기록하여 부팅 시 MBR에 저장된 주 파티션의 OS로 부팅하게 한다. 

 

  • Primary : 주 파티션

부트섹터가 할당되는 파티션으로 운영체제를 설치할 수 있다. 

 

  • Ptimary (Active) : 활성 주 파티션 

활성 주 파티션이란 MBR에 부트 레코더가 기록된 파티션을 말한다. 예를들어 2개의 Primary에 각각 OS를 설치하면 각각의 Boot setcor에 해당 OS에 대한 Boot Recorder가 기록되고, 둘 중 하나는 MBR에 저장된다. 이 MBR에 저장된 Boot sector에 해당한 OS가 있는 Primary가 Active Primary가 된다. 

 

  • Extended : 확장 파티션

논리 드라이브 ( Logical ) 을 감싸는 벽이다. 확장 파티션은 하나의 디스크에 하나만 설정할 수 있다. 또한 하나의 확장 파티션은 4개의 논리 드라이브를 가질 수 있다. 

 

  • Logical : 논리 드라이브

데이터를 저장할 수 있는 드라이브이다. 하나의 확장 파티션에서 4개의 논리 드라이브를 사용할 수 있으며 데이터를 종류별로 구분하여 저장할 때 사용한다. 부트 섹터가 없기 때문에 운영체제를 설치할 수 없다. 

 

 


GPT와 MBR의 차이점 

앞서 위에서 파티션에 관한 내용을 다루어 보았다. 이번에는 파티션을 정하는 타입에 대해 알아보려고 한다. 파티션 타입은 MBR과 GPT가 존재한다. 

MBR (Master Boot Record)

1. 2TB이상의 디스크 제한이 있다. 

2. 만들 수 있는 파티션이 최대 4개로 한정되어 있다.

(주 파티션 3개 + 확장 파티션 1개 ( 4개의 논리 드라이브)로 구성할 수 있다.)

 

GPT(GUID Partition Table)

1. 2TB이상의 디스크 사용 가능 최대 8ZB로 지금 당장은 용량 제한이 없다고 생각해도 될 정도

2. 만들 수 있는 파티션이 최대 128개로 한정되어 있다. 

 

 


볼륨 (Volume)

볼륨은 단일 파일 시스템을 사용하여 접근할 수 있는 저장공간을 의미한다. 보통은 디스크 -> 파티션 -> 파일 시스템 포맷 -> 볼륨 생성을 통해 사용하며 파티션을 파일 시스템으로 포맷하여 만든 것이기 때문에 구분 없이 사용하기도 한다. 결국 디렉터리가 최종적으로 마운트 되고 데이터가 입출력되는 곳은 볼륨이기 때문에 볼륨을 어떻게 구성하느냐가 중요하다. 관련 내용은 나중에 LVM(Logical Volume Managemnet)에 대한 포스팅을 통해 정리해보려 한다. 


AWS EBS 볼륨 생성 

(1). lsblk 명령어

- lsblk명령을 사용하면 사용 가능한 디스크 디바이스 및 마운트 포린트가 표시되어 사용 가능한 올바른 디바이스 이름을 결정하는데 도움을 준다.

* NVMe 블록 디바이스로 표시되는 EBS 볼륨, Nitro 시스템 기반 인스턴스 

* Gen type 시스템 기반 인스턴스 

 

[ec2-user ~]$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1       259:0    0  10G  0 disk
nvme0n1       259:1    0   8G  0 disk
-nvme0n1p1    259:2    0   8G  0 part /
-nvme0n1p128  259:3    0   1M  0 part
[ec2-user ~]$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0    8G  0 disk
-xvda1  202:1    0    8G  0 part /
xvdf    202:80   0   10G  0 disk

 

(2). 볼륨 생성 및  파일 시스템 만들기 

- 볼륨 생성 및 붙이기 -

1. AWS console -> EC2 -> Elastic Block Store -> Volumes -> Create Volume

2. Volume type - gp2 / Size - 100GB / AZ(Avaliability Zone) - instance가 있는 곳으로 / Create Volume

3. 생성된 볼륨 선택 -> Actions -> Attach volume -> instance 선택 -> Attach

4. lsblk로 생성한 볼륨이 잘 탑재 되었는지 확인하기

 

처음 lsblk 를 통해 확인해보면 기본 10기가 볼륨에 /dev/xvda1 파티션에 루트 디바이스가 마운트 되어 있는 것을 확인할 수 있다. 

이후 두번째 lsblk를 통해 확인해보면 새로 생성하여 탑재한 100 GIB의 /dev/xvdf가 있는 것이 확인된다.

 


- 파일 시스템 만들기-

탑재된 새 볼륨은 원시 블록 디바이스로 볼륨을 탑재한 후 사용학 전에는 해당 볼륨에 대한 파일 시스템을 생성해야 한다. 스냅숏(Snapshot)을 통해 생성된 볼륨에는 이미 파일 시스템이 있을 수 있기 때문에 확인해야 한다. 

* 기존 파일 시스템 위에 새 파일 시스템을 생성하면 해당 작업으로 덮어쓰기가 된다. 때문에 주의한다. 

 

1. 'file -s' 명령을 사용하여 파일 시스템 유형 및 특정 디바이스 정보학인

- 디바이스에 파일 시스템이 없다면 data만 출력 

- 디바이스에 파일 시스템이 있다면 파일 시스템 유형에 관한 정보를 표시한다. 

파일 시스템이 없는 경우
파일 시스템이 있는경우

2. 'mkfs ' 명령어를 통해 파일 시스템 만들기 

- mkfs -t [파일 시스템 타입] [볼륨 장치명]

- 파일 시스템이란?

  • 파일이나 자료에 쉽게 접근할 수 있게 보관 또는 조직하는 체계 
  • OS상에서 파일이나 폴더들을 효율적으로 관리 및 읽고 쓰는 행위를 가능하게 함.

- 리눅스 파일 시스템 

  • ext2
  • ext3
    • journaling file system : 주 파일 시스템에 변경사항을 반영(commit) 하기 전에 저널(파일 시스템 안의 로그) 안에 생성되는 변경사항을 추적하는 시스템이 있다. 
  • ext4
    • 리눅스의 저널링 파일 시스템의 중 하나로, ext3파일 시스템의 향상된 버전이다. 

3. 'lsblk -f' 명령을 사용하여 인스턴스에 연결된 모든 디바이스 관련 정보를 확인한다.

 


- 마운트 포인트 만들기 -

mkdir 명령을 사용하여 볼륨에서 사용할 디렉터리 (지점)을 생성한다. 

마운트 포인트란 파일 시스템이 파일을 읽고 쓰는 위치이다. 

 

1. 'mkdir' 명령을 통해 볼륨에 탑재할 디렉터리 지점 생성 

- sudo mkdir /mnt1

2. 'mount' 명령을 통해 볼륨에 디렉터리를 마운트 

- sudo mount /dev/xvdf /mnt1

3. lsblk 명령을 통해 확인 

 


재부팅 후에도 연결된 볼륨을 자동으로 탑재

시스템을 재부팅할 때마다 연결된 EBS볼륨을 탑재하려면, 디바이스에 대한 항목을 /etc/fstab 파일에 추가한다.

파일에 추가할 때는 디바이스의 UUID(Universally Unique Identifier)을 사용할 것을 권장합니다. UUID는 파티션 수명이 다할 때까지 유지가 됩니다.

 

1. blkid 명령을 통해 디바이스의 UUID를 찾는다. 

2. /etc/fstab 에 텍스트 편집기를 사용하여 열어준다. 

3. 'UUID=[본인 UUID]  /[마운트 포인트]  [파일 시스템 타입]  defaults, nofail  0  2'을 추가해준다. 

4. umount 이후 mount -a 명령을 통해 디바이스 탑재를 해제하고 다시 탑재해준다. 오류가 없다면 재부팅 후 자동으로 탑 재가된다.

 

* 잘못된 편집으로 파일이 손상되어 삭제되거나 올바르게 작동하지 않을 수 있으니 cp명령어를 통해 백업하는 것을 권장한다. 

- sudo cp /etc/fstab /etc/fstab.backup

 


이상을 가볍게 디스크, 볼륨, 파일 시스템 그리고 AWS EBS를 instance에 탑재하고 파일 시스템을 만들어 보는 과정을 알아보았다. 

 

다음 포스팅에서 볼륨을 좀 더 효율적으로 관리하기 위해 파티션을 생성하고, LVM 논리 볼륨을 만드는 과정에 대해 다루어 보려 한다.

 

반응형

댓글