본문 바로가기
Linux

동일 Inode file의 fileSystem 확인 ps, 커널 의사 파일시스템(pseudo filesystem)

by ahsung 2021. 11. 8.

동일 inode를 가진 file의 filesystem 찾기

inode는 fileSystem에서 각 file마다 고유합니다.

동일 filesystem에서 inode가 고유하지 않거나 문제가 있는 경우엔 fsck로 filesystem 복구 필요!

 

inode를 통해서 file을 찾아야 할 일이 있어서 찾아봤는데, 유일할 줄 알았던 inode 결과가 2개가 나왔다;;

find / -inum {inode 숫자} 2>/dev/null

 

$ df -Th # 이걸로 확인해봐도 겉으로보기엔 같은 fileSystem 같이 보인다..
$ lsblk  # 마찬가지

$ df [file path] # 직접 file path를 넣으면, 해당 파일의 fileSystem이 나왔구나.. 
Filesystem     Type   Size  Used Avail Use% Mounted on
sysfs          sysfs     0     0     0    - /sys

같은 filesystem인지 알았지만, sysfs라는 파일 시스템에 존재하는 파일이었다..

 

 

커널 pseudo file system

sysfs는 linux kernel에서 제공하는 pseudo filesystem, 의사 파일 시스텝입니다.

참고: https://en.wikipedia.org/wiki/Synthetic_file_system

 

Synthetic file system - Wikipedia

From Wikipedia, the free encyclopedia Hierarchical interface In computer science, a synthetic file system or a pseudo file system is a hierarchical interface to non-file objects that appear as if they were regular files in the tree of a disk-based or long-

en.wikipedia.org

 

일반적인 filesystem은 linux kernel과는 별개의 컴포넌트이지만, 커널이 자신의 일부 속성값을 파일로 보여주고 제어할 수 있게 만드는 커널이 제공하는 파일 시스템입니다. (파일로 보여주는 이유는 Unix계열의 everything is a file  컨셉!)

대표적으로 /dev, /proc, /sys에 마운트되어있는 파일 시스템입니다.

$ df /dev
Filesystem     1K-blocks  Used Available Use% Mounted on
udev              890304     0    890304   0% /dev
$ df /proc
Filesystem     1K-blocks  Used Available Use% Mounted on
proc                   0     0         0    - /proc
$ df /sys
Filesystem     1K-blocks  Used Available Use% Mounted on
sysfs                  0     0         0    - /sys

일반적으로 시스템에서 위와 같이 자동적으로 마운트하지만 수동으로 다른 디렉토리에 마운트도 가능합니다.

ex) mount -t sysfs sysfs /sys2  , refer: https://man7.org/linux/man-pages/man5/sysfs.5.html

 

sysfs(5) - Linux manual page

sysfs(5) — Linux manual page SYSFS(5) Linux Programmer's Manual SYSFS(5) NAME         top sysfs - a filesystem for exporting kernel objects DESCRIPTION         top The sysfs filesystem is a pseudo-filesystem which provides an interface to kernel

man7.org

 

커널에서 제공하는 filesystem이나 램디스크, tempfs와 같은 의사 파일시스템은 실제로는 메모리영역에 구현되어 있으나 가상파일시스템(VFS)를 통해서 마치 파일처럼 유저가 접근할 수 있습니다.

예로, sysconfig 즉 커널 파리미터를 변경하려면 옛날 시스템은 sysconfig  명령어로 대부분 변경했지만, 의사 파일시스템은 커널의 속성값을 파일로 나타내는 것을 넘어서서 파일 내용을 변경하는 것으로 실제 커널 파라미터 값이 변경시킬 수 있습니다.

# eth0의 rp_filter 커널 파리미터 확인 
$ sysctl net.ipv4.conf.eth0.rp_filter
net.ipv4.conf.eth0.rp_filter = 0

# 파일 내용을 바꿔서 커널 파리미터 변경
$ echo "1" > /proc/sys/net/ipv4/conf/eth0/rp_filter

# eth0의 rp_filter 커널 파리미터 확인
$ sysctl net.ipv4.conf.eth0.rp_filter
net.ipv4.conf.eth0.rp_filter = 1

댓글