디스크 파티션

파티션의 종류

파티션이란 하나의 물리적 디스크를 여러개의 논리적인 디스크로 분할하는 것이다.

파티션을 여러개 나누는 것은, 파티션마다 독립적인 파일 시스템이 운영되기 때문에, 파일을 점검하는 시간이 줄어들어 부팅 시간을 단축시킬 수 있다.

또한 특정 파티션의 파일 시스템이 손상되더라도, 다른 파티션에는 영향을 주지 않기 때문에 안정적이다.

필요한 파티션만 포맷하기 때문에 백업 및 업그레이드가 편리하며, cat /proc/partitions으로 파티션 정보를 확인할 수 있다.

크게 Primary, Extended, Logical, Swap 파티션으로 구분된다.

주 파티션(Primary Partition)

  • 부팅이 가능한 기본 파티션으로, 하나의 하드디스크에 최대 4개까지 주 파티션을 만들 수 있다.
  • 하드디스크를 4개 이상의 파티션으로 사용해야 할 때, 하나의 확장 파티션을 설정하여, 확장 파티션 안에 여러개의 논리 파티션을 분할하여 데이터를 저장한다.

확장 파티션(Extended Partition)

  • 주 파티션 내에 생성되며, 하나의 디스크에 1개만 만들 수 있다.
  • 파티션 번호는 1~4가 할당되며, 데이터 저장 영역을 위한 것이 아니라 논리 파티션을 생성한다.

논리 파티션(Logical Partition)

  • 확장 파티션 안에 생성되며, 5 이상의 번호가 붙여진다.

스왑 파티션(Swap Partition)

  • 디스크의 일부를 메모리처럼 사용하기 위한 영역으로, 주 파티션이나 논리 파티션에 생성한다.
  • 프로그램 실행 시에 부족한 메모리 용량을 하드디스크로 대신하며, 리눅스 설치 시에 필수적인 영역이다.
  • 스왑 영역의 크기는 메모리의 2배를 권장하며, 메모리 중 어느 정도를 사용했을 때 프로그램을 스왑 영역에 옮길지 설정할 수도 있다.

디스크 장치명

분할된 파티션은 디스크의 장치명 뒤에 숫자를 붙여 구분한다.

ls /dev로 장치명들을 확인할 수 있는데, 장치명이 sda3 인 경우는 SCSI 방식의 첫번째 디스크 중 3번째 파티션이라는 뜻이다.

SATA 방식 하드디스크는 sd 가 아닌 hd 가 붙으며, 물리적인 하드디스크가 4장 꽂혀있을 경우는 hda, hdb, hdc, hdd 같이 장치명이 붙게 된다.


파일 시스템

파일 시스템은 운영체제가 파일을 디스크의 파티션 상에 어떻게 구성할지에 대한 시스템 소프트웨어이다.

프로그램이기 때문에 일정한 규칙을 가지고 파일을 저장하도록 규칙에 대한 방식을 제시한다.

파티션에 파일시스템이 없을 경우에는 파일시스템을 생성해야 하며, 리눅스는 수많은 파일시스템을 지원한다.

파일 시스템종류
리눅스 전용ext, ext2, ext3, ext4
타 운영체제FAT, VFAT, FAT32, NTFS, HPFS, SYSv
저널링JFS, XFS, ReiserFS
네트워크SMB, CIFS, NFS
클러스터링GFS, cXFS, SanFS, CFS, GPFS


RAID

RAID는 여러개의 물리적 디스크를 하나의 논리적 디스크로써 인식하게 하는 기술이다.

즉, 여러 디스크에 데이터를 나눠서 저장하거나, 중복 저장하는 기술로, 저장하는 다양한 방법이 존재하며 이를 레벨이라고 한다.

레벨에 따라 저장장치의 안정성을 높이거나 규모를 키우는 등 목적에 맞게 적용하여 사용한다.

RAID 0

  • 스트라이핑 저장 방식으로, 데이터를 여러 디스크에 나눠서 저장한다.
  • IO가 나눠 저장할 여러 디스크에 동시에 진행되므로 입출력 속도가 빠르지만, 디스크들 중 하나라도 장애가 발생할 시 모든 데이터를 유실하게 된다.
  • 장애에 대비하는 기술은 없으므로 중요한 데이터를 저장할 때 적합하지 않다.

RAID 1

  • 미러링 방식으로, 특정 디스크에 저장되는 데이터를 또다른 디스크에 복사하여 동일한 상태를 유지한다.
  • 따라서 데이터를 저장할 때 두배의 용량이 필요하며, 공간 효율성은 떨어지지만 주요 데이터를 저장하기엔 적합하다.

RAID 5

  • 스트라이핑 저장 방식이지만, 디스크마다 각각 오류를 검출해내는 패리티 정보를 갖고 있어 실무에서 많이 사용된다.
  • 디스크 섹터 단위로 저장되며, 쓰기 작업이 많지 않은 다중 사용자 시스템에 적합하다.

RAID 01

  • RAID 0 + 1 을 조합한 것으로, 디스크 2개씩 RAID 0 방식으로 나눠 저장한 후, 이들을 RAID 1 방식으로 미러링한다.
  • 즉, 미러링을 하기 전에 스트라이핑 방식으로 나눠 저장하는데, 속도는 빠르지만 데이터를 복구하는 시간은 오래 걸린다.

RAID 10

  • 01 과 반대로, 디스크 2개씩 미러링을 하여 RAID 1 을 구성한 뒤, RAID 0 으로 묶는다.
  • 미러링 후 스트라이핑을 진행하여, 유실된 데이터에 빠르게 복원이 가능하므로 운영상 RAID 01 보다 유리한 점이 있다.


파티션 분할

fdisk는 파티션 테이블을 관리하는 명령어로, 리눅스에서 디스크의 파티션을 만들고 수정할 수 있는 프로그램이며, 명령어는 아래와 같다.

명령어설명
a부팅 파티션을 지정
l파티션 종류를 선택할 때, 리눅스에서 지원되는 목록 확인
n새로운 파티션 생성
t파티션 종류 변경
w파티션 정보 저장
p파티션 정보 확인
q프로그램 종료

위의 명령어들은 sudo fdisk 장치명을 통해 fdisk 쉘에 진입했을 때 사용 가능한 명령어들이며, 배쉬 쉘에서 sudo fdisk -l을 사용하면 전체 파티션들에 대한 정보를 확인할 수 있다.

앞서 /proc/partitions 는 파티션 이름과 블록 크기 정도만 보여줬다면, fdisk -l 은 좀 더 상세한 정보를 띄워준다.