observe_db

[OS] 11. File System(파일 시스템) 본문

학교 공부/운영체제(OS)(3-1)

[OS] 11. File System(파일 시스템)

쩡윤 2023. 6. 2. 01:45

Part 1.

파일(file)

  • 하나의 단위로 처리될 수 있는 이름이 부여된 데이터의 집합
  • 파일 연산
    • 열기(open)
    • 닫기(close)
    • 생성(create)
    • 삭제(destroy)
    • 복사(copy)
    • 이름변경(rename)
    • 내용보기(list)
  • 파일 내의 데이터 항목에 대한 연산
    • 읽기(read)
    • 쓰기(write)
    • 갱신(update)
    • 삽입(insert)
    • 삭제(delete)
  • 파일의 종류
    • 연속된 byte로 구성된 파일
    • record로 구성된 파일: DB의 파일
    • Tree 정보를 저장하는 파일: B+ Tree 자료구조

디렉토리(directory, folder)

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

파일 시스템(file system)

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

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

  • 파일 디스크립터(descriptor)/열린(open) 파일 테이블
    • 사용자 수준 프로세스에서 열린 파일 관리
    • 열린 파일 테이블: 해당 프로세스의 PCB에 저장
  • 가상 파일 시스템
    • 여러 파일 시스템에 대한 통합된 인터페이스 제공
  • 파일 시스템
    • 저장 장치의 물리적 정보 은닉
    • 파일 및 디렉토리 이름 등으로 접근 허용
  • 디스크 캐시
    • 최근 접근한 디스크 블록의 메모리 내 저장
  • 디스크 스케줄러
    • 복수의 프로세스들에 대한 디스크 접근 스케줄링
  • 디바이스 드라이버
    • 개별 장치에 대한 프로토콜 은닉
    • 표준 인터페이스를 통한 접근 지원


 
디렉토리 구조

  • 단일 단계 파일 시스템(Single-level/Flat file system)
    • 가장 단순한 파일 시스템 구조
    • 모든 파일을 동일 디렉토리에 저장 관리
    • 모든 사용자가 동일한 디렉토리 사용
    • 각 파일은 유일한 이름
    • 파일을 찾기 위해 선형 탐색을 하기 때문에 성능 문제
  • 계층적 파일 시스템(Hierarchical file system)
    • 루트는 루트 디렉토리가 시작되는 장치의 위치에 해당
    • 디렉토리는 다른 디렉토리와 파일 포함 가능
    • 디렉토리 내에서만 이름이 유일하면 됨
    • 루트 디렉토리에서 시작하는 경로 이름을 통해 파일 지정 가능
  • 작업 디렉토리(working directory)
    • 현재 작업이 진행중인 디렉토리
    • 경로 이름을 사용하여 파일을 지정하지 않고, 작업 디렉토리를 기준으로 상대 경로 사용 가능
    • 절대 경로(루트에서 시작. 작업디렉토리+상대경로)
  • 링크(link)
    • 다른 디렉토리에 있는 파일이나 디렉토리를 참조하는 디렉토리 항목
    • 마치 해당 파일아니 디렉토리가 자신의 디렉토리에 있는 것처럼 보임
    • 데이터 공유 지원
    • 소프트 링크(soft link)
      • 디렉토리 항목에 다른 파일 경로 이름 저장
      • Unix/Linux: 심볼릭 링크(symbolic link)
      • 링크된 파일을 이동하게 되면 소프트 링크는 무효
    • 하드 링크(hard link)
      • 디렉토리 항목에 해당 파일의 저장장치에서의 위치 정보를 저장

리눅스 파일 시스템

  • /bin: 사용자가 사용할 수 있는 명령어 저장
  • /boot: 부팅에 필요한 커널과 부팅할 때 필요한 관련 파일 저장
  • /dev: 장치파일을 저장하는 공간. 모든 하드웨어를 파일로 인식
  • /etc: 시스템이나 사용자 관리를 위한 자료 파일(시스템 설정 파일)
  • /home: 일반 사용자의 홈 디렉토리가 생성되는 위치
  • /lib: 시스템 운영 및 프로그램을 구동할 때 필요한 공유 라이브러리
  • /root: 시스템 관리자, 즉 root 사용자의 홈 디렉토리
  • /mnt: CD-ROM 장치 등에 대한 기본 마운틴 포인트 제공
  • /proc: 프로세스와 시스템 정보를 제공하기 위한 목적으로 설계된 가상 파일 시스템을 사용하는 디렉토리. 실행하면 / proc에 해당 프로세스 PID 번호에 해당하는 디렉토리를 생성하여 프로세스의 진행상황을 추적하고 관리
    • 문자로 이루어진 이름의 디렉토리&파일: 시스템 커널 정보
    • 숫자로 이루어진 이름의 디렉토리: 현재 실행 중인 프로세스의 정보
  • /sbin: 관리자가 사용하는 시스템 운영에 필요한 명령어 저장
  • /tmp: 프로세스 생성 과정에서 발생되는 임시파일 저장. 종료시에 이 위치 파일은 모든 파일은 삭제됨.
  • /usr: 어플리케이션 프로그램을 설치할 때 패키지에 포함된 대부분의 파일 저장
  • /var: 내용이 자주 변경되는 가변자료

 
Part 2.

파일 시스템 구조

메타데이터 저장

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

Linux EXT(extended file system)

  • 전형적인 리눅스 파일 시스템
  • EXT, EXT2, EXT3, EXT4 등


부트블록(boot block)

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

수퍼블록(super block)

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

그룹 기술자 테이블

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

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

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

블록 비트맵 (block bitmap)

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

i-node

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

i-node bitmap

  • i노드 사용 현황을 비트맵으로 관리

i-node table

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

데이터 블록(data block)

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

 
파일 시스템 마운트(mount)

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

 
파일 디스크립터(file descriptor)

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

 

파일 공간 할당

파일 공간 할당 방법

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

 

빈공간 관리

연결리스트 사용 방법

  • free list 관리
    • 빈 블록이 발생하면 free list 맨 끝에 추가
    • 블록 할당시 free list 매 앞에 있는 블록 할당
  • 비트맵 사용 방법
    • 블록별 1개 비트 할당
    • i번째 비트는 i번째 블로게 대응
    • 장점: 연속된 빈 블록을 쉽게 식별 가능
    • 단점: 빈 블록을 찾기 위해 전체 비트맵 탐색 가능

 
 
Part 3.

접근 제어

민감정보 포함 파일

  • 신용카드 번호
  • 패스워드
  • 주민등록 번호

데이터 접근 제어

  • 임의 접근 제어(Discretionary Access Control)
    • 접근 제어 행렬(access control matrix) 기반 제어
    • 접근 제어 리스트(access control list) 기반 제어
    • 권한 리스트(capability list) 기반 제어
    • 사용자 등급(user class) 기반 제어
  • 강제적 접근(mandatory) 제어
  • 역할 기반(role-base) 제어

 
임의 접근 제어

  • 소유자 또는 관리자가 사용자나 사용자 그룹에 대해 임의적으로 자율적으로 접근 권한 부여
  • 소유자 또는 관리자인 사용자의 접근권한 관리 -> 보안 관리자의 부담 축소
  • 접근 권한 관리 구조
    • 접근제어 행렬
      • 사용자별 파일에 대한 접근 허용여부 지정
      • 파일 및 사용자가 많아지면 적용 곤란
    • 접근제어 리스트
      • 소유자가 사용자나 사용자 그룹에 대해 임의적으로 접근 제어
      • 접근 대상별 접근제어리스트(ACL, access control list) 관리
    • 권한 리스트
      • 사용자별로 접근 권한 리스트 관리
    • + 사용자 등급 기반 제어
      • 임의 접근 제어의 사례
      • 사용자별 등급 지정(파일소유자, 그룹, 프로젝트, 전체)
      • 파일별 등급별 접근권한 설정(공간 효율성 접근제어행렬보다 좋음)
  • 사용자와 접근대상 증가에 따른 복잡성과 관리 자료구조 크기 증가
  • 소유자의 의도에 상반된 접근 위험

강제적 접근 제어(Mandatory Access Control, MAC)

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

비밀 취급 인가

  1. 극비(top secret)
  2. 비밀 (secret)
  3. 미분류(unclassified)

객체의 민감도 수준

  1. 극비(top secret)
  2. 비밀(secret)
  3. 기밀(confidential)
  4. 미분류(uncalssified)

역할기반 접근 제어(RBAC, Role-Based Access Control)

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

 

백업 및 복구

백업(backup)

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

복구(recovery)

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

 

로그 구조 파일 시스템(log-structured file system)

  • 파일 시스템에 대한 갱신 내용을 트랜잭션으로 로그에 기록
  • 새로운 데이터는 로그 파일의 빈 공간에 순차적으로 기록
  • 수정된 디렉토리와 메타데이터가 로그로 뒤에 기록
  • 주기적으로 Garbage Collection을 통해 불필요한 공간 반환


 

Flash 파일 시스템

플래시 메모리

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

플래시 파일 시스템

  • 저널링 파일 시스템(journaling file system)
    • 저장장치에 파일 등을 저장하기 전에 미리 변경 사항을 저널이라는 특별 영역에 기록
    • 파일 시스템에 오류가 발생하면, 저널에 저장된 내용을 다시 실행
  • 플래시 파일 시스템
    • 여러가지 파일 시스템 사용: JFFS, JFSS2, LogFS
    • 저널링 파일 시스템+ 로그구조 파일 시스템 결합 형태 사용
Comments