cmod.ify

[LINUX] 디스크 관리 본문

BASIC/LINUX

[LINUX] 디스크 관리

modifyC 2026. 1. 12. 18:48
728x90
반응형

1. 리눅스 파일 시스템(File System) 개요

파일 시스템은 컴퓨터에서 파일이나 데이터를 효율적으로 저장, 수정, 삭제, 관리하기 위한 체계임. 리눅스는 초기 Minix 파일 시스템을 사용하다가 고유의 ext(Extended File System) 시리즈를 개발해 사용해 왔으며, 최근에는 고성능 대용량 처리를 위해 XFS 등 다양한 시스템을 도입함.


주요 파일 시스템 종류

종류 특징 및 지원 사양
ext4 - 리눅스 표준 파일 시스템

- 최대 1EB 볼륨, 16TB 파일 지원

- 디렉토리 개수 제한 대폭 확대 (64,000개)

- 온라인 조각모음 및 저널링(복구) 기능 강화
XFS - 실리콘 그래픽스 개발, 64비트 고성능 저널링 파일 시스템

- 대용량 파일 및 고성능 I/O 처리에 최적화 (최대 16EB 지원)

- 우분투 사용 시 xfsprogs 패키지 설치 필요
iso9660 - CD-ROM, DVD 등 광학 매체를 위한 읽기 전용 파일 시스템
NFS - 네트워크를 통해 원격 서버의 디스크를 내 것처럼 연결해 사용
NTFS/MSDOS - 윈도우 OS와의 데이터 호환을 위해 사용되는 파일 시스템

특수 용도의 가상 파일 시스템

물리적인 디스크 공간이 아닌, 메모리(RAM)나 커널 정보 교환을 위해 존재하는 가상 파일 시스템임.

  • swap: RAM 부족 시 디스크의 일부를 메모리처럼 활용하여 시스템 안정성을 유지함.
  • tmpfs: 메모리에 임시 파일을 저장하는 방식임. 속도가 매우 빠르지만 재부팅 시 데이터가 삭제됨 (주로 /tmp에 사용).
  • ramfs: tmpfs와 유사하나, 메모리가 꽉 찼을 때 swap을 사용하지 않고 계속 커지는 차이가 있음.
  • rootfs: 시스템 초기화 및 관리를 위한 핵심 파일들을 저장하는 루트 파일 시스템.
  • proc: 커널의 현재 상태와 프로세스 정보를 파일 형태로 제공하는 인터페이스임.

/proc 가상 파일 시스템 상세 내용

  • /proc/cpuinfo: CPU 모델, 코어 정보 등
  • /proc/meminfo: 메모리 사용량 및 여유 공간
  • /proc/uptime: 시스템 부팅 후 경과 시간
  • /proc/loadavg: 시스템 평균 부하 상태
  • /proc/[PID]/status: 특정 프로세스의 상세 정보
  • 확인 방법: cat /proc/filesystems 명령어로 현재 시스템이 지원하는 파일 시스템 확인 가능.

2. 리눅스 파일 시스템의 특징

리눅스(유닉스 계열) 파일 시스템은 몇 가지 고유한 설계 원칙을 따름.

  1. 모든 것은 파일이다: 일반 데이터뿐만 아니라 하드웨어 장치(마우스, 키보드, 디스크)조차 특수 파일을 통해 접근함.
  2. inode 기반 관리: 파일의 본문 데이터와 파일의 정보(메타 데이터)를 분리하여 관리함.
  3. 디렉토리의 본질: 디렉토리는 그저 '파일 목록'을 담고 있는 특별한 파일일 뿐임.

3. ext4 파일 시스템의 구조

ext4는 디스크를 효율적으로 사용하기 위해 저장 공간을 논리적인 블록(Block) 집합으로 나눔.

  • 블록(Block): 데이터를 저장하는 최소 단위 (일반적으로 4KB).
  • 블록 그룹: 관리 효율을 위해 여러 블록을 그룹으로 묶어 관리함.

inode (Index Node) 구조

파일에 대한 모든 핵심 정보를 담고 있는 자료구조임. 파일마다 고유한 inode 번호가 할당됨.

1) 파일 정보 (Metadata)

  • 파일 종류 (일반, 디렉토리, 링크 등)
  • 접근 권한 (Read, Write, Execute)
  • 소유자 및 그룹 정보
  • 파일 크기, 접근/수정 시간
  • 확인 방법: ls -l 명령어로 출력되는 대부분의 정보가 여기서 옴.

2) 데이터 블록 주소

실제 파일 내용이 디스크 어디에 있는지 가리키는 포인터 역할을 함.

  • 직접 블록: 데이터가 있는 위치를 직접 가리킴.
  • 간접/이중 간접 블록: 파일 크기가 커질 경우 주소 정보를 담은 또 다른 블록을 거쳐 데이터에 접근함.

4. 리눅스 파일 시스템과 디렉토리 계층 구조

하나의 파일 시스템 구성: 윈도우와의 차이점

리눅스는 모든 파일과 디렉토리를 하나의 거대한 나무(Tree) 구조로 관리함.

  • 리눅스: 파일 시스템을 최상위 디렉토리인 / (루트)에 연결하여 사용함. 여러 파티션을 나눠도 결국 특정 디렉토리 아래에 위치하게 됨.
  • 윈도우: C:\, D:\처럼 드라이브 문자를 사용하여 파티션별로 독립적인 계층 구조를 가짐.

여러 파일 시스템 구성의 장점

필요에 따라 /는 첫 번째 디스크에, /usr나 /home은 두 번째 디스크에 연결하는 식으로 구성할 수 있음. 이렇게 하면 특정 영역의 용량이 꽉 차더라도 전체 시스템이 멈추는 것을 방지하고, 데이터를 서로 간섭 없이 안전하게 관리할 수 있음.


5. 파일 시스템 마운트(Mount)

개요

물리적인 저장 장치(하드디스크, USB 등)를 리눅스의 디렉토리 구조와 연결하는 과정을 마운트라고 함. 마운트되지 않은 장치는 시스템 내에 존재하더라도 사용자가 접근할 수 없음.

마운트 포인트(Mount Point)

디렉토리 계층 구조 내에서 외부 파일 시스템이 연결되는 지점(디렉토리)을 의미함.


6. 자동 마운트 설정: /etc/fstab

부팅할 때마다 매번 수동으로 마운트하는 번거로움을 피하기 위해 /etc/fstab 파일에 설정 정보를 저장함.

파일 구조 예시

/dev/sdb1 /mnt/data ext4 defaults 0 1

항목 의미
장치 이름 장치 경로 또는 UUID (예: /dev/sdb1)
마운트 포인트 연결할 디렉토리 위치 (예: /, /mnt/data)
파일 시스템 종류 ext4, xfs, vfat, nfs 등
옵션 마운트 시 적용할 속성 (아래 표 참조)
덤프(Dump) 설정 0: 백업 안 함, 1: dump 명령 가능
파일 점검(fsck) 0: 점검 안 함, 1: 루트 전용, 2: 그 외 일반 장치

주요 마운트 옵션

  • defaults: rw, auto, exec, suid 등 기본 속성을 모두 포함함.
  • ro / rw: 읽기 전용(Read Only) 또는 읽기/쓰기(Read Write) 설정.
  • auto / noauto: 부팅 시 자동 마운트 여부.
  • exec / noexec: 해당 장치 내 실행 파일의 실행 허용 여부 (보안을 위해 데이터 전용 하드에는 noexec 권장).
  • user / nouser: 일반 사용자의 마운트 권한 허용 여부.
  • userquota / grpquota: 사용자나 그룹별로 디스크 사용량을 제한(Quota)할 때 사용함.

7. 마운트 관련 명령어

mount 명령어

mount [옵션] [장치명] [마운트포인트]

  • -t [종류]: 파일 시스템 종류를 명시함.
  • -o [옵션]: fstab에서 사용하는 옵션을 직접 지정함.
  • -f: 마운트가 가능한지 테스트만 수행함.
  • -r: 읽기 전용으로 마운트함.

활용 예시

  1. USB 마운트 (리눅스 포맷): mount /dev/sdc1 /mnt
  2. USB 마운트 (윈도우 FAT32 포맷): mount -t vfat /dev/sdc1 /mnt
  3. 원격 디스크(NFS) 마운트: mount -t nfs 서버주소:/공유디렉토리 /mnt
  4. 마운트 해제: umount /mnt (장치명이나 마운트 포인트 중 하나만 써도 됨)

Tip: 옵션 없이 mount만 입력하면 현재 마운트된 장치 정보( /etc/mtab 내용)를 모두 보여줌.

 

8. VirtualBox에서 디스크 추가 및 인식

가상 환경에서 실습을 위해 새로운 하드디스크를 추가하는 과정임.

  1. 디스크 추가: VirtualBox 설정의 [저장소] 탭에서 새 하드디스크를 생성하고 연결함.
  2. USB 장치 연결: 만약 실제 USB를 연결하려면 설정의 [USB] 탭에서 [USB 장치 필터]를 추가해야 가상 머신이 인식함.
  3. 디스크 확인: 리눅스 부팅 후 아래 명령어로 새 디스크가 인식되었는지 확인.
    • sudo fdisk -l
    • 보통 기본 디스크가 /dev/sda라면, 새로 추가된 디스크는 /dev/sdb, /dev/sdc 순으로 명명됨.

9. 파티션(Partition) 생성 및 관리

물리적인 디스크를 운영체제가 사용할 수 있도록 논리적인 공간으로 나누는 작업임. 최소 1개 이상의 파티션을 만들어야 실제 데이터를 저장할 수 있음.

fdisk를 이용한 파티션 작업 절차 sudo fdisk /dev/sdb 명령을 수행한 후 내부 대화형 메뉴를 사용함.

  • m: 도움말(옵션 리스트) 출력
  • n: 새로운 파티션 생성
  • p: 주 파티션(Primary) 선택
  • 1: 파티션 번호 지정
  • First sector: 시작 위치 지정 (보통 기본값인 Enter 입력)
  • Last sector: 파티션 크기 지정 (예: +2G 또는 전체 사용 시 Enter)
  • d: 잘못 만든 파티션 삭제
  • w: 설정 내용을 디스크에 최종 저장 및 종료 (매우 중요)

10. 디스크 장치 및 파티션 이름 규칙

리눅스에서 장치 이름은 연결 순서와 구조에 따라 체계적으로 부여됨.

  • 디스크 장치: 알파벳 순서 (/dev/sda, /dev/sdb, /dev/sdc ...)
  • 파티션: 디스크 이름 뒤에 숫자 추가 (/dev/sda1, /dev/sda2 ...)
  • 주의: 시스템 환경에 따라 숫자가 1번부터 시작하는 것이 일반적임.

11. 파일 시스템 생성 (포맷)

파티션을 만든 후에는 운영체제가 데이터를 기록할 수 있도록 파일 시스템을 입혀야 함.

주요 명령어

  1. mkfs: mkfs -t [파일시스템종류] [파티션]
    • 예: sudo mkfs -t ext4 /dev/sdb1
  2. mke2fs: 확장(ext) 파일 시스템 전용 생성 도구
    • 예: sudo mke2fs -t ext4 /dev/sdb1

핵심: 파일 시스템 생성이 완료되어야만 비로소 마운트가 가능함.


12. 서비스 적용: 마운트 실습

생성한 파일 시스템을 디렉토리에 연결하여 사용함.

  • 마운트 실행: sudo mount /dev/sdb1 /mnt
    • 이제 /mnt 디렉토리에 파일을 저장하면 실제로는 /dev/sdb1 디스크에 저장됨.
  • 마운트 해제: sudo umount /mnt
    • 작업이 끝나거나 장치를 제거할 때 사용함.

13. LVM (Logical Volume Manager)

개요

리눅스의 저장 공간을 효율적이고 유연하게 관리하기 위한 커널의 한 부분임. 여러 개의 물리적인 하드디스크를 합쳐서 하나의 큰 논리적 파티션으로 구성하거나, 필요에 따라 용량을 자유롭게 나누고 합칠 수 있음.

LVM vs 기존 디스크 파티셔닝(Disk Partitioning)

  • 기존 방식: 하드디스크를 나눈 후 고정된 크기로 마운트함. 한 번 정해진 크기를 늘리거나 줄이는 것이 매우 어렵고 번거로움.
  • LVM 방식: '파티션' 대신 '볼륨(Volume)'이라는 단위를 사용함. 스토리지의 확장과 변경이 매우 유연하며, 데이터를 옮기지 않고도 운영 중에 용량을 조절할 수 있음.

LVM의 장점

  1. 유연한 용량 조절: 서비스 중단 없이 용량 증설이 가능함.
  2. Storage Pool: 여러 디스크를 하나의 거대한 저장소 풀로 묶어 관리 가능.
  3. 편의성: /dev/sda1 같은 이름 대신 vg_data-lv_work처럼 용도에 맞는 이름 지정 가능.
  4. 고급 기능: 데이터를 여러 디스크에 분산 저장(Striping)하거나 복제(Mirroring)하는 기능을 제공함.

14. LVM 핵심 용어

용어 설명
PV (Physical Volume) 실제 물리 하드디스크나 파티션을 LVM에서 쓸 수 있게 변환한 상태
VG (Volume Group) 여러 개의 PV를 하나로 묶은 거대한 가상 디스크 그룹
LV (Logical Volume) VG를 다시 사용자가 필요한 크기만큼 나눈 논리적 파티션 (실제 마운트 대상)
PE (Physical Extent) PV가 가진 일정한 크기의 물리적 블록 단위 (보통 4MB)
LE (Logical Extent) LV가 가진 일정한 크기의 논리적 블록 단위

 


15. LVM 생성 및 관리 과정

LVM을 구축하여 실제 마운트하기까지의 순서는 다음과 같음.

  1. 파티션 종류 변경: fdisk에서 파티션 타입을 Linux LVM(8e 또는 대항 코드)으로 변경함.
  2. PV 생성: pvcreate /dev/sdb1 (물리 장치를 LVM용으로 초기화)
  3. VG 생성: vgcreate myVG /dev/sdb1 /dev/sdc1 (여러 PV를 하나로 묶음)
  4. VG 활성화: vgchange -a y myVG (볼륨 그룹 활성화)
  5. LV 생성: lvcreate -L 10G -n myLV myVG (원하는 크기의 논리 볼륨 생성)
  6. 파일 시스템 생성: mkfs.ext4 /dev/myVG/myLV (포맷)
  7. 마운트: mount /dev/myVG/myLV /mnt (디렉토리 연결)

16. 디스크 사용량 확인 (df, du)

시스템을 운영하면서 디스크 공간이 얼마나 남았는지 확인하는 필수 명령어임.

df (Disk Free)

전체 파일 시스템의 남은 공간과 사용량을 출력함.

  • df -h: 사람이 보기 편한 단위(GB, MB)로 출력 (가장 많이 사용).
  • df -T: 파일 시스템 종류(ext4, xfs 등)를 함께 출력함.
  • df -a: 모든 가상 파일 시스템까지 포함하여 출력함.

du (Disk Usage)

특정 디렉토리나 파일이 차지하는 사용량을 확인함.

  • du -sh [디렉토리]: 지정한 디렉토리의 전체 합계 사용량을 알기 쉬운 단위로 출력함.
  • du -h --max-depth=1: 현재 디렉토리 아래의 하위 디렉토리별 사용량을 한눈에 확인 가능.

17. 파일 시스템 검사 및 복구

디스크를 사용하다 보면 갑작스러운 전원 차단이나 하드웨어 오류로 인해 파일 시스템이 손상될 수 있음. 이를 점검하고 복구하는 명령어들을 정리함.

파일 시스템 점검: fsck (File System Check)

리눅스의 표준 파일 시스템 점검 도구임. 주의할 점은 반드시 해당 파티션을 마운트 해제(umount)한 상태에서 수행해야 데이터 손상을 막을 수 있음.

  • 사용법: fsck [옵션] [장치명]
  • 주요 옵션
    • -f: 파일 시스템이 깨끗해 보이더라도 강제로 점검을 수행함.
    • -b [슈퍼블록]: 기본 슈퍼블록이 손상되었을 때, 지정한 백업 슈퍼블록을 사용하여 복구를 시도함.
    • -y: 점검 중 발생하는 모든 복구 질문에 자동으로 yes라고 응답함.
    • -a: 문제가 발견되면 사용자 확인 없이 자동으로 시스템이 복구함.

파일 시스템 점검: e2fsck

ext2, ext3, ext4와 같은 ext 계열 파일 시스템을 정밀하게 점검할 때 사용하는 도구임.

  • 사용법: e2fsck [옵션] [장치명]
  • 주요 옵션
    • -f: 강제로 점검을 수행함.
    • -y: 모든 질문에 yes로 응답하여 자동 복구함.
    • -j [external-journal]: 저널링 파일 시스템(ext3, ext4)을 검사할 때 저널 장치를 지정함.
    • 특징: 별도의 옵션 없이 실행해도 기본적인 복구 작업을 수행함.

18. 배드 블록 검사 (badblocks)

디스크의 물리적인 손상 구역인 배드 블록(Bad Block)이 있는지 찾아내는 명령어임.

  • 사용법: badblocks [옵션] [장치명]
  • 주요 옵션
    • -v: 검사 과정을 상세하게 화면에 출력함.
    • -o [출력파일]: 발견된 배드 블록의 목록을 지정한 텍스트 파일에 기록함. 이 파일은 나중에 fsck 등에서 해당 구역을 사용하지 않도록 설정할 때 쓰임.

19. 디스크 관리 요약 및 마무리

이번 포스팅에서는 리눅스의 파일 시스템 종류부터 시작해 디스크 추가, 파티션 관리(fdisk), 논리 볼륨 관리(LVM), 그리고 유지보수를 위한 점검 명령어까지 살펴봄.

  1. 파일 시스템: ext4와 XFS가 주류임.
  2. 마운트: 장치를 디렉토리에 연결해야 사용 가능하며, /etc/fstab에 등록해 자동화함.
  3. LVM: 유연한 용량 관리를 위해 실무에서 필수적으로 사용됨.
  4. 점검: 시스템 이상 시 fsck를 통해 복구하되, 반드시 마운트 해제 후 실행해야 함.
728x90
반응형

'BASIC > LINUX' 카테고리의 다른 글

[LINUX] 네트워크  (1) 2026.01.13
[LINUX] 사용자 관리 및 관련 파일 정리  (0) 2026.01.13
[LINUX] 부팅 시스템  (0) 2026.01.09
[LINUX] 소프트웨어  (0) 2026.01.09
[LINUX] 프로세스  (1) 2026.01.08