FileSystem::i-node

안준성·2023년 6월 2일

File System

목록 보기
2/5

리눅스는 모든 데이터를 파일로 표현한다.

터미널에서 사용하는 명령어, 심지어는 디스크나 하드웨어까지 모두 파일로 인식하고 다룬다.

파일에 대해 알기전에 먼저 i-node에 대해 알아야 한다.


I-node란

Index node의 줄임말로 파일을 빠르게 찾기 위해 순서대로 정리한 정보이다.

리눅스에서 i-node는 ls -l 명령어를 통해 확인할 수 있다.

이렇게 파일들의 정보가 나오는데, 이 파일의 정보가 inode이다.

i-node의 구성은

  1. 파일 형식
  2. 파일 권한(소유자, 그룹, Others)
  3. 링크 수
  4. 파일 소유주
  5. 파일 그룹
  6. 파일 크기
  7. 파일 생성 시간

이런식으로 리눅스에서 다루는 모든 파일은 i-node를 가지고 있고, 새로운 파일이 생성될 때도 i-node가 생성된다.

리눅스에선 i-node list table에 i-node들을 모아두고 관리한다.

테이블에서 i-node들을 구분하기 위해 번호를 붙이는데, 이는 lsi옵션을 통해 확인할 수 있다.


리눅스 파일 종류

리눅스의 파일은 특수파일, 디렉토리 파일, 일반 파일, 링크 파일 이렇게 4가지로 나눌 수 있다.

1. 특수 파일

리눅스가 지원하는 특수파일에는 파이프, 주변장치, 소켓 등이 있다.

  • 소켓이란 프로그램이 서버와 통신할 때 네트워크 접속을 위한 연결장치 역할을 하는 소프트웨어이다.

파일 형식 7개중 4개(b,c,p,s)가 이 특수파일이다.

  • b : 블록(운영체제가 사용하는 용량단위)형 특수 장치파일(디스크 파일인 /dev/sda 같은 것)

  • c : 문자형 특수 파일 (입출력에 사용하는 console같은 것)

  • p : 파이프 특수 파일

  • s : 소켓 특수 파일

리눅스에서의 디스크는 /dev 디렉토리 안에 sda, sdb, sdc, ... 이런식으로 파일형식으로 있다.

sda1, sda2 이런 식으로 뒤에 숫자가 붙은 것은 파티션을 뜻하는데, sda 디스크를 나눈 것이다.

리눅스에선 디스크 외에 디바이스들도 모두 특수파일로 취급한다.

2. 디렉토리 파일

보통 디렉토리라고 하는게 디렉토리 파일이다.

디렉토리는 트리형식으로 이루어져 있다.

디렉토리는 i-node의 파일 형식이 d로 시작한다.

3. 일반 파일

주로 사용되는 일상적인 파일은 대부분 다 일반 파일이라 볼 수 있다.

실행파일이나, 이미지파일, 프로그램 소스파일, 텍스트 파일 등이 여기에 속한다.

참고로 실행파일이나 이미지 파일의 경우 데이터가 바이너리(이진) 형태로 저장되어 있다.

yum은 스크립트 형태로 있다가 쉘이 해석하면서 바이너리화하는 것이고, mount는 그냥 바이너리 파일로 존재한다.

file 명령어를 통해 파일의 종류를 알 수 있다.

4. 링크 파일

링크(연결) 역할을 하는 파일로써 소프트링크(심볼릭 링크)g하드링크가 있다.


소프트 링크와 하드링크 복사 차이

소프트(심볼릭)링크는 실체가 없고 원본과 연결된 파일 또는 어떤 파일과 연결된 상징적인 파일이다.

  • 링크 : 링크파일을 클릭하면 원본과 연결시켜주는 것

하드링크는 실체가 있으며 원본과 연결된 파일.

소프트링크는 ln -s [원본 파일] [링크파일 이름]을 통해 생성할 수 있다.

소프트링크는 윈도우의 바로가기와 거의 같다고 보면 된다.

하드링크는 ln [원본 파일] [하드링크 파일 이름]을 통해 생성할 수 있다.

하드링크는 i-node 번호, 권한, 생성시간, 용량까지 똑같다.

오직 파일 이름만 다르고 원본과 같은 파일이다.

하드링크는 복사와는 다른데, 복사는 같은 내용의 다른 객체를 만드는 것이고, 하드링크는 똑같은 객체를 이름만 바꾼 것이다.

따라서 하드링크 파일을 바꾸면 원본도 바뀐다.

소프트 링크는 원본을 삭제해도 삭제되진 않지만 그 기능을 잃어 사용할 수 없어진다.

하드링크는 같은 i-node를 가지고 있는 파일이 하나 더 있는거기 때문에, 하나를 삭제해도 남은 하나를 그대로 사용할 수 있다.

또한 디렉토리는 하드링크 파일을 만들 수 없는데 그 이유는 소프트 링크는 실체가 없이 원본을 연결만 시켜주기 때문에 파일시스템에서 헷갈릴 일이 없는데, 하드링크는 파일시스템에서 꼬일 수 있기 때문이다.

파일 이름과 확장자

윈도우 운영체제에서 파일이름(확장자 포함)은 파일 자체에 영향을 미칠 정도로 중요하다.
하지만 리눅스에서는 특별한 확장자를 나타내는 이름 같은게 없어, 파일 이름을 작성할 때 어떤 파일인지 알 수 있게끔 이름을 짓는다.

profile
안녕하세요

0개의 댓글