[운영체제] Part 6 - 파일 시스템:: 파일 시스템 내부구조

서정범·2024년 3월 30일
0

운영체제

목록 보기
16/16

1. 파일 시스템

범용 컴퓨터 시스템에는 여러 저장장치가 있을 수 있으며 이러한 장치는 파티션으로 분할되어 볼륨을 보유하고 볼륨은 다시 파일 시스템을 보유합니다.

뷸륨 관리자에 따라 볼륨은 여러 파티션에 걸쳐 확장될 수 있습니다.

컴퓨터 시스템은 또한 다양한 개수의 파일 시스템을 가질 수 있고, 파일 시스템의 종류도 다양할 수 있습니다.

간단하게 살펴보기 위해서 Solaris의 파일 시스템 유형을 살펴보자.

  • tmps: 휘발성 메인 메미로에 생성되고 시스템이 재부팅되거나 고장 났을 떄 파일 시스템의 내용이 지워지는 "임시" 파일 시스템
  • objfs: 디버거가 커널 심볼을 접근할 수 있게 하는 "가상" 파일 시스템(실제로는 파일 시스템으로 보이는 커널 인터페이스)
  • ctfs: 시스템이 부트될 때 시작하여 운영체제가 실행되는 동안 실행되어야 하는 프로세스를 관리하기 위한 "contract" 정보를 저장하기 위한 가상 파일 시스템
  • lofs: 한 파일 시스템 대신에 다른 파일 시스템에 접근할 수 있게 하는 "loop back" 파일 시스템
  • procfs: 모든 프로세스에 관한 정보를 파일 시스템 형태로 보여주는 가상 파일 시스템
  • ufs, zfs: 범용 파일 시스템

2. 파일 시스템 마운팅

파일이 사용될 수 있기 전에 열리는 것처럼 파일 시스템은 프로세스들에 의해 사용되기 전에 마운트 되어야 합니다.

더욱 정확하게 디렉터리 구조는 다양한 볼륨으롭터 만들어 질 수 있는데, 각 파티션들이 마운트되어야 파일 시스템 네임스페이스 안에서 이용 가능합니다.

마운트 과정은 다음과 같습니다.

  1. 운영체제에 장치 이름과 파일 시스템을 부착할 수 있는 파일 구조 내의 위치(또는 마운트 포인트)를 줍니다.
  2. 운영체제는 장치가 유효한 파일 시스템을 포함하는지 확인합니다.
  3. 운영체제는 파일 시스템이 지정된 마운트 포인트에 마운트되었음을 디렉터리 구조에 기록합니다.

여기서 파일 시스템을 마운트한다는 표현이 나오는데 이에 대해서 정리를 하고 가겠습니다.

파일 시스템은 볼륨에 저장된 파일과 디렉터리에 접근할 수 있게 해줍니다. 이는 보통 저장장치의 특정 부분에 저장되어 있습니다.

파일 시스템을 마운트한다는 것은 저장된 파일 시스템을 운영체제가 인식하고 사용할 수 있도록 만드는 과정을 의미합니다.

파일 시스템의 마운트는 주로 다음 두 가지 상황에서 발생합니다.

  1. 부팅 시: 시스템 부팅 시, 운영체제는 루트 파일 시스템을 자동으로 마운트합니다. 이후 필요에 따라 추가적인 파일 시스템을 마운트할 수 있습니다.
  2. 동적으로 마운트: 사용자 또는 시스템 관리자가 명시적으로 요청할 때, 추가적인 파일 시스템을 동적으로 마운트할 수 있습니다. 예를 들어, USB 드라이브를 연결하거나 네트워크 드라이브를 접속하는 경우가 여기에 해당합니다.

파일 시스템이 마운트되면, 그 파일 시스템에 포함하고 있는 데이터(파일 및 디렉터리)가 운영체제의 파일 시스템 네임스페이스의 일부가 됩니다. 이는 저장장치가 물리적으로 메인 메모리로 올라오는 것이 아니라, 운영체제가 해당 볼륨의 파일 시스템 구조와 메타데이터를 읽어서 파일 시스템의 내용을 관리하고 접근할 수 있게 하는 것을 의미합니다.

파일 시스템 마운트의 개념은 디렉터리 구조 내의 특정 위치(마운트 포인트)에 외부 볼륨의 파일 시스템을 연결하는 것으로 이해할 수 있습니다.

마운트 해제(Unmount)는 이 연결을 끊고, 해당 볼륨이 시스템에서 더 이상 접근 불가능하게 만드는 과정입니다.

3. 파티션과 마운팅

각 파티션은 파일 시스템을 포함하는 여부에 따라 두 가지로 나누어 질 수 있습니다.

  • Raw 파티션: 파일 시스템을 포함 X
  • Cooked 파티션: 파일 시스템을 포함 O

Raw 디스크는 파일 시스템이 사용되지 않는 곳에서 사용됩니다.

예를 들면, UNIX 스왑 공간은 디스크상에서 자신의 고유 포맷을 사용하고 몇몇 데이터베이스에서 raw 디스크를 사용하여 데이터를 요구에 맞게 포맷합니다.

이는 RAID 시스템에서도 사용될 수 있습니다.

파티션에 부팅 가능한 파일 시스템이 포함되어 있으면 파티션은 부팅 정보도 필요합니다.

부팅 중에 시스템은 적재된 파일 시스템 코드가 없고 따라서 파일 시스템 형식을 해석할 수 없기 때문에 이 정보는 자체 형식을 가집니다.

여러 시스템에서 멀티 부팅을 사용할 수 있는데, 이것은 부트스트랩 로더가 초기에 어느 파티션을 탐색하는지를 설정함으로써 사용 이용 가능한 운영체제 중 하나를 부트할 수 있게 해줍니다.

부트 로더에 의해 선택된 운영체제 커널 및 다른 시스템 파일을 포함하고 있는 루트 파티션이 부팅할 때 마운트됩니다.

이후 내용들은 원격으로 사용하는 파일 시스템에 대한 내용들이고, 정리는 생략하도록 하겠습니다.

참고한 사이트

  • 운영체제[공룡책]
profile
개발정리블로그

0개의 댓글