시스템 · 서버핵심 · 18분 읽기

디스크·파일 시스템·LVM과 마운트

블록 장치의 공간과 파일 시스템의 공간은 다릅니다. 파티션, 논리 볼륨, 파일 시스템, 마운트를 층별로 이해합니다.

개념부터 찾아보기

정의·역할·동작 원리를 독립 페이지에서 확인하세요. 본문의 밑줄 용어에도 설명이 있습니다.

이 노트에서 설명할 수 있게 되는 것

  1. 디스크·PV·VG·LV·파일 시스템·마운트의 포함 관계를 설명한다.
  2. 논리 볼륨 확장과 파일 시스템 확장을 별도로 추적한다.
  3. df·du·inode·quota 결과가 다른 이유를 구분한다.
먼저 알면 좋은 개념Linux 파일과 경로 읽기

01디스크·파티션·파일 시스템·마운트의 네 단계

  • 블록 장치는 일정 크기의 논리 블록을 읽고 쓰는 인터페이스다.
  • 파티션 테이블은 그 장치의 어느 구간을 나누어 사용할지 기록하고, 파일 시스템은 그 구간 안에서 이름·디렉터리··빈 공간을 관리할 구조를 만든다.
  • mount는 만들어진 파일 시스템을 전체 경로 트리에 연결한다.
  • 파티션 타입을 로 지정한 것만으로 ext4가 생성되거나 사용 가능한 디렉터리가 생기는 것은 아니다.
    • /dev/sdX, /dev/nvme0n1, /dev/vdX는 서로 다른 장치 계열의 명명 관례다.
  • sd 뒤 문자는 연결 순서가 달라지면 바뀔 수 있고 장치 경로와 파일 시스템 UUID는 다른 식별자다.
  • lsblk는 장치 계층, blkid는 파일 시스템 서명과 식별자, findmnt는 현재 경로 연결을 보여 준다.
  • 같은 디스크 크기를 보더라도 MB=10^6바이트와 MiB=2^20바이트의 단위 차이로 숫자가 달라질 수 있으며 운영체제 이름으로 단위를 고정해서 설명하지 않는다.
bash
lsblk -o NAME,TYPE,SIZE,FSTYPE,LABEL,UUID,MOUNTPOINTS
blkid
findmnt
sudo fdisk -l

교육용 설정·명령 예시. 실행 환경과 대상 경로를 가정하며 이 페이지를 만들면서 실행하지 않았다.

02MBR과 GPT, 2048 섹터의 계산

  • 전통적인 512바이트 MBR 섹터는 부트 코드 영역, 네 개의 파티션 항목, 마지막 서명으로 구성된다.
  • 네 항목 중 하나를 확장 파티션으로 사용하고 그 안에 논리 파티션을 연결할 수 있다.
  • 기본 파티션 네 개에 확장 파티션을 다섯 번째로 추가하는 구조는 아니다.
  • GPT는 별도의 헤더·파티션 항목 배열과 백업 정보를 사용하며 MBR의 primary/extended 구분을 그대로 적용하지 않는다.
  • 512바이트 논리 섹터 기준 2048 × 512 = 1,048,576바이트 = 1MiB다.
  • 첫 파티션을 그 위치에서 시작하는 것은 정렬을 위한 흔한 선택이지 0~2047 섹터 전체가 MBR이라는 뜻이 아니다.
  • 장치의 논리 섹터 크기가 다르면 같은 섹터 번호의 바이트 위치도 달라진다.
  • UEFI는 보통 FAT 형식의 EFI System Partition에서 부트로더 파일을 읽으며, BIOS+GPT의 부팅 방식과 분리해서 이해한다.
LEARN THROUGH PRACTICE

102MiB 디스크에서 101MiB 파티션이 나오는 이유 계산하기

디스크 크기·논리 섹터·파티션 시작과 끝을 계산하고, 파티션 생성과 파일 시스템 준비를 구별한다.

실습 구성과 전제

  • 작은 가상 디스크 여러 개를 연결한 실습 화면이다. /dev/sda 같은 장치 이름은 환경마다 달라지므로 실제 대상은 크기와 식별자로 확인한다.
  • 아래 명령은 조회용이다. 파티션 생성·포맷 명령은 기존 자료를 손상시킬 수 있으므로 이 실습에 포함하지 않는다.
  1. 디스크 전체를 섹터 수로 환산한다

    • 첫 화면의 한 디스크는 106,954,752바이트, 208,896섹터다. 논리 섹터 512바이트를 곱하면 두 값이 일치한다.
    • 106,954,752 ÷ 1,048,576 = 102이므로 이 도구의 102MiB 표시는 2의 거듭제곱 단위에 따른 값이다. MB와 MiB를 같은 수치 단위로 섞지 않는다.
    bash
    lsblk -o NAME,SIZE,TYPE,LOG-SEC,PHY-SEC,FSTYPE,MOUNTPOINTS
    sudo fdisk -l /dev/sda

    장치 이름을 확인한 뒤 해당 디스크의 섹터·파티션 정보를 읽는다.

    5/28-raid · 실습·개념 참고 화면 6원본 크기로 보기 ↗
    • 각 가상 디스크는 102MiB와 106954752 bytes로 표시된다.
    • Sector size 줄은 logical/physical 모두 512 bytes이고 총 208896 sectors가 보인다.
    확인 기준

    계산에는 실제 출력의 논리 섹터 크기를 사용한다. 모든 디스크가 항상 512바이트라고 일반화하지 않는다.

  2. 포함 범위의 끝을 반영해 파티션 크기를 계산한다

    • 두 번째 화면의 시작은 2048, 끝은 208895이다. 양 끝을 포함하므로 섹터 수는 208895−2048+1 = 206848이다.
    • 206848×512 = 105906176바이트 = 101MiB다. 앞의 2048섹터는 1MiB에 해당하지만 그 전체가 MBR 자체인 것은 아니다. 전통적인 MBR 레코드는 첫 섹터에 있고 시작 정렬 여유 등이 별도로 존재한다.
    5/28-raid · 실습·개념 참고 화면 15원본 크기로 보기 ↗
    • Disklabel type은 dos이고 sda1의 Start=2048, End=208895, Sectors=206848이 보인다.
    • 크기는 101M, Id는 83, Type은 Linux로 표시된다.
    확인 기준

    Id 83 표시는 파티션 타입이다. 이것만으로 구성··ext4 포맷이 완료되었다고 판단하지 않는다.

  3. 파일 시스템과 마운트 상태를 별도로 연결한다

    • 파티션은 사용할 블록 범위를 정한다. 파일 시스템은 그 범위에 디렉터리··데이터 배치를 만들며, 마운트는 이를 경로 트리에 연결한다.
    • lsblk의 TYPE, FSTYPE, MOUNTPOINTS를 차례로 읽으면 파티션만 생성된 상태인지, 포맷되었지만 마운트되지 않았는지 구분할 수 있다.
    bash
    lsblk -f
    findmnt --source /dev/sda1

    파일 시스템 종류와 현재 마운트를 조회하는 예시다.

    확인 기준

    파티션이 보이는데 디렉터리에서 파일을 못 찾으면 마운트 여부와 실제 원본 장치를 확인한다. 크기 차이를 곧바로 손실이나 오류라고 판단하지 않는다.

실습에서 확인한 동작 원리

  • 바이트 수는 섹터 수×논리 섹터 크기로 검산하고, 파티션의 시작·끝은 포함 범위로 계산한다.
  • 디스크, 파티션, 파일 시스템, 마운트는 별도의 준비 단계다.

설정·출력 추가로 확인하기 28장

아래 화면을 펼쳐 위 실습의 설정값, 명령과 확인 기준을 비교해 보세요. 각 묶음은 별도 실습 기록입니다.

실습 화면 묶음 01 15장
5/28-raid · 명령·상태 출력 12원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 명령·상태 출력이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 명령·상태 출력 24원본 크기로 보기 ↗
  • 「sda, sdb 초기화」 문맥에 삽입된 원본 명령·상태 출력이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 명령·상태 출력 31원본 크기로 보기 ↗
  • 「sdc, sdd 를 striping 모드로 묶어라 - raid 0」 문맥에 삽입된 원본 명령·상태 출력이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 명령·상태 출력 7원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 명령·상태 출력이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 명령·상태 출력 8원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 명령·상태 출력이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 10원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 11원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 16원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 17원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 19원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 20원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 29원본 크기로 보기 ↗
  • 「striping (raid0)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 30원본 크기로 보기 ↗
  • 「striping (raid0)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 39원본 크기로 보기 ↗
  • 「riad 1 에서 하나 에러 상황」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
5/28-raid · 실습·개념 참고 화면 9원본 크기로 보기 ↗
  • 「rocky 실습 (sata)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 02 7장
IDE 디스크 연결 형태원본 크기로 보기 ↗
  • 수업 원본 자료 · 물리 디스크·파티션·RAID 생성 및 상태 확인.
SATA 디스크 연결 형태원본 크기로 보기 ↗
  • 수업 원본 자료 · 물리 디스크·파티션·RAID 생성 및 상태 확인.
디스크와 RAID · 레이드 생성법 (6)원본 크기로 보기 ↗
  • 수업 원본 자료 · 물리 디스크·파티션·RAID 생성 및 상태 확인. 원문에서 「레이드 생성법」에 배치된 그림 또는 화면이다.
디스크와 RAID · 리눅스에 연결 가능한 물리 디스크의 종류 (3)원본 크기로 보기 ↗
  • 수업 원본 자료 · 물리 디스크·파티션·RAID 생성 및 상태 확인. 원문에서 「리눅스에 연결 가능한 물리 디스크의 종류」에 배치된 그림 또는 화면이다.
디스크와 RAID · 상태 확인 (7)원본 크기로 보기 ↗
  • 수업 원본 자료 · 물리 디스크·파티션·RAID 생성 및 상태 확인. 원문에서 「상태 확인」에 배치된 그림 또는 화면이다.
디스크와 RAID · 파티셔닝 (4)원본 크기로 보기 ↗
  • 수업 원본 자료 · 물리 디스크·파티션·RAID 생성 및 상태 확인. 원문에서 「파티셔닝」에 배치된 그림 또는 화면이다.
디스크와 RAID · 파티셔닝 (5)원본 크기로 보기 ↗
  • 수업 원본 자료 · 물리 디스크·파티션·RAID 생성 및 상태 확인. 원문에서 「파티셔닝」에 배치된 그림 또는 화면이다.
실습 화면 묶음 03 1장
raid · 실습·개념 참고 화면 18원본 크기로 보기 ↗
  • 「log」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 디스크·파일 시스템·LVM과 마운트 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 04 5장
디스크 할당량 · disk quota (1)원본 크기로 보기 ↗
  • 수업 원본 자료 · 사용자 디스크 사용량과 quota 설정. 원문에서 「disk quota」에 배치된 그림 또는 화면이다.
디스크 할당량 · disk quota (2)원본 크기로 보기 ↗
  • 수업 원본 자료 · 사용자 디스크 사용량과 quota 설정. 원문에서 「disk quota」에 배치된 그림 또는 화면이다.
디스크 할당량 · disk quota (3)원본 크기로 보기 ↗
  • 수업 원본 자료 · 사용자 디스크 사용량과 quota 설정. 원문에서 「disk quota」에 배치된 그림 또는 화면이다.
디스크 할당량 · disk quota (4)원본 크기로 보기 ↗
  • 수업 원본 자료 · 사용자 디스크 사용량과 quota 설정. 원문에서 「disk quota」에 배치된 그림 또는 화면이다.
디스크 할당량 · disk quota (5)원본 크기로 보기 ↗
  • 수업 원본 자료 · 사용자 디스크 사용량과 quota 설정. 원문에서 「disk quota」에 배치된 그림 또는 화면이다.
동작·명령 참고 문서

03포맷·저널·슈퍼블록이 담당하는 일

  • mkfs는 빈 블록 범위에 파일 시스템 메타데이터를 생성한다.
  • 기존 파티션에 실행하면 이전 자료를 훼손할 수 있으므로 새 실습 디스크와 기존 운영 데이터의 구분이 필수다.
  • 슈퍼블록은 파일 시스템 종류와 크기, 블록 배치 등의 핵심 정보를 담는 구조이며 정확한 필드와 백업 배치는 파일 시스템마다 다르다.
  • 모든 슈퍼블록의 한 바이트 오류가 같은 결과를 만든다는 일반화는 성립하지 않는다.
  • 저널은 메타데이터 변경 등의 일관성 회복을 위해 작업 기록을 남기는 기법이다.
  • 정상 반영이 중단되면 파일 시스템 구현이 기록을 이용해 상태를 복구한다.
  • 저널이 있다고 삭제한 사용자 파일의 이전 내용을 언제나 되돌릴 수 있는 것은 아니므로 백업과 다르다.
  • ext4 자체가 디스크를 다른 컴퓨터에 연결했을 때 내용을 숨기는 암호화 기능을 자동 제공하는 것도 아니다.
    • 파일 시스템, 접근 권한, 저장 장치 암호화는 별도 기능이다.

04fstab 여섯 필드와 부팅 시 연결

  • fstab은 source, mountpoint, filesystem type, options, dump flag, fsck 순서의 여섯 필드다.
  • UUID를 source로 사용하면 sd 문자 변화와 경로 연결을 분리할 수 있다.
  • root ext 파일 시스템에 fsck 순서 1, 다른 ext 파일 시스템에 2를 쓰는 구성이 흔하지만 XFS처럼 부팅 fsck 순서를 같은 방식으로 사용하지 않는 파일 시스템은 보통 0이다.
    • 값은 파일 시스템과 배포판의 부팅 정책에 맞춘다.
  • nofail은 장치가 없어도 부팅을 계속할 수 있게 하는 선택이며 반드시 있어야 하는 데이터 장치에서는 서비스가 빈 마운트 지점에 쓰는 문제가 생길 수 있다.
  • _netdev는 네트워크가 필요한 장치라는 의존성 정보를 주고 x-.automount는 접근 시 마운트를 유도하는 구성이다.
  • nodev·nosuid·noexec는 각각 장치 파일 해석·특수 실행 권한·직접 실행과 관계된 경계를 제공하며 모든 공격을 막는 만능 설정은 아니다.
text
# 실제 UUID로 바꾸는 fstab 형식 예시
UUID=<filesystem-uuid> /srv/data ext4 defaults,nodev,nosuid 0 2
# 읽기 검증
findmnt --verify --verbose
# mount -a는 검사가 아니라 실제 마운트 적용 작업이다.

교육용 설정·명령 예시. 실행 환경과 대상 경로를 가정하며 이 페이지를 만들면서 실행하지 않았다.

05LVM은 PV의 공간을 VG로 모아 LV에 배정한다

  • 는 이 관리할 물리 볼륨이며 디스크 전체 또는 파티션 위에 만들 수 있다.
  • 는 하나 이상의 를 모은 공간 풀이고, 는 그 안에서 파일 시스템이나 다른 용도에 제공하는 논리 블록 장치다.
  • 은 공간을 단위로 관리한다.
  • 두 개를 로 모았다고 자동으로 미러 복제가 되는 것은 아니며 일반 선형 , striped , 등 배치 방식에 따라 장애 특성이 다르다.
    • 확장 과정은 아래 계층에서 위 계층으로 진행된다.
  • 디스크와 파티션이 커진 뒤 필요하면 를 확장하고, 의 빈 공간에서 에 를 더 배정한 다음 파일 시스템을 키운다.
  • 만 커져도 df가 보여 주는 파일 시스템 크기는 바로 커지지 않을 수 있다.
  • XFS는 보통 마운트된 상태에서 성장시키고 축소는 지원하지 않는다.
  • ext4는 resize2fs를 사용하지만 축소에는 별도의 오프라인 순서와 검사가 필요하므로 확장 명령을 거꾸로 쓰는 방식이 아니다.
bash
pvs
vgs
lvs -a -o lv_name,vg_name,lv_size,segtype,devices
# 계층 예시: /dev/sdb1 -> PV -> vgdata -> lvdocs -> ext4 -> /srv/data
# lvextend는 LV, resize2fs/xfs_growfs는 파일 시스템 계층을 변경한다.

교육용 설정·명령 예시. 실행 환경과 대상 경로를 가정하며 이 페이지를 만들면서 실행하지 않았다.

원리 심화

06선형 LV의 논리 영역이 물리 영역으로 매핑되는 방법

  • 는 연속된 논리 블록 장치처럼 보이지만 공간은 단위로 할당될 수 있다. 파일 시스템의 블록 크기와 크기는 서로 다른 층의 단위다.
  • 일반적인 linear 매핑은 논리 시작 위치·길이와 기반 장치·그 장치의 시작 오프셋을 연결한다. 한 의 앞부분과 뒷부분이 서로 다른 에 놓일 수 있다.
  • free는 아직 에 할당하지 않은 공간이다. 파일 시스템에서 이미 할당된 안의 빈 블록과 같지 않으므로 df의 Available과 숫자가 달라도 모순이 아니다.
  • 만 늘리면 파일 시스템이 사용할 수 있는 메타데이터 범위가 자동으로 모두 늘어나는 것은 아니다. 파일 시스템 확장 작업 또는 이를 함께 수행하는 지원 옵션이 필요하다.
  • striped··thin·snapshot 는 단순 선형과 다른 매핑·메타데이터·여유 공간 조건을 갖는다. 여기의 계산은 일반 thick linear 만 대상으로 한다.
예제로 추적

074MiB extent로 LV를 2GiB 늘리는 계산

  • 가 4MiB이고 에 사용 가능한 가 총 8192개, 현재 할당한 수가 5120개라고 가정한다. 메타데이터 등은 이미 제외한 숫자다.
  • 전체는 8192×4MiB=32768MiB=32GiB, 할당량은 20GiB, 남은 3072개는 12GiB다. MB와 MiB를 섞지 않고 1GiB=1024MiB로 계산한다.
  • 대상 를 2GiB 늘리려면 2048MiB÷4MiB=512개 가 필요하다. 할당 후 free는 2560개, 즉 10GiB가 된다.
  • 가 커진 뒤 파일 시스템을 지원 절차로 확장하면 df에 새 공간이 반영될 수 있다. 파일 시스템 메타데이터·예약 공간 때문에 df 전체가 와 정확히 같을 필요는 없다.
  • free가 있어도 특정 배치 정책· 조건을 만족하지 못하면 원하는 할당이 실패할 수 있다. 총합 여유만으로 ·striped 구성의 배치 가능성을 보장하지 않는다.
단계 할당 남은
증설 전51203072
512개 추가 후56322560
검증·예외

08부팅 마운트 실패와 용량 부족을 출력으로 나누기

  • lsblk에서 장치 크기는 늘었는데 df가 같다면 partition///FS 중 어느 단계까지 크기가 반영됐는지 비교한다. 포맷은 이 크기 불일치를 조회하는 작업이 아니다.
  • findmnt -T /srv/data로 그 경로를 담당하는 파일 시스템을 본다. 의도한 마운트가 실패해 상위 root에 쓰고 있으면 데이터 디스크가 비어도 root가 가득 찰 수 있다.
  • UUID·파일 시스템 형식·옵션 중 하나가 틀리면 장치 존재와 별개로 mount unit이 실패한다. /dev 이름의 변화와 파일 시스템 UUID의 변화를 구분한다.
  • df -h의 공간은 남고 df -i의 가 고갈됐다면 작은 파일 다수 때문에 새 이름을 만들지 못할 수 있다. 두 자원을 다른 제한으로 읽는다.
  • 나 원격 파일 시스템은 네트워크 준비·재연결 조건을 함께 갖는다. nofail은 부팅 계속 여부에 관여할 뿐 데이터가 실제 준비되었다는 보장은 아니다.

09용량을 다르게 보여 주는 이유

  • df는 파일 시스템의 공간 사용량을, du는 경로를 따라 확인한 파일의 공간 사용량을 보여 준다.
  • 삭제됐지만 열린 파일, 마운트 경계, 접근 불가능한 경로, 희소 파일 때문에 수치가 다를 수 있다.
  • 공간이 남아 있어도 부족이나 사용자 quota로 저장이 실패할 수 있다.
bash
lsblk -f
findmnt
df -hT
df -i

블록 장치·파일 시스템·마운트·용량· 사용량을 조회한다.

10사용자가 보는 경로 아래의 저장 계층

  • 애플리케이션이 /srv/data 안에 파일을 저장하면 먼저 그 경로를 포함하는 마운트와 파일 시스템이 선택된다.
  • 파일 시스템은 파일 오프셋을 자신의 블록 배치로 관리하고, 아래의 는 논리 블록을 의 물리 공간에 매핑한다.
  • 는 하나 이상의 에서 확보한 공간을 묶는다.
  • 모든 시스템이 을 사용하는 것은 아니므로 실제 환경에서는 lsblk·findmnt· 조회 결과를 연결해 존재하는 계층만 그린다.
  • 추가 디스크로 공간을 늘리는 경우에도 여러 단계의 용량이 따로 존재한다.
  • 와 에 여유 공간이 생겼다고 기존 가 저절로 커지는 것은 아니다.
  • 가 커져도 파일 시스템이 그 공간을 사용하도록 확장되지 않았다면 df의 용량은 그대로일 수 있다.
    • 반대로 파일 시스템보다 아래 장치를 먼저 축소하면 유효한 데이터 블록을 잃을 위험이 있다.
  • 확장과 축소를 대칭적인 명령 순서로 외우지 말고 각 층의 지원 조건과 현재 크기를 확인해야 한다.
  1. 일반적인 선형 위의 파일 시스템에서 캐시에 없는 파일 데이터를 읽는 경우를 가정한다. 파일 시스템은 파일 오프셋을 해당 파일의 논리 블록 위치로 바꾼다.
  2. 파일 시스템이 기반 블록 장치인 의 특정 논리 블록을 읽도록 요청한다. 크기와 파일 시스템이 사용할 수 있는 크기는 별개다.
  3. 의 매핑 정보가 의 논리 영역을 의 물리 영역에 대응시킨다. 는 이 공간을 모아 할당하는 관리 단위다.
  4. 실제 디스크 등의 장치에서 블록을 읽고 상위 계층으로 반환한다. 파일 시스템은 요청한 파일 범위의 바이트를 애플리케이션에 전달한다.

설명과 함께 보는 보조 도식

처리 과정

경로에서 물리 공간으로 내려가기

일반적인 LVM 위 파일 시스템 구성의 논리 관계다.

전체 단계를 한 번에 읽기
  1. 01

    마운트 확인

    경로가 어느 파일 시스템에 속하는지 찾는다.

    조회
    findmnt
  2. 02

    장치 확인

    그 파일 시스템의 기반이 LV인지 확인한다.

    구분
    파일 시스템 크기와 LV 크기
  3. 03

    할당 구조 확인

    LV가 속한 VG와 여유 공간을 대조한다.

    구분
    할당량과 남은 공간
  4. 04

    물리 기반 확인

    VG를 구성하는 PV와 실제 장치를 확인한다.

    확인
    식별자·장치 연결
  5. 05

    확장 결과 대조

    상위 층이 새 공간을 인식했는지 각 크기를 따로 확인한다.

    검증
    LV 크기와 df 용량
학습 모식도. 표시한 조건에서의 객체와 상태 변화를 설명하며 운영 환경의 모든 분기와 내부 구현은 생략한다.

11공간이 남았는데 쓰지 못하는 경우

  • df는 해당 파일 시스템이 보는 전체 공간 사용을 보여 주고 du는 지정 경로에서 접근 가능한 파일들의 사용량을 합산한다.
  • 열린 뒤 삭제된 파일, 다른 마운트, 희소 파일과 권한 때문에 차이가 생긴다.
  • 공간이 남아도 가 고갈되면 새 파일을 만들지 못할 수 있고 사용자 quota를 넘었으면 특정 계정의 저장만 실패할 수 있다.
    • 이때 전체 디스크를 추가하기 전에 어떤 제한에 걸렸는지 분리하는 편이 원인을 정확히 짚는다.
  • 마운트가 실패한 상태에서 애플리케이션이 평범한 빈 디렉터리에 파일을 쓰면 데이터가 원래 루트 파일 시스템에 저장될 수 있다.
  • 이후 장치를 마운트하면 그 파일들이 가려져 사라진 것처럼 보인다.
    • 마운트 지점의 존재와 실제 마운트 성공을 구분해야 하는 이유다.
  • 재부팅 전후에는 UUID·유형·옵션과 장치 준비 순서를 대조한다.
  • 파일 시스템을 검사하거나 포맷하는 명령은 조회 명령과 달리 데이터에 영향을 줄 수 있으므로 대상 확인 없이 실행하지 않는다.
구성·관찰 대상확인하는 정보구분할 문제
findmnt경로와 실제 마운트디렉터리만 있고 장치는 미연결
lsblk· 조회장치··· 관계장치는 늘었지만 는 그대로
df 용량·파일 시스템 공간과 객체 수공간 부족과 부족
du·quota경로별 사용과 계정 제한숨은 사용량과 사용자 제한
학습 확인

이해했는지 확인하기

  • 장치와 파일 시스템, 마운트 지점을 연결한다.
  • LV 용량과 파일 시스템 용량을 각각 확인한다.
  • 저장 실패 시 공간·inode·quota를 구분한다.

함께 확인할 공식 자료