220816 TIL 리눅스 파일시스템

sundays·2022년 8월 16일
0

  • 파일과 디렉토리의 집합을 구조적으로 관리하는 체계
  • 어떤 구조로 구성하여 파일이나 디렉토리를 관리하느냐에 따라 다양한 형식의 파일 시스템이 존재
  • 파일과 디렉토리 관리
  • 보조 기억 장치( 통상 HDD - Hard Disk Drive, SSD - Solid State Drive )에 구성하는 형식
  • Linux는 보조 기억 장치외에도 I/O Device를 사용할 때 해당 I/O Device에 적합한 파일 시스템 적용

Linux 파일 시스템

Linux 파일 구조

  • inode block - 파일 정보 -> inode 번호, 권한, 소유자, 파일 유형 …
  • data block - 데이터 저장, 기본 크기 - 4 KB -> ext4

Linux 파일 종류

  • 일반 파일 - 일반 데이터 저장 파일

    • inode block + data block
    • data block - 데이터 저장
  • 디렉토리 파일 - 디렉토리 정보 저장 파일

    • 디렉토리 계층 구조
      • Linux 전체 파일과 디렉토리를 어떤 구조로 정리하고 관리할 것인가를 정의한 것
      • 실제 파일이 저장되어 있는 파일 시스템은 디렉토리 계층 구조에 연결되어야 사용자가 접근 가능
  • 디렉토리 파일에는 디렉토리 계층 구조상의 디렉토리 내용을 저장한 파일

  • inode block + data block

  • 디렉토리 파일의 하나의 data block 내용

    • 파일 inode 번호
    • 파일 명
  • 특수 파일

    • 디바이스 파일
    • Linux는 모든 장치( device )에 연결할 때는 해당 디바이스 연결을 위한 디바이스 파일 필요
    • 데이터 저장 기능이 없다.
    • Linux에서 외부 장치 연결해서 사용하기 위해서는 항상 디바이스 파일이 필요
    • 디바이스 연결 목적의 파일
    • /dev 디렉토리에 저장되어 있다.
    • 디바이스 파일 종류
      • character 디바이스 파일
        • 입출력을 character 단위로 수행하는 디바이스 연결
      • block 디바이스 파일
        • 입출력을 block 단위로 수행하는 디바이스 연결
  • 디바이스 파일은 파일 크기가 없고 디바이스 여러개를 식별하기 위한 번호 부여

    • major 번호 - 장치 식별 번호
    • minor 번호 - 해당 장치가 여러개인 경우 식별 번호
  • 프로세스간 데이터 공유( 통신 )

    • 파이프 파일 - 프로세스간 데이터 공유를 위한 파일
    • 소켓 파일 - 프로세스간 데이터 공유를 이용하여 socket을 이용할 때 사용하는 파일
  • 저널링
    데이터를 디스크에 기록하기 전에 먼저 저널에 수정 사항을 기록 - 복구 정보
    디스크에 데이터를 기록하기 전에 문제가 생긴 경우 저널의 기록을 보고 빠르게 복구 가능

  • ext4
    Extended File System 약자
    Linux 기본( 표준 ) 파일 시스템
    ext2와 ext3 호환 유지
    1 EB( Hexa byte, 1 EB = 1024 * 1024 TB ) 이상의 볼륨과 16 TB이상 파일 지원
    서브 디렉토리 수가 64,000까지 지원
    온라인 조각 모음 지원

  • XFS
    eXtended File System 약자
    64 bit 파일 시스템
    최대 16 EB 까지 지원
    CentOS 7에서는 기본 파일 시스템으로 사용, ext4도 병행 사용

  • Linux 지원 파일 시스템

    • msdos - MS-DOS 파티션 사용을 위한 파일 시스템
    • iso9660 - CD-ROM, DVD 표준 파일 시스템, 읽기 전용
    • nfs - network file system, 원격 서버 디스크 연결시 사용하는 파일 시스템
      • NAS - Network 이용하여 HDD/SSD 공유, FTP( 파일 공유 프로토콜 )
    • ufs - unix file system, 유닉스 표준 파일 시스템
    • vfat - 윈도 95, 98, NT 지원 파일 시스템
      • Windows에서 NTFS 이전 파일 시스템 - FAT
      • 요즘은 FAT을 개선한 FAT32 사용
    • hpfs - HPFS 지원 파일 시스템
    • ntfs - 윈도 NTFS 지원 파일 시스템
    • sysv - 유닉스 시스템 V 지원 파일 시스템
    • hfs - 맥 OS hfs 파일 시스템 지원 파일 시스템
  • Linux 가상 파일 시스템( Virtual File System )
    메모리에 생성되어 관리되는 파일 시스템
    특수 용도로 사용, 임시 사용인 경우 활용
    필요시에만 사용하고 없어지는 파일 시스템

    • swap - 스왑 영역을 관리하기 위한 파일 시스템
    • tempfs
      • Temporary File System
      • 메모리에 임시 파일 저장 목적으로 사용
      • /tmp 디렉토리의 파일 시스템
    • proc
      • proc 파일 시스템
      • /proc 디렉토리의 파일 시스템
      • Linux Kernel 상태 정보를 파일로 저장하여 관리
    • ramfs - 램 디스크 지원 파일 시스템
    • rootfs
      • Root File System
      • /( root ) 디렉토리 파일 시스템
      • 시스템 초기화 및 관리 목적
    • Linux 설치시 필수 파일 시스템( 최소 )
      • rootfs - /( root ) 디렉토리 구성
      • swap - swap 용도
  • /proc/filesystems - 현재 시스템이 지원하는 파일 시스템
    nodev - 해당 파일 시스템이 블록 장치와 연결되어 있지 않은 가상 파일 시스템을 의미

/proc/<숫자> - 개별 process에 대한 정보 저장 디렉토리
/proc/<문자> - Linux Kernel 에서 관리하는 일반적인 정보 저장하는 디렉토리/파일

디스크 관리

  • Linux 파일시스템 마운트

    • Linux system에서 외부 장치를 연결하기 위해서는 마운트 작업을 통해 연결 작업 수행 후 사용할 수 있다.
      마운트( mount ) - 파일 시스템을 디렉토리 계층 구조의 특정 디렉토리와 연결
      마운트 포인트( mount point ) - 디렉토리 계층 구조에서 파일 시스템이 연결되는 디렉토리

    • /etc/fstab -> Linux system booting시 연결 할 외부 장치 연결 정보 저장 파일
      장치명 : UUID
      마운트 포인트 : /
      파일 시스템 종류 : ext4
      옵션 : error=remount-ro
      덤프 관련 설정 : 0
      파일 점검 옵션 : 1

    • UUID

      • Universally Unique IDentifier, 범용 고유 식별자
      • 로컬 시스템과 다른 시스템을 유일하게 구분하기 위한 128 bit 숫자
      • 시스템의 정보와 시간 정보를 조합하여 랜덤으로 생성
      • UUID로 지정된 장치는 /dev/disk/by-uuid 디렉토리에서 확인 가능
    • 마운트 포인트 - 장치가 연결된 디렉터리

    • 옵션 - 파일 시스템 속성

    • 덤프 관련 설정
      0 - 덤프 불가
      1 - 덤프 가능

    • 파일 점검 옵션
      0 - 부팅시 fsck 안함
      1 - 루트 파일 시스템
      2 - 루트 파일 시스템 이외

  • 새로운 디스크( HDD or SSD ) 연결 절차 -> 관리자 권한으로 수행

    • [ 새로운 디스크 파티션 생성 -> fdisk 명령 ] -> 필요시 사용

    • [ 생성된 파티션에 파일 시스템 생성( 디스크 포맷 ) -> mkfs 명령 ] -> 필요시 사용

    • 마운트 -> mount 명령 -> 장치 연결시 사용

    • mount 명령 - 파일 시스템 마운트
      mount [ 옵션 ] <장치(디바이스) 파일> <마운트 포인트>

    • mount - 현재 마운트된 장치 출력

      • 장치명
      • 마운트 포인트
      • 파일 시스템 종류
      • 마운트 옵션
    • -t <파일 시스템> - 마운트할 장치의 파일 시스템

      • mount -t iso9660 /dev/cdrom <마운트포인트> -> CD-ROM 연결
      • mount -t vfat /dev/sdc1 <마운트포인트> -> Windows용 USB 메모리
      • mount /dev/sdc1 <마운트포인트> -> Linux용 USB 메모리
      • mount -t <nfs 서버 주소>:/<NFS 서버측 디렉터리> <마운트포인트> -> NFS 디스크
      • 일반적으로 /mnt 디렉토리에 마운트 포인트 설정
      • 관리자 권한으로 실행
    • umount 명령 - 마운트 해제

      • umount <마운트 포인트>
      • 관리자 권한으로 실행
    • lsblk 명령 - 리눅스 디바이스 정보 확인
      - lsblk
      - Linux 디스크 장치 이름
      - IDE 컨트롤러 연결된 디스크 - /dev/hd로 시작
      - SCSI나 SATA 컨트롤러 연결된 디스크 - /dev/sd로 시작
      최근에는 IDE/SCSI/SATA 구분없이 /dev/sd로 시작
      컨트롤러에 연결된 디스크 순서에 따라 알파벳 추가
      /dev/sda - 첫 번째 디스크
      /dev/sdb - 두 번째 디스크
      /dev/sdc - 세 번째 디스크

      하나의 디스크에 파티션 구분에 따라 숫자 표기
      /dev/sda - 첫 번째 디스크 전체
      /dev/sda1 - 첫 번째 디스크 첫 번째 파티션
      /dev/sda2 - 첫 번째 디스크 두 번째 파티션

    • fdisk 명령 - 디스크 파티션 생성
      fdisk [ 옵션 ] <장치명>
      -l - 파티션 테이블 출력
      파티션 종류

    • primary 파티션 - 개수 제한이 있다.

    • extended 파티션 - 원하는 수 만큼 확장 가능
      fdisk 명령 실행하면 fdisk 명령 프롬프트가 표시되고 원하는 기능의 명령 문자 입력, m은 도움말
      새로운 파티션 생성시 n 명령
      파티션 번호
      First sector
      Last sector
      파티션 테이블 출력 p 명령
      파티션 저장 w 명령
      관리자 권한으로 실행

    • mkfs 명령 - 파일 시스템 생성
      mkfs [ 옵션 ] <장치명( 장치 파일 )>
      -t <파일 시스템> - 생성할 파일 시스템
      sudo mkfs -t ext4 <장치명( 장치 파일 )>
      sudo mkfs.ext4 <장치명( 장치 파일 )>
      관리자 권한으로 실행

    • df 명령 - 디스크 사용량 확인, mount 정보 확인 가능
      df [ 옵션 ]
      -a - 모든 파일 시스템 사용량 확인
      -h - 디스크 사용량 출력
      -T - 파일 시스템 종류 출력

    • du 명령 - 사용자나 디렉토리 별 사용량 확인
      du [<디렉토리>]

    • chown 명령 - change owner, 파일이나 디렉토리의 소유자 및 그룹 변경
      chown user[:group] <파일 또는 디렉토리>

profile
develop life

0개의 댓글