Wisdom’s Cloud

[Linux] [CentOS] 하드디스크와 파티션 본문

LINUX/Advanced

[Linux] [CentOS] 하드디스크와 파티션

지혜로운지혜쓰 2022. 9. 5. 23:28

이번에는 하드디스크와 파티션에 대해 알아보자.

 

 

 

먼저 디바이스는 블록 디바이스와 캐릭터 디바이스로 나뉜다.

블록 디바이스는 하드디스크나 CD/DVD, 플로피디스크와 같은 장치를 말하며, Block 단위로 데이터를 전송한다.

반면, 캐릭터 디바이스는 키보드, 마우스, 모니터와 같은 장치를 말하며, Byte 단위로 데이터를 전송한다.

 

 

이러한 디바이스들은 /dev 디렉터리에서 확인할 수 있으며, 파일 유형이 b 또는 c로 시작하는 것이 각각 블록 디바이스와 캐릭터 디바이스를 의미한다.

 

 

지금은 하드디스크에 대해 알아볼 것이기 때문에 lsblk 명령어를 통해 사용 가능한 블록 디바이스에 대한 정보를 확인해보자.

 

lsblk 명령어 출력에 대한 내용들은 다음과 같다.

 

  • NAME는 디바이스 이름을 나타낸다.
  • MAJ:MIN는 디바이스를 식별하는 숫자로, 디바이스의 유형을 나타내며, /proc/devices 파일에서 확인할 수 있다.
  • RM는 디바이스를 제거 가능한지를 나타내며, 값이 1이면 제거 가능하다는 의미이다.
  • SIZE는 디바이스의 크기를 나타낸다.
  • RO는 디바이스가 읽기 전용인지를 나타내며, 값이 1이면 읽기 전용이라는 의미이다.
  • TYPE은 디스크와 디스크 내 파티션 또는 LVM인지를 나타낸다.
  • MOUNTPOINT는 디바이스의 현재 마운트 지점을 나타낸다.

 

 

그렇다면 현재 sda와 vda가 있는데 이 둘의 차이점은 뭘까?

SCSI 방식의 디스크는 sd로 시작하고, 가상 서버의 디스크는 vd로 시작하며, IDE 방식의 디스크는 hd로 시작한다.

IDE 방식은 개인용 컴퓨터를 위한 방식이며, SCSI 방식은 서버용 컴퓨터를 위한 방식이다.

따라서 SCSI 방식이 더 많은 장치를 연결할 수 있어 확장성이 좋고 더 빠른 접근 속도를 제공한다.

예를 들어 SCSI 방식의 디스크를 추가하면, /dev/sda, /dev/sdb, /dev/sdc, ... 순으로 추가되고, /dev/sda를 파티션하면 /dev/sda1, /dev/sda2, /dev/sda3, ... 순으로 파티션 되는 것이다.

 

 

그럼 이제 파티션에 대해 알아보자.

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

따라서 파티션을 사용하면 저장 공간을 효율적으로 활용할 수 있고, 파티션마다 독립적인 파일 시스템이 운영되기 때문에 특정 파티션의 파일 시스템이 손상되어도 다른 파티션에 영향을 주지 않는다.

이러한 파티션은 주 파티션, 확장 파티션, 논리 파티션, 스왑 파티션으로 구분된다.

 

  • 주 파티션(Primary Partition)은 OS를 설치할 수 있는 기본 파티션으로, 하나의 하드디스크에 최대 4개까지 생성할 수 있다. 5개 이상의 파티션이 필요할 경우, 하나의 확장 파티션을 생성하여 여러 개의 논리 파티션을 분할하여 사용하면 된다.
  • 확장 파티션(Extended Partition)은 데이터 저장을 위한 파티션이 아니라 논리 파티션을 생성하기 위한 파티션으로, 하나의 하드디스크에 1개만 생성할 수 있다. 
  • 논리 파티션(Logical Partition)은 OS를 설치할 수 없고 데이터 저장만 가능한 파티션으로, 12개 이상 생성하지 않는 것을 권장한다.
  • 스왑 파티션(Swap Partition)은 하드디스크의 일부를 메모리처럼 사용하는 파티션으로, 주 파티션 또는 확장 파티션에서 생성할 수 있다.

 

 

이제 fdisk 명령어를 통해 /dev/sda 디바이스에 파티션을 생성해보자.

먼저 -l 옵션으로 현재 디바이스와 파티션을 확인할 수 있고, 지금 사용할 /dev/sda에 1개의 파티션이 생성되어 있는 것을 볼 수 있다. 

 

 

이제 파티션 설정 콘솔에서 n을 입력하여 새로운 파티션을 생성한다.

128M 크기의 2번째 주 파티션 생성하였다.

 

 

그리고 t를 입력하여 생성한 파티션의 유형을 LVM으로 변경해준다.

 

 

파티션의 유형은 l을 입력하여 확인할 수 있다.

Linux가 기본값이고, 주로 Linux swap과 Linux LVM을 많이 사용한다.

 

 

설정이 다 완료되었으면 p를 입력하여 확인해보자.

 

 

설정이 끝났다면 w를 입력하여 꼭 저장을 해야 한다. 

그런데 저장을 하였더니 Device or resource busy. 경고문이 뜨면서 새 파티션 테이블을 적용하려면 재부팅하거나 partprobe 또는 kpartx를 실행하라고 나온다.

 

lsblk 명령어로 확인해보니까 정말 설정한 내용들이 적용되지 않았다.

그래서 partprobe를 실행한 후 다시 확인해보니까 적용이 되었다.

 

원래 파티션 테이블이 변경되면 재부팅을 해야 변경된 설정들이 적용이 된다.

하지만 매번 재부팅을 하는 것은 번거롭기 때문에 partprobe 명령어와 kpartx 명령어를 사용하는데, 이 둘의 차이는 뭘까? 

먼저 kpartx 명령어는 파티션 테이블을 읽고 아래와 같이 맵핑을 만든다.

 

하지만 partprobe 명령어는 OS에 파티션 테이블의 변경사항을 알려서 다시 읽게 하기 때문에 파티션이 사용 중인 경우에 partprobe를 실행하면 데이터가 손상될 수 있다.

따라서 파티션의 마운트를 해제한 다음 partprobe를 실행하는 것을 권장한다.

 

 

이제 원하는대로 파티션을 생성하고 설정할 수 있게 되었다.

따라서 다음에 알아볼 LVM을 위해 아래 표와 같이 파티션을 구성해보자. 😃

 

/dev/sda1
(96M)
/dev/sda2
(128M)
/dev/sda3
(100M)
/dev/sda4 (1K)
/dev/sda5
(256M)
/dev/sda6
(200M)
/dev/sda7
(120M)
/dev/sda8
(1.1G)

 

 

 

 

[참고 문서]

https://access.redhat.com/solutions/57542

 

How to use a new partition in RHEL6 without reboot? - Red Hat Customer Portal

Added a new partition to a disk that have some existing partitions already mounted. Can the new partition be used without reboot in RHEL6? New partition created with fdisk command is not visible in the OS.

access.redhat.com