파일 시스템

이정민·2022년 6월 11일
0

운영체제

목록 보기
10/12

파일과 디렉토리

파일

  • 하나의 단위로 처리될 수 있는 이름이 부여된 데이터 집합
  • 파일 연산
    • 열기
    • 닫기
    • 생성
    • 삭제
    • 복사
    • 이름변경
    • 내용보기
  • 파일 내의 데이터 항목
    • 읽기
    • 쓰기
    • 갱신
    • 삽입
    • 삭제

파일의 종류

  • 연속된 바이트로 구성된 파일
  • 레코드로 구성된 파일
  • 트리 정보를 저장하는 파일

디렉토리

  • 파일 시스템에 있는 파일에 대한 정보를 포함하고 있는 파일
  • 디렉토리의 정보
    • 파일 이름
    • 위치
    • 크기
    • 타입
    • 소유권
    • 접근권한
    • 접근, 수정 및 생성 시각

파일 시스템

  • 컴퓨터에서 파일이나 데이터를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제
  • 파일관리, 보조기억장치, 파일 무결성 지원, 접근 제어 등 담당
    • 파일 생성, 삭제, 공유, 보호, 구성 형태, 사용자 인터페이스, 접근제어, 백업, 복구 등 기능 제공
  • 장치 독립적 사용 지원
    • 물리적 장치 이름을 사용하는 대신 기호적 이름 사용

운영체제의 저장장치 파일 접근 스택

  • 파일 디스크립터/열린 파일 테이블

    • 사용자 수준 프로세스에서 열린 파일 관리
  • 가상 파일 시스템

    • 여러 파일 시스템에 대한 통합된 인터페이스 제공
  • 파일 시스템

    • 저장 장치의 물리적 정보 은닉
    • 파일 및 디렉토리 이름 등으로 접근 허용
  • 디스크 캐시

    • 최근 접근한 디스크 블록의 메모리 내 저장
  • 디스크 스케줄러

    • 복수의 프로세스들에 대한 디스크 접근 스케줄링
  • 디바이스 드라이버

    • 개별 장치에 대한 프로토콜 은닉
    • 표준 인터페이스를 통한 접근 지원
  • 디스크 스케줄러

    • 복수의 프로세스들에 대한 디스크 접근 스케줄링
  • 디바이스 드라이버

    • 개별 장치에 대한 프로토콜 은닉
    • 표준 인터페이스를 통한 접근 지원

디렉토리 구조

단일 단계 파일 시스템

  • 가장 단순한 파일 시스템 구조
  • 모든 파일을 동일 디렉토리에 저장 관리
  • 모든 사용자가 동일한 디렉토리 사용
  • 각 파일은 유일한 이름을 가져야 함
  • 파일을 찾기 위해 선형 탐색을 해야하기 때문에 성능 문제

계층적 파일 시스템

  • root는 루트 디렉토리가 시작되는 장치의 위치에 해당
  • 디렉토리는 다른 디렉토리와 파일 포함 가능
  • 디렉토리 내에서만 이름이 유일하면 됨
  • 루트 디렉토리에서 시작하는 경로이름을 통해 파일 지정 가능

작업 디렉토리

  • 현재 작업이 진행중인 디렉토리
  • 경로이름을 사용하여 파일을 지정하지 않고, 작업 디렉토리를 기준으로 상대 경로 사용 가능
  • 절대 경로(루트에서 시작)
    • 작업 디렉토리 + 상대 경로

링크

  • 다른 디렉토리에 있는 파일이나 디렉토리를 참조하는 디렉토리 항목

  • 마치 해당 파일이나 디렉토리가 자신의 디렉토리에 있는 것처럼 보임

  • 데이터 공유 지원

  • 소프트 링크

    • 디렉토리 항목에 다른 파일의 경로이름 저장
    • Unix/Linux: 심볼릭 링크
    • 링크된 파일을 이동하게 되면 소프트 링크는 무효
  • 하드 링크

    • 디렉토리 항목에 해당 파일의 저장장치에서의 위치 정보를 저장

Linux 파일 시스템

  • 디렉토리 구조
    • /bin: 사용자가 사용할 수 있는 명령어 저장
      • ex) cp,mv,vi, ...
    • /boot: 부팅에 필요한 커널과 부팅할 때 필요한 관련 파일 저장
    • /dev
      • 장치 파일(프린터,마우스,모니터 등)을 저장하는 공간
      • 모든 하드 웨어(HDD,CD-ROM,마우스,가상장치 등)를 파일로 인식
      • 장치 파일
        • psaux: PS/2 마우스 장치
        • tty: 사용자와 시스템 사이를 중계하는 역할, 서버 시스템에 직접 연결된 장치에서 사용
        • pts: telnet,ssh 등을 이용해 원격으로 접속할 때 사용
        • null: 이 장치로 들어가는 데이터는 모두 사라짐
        • zero: 이 장치는 항상 null을 반환
    • /etc: 시스템이나 사용자 관리를 위한 자료 파일(시스템 설정 파일)
      • passwd: 리눅스 사용자에 대한 정보
      • shadow: 리눅스 사용자 패스워드 정보(관리자만 볼 수 있음)
    • /home: 일반 사용자의 홈 디렉토리가 생성되는 위치
    • /lib: 시스템 운영 및 프로그램을 구동할 때 필요한 공유 라이브러리
    • /root: 루트 사용자의 홈 디렉터리
    • /mnt: CD-ROM 장치 등에 대한 기본 마운트 포인트 제공
      • mount/mnt/chdrom(CD-ROM일 경우)
      • mount/dev/sda/mnt/usb(usb 메모리의 경우)
    • /proc
      • 프로세스와 시스템 정보를 제공하기 위한 목적으로 설계된 가상 파일 시스템을 사용하는 디렉토리
      • 프로그램을 실행하면 /proc에 해당 프로세스의 PID 번호에 해당하는 디렉토리를 생성하여 프로세스의 진행상황을 추적하고 관리
      • 문자로 이루어진 이름의 디렉토리와 파일: 시스템 및 커널 정보
      • 숫자로 이루어진 이름의 디렉토리: 현재 실행 중인 프로세스 정보
    • /sbin: 관리자가 사용하는 시스템 운영에 필요한 명령어 저장
      • ex)fdisk, reboot 등
    • /tmp
      • 프로세스 생성 과정에서 발생되는 임시파일 저장
      • 종료시에 이 위치에 있는 모든 파일은 삭제됨
    • /usr: 어플리케이션 프로그램을 설치할 때 패키지에 포함된 대부분의 파일 저장
      • Windows의 Program Files와 유사
    • /var
      • 내용이 자주 변경되는 가변 자료 저장
      • /var/lib: 일반적인 시스템 운용시 계속 갱신되는 파일들을 위한 공간
      • /usr/local: 아래에 설치된 프로그램들의 다양한 데이터 보관
      • /var/lock: 잠금 파일이 있는 디렉터리
      • /var/log: 다양한 프로그램들의 로그파일
      • /var/log/wtmp: 시스템의 모든 로그인, 로그아웃 정보 기록
      • /var/log/messages: 커널과 시스템 프로그램들의 모든 메시지
      • /var/run: 시스템의 현재 정보, 부팅 시 리셋
      • /var/run/utmp: 현재 로그인한 사용자들에 대한 정보
      • /var/spool: 대기 상태에 있는 작업들을 위한 디렉토리
      • /var/tmp: /tmp의 임시 파일보다 더 오래 유지할 임시 파일 저장, 부팅 시 미삭제

파일 시스템 구조

메타데이터 저장

  • 데이터에 대한 데이터
  • 파일시스템의 무결성 보장을 위한 정보
  • 사용자가 직업 변경 불가
  • 디렉토리, 수퍼블럭 등에 메타데이터 저장

Linux의 EXT 파일 시스템

  • 전형적인 Linux의 파일 시스템
  • EXT,EXT2,EXT3,EXT4 등이 있음

부트 블록

  • 커널을 적재시키기 위한 프로그램 저장

수퍼 블럭

  • 파일 시스템마다 1개씩 존재
  • 파일 시스템에 대한 메타데이터 저장
    • 블록의 크기, 총 블록의 개수, 블록 그룹의 개수, i-node의 개수, 블록 그룹 내의 블록 및 i-node의 개수
  • 디스크 장애에 대해 복사본 분산 관리 필요

그룹 기술자 테이블

  • 블록 비트맵 위치의 블록 번호
  • i-node 비트맵 위치의 블록 번호
  • i-node 테이블의 시작 블록 번호
  • 블록 그룹 내의 빈 블록 수
  • 블록 그룹 내의 i-node 개수
  • 블록 그룹 내의 빈 디렉토리 개수

수퍼 블록과 그룹 기술자 테이블

  • 모든 블록 그룹에 동일 내용 저장: 장애 복구시 사용
  • 첫 번째 블록 그룹 내용 사용

블록 비트맵

  • 각 블록의 사용 상태를 비트맵으로 표현한 것

i-node

  • 파일이나 디렉터리에 대한 모든 정보를 가지고 있는 자료구조
  • 파일 마다 1개의 i-node 존재
  • 소유자, 접근 모드(읽기, 쓰기, 실행 권한 등), 파일 형태/크기/위치, 링크 수, 고유 i-node number, 접근수정 시각 등 포함

i-node 비트맵

  • i-node의 사용 현황을 비트맵으로 관리

i-node 테이블

  • 연속된 블록으로 구성
  • 각 블록은 미리 정의된 개수의 i-node 포함

데이터 블록

  • 실제 데이터가 파일의 형태로 저장되는 공간

파일 시스템 마운트

  • 하나의 파일 시스템을 다른 파일 시스템에서 사용할 수 있도록 편입 시키는 것
  • 기준 파일시스템의 특정 디렉토리를 마운트되는 파일시스템의 루트가 되도록 만듬
  • 마운트 테이블
    • 마운트 포인트 위치, 마운트되는 장치 등의 정보 관리
    • 기준 파일 시스템에서 마운트 포인트를 만나면, 마운트 테이블을 사용하여 마운트된 장치에 대한 정보 확인
  • 마운트된 파일시스템에 대한 소프트 링크 생성 가능
  • 파일 시스템간에는 하드링크 생성 불가

파일 디스크립터

  • POSIX 운영체제에서 파일을 접근하기 위해 사용하는 추상 지시자
  • 파일 열기 연산을 하는 파일 디스크립터 반환
    • open-file table에 대한 음이 아닌 정수
    • 파일 연산에서 파일 디스크립터 사용
  • 표준 파일 디스크립터
    • 0: 표준 입력
    • 1: 표준 출력
    • 2: 표준 에러
  • Linux/Unix 계열
    • 일반 파일, 디렉토리, 소켓, 파이프, 블록 디바이스, 캐릭터 디바이스 등 모든 객체를 파일로 관리

파일 공간 할당

파일 공간 할당 방법

  • 보조 기억 장치에 파일에 대한 공간을 할당하고 회수하는 방법
  • 연속 할당
    • 파일을 연속적으로 인접된 공간에 할당
    • 효율적 접근 시간
    • 외부 단편화, 공간활용도 측면의 단점
  • 불연속 할당
    • 연결을 사용하여 불연속적인 공간에 파일을 할당
    • 연결리스트 사용방법
    • 테이블 사용방법
    • 인덱싱 사용방법
  • 연결리스트 이용 불연속 파일 할당
    • 파일에 할당된 블록을 연결리스트로 연결 관리
    • 디렉토리의 파일 항목에서 첫번째 블록 지정
    • 파일 블록에 다음 블록 지정
    • 순차적 탐색을 통한 블록 접근 필요
  • 테이블 기반 불연속 파일 할당
    • 파일 블록에 대한 포인터값을 저장하는 테이블 사용
    • 블록번호와 테이블 인덱스 일치
    • 테이블을 캐싱하면 접근속도 개선
    • 블록은 포인터를 따라가야 하기 때문에 비효율적으로 접근
    • Microsoft FAT(File Allocation Table)
  • 인덱싱 기반 파일 공간 할당
    • 파일 별로 인덱스 블록 보유
      • 디렉토리에서 인덱스블록 지정
      • 필요시 체이닝을 통해 인덱스 블록 추가 기능
    • 인덱스 블록
      • 데이터 블록에 대한 포인터 저장
    • POSIX 계열의 i-node
      • i-node: 인덱스 블록의 구현 형태

빈 공간 관리

연결리스트 사용 방법

  • free list 관리

    • 빈 블록이 발생하면, free list 맨 끝에 추가
    • 블록 할당시, free list 매 앞에 있는 블록 할당
  • 비트맵 사용 방법

    • 블록별로 1개 비트 할당
    • i번째 비트는 i번째 블록에 대응
    • 장점: 연속된 빈 블록을 쉽게 식별 가능
    • 단점: 빈 블록을 찾기 위해 전체 비트맵 탐색 가능

접근 제어

  • 민감정보 포함 파일

    • 신용카드 번호
    • 패스워드
    • 주민등록 번호
  • 데이터 접근 제어

    • 임의 접근 제어
      • 접근 제어 행렬 기반 제어
      • 접근 제어 리스트 기반 제어
      • 권한 리스트 기반 제어
    • 사용자 등급 기반 제어
    • 강제적 접근 제어
    • 역할 기반 제어
  • 임의 접근 제어

    • 소유자 또는 관리자가 사용자나 사용자 그룹에 대해 임의적으로 자율적으로 접근권한 부여
    • 소유자 또는 관리자인 사용자의 접근권한 관리 => 보안 관리자의 부담 축소
    • 접근권한 관리 구조
      • 접근제어 행렬
      • 접근제어 리스트
      • 권한 리스트
    • 사용자와 접근대상 증가에 따른 복잡성과 관리 자료구조 크기 증가
    • 소유자의 의도에 상반된 접근 위험
  • 접근 제어 행렬 기반 제어

    • 사용자별 파일에 대한 접근 허용여부 지정
    • 파일 및 사용자가 많아지면 적용 곤란
  • 접근 제어 리스트(ACL) 기반 접근제어

    • 소유자가 사용자나 사용자 그룹에 대해 임의적으로 접근을 제어
    • 접근 대상별 접근 제어 리스트(ACL) 관리
  • 권한 리스트 기반 접근 제어

    • 사용자별로 접근 권한 리스트 관리
  • 사용자 등급 기반 제어

    • 임의 접근 제어의 사례
    • 사용자별 등급 지정
      • 파일 소유자, 그룹, 프로젝트, 전체
    • 파일별 등급별 접근권한 설정
      • 접근제어행렬보다 공간적인 효율성
  • 강제적 접근 제어(Mandatory Access Control, MAC)

    • 각 파일(객체)에 비밀등급 부여
    • 사용자(주체)별 허가등급 부여
    • 각 주체의 객체 접근시 사전에 정의된 정책 확인
      • 만족 시 접근 권한 부여
  • 역할기반 접근 제어(RBAC)

    • 조직 내에서 사용자의 역할 지정
    • 역할별로 자원에 대한 접근권한 설정

백업 및 복구

백업

  • 데이터 사본의 저장
  • 물리적 백업
    • 저장장치 내용 전체를 복제하는 것
  • 논리적 백업
    • 백업이 필요한 부분만 백업하는 것
    • 점진적 백업: 이전 백업 이후 수정부분만 백업

복구

  • 시스템 장애 후 데이터를 복구하는 것

로그 구조

  • 파일 시스템에 대한 갱신 내용을 트랜잭션으로 로그에 기록
  • 새로운 데이터는 로그 파일의 빈 공간에 순차적으로 기록
  • 수정된 디렉토리와 메타데이터가 로그로 뒤에 기록
  • 주기적으로 Garbage collection을 통해 불필요한 공간 반환
  • 로그 구조 파일 시스템
    • imap을 사용한 최근 inode 정보 관리
  • 가비자 컬렉션(폐영역 회수)
    • 단편화를 줄이기 위해 segment 단위로 삭제
      • 필요시 블록 복제

Flash 파일 시스템

플래시 메모리

  • 자기 디스크에 비해서 빠른 접근 속도를 제공하는 블록 기반 저장장치
    • 읽기는 신속, 쓰기는 지운 다음에 기록해야 해서 상대적으로 느림
  • 사용된 블록을 관리하기 위한 비트맵 관리
  • 복잡한 처리 필요
    • 비트 마모, 판독 곤란 등 대응
    • 내부의 프로세스에서 펌웨어를 사용하여 관리

플래시 파일 시스템

  • 저널링 파일 시스템

    • 저장 장치에 파일 등을 저장하기 전에 미리 변경 사항을 저널이라는 특별한 영역에 기록
    • 파일 시스템에 오류가 발생하면, 저널에 저장된 내용을 다시 실행
  • 플래시 파일 시스템

    • 여러가지 파일 시스템 사용: JFFS, JFSS2, LogFS 등
    • 저널링 파일 시스템 + 로그 구조 파일 시스템 결합 형태 사용
profile
으악

0개의 댓글