리눅스는 운영 체제의 핵심인 커널을 기반으로 한 소프트웨어 모음입니다. 이 중 하나가 바로 파일 시스템인데, 이는 운영 체제가 데이터를 저장하고 검색하는 방법을 결정합니다.
이 글에서는 리눅스 파일 시스템의 중요성, 기본적인 개념, 확인하는 방법, 그리고 문제를 해결하는 방법에 대해 상세히 설명하겠습니다.
리눅스 파일 시스템의 중요성
리눅스 파일 시스템의 역할과 중요성
파일 시스템은 데이터를 효율적으로 저장하고 검색하는 데 필수적인 운영 체제의 주요 구성 요소입니다.
리눅스 파일 시스템은 사용자 데이터와 시스템 데이터를 조직화하고 관리하는 데 중추적인 역할을 수행합니다.
또한, 파일 시스템은 데이터 보호, 공유, 백업 등 다양한 기능을 제공합니다.
파일 시스템 확인이 필요한 이유
파일 시스템 검사의 필요성 파일 시스템을 검사하는 것은 디스크 공간을 효율적으로 관리하고, 시스템 성능을 향상시키며, 데이터 손실을 방지하는 데 중요한 역할을 합니다.
예를 들어, 디스크 공간이 부족하다면 새로운 애플리케이션의 설치나 중요한 데이터의 저장에 문제가 생길 수 있습니다.
그래서 이러한 문제를 미리 방지하기 위해 파일 시스템을 정기적으로 검사하는 것이 중요합니다.
리눅스 파일 시스템 기본 개념
파일 시스템이란 무엇인가?
파일 시스템은 운영 체제가 데이터를 디스크에 어떻게 저장하고 검색할지를 결정하는 방식입니다.
더 자세히는 파일 시스템은 데이터를 파일과 디렉터리로 조직화하고, 이들을 디스크에 어떻게 배치할지를 정합니다.
그리고 파일 시스템은 사용자가 데이터에 접근하고 수정할 수 있는 권한을 관리하는 역할도 합니다.
리눅스에서 사용되는 주요 파일 시스템 종류
리눅스에서는 다양한 종류의 파일 시스템을 지원하며, 그 중에서도 ext4, XFS, Btrfs는 가장 널리 사용되는 파일 시스템입니다. 각각의 파일 시스템은 특징과 장단점을 가지고 있습니다.
ext4는 리눅스에서 가장 일반적으로 사용되는 파일 시스템으로, 대용량 파일과 디렉터리, 저널링 기능 등을 지원합니다. 그러나 확장, 동적 할당, inode 및 블록 하위 할당에 대한 기본 기능이 부족하며, 삭제된 파일을 복구하기 어렵다는 단점이 있습니다.
XFS는 대용량 데이터를 처리하는 데 특화된 파일 시스템입니다. 이 파일 시스템은 64비트 파일 시스템으로 900만 TB까지 지원하며, 파일 수에 관계없이 예상치 못한 상황으로부터 신속한 복구 및 재시작이 가능합니다.
Btrfs는 스냅샷, 복제 등 고급 기능을 제공하는 최신 파일 시스템입니다. 실시간 오류 정정 기능과 스냅샷을 이용하여 볼륨 복원이 가능하며, 드라이브 압축이 가능하여 속도가 빠른 SSD에 사용 시 탁월한 읽기 와 쓰기 성능을 제공합니다. 그러나 스냅샷 이미지의 저장을 위해 디스크 공간을 추가로 사용하며 스냅샷 용량 증가의 특성상 디스크 사용량 예측이 어려운 것이 단점입니다.
이러한 다양한 파일 시스템은 각각의 특징과 장단점을 가지고 있으며, 사용자의 요구에 따라 적절한 파일 시스템을 선택할 수 있습니다.
리눅스에서 파일 시스템 확인하는 방법
df 명령어를 사용한 디스크 공간 확인
df 명령어의 장점과 단점에 대해 알아보겠습니다.
df 명령어 장점
전체적인 디스크 사용량 확인 : df 명령어는 리눅스 시스템 전체의 디스크 사용량을 확인할 수 있습니다. 파일 시스템별로 마운트된 디스크의 전체 크기, 사용 중인 공간, 사용 가능한 공간, 사용률, 마운트된 위치 등의 정보를 제공합니다.
사용자 친화적 : df -h 옵션을 사용하면, 파일 시스템의 정보를 사람이 읽기 쉬운 형식으로 출력하기에 디스크 사용량을 한눈에 파악하는 데 도움이 됩니다.
df 명령어 단점
디렉토리별 디스크 사용량 불가능 : df 명령어는 시스템 전체의 디스크 사용량만을 확인할 수 있으며, 특정 디렉토리나 파일에 대한 디스크 사용량은 확인할 수 없습니다.
삭제된 파일에 대한 정보 불충분 : df 명령어는 삭제된 파일이나 열린 파일 디스크립터에 대한 정보를 제공하지 않습니다. 이로 인해 df와 du 명령어의 출력 결과가 일치하지 않을 수 있습니다.
예를 들어, df -h 명령을 실행하면, 파일 시스템의 정보를 사용자가 읽기 쉬운 형식으로 출력하며, 디스크 사용량을 한눈에 파악할 수 있습니다.
이 명령어를 실행하면, 각각의 연결된 파일 시스템에 대한 장치 이름, 연결 지점, 파일 시스템 유형 등을 확인할 수 있습니다.
mount 명령어 특징
마운트 정보 제공 : mount 명령어는 파일 시스템과 마운트 정보를 제공합니다. 전체 파일 시스템의 마운트 위치, 타입, 옵션 등의 정보를 제공합니다.
다양한 파일 시스템 지원 : mount 명령어는 ext2, ext3, xfs, jfs, vfs, reiserfs 등 다양한 파일 시스템을 지원합니다.
USB 장치 인식 가능 : USB 장치나 외장 하드 디스크 등도 mount 명령어를 통해 마운트할 수 있습니다.
mount 명령어를 실행하면, 마운트 되어 있는 블록 장치명, 마운트 위치, 파일 시스템 타입, 마운트 옵션을 확인할 수 있습니다.
mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=32966908k,nr_inodes=8241727,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type ext4 (rw,noatime,nodiratime,discard,data=ordered)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=18838)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
/dev/sda1 on /boot type ext4 (rw,noatime,nodiratime,discard,data=ordered)
/dev/mapper/centos-tmp on /tmp type ext4 (rw,noatime,nodiratime,discard,data=ordered)
/dev/mapper/centos-var on /var type ext4 (rw,noatime,nodiratime,discard,data=ordered)
/dev/mapper/data-pub on /pub type ext4 (rw,noatime,nodiratime,discard,data=ordered)
/dev/mapper/data-pub on /var/opt type ext4 (rw,noatime,nodiratime,discard,data=ordered)
/dev/mapper/data-pub on /opt type ext4 (rw,noatime,nodiratime,discard,data=ordered)
tmpfs on /run/user/866 type tmpfs (rw,nosuid,nodev,relatime,size=6595720k,mode=700,uid=866,gid=865)
FlexNetFs on /dev/shm/FlexNetFs.58815 type fuse.FlexNetFs (rw,nosuid,nodev,relatime,user_id=866,group_id=865,allow_other)
tmpfs on /run/user/901 type tmpfs (rw,nosuid,nodev,relatime,size=6595720k,mode=700,uid=901,gid=901)
/etc/fstab 파일을 사용한 파일 시스템 정보 확인
/etc/fstab 파일 특징
파일 시스템 정보 제공 : /etc/fstab 파일은 마운트 된 파일 시스템의 장치 이름, 마운트 포인트, 파일 시스템 타입, 마운트 옵션 등의 정보를 제공합니다.
부팅 시 자동 마운트 설정 : /etc/fstab 파일에 등록된 파일 시스템은 시스템 부팅 시 자동으로 마운트됩니다. 디스크를 추가하거나 파티션 정보를 변경한 경우에도 해당 정보를 이 파일에 등록하면 부팅 시 자동으로 마운트할 수 있습니다.
/etc/fstab 파일 장점
디스크 관리 용이 : /etc/fstab 파일은 디스크 관리와 문제 해결에 매우 유용합니다. 파일 시스템의 상세한 정보를 한눈에 파악할 수 있기 때문입니다.
UUID 지원 : /etc/fstab 파일에서는 UUID로 식별되는 파일 시스템을 사용할 수 있습니다. 특정 장치가 연결될 때마다 특정 장소에 자동으로 마운트되어야한다는 것을 설정할 수 있습니다.
/etc/fstab 파일 단점
수동 설정 필요 : /etc/fstab 파일은 사용자가 직접 편집해야 합니다. 실수로 잘못된 설정을 입력하면 시스템 부팅에 문제를 일으킬 수 있습니다.
동적 장치 인식 미지원 : /etc/fstab 파일은 고정된 장치에 대한 정보만을 담고 있으며, 동적으로 추가되거나 제거되는 장치(예: USB 메모리)에 대한 정보는 자동으로 갱신되지 않습니다.
cat /etc/fstab 명령어를 실행하면 /etc/fstab 파일의 내용을 확인할 수 있습니다.
cat /etc/fstab
# /etc/fstab
# Created by anaconda on Mon Jan 25 13:07:09 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / ext4 defaults,noatime,nodiratime,discard 1 1
UUID=67fe761d-0d23-4801-898b-cbd65df35b77 /boot ext4 defaults,noatime,nodiratime,discard 1 2
/dev/mapper/centos-tmp /tmp ext4 defaults,noatime,nodiratime,discard 1 2
/dev/mapper/centos-var /var ext4 defaults,noatime,nodiratime,discard 1 2
#/dev/mapper/centos-swap swap swap defaults 0 0
/dev/mapper/data-pub /pub ext4 defaults,noatime,nodiratime,discard 1 2
/pub/opt /opt none bind
/pub/var/opt /var/opt none bind
UUID=4e1f5d51-e283-4228-b70d-f6f55376f7f4 swap swap defaults,noatime,nodiratime,discard 1 2
파일 시스템 문제 해결 방법
fsck 명령어를 사용한 파일 시스템 오류 검사 및 복구
이 명령어를 실행하면, 지정된 파일 시스템에 대해 일관성 검사를 수행하고 발견된 오류를 자동으로 수정합니다.
badblocks 명령어를 사용한 디스크 블록 검사
이 명령어를 실행하면, 지정된 디스크 장치에 대해 표면 검사를 수행하고 손상된 블록을 찾아냅니다.
badblocks 명령어의 사용 예제는 다음과 같습니다.
비파괴 읽기 전용 테스트를 사용하여 디스크에서 불량 블록을 검색합니다.
badblocks -s /dev/sda2
Checking for bad blocks (read-only test): done
리눅스 파일 시스템 관리의 중요성
정기적인 파일 시스템 확인의 중요성
파일 시스템은 운영 체제의 핵심 구성 요소이며, 이를 관리하는 것은 시스템의 안정성과 성능에 큰 영향을 미칩니다.
따라서, 정기적으로 파일 시스템을 확인하고 필요한 유지 보수 작업을 수행하는 것이 중요합니다.
리눅스 시스템 관리자로서의 역할
리눅스 시스템 관리자로서, 우리는 파일 시스템을 효과적으로 관리하고 문제를 빠르게 해결할 수 있는 능력이 필요합니다.
이를 위해, 우리는 파일 시스템의 기본 개념을 이해하고, 다양한 명령어와 도구를 사용하여 파일 시스템을 확인하고, 문제를 해결하는 방법을 알아야 합니다. 이러한 지식과 기술은 우리가 리눅스 시스템을 효과적으로 관리하고 최적의 성능을 달성하는 데 도움이 됩니다.