We are Architect

9. 파일시스템의 종류와 구조 & 파일 시스템 마운트 본문

운영체제/Linux

9. 파일시스템의 종류와 구조 & 파일 시스템 마운트

the best infra 2024. 11. 26. 15:58

* 파일 시스템 이란? 

  • 컴퓨터가 데이터를 저장하고 관리하는 방법. 
  • 주로 데이터가 어디에 저장될지 위치를 정하고 데이터를 효율적으로 찾을 수 있게 관리하고 데이터가 사용자의 파일을 쉽게 열고 수정할 수 있도록 경로를 제공하고 저장 위치를 숨겨준다. 

 

* 파일 시스템의 종류

리눅스 고유의 디스크 기반 파일 시스템 

  • ext(ext1) : Extend File System의 약자. 최초의 파일 시스템이며 매우 기본적이지만 기능이 부실하다. 
  • ext2 : 이전버전에서 더욱 상용화 된 버전이며 *저널링 기능이 없어서 복구가 매우 느리다. 오늘날 USB와 같은 *플래시 스토리지에 사용된다.
    • 저널링: 시스템 장애를 방지하기 위해 관련 로그를 기록함으로써 복구 시 기록된 데이터를 기반으로 복구가 가능하게 하는 시스템. 
    • 플래시 스토리지: 메모리 칩에 데이터 저장. 
  • ext3 : ext2기반으로 만들어졌으며 저널링 기능이 도입 되었고 복구 기능까지 강화되었으며 2~32TB까지 지원한다. 
  • ext4 : 현재 가장 많이 사용하는 파일 시스템이며 최대 1TB까지 지원한다. 
  • 리눅스에서 파일 시스템을 확인 하려면 /proc/filesystem 경로에서 확인해 봐야 한다. 

 

* 리눅스 파일 시스템의 구조

  • 파일 : 데이터를 저장하는 기본단위. 리눅스에서 모든 것은 파일로 표현.
  • 디렉터리 : 파일을 체계적으로 관리하기 위한 논리적 그룹. 계층적 트리 구조로 구성.
  • 슈퍼블록 : 파일 시스템에 대한 정보를 저장하는 메타데이터.
  • inode : 파일의 데이터 블록이 디스크 상의 어디에 위치했는지를 갖고 있는 데이터 구조.
    • inode에 저장된 정보(명령어 ls -i 를 사용하면 파일의 노드의 번호를 보여준다.)
      1. 파일의 소유권 (사용자 정보, 그룹)
      2. 파일의 액세스 모드.
      3. 파일의 타임스탬프.
      4. 파일의 종류  
  • 데이터 블록 : 실제 데이터를 저장하는 기본 단위. 
  • 저널링 : 데이터의 무결성을 위해 데이터 변경 내용을 로그에 기록. 재해 복구 시 사용. 

 

* 파일 시스템 마운트

  • 파일 시스템을 / 하위 디렉터리에 연결하는 방법.
    • 마운트 포인트 : 디렉터리 계층 구조에서 파일 시스템이 연결되는 포인트.
    • /etc/fstab : 리눅스가 부팅시 해당파일에 있는 장치를 마운트 하는 경로.
    • /etc/fstab 파일의 구조
      • 장치명 / 마운트 포인트 / 파일 시스템 종류 / 옵션 / 덤프 관련 설정 / 파일 점검 옵션 
# <파일 시스템>      <마운트 지점>   <파일 시스템 유형> <옵션>        <덤프> <fsck 순서>
UUID=1234-5678       /               ext4              defaults      1       1
/dev/sda2            /home           ext4              defaults      1       2
/dev/sdb1            /mnt/data       xfs               rw,noexec     0       0
/dev/cdrom           /media/cdrom    iso9660           ro,user,noauto 0       0
tmpfs                /run/shm        tmpfs             defaults      0       0

 

  • 마운트 관련 명령어
    • mount : 현재 마운트 되어있는 장치를 보여줌. /etc/mtab 으로도 볼 수 있음.
    • mount -t [파일시스템 장치] [마운트 포인트] : 파일시스템 마운트.
    • mount [장치명] [마운트 포인트] : 장치를 마운트 포인트.
    • mount -o _ _ _ [장치명] [마운트 포인트] : 옵션에 맞게 마운트하라는 뜻. > mount -o sync /dev/sda1 /mnt
    • mount -f [장치명] [마운트 포인트] : 마운트 되는지 확인.
    • mount -r [장치명] [마운트 포인트] : 읽기 전용으로 마운트.
    • umount 장치명/마운트 포인트 : 마운트 해제

 

* 현재 상용화 되어 있는 파일 시스템

Windows(데스크톱, 랩탑)

  • NTFS:
    • Windows의 기본 파일 시스템.
    • 보안, 저널링, 대용량 파일 지원이 특징.
    • 전 세계적으로 가장 널리 사용됨.
  • exFAT:
    • 플래시 드라이브(USB) 및 SD 카드에서 사용.
    • 대용량 파일과 호환성 지원.
    • Windows, macOS, 리눅스 모두에서 지원.

 

macOS(데스크톱, 랩탑)

  • APFS:
    • macOS 및 iOS의 기본 파일 시스템.
    • 스냅샷, 암호화, 빠른 성능을 제공.
    • SSD에 최적화.
  • HFS+:
    • APFS 도입 이전 macOS의 기본 파일 시스템.
    • 오래된 macOS 장치에서 여전히 사용.

 

Linux(데스크톱, 랩탑)

  • ext4:
    • 리눅스의 표준 파일 시스템.
    • 빠르고 안정적이며, 대부분의 배포판에서 기본 사용.
  • XFS:
    • 고성능 서버 및 데이터베이스 워크로드에 적합.
    • RHEL(Red Hat Enterprise Linux) 및 SUSE에서 자주 사용.

 

엔터프라이즈 및 데이터센터

  • XFS:
    • 대규모 데이터 및 고성능 워크로드에서 선호.
    • Red Hat 계열에서 기본 파일 시스템.
  • ZFS (OpenZFS):
    • 데이터 무결성과 스냅샷을 지원.
    • 고가용성 및 대규모 저장소 관리에 사용.
    • 클라우드 환경에서도 채택됨.
  • Btrfs:
    • 스냅샷, 복제, 데이터 무결성 등 고급 기능 제공.
    • OpenSUSE 및 일부 NAS(Network Attached Storage)에서 사용.

 

클라우드 및 가상화 환경

  • ext4:
    • AWS EC2, Google Cloud, Azure VM에서 기본적으로 사용.
  • EBS의 GP2/GP3 파일 시스템:
    • AWS에서 제공하는 EBS 볼륨이 ext4 또는 XFS를 기본 지원.
  • F2FS:
    • 플래시 기반 스토리지(SSD)에 최적화.
    • 삼성 디바이스 및 일부 리눅스 환경에서 사용.

 

플래시 스토리지 및 외장 드라이브

  • exFAT:
    • USB 드라이브 및 SD 카드에서 널리 사용.
    • Windows, macOS, 리눅스 모두 호환.
  • F2FS:
    • 스마트폰과 임베디드 장치에서 플래시 스토리지에 최적화되어 사용.

 

NAS 및 저장소 시스템

  • ZFS:
    • Synology, TrueNAS 같은 NAS 시스템에서 주로 사용.
    • 데이터 중복 제거와 무결성 체크를 지원.
  • ext4:
    • NAS 기기에서도 기본적으로 많이 사용.
  • 일반 사용자 환경: NTFS (Windows), APFS (macOS), ext4 (Linux).
  • 서버 및 클라우드: ext4, XFS, ZFS.
  • 소비자 장치: exFAT, F2FS.

위 파일 시스템은 각각의 용도에 최적화되어 있어 현재도 폭넓게 상용화되고 있다. 특정 환경에 따라 ext4, NTFS, APFS, XFS가 가장 많이 사용된다..

 

* 디스크 추가 마운트 하는 법

  • 현재 잔여 디스크 확인

ls -l /dev/sd* 로 현재 디스크 확인

 

 

  • fdisk 명령어로 전체 장치에 대한 정보 출력

sda만 부착되어 있음
파티션 작업이 안되어 있는 장치

 

 

  • 작업이 안되어 있는 장치의 정보만 출력한다. 

 

 

  • fdisk /dev/sdb 로 파티션 나누기

 

 

  • 해당 상태에서 ㅣ 을 눌러 어떤 형식의 파티션 타입을 설정할 건지 확인

83 linux는 기본 설정 타입, 설정하려는 타입은 8e linux LVM 타입

 

  • n 을 눌러서 새로운 파티션 생성

 

 

  • 파티션 넘버는 1로 정한다. 

 

 

  • 나눈 파티션을 저장해 준다. 

 

 

  • 현재는 물리적으로 사용할 파티션만 만들어줬을 뿐 논리적인 파일 시스템으로 만들어줘야 사용이 가능하다. 
  • 이때  파일 시스템 생성 명령어 인 mkfs를 사용하여 ext4타입 파일 시스템을 만들어준다. 

남은 파티션은 xfs 타입으로 파일 시스템 생성

 

  • 마운트 할 디렉터리 생성

 

 

  • 원하는 디렉터리 위치에 원하는 파일시스템 장착

 

 

  • df -h (디스크 프리 + 휴먼) 명령어를 입력해 디스크의 사용량을 확인.

 

 

  • 디렉터리로 들어가서 장착된 장치 확인.

 

 

  • 마운트 해제시에는 umount를 사용.

 

 

'운영체제 > Linux' 카테고리의 다른 글

11. 파일 시스템 검사하기  (1) 2024.11.29
10. 파일시스템 구축(LVM)  (0) 2024.11.27
8. 작업관리 & 작업예약  (0) 2024.11.25
7. 프로세스 관리(2)  (0) 2024.11.25
6. 프로세스 관리  (0) 2024.11.24