Linux 파일시스템 구조

ohyujeong·2023년 12월 11일
0

linux

목록 보기
3/9

파일시스템 (File system)

파일시스템은 파일들이 디스크 상에서 구성되는 방식이다. 파일시스템은 컴퓨터에서 파일이나 자료를 쉽게 발견할 수 있도록 유지, 관리한다.

  • 사용자영역이 아닌 커널 영역에서 동작한다
  • 계층적 디렉터리 구조를 가진다

Linux 파일시스템

  • 단일 트리구조를 갖는다.
    - 하나의 root 디렉토리가 있고, 디렉터리-하위디렉터리-데이터파일로 구성된다.
    - Linux Foundation에서 유지/관리하는 FHS 표준을 따르고 있다.
  • Linux 파일시스템에서는 모든 것이 파일이다.
    - 하드웨어 장치, 프로세스, 파일 등등
    - 파일 형태로 되어있기 때문에 어떤 동작을 위한 조작이 쉬워진다.
  • 파일시스템 유형이 Ext(Extended File System)ext2/3/4 을 사용한다.
  • 대소문자를 구분한다.

Ext(Extended File System)

출처 : https://recoverhdd.com/blog/the-ext-ext2-ext3-ext4-filesystem.html


마운트(Mount)

마운트는 외부 장치의 파일 시스템을 나의 시스템의 파일시스템과 연결하는 것을 말한다. 사용자가 지정한 마운트 지점에 외부장치의 파일 시스템을 마운트하는 방법으로 외부 장치의 디렉토리와 파일에 접근할 수 있다.

명령어

마운트 정보 조회

mount 명령어를 통해 마운트 정보를 조회할 수 있다.

# 현재 마운트된 모든 파일 시스템을 조회한다.
mount

위와 같이 현재 마운트된 모든 파일 시스템이 특정 형식을 따라 출력된다.

출력된 마운트 정보

/dev/vda2 on /boot type ext4 (rw. relatime)
--- 1 -------- 2 ------- 3 -------- 4 -----
  1. 마운트된 장치의 이름
  2. 마운트된 장치의 마운트 디렉토리
  3. 파일 시스템 유형
  4. 마운트 옵션 (읽기/쓰기 모드, 디렉토리/파일 접근시간 업데이트 방식)

외부장치 마운트

외부장치를 마운트 시 아래 형식으로 mount 명령어를 사용한다.

mount [option] [외부장치 경로] [마운트 포인트 경로]

option

-t : 특정 파일 시스템 유형을 지정할 수 있다.

# ext4 파일시스템 유형 명시
mount -t ext4 /dev/sdb1 /mnt/mydrive

-o : 해당 옵션에 뒤따라 다른 옵션을 추가하여 추가적인 마운트 옵션을 지정한다.

# 읽기 전용
mount -o ro /dev/sdb1 /mnt/mydrive

마운트 과정

아래와 같은 과정을 거쳐 마운트가 이루어진다.

  1. USB 드라이브를 포트에 연결
  2. /dev 에 장치 폴더 /dev/sdb1 생성
  3. /mnt 에 마운트 포인트인 /mnt/mydrive 생성
  4. 생성한 /mnt/sdb1 에 아래 명령어를 사용하여 장치를 마운트
mount -t ext4 /dev/sdb1 /mnt/mydrive

파일 경로 (Path)

파일 경로는 파일이나 디렉토리의 위치를 나타내는 데 사용되는 표기법이다. 절대경로(Absolute path)상대경로(Relative path) 두 가지 유형으로 나뉜다.

/home/docs 디렉토리에 my_text.txt 라는 파일이 저장되어있을 때의 각 유형별 경로를 알아보자.

절대경로(Absolute path)

절대경로는 root('/') 경로부터 시작하는/home/docs/my_text.txt 의 경로를 가진다.

상대경로(Relative path)

상대경로는 사용자가 위치한 현재 디렉토리를 기준으로 하여 결정된다. (pwd 명령어를 입력하여 확인) 따라서 현재 /home 경로에서 작업중이라면 docs/my_text.txt 의 경로를 가진다.


링크는 디렉토리나 파일을 가리키는 포인터라고 생각하면 된다. 소프트 링크(Soft link)하드 링크(Hard link) 2가지 유형의 링크가 있다.

  • 심볼릭 링크(Symbolic link)라고도 한다.
  • 원본 파일의 경로를 가리키는 바로가기와 같은 기능을 한다.
    - 따라서 링크한 원본 경로가 삭제되었을 경우 broken링크(사용이 불가능)로 존재한다.
  • 디렉토리와 파일 모두를 참조할 수 있다.
  • 다른 디스크나 볼륨에 있는 디렉토리/파일을 참조할 수 있다.
  • 원본 파일과 다른 권한을 가질 수 있다.
  • 파일의 메타데이터 조회 시 파일명 -> 링크 로 되어있는 부분이 소프트 링크이다.
  • 고유한 inode 를 사용하여 원본 파일의 inode 나 데이터와 직접적 연결을 갖지 않는다.
  • 원본 파일과 동일한 데이터 블록을 공유하여 파일의 내용을 공유한다.
    - 독립적인 데이터블록을 가지는 복사본과는 다르다.
    - 원본 파일의 데이터 블록을 공유하기 때문에 추가적인 저장 공간을 사용하지 않는다.
    - 변경 사항이 동기화된다. (원본<->하드링크 양방향으로 영향을 줌)
  • 원본 파일이 삭제되어도 하드 링크는 계속 데이터에 접근할 수 있다. (파일시스템이 마지막 링크가 삭제될 때까지 데이터를 보존)
  • 파일의 메타데이터 조회 시 표시되는 하드링크 수를 통해 파일의 참조 상황을 파악한다.
  • 파일에 한해서만 링크를 생성할 수 있다.(디렉토리는 불가)
  • 다른 디스크나 볼륨에 있는 파일은 참조할 수 없다.
  • 원본과 동일한 inode 를 참조한다.

inode

index-node의 줄임말로 Linux에서 소유권, 액세스모드, 파일유형, 파일크기, 데이터 블록 위치 등 파일에 대한 메타데이터를 저장하는 데이터 구조이다. 정수로 식별되며 각 파일은 고유한 inode를 가지고, 파일이 생성될 때 파일에 할당된다.
파일 시스템은 파일이름과 inode 번호를 연결하여 파일을 관리한다.
아래는 이를 잘 설명해주는 그림이다.

출처 : https://it-serial.tistory.com/44

링크 생성

아래 명령어를 통해 링크를 생성할 수 있다.

# 소프트 링크 생성
ln -s [원본 파일 이름] [링크 이름]

# 하드 링크 생성
ln [원본 파일 이름] [링크 이름]

권한 (Permission)

모든 디렉토리와 파일에는 권한이 부여되어 있고, 이 권한은 디렉토리와 파일에 읽기/쓰기/실행할 수 있는 사용자를 결정한다. 권한은 아래와 같은 파일을 사용하려는 소유자 유형과 파일의 액세스 모드에 따라 9가지의 조합이 가능하다.

Linux 파일시스템의 소유자 유형

  • 사용자
  • 그룹 (group)
  • 그 외 (others)

Linux 파일시스템의 파일 액세스 모드

  • r : 읽기 (Read)
  • w : 쓰기 (Write)
  • x : 실행하기 (Execute)

이 9가지의 조합은 9개의 연속된 문자로 식별할 수 있다.
1-3번째 글자까지는 사용자, 4-6까지는 그룹, 7-9까지는 그 외의 파일에 대한 액세스 모드를 표현한다.
예를 들어 rwxr-xr-x (- 는 해당 자리의 액세스 모드 권한이 없다는 뜻이다.) 라고 되어 있다면

  • 사용자 : 읽기, 쓰기, 실행하기
  • 그룹 : 읽기, 실행하기
  • 그 외 : 읽기, 실행하기

라고 알 수 있다.

아래 명령어로 파일에 설정된 권한과 메타데이터를 조회할 수 있다.

# -l(long format) 옵션 사용하여 리스팅
ls -l

목록에서 맨 마지막 항목을 왼쪽부터 차례대로 설명하자면 아래와 같다.

  • 파일 유형: d - 디렉토리
  • 권한 설정: rwxrwxrwx - 사용자/그룹/그 외 모두 읽기/쓰기/실행이 가능
  • 하드 링크 수: 19
  • 사용자 소유자: root
  • 그룹 소유자: root
  • 파일크기: 4096 - byte단위로 표시한다.
  • 타임스탬프: Dec 11 12:16
  • 파일 이름: tmp

파일이름의 형식이 파일이름 -> 링크 로 되어있는 경우 소프트 링크를 나타낸다.


참고

리눅스 파일시스템
https://lilo.tistory.com/17
https://it-serial.tistory.com/19
https://aryan-singhal-29418.medium.com/an-outline-of-linux-file-system-3f3db6ea8eb1
Ext
https://recoverhdd.com/blog/the-ext-ext2-ext3-ext4-filesystem.html
리눅스 파일 권한
https://www.redhat.com/sysadmin/linux-file-permissions-explained
inode
https://i5i5.tistory.com/341
https://it-serial.tistory.com/44

profile
거친 돌이 다듬어져 조각이 되듯

0개의 댓글