CS/Linux

[Linux] /dev와 파티션 이해하기

kyoulho 2024. 10. 1. 15:36

요약

  • 디스크(물리적 장치):
    • /dev/sda, /dev/sdb 등으로 식별되는 물리적 저장 매체이다.
  • 파티션(논리적 분할):
    • 디스크를 논리적으로 분할한 영역으로, /dev/sda1, /dev/sda2 등으로 식별된다.
  • 파일 시스템(데이터 조직화 구조):
    • 파티션 위에 생성되어 데이터를 저장하고 관리하는 구조를 제공한다.
    • mkfs 명령어를 사용하여 파티션에 파일 시스템을 생성한다.
  • 마운트 포인트(접근 지점):
    • 파일 시스템을 디렉토리 트리에 연결하여 사용자와 애플리케이션이 접근할 수 있게 한다.
    • mount 명령어를 사용하여 마운트하며, /mnt, /media, /home 등 다양한 디렉토리를 사용한다.



/dev 디렉토리


/dev 디렉토리는 Unix 및 Linux 계열 운영체제에서 디바이스 파일(device files)이 위치한 특수한 디렉토리이다. 이 디렉토리는 시스템의 모든 물리적 하드웨어 및 가상 장치를 파일 형태로 나타내며, 사용자와 프로그램이 이러한 장치와 상호 작용할 수 있도록 한다.

디바이스 파일의 역할

  • 장치와의 인터페이스 제공: 디바이스 파일은 운영체제가 하드웨어 장치와 통신하기 위한 표준화된 인터페이스를 제공한다.
  • 파일 시스템의 일관성 유지: Unix 철학에서 "모든 것은 파일이다"라는 개념에 따라, 장치도 파일로 취급되어 일관된 방식으로 접근할 수 있다.
  • 추상화 계층 제공: 사용자와 애플리케이션은 하드웨어의 복잡성을 알 필요 없이, 파일 입출력 방식으로 장치에 접근할 수 있다.


디바이스 파일의 종류

디바이스 파일은 크게 블록 장치문자 장치로 구분된다.

블록 장치 (Block Device)

  • 데이터를 일정한 크기의 블록으로 처리하는 장치이다.
  • 임의 접근(Random Access)이 가능하여 디스크의 특정 위치에서 데이터를 읽거나 쓸 수 있다.
  • 데이터의 캐싱 및 버퍼링을 지원하여 입출력 성능을 향상시킨다.
  • 예시:
    • 하드디스크 드라이브(HDD)
    • 솔리드 스테이트 드라이브(SSD)
    • USB 플래시 드라이브
  • 장치 파일 예시:
    • /dev/sda, /dev/sdb: SCSI 또는 SATA 인터페이스를 사용하는 디스크 장치.
    • /dev/nvme0n1: NVMe 인터페이스를 사용하는 SSD 장치.

문자 장치 (Character Device)

  • 데이터를 바이트 단위로 순차적으로 처리하는 장치이다.
  • 임의 접근이 불가능하며, 데이터 스트림을 순차적으로 처리한다.
  • 키 입력이나 터미널 출력 등 실시간 데이터 처리를 주로 담당한다.
  • 예시:
    • 키보드, 마우스
    • 터미널(TTY)
    • 프린터
    • 직렬 포트
  • 장치 파일 예시:
    • /dev/tty0, /dev/ttyS0: 터미널 및 직렬 포트 장치.
    • /dev/input/mouse0: 마우스 장치.


/dev 디렉토리의 주요 장치 파일

  • 저장 장치 관련 파일:
    • /dev/sda, /dev/sdb: 첫 번째, 두 번째 SCSI/SATA 디스크.
    • /dev/sda1, /dev/sda2: /dev/sda 디스크의 첫 번째, 두 번째 파티션.
    • /dev/mapper/: LVM(Logical Volume Manager)이나 암호화된 디스크의 논리 볼륨을 나타낸다.
  • 터미널 및 콘솔 장치:
    • /dev/tty: 현재 터미널 세션을 나타낸다.
    • /dev/pts/: 가상 터미널 세션(예: SSH 접속 시 생성되는 터미널).
  • 특수 장치 파일:
    • /dev/null: 쓰여진 모든 데이터를 버리는 장치로, 출력 결과를 무시할 때 사용한다.
    • /dev/zero: 무한히 0을 출력하는 장치로, 메모리를 초기화하거나 파일을 특정 크기로 생성할 때 사용한다.
    • /dev/random, /dev/urandom: 난수 생성 장치로, 암호학적으로 안전한 난수를 제공한다.
  • 사운드 장치:
    • /dev/snd/: 사운드 카드 관련 장치 파일이 위치한다.
  • 네트워크 장치:
    • 네트워크 인터페이스는 /dev 디렉토리에 나타나지 않고, 대신 /sys/class/net/ 또는 ifconfig, ip addr 명령어로 관리한다.


udev와 동적 장치 관리

udev는 Linux에서 동적 장치 관리를 담당하는 장치 관리자이다.

  • 역할:
    • 시스템이 부팅되거나 장치가 연결될 때, 적절한 디바이스 파일을 생성하거나 제거한다.
    • 장치에 대한 이벤트(예: 장치 연결/제거)에 대응하여 사용자 정의 스크립트를 실행할 수 있다.
  • 장점:
    • 플러그 앤 플레이 기능 지원으로 USB 장치 등 핫스왑 가능한 장치의 관리를 용이하게 한다.
    • 사용자 정의 규칙을 통해 특정 장치에 대해 일관된 장치 이름을 지정할 수 있다.
  • 구성 파일:
    • /etc/udev/udev.conf: udev의 전역 설정 파일.
    • /etc/udev/rules.d/: 사용자 정의 udev 규칙 파일이 위치하는 디렉토리.

 

파티션


파티션(partition)은 하나의 물리적 저장 장치를 여러 개의 논리적 단위로 분할한 것이다. 이를 통해 디스크를 논리적으로 구분하여 다양한 용도로 활용할 수 있다.


파티션의 필요성

  • 운영체제 설치 및 멀티부팅: 여러 운영체제를 동일한 디스크에 설치하여 부팅 시 선택할 수 있다.
  • 시스템 및 데이터 분리: 시스템 파일과 사용자 데이터를 분리하여 시스템 안정성과 데이터 보안을 향상시킨다.
  • 백업 및 복구 용이성: 특정 파티션만 백업하거나 복구할 수 있어 효율적인 시스템 관리를 도모한다.
  • 성능 및 보안 향상: 파티션별로 파일 시스템 유형이나 마운트 옵션을 달리하여 성능을 최적화하거나 보안을 강화할 수 있다.
  • 디스크 공간 관리: 각 파티션에 할당된 공간을 통해 디스크 사용을 제한하고 모니터링할 수 있다.


파티션 테이블과 디스크 구조

파티션 테이블은 디스크의 파티션 정보를 저장하는 데이터 구조로, 디스크의 첫 부분에 위치한다.

MBR (Master Boot Record)

  • 구조: 디스크의 첫 번째 섹터(512바이트)에 위치하며, 부트로더와 파티션 테이블 정보를 포함한다.
  • 제한 사항:
    • 디스크 용량 제한: 최대 2TB의 디스크만 지원한다.
    • 파티션 수 제한: 최대 4개의 주 파티션만 생성할 수 있다.
  • 확장 파티션과 논리 파티션:
    • 주 파티션 중 하나를 확장 파티션으로 설정하여 그 안에 다수의 논리 파티션을 생성할 수 있다.
    • 논리 파티션은 5번 파티션부터 번호가 할당된다.

GPT (GUID Partition Table)

  • 구조: UEFI 시스템에서 사용되며, 디스크의 앞과 뒤에 파티션 테이블을 저장하여 복구 가능성을 높인다.
  • 장점:
    • 디스크 용량 제한: 이론적으로 8ZB(제타바이트)까지 지원한다.
    • 파티션 수 제한: 최대 128개의 파티션을 기본으로 지원한다.
  • 보안 및 안정성:
    • CRC32 체크섬을 사용하여 파티션 테이블의 무결성을 확인한다.
    • 파티션 테이블의 백업을 디스크의 마지막에 저장하여 손상 시 복구할 수 있다.


파티션의 종류

주 파티션 (Primary Partition)

  • 역할: 운영체제를 설치하거나 부팅 가능한 파티션으로 사용된다.
  • MBR 기준 제한: 최대 4개까지 생성할 수 있다.
  • 식별:/dev/sda1부터 /dev/sda4까지의 번호를 가진다.

확장 파티션 (Extended Partition)

  • 역할: 주 파티션의 하나로 설정되며, 그 자체로 데이터를 저장하지 않고 논리 파티션을 포함한다.
  • 특징: MBR 파티션 테이블의 주 파티션 제한을 극복하기 위해 사용된다.
  • 식별: 주 파티션 번호 중 하나를 차지한다(예: /dev/sda4).

논리 파티션 (Logical Partition)

  • 역할: 확장 파티션 내부에 생성되며, 실제 데이터를 저장하는 파티션이다.
  • 식별: 번호는 /dev/sda5부터 시작하여 순차적으로 할당된다.
  • 제한 사항: 이론적으로 60개 이상의 논리 파티션을 생성할 수 있지만, 운영체제나 시스템에 따라 제한이 있을 수 있다.


파티션과 파일 시스템의 관계

  • 파티션: 디스크의 논리적 구분으로, 데이터를 저장할 수 있는 공간을 정의한다.
  • 파일 시스템: 파티션 위에 생성되며, 데이터를 조직화하고 관리하는 방법을 정의한다.
    • Linux: ext4, xfs, btrfs
    • Windows: NTFS, FAT32
  • 마운트:
    • 파일 시스템을 디렉토리 구조에 연결하여 사용자와 프로그램이 접근할 수 있게 한다.
    • 마운트 지점은 /etc/fstab 파일을 통해 지속적으로 설정할 수 있다.


파티션 관리 도구

fdisk

  • MBR 파티션 테이블을 사용하는 디스크의 파티션을 관리한다.
  • 명령줄 인터페이스를 제공하며, 간단한 디스크 관리에 적합하다.
  • 2TB 이상의 디스크나 GPT 파티션 테이블은 지원하지 않는다.

gdisk

  • GPT 파티션 테이블을 사용하는 디스크의 파티션을 관리한다.
  • fdisk와 유사한 인터페이스를 제공하지만 GPT를 지원한다.

parted

  • MBR과 GPT 모두를 지원하며, 대용량 디스크에서도 사용 가능하다.
  • 명령줄 인터페이스와 스크립팅 기능을 제공하여 복잡한 파티션 작업에 유용하다.

GParted

  • 그래픽 인터페이스를 제공하는 파티션 편집기로, 다양한 파일 시스템과 파티션 테이블을 지원한다.

KDE Partition Manager

  • KDE 데스크탑 환경에서 사용하는 파티션 관리 도구이다.

 

728x90

'CS > Linux' 카테고리의 다른 글

[Linux] LVM(Logical Volume Manager)  (0) 2024.10.02
[Linux] RAID 문제 발생 시  (0) 2024.10.01
[Linux] RAID 설정하는 방법  (0) 2024.10.01
[Linux] 하드웨어 디스크 추가하는 방법  (0) 2024.10.01
[Linux] 부트로더  (0) 2024.09.29