-
가상 파일 시스템Linux/Linux Kernel 2020. 8. 16. 17:01
가상 파일 시스템이란?
가상 파일 시스템은 파일 시스템 인터페이스를 사용자 어플리케이션에 제공하준다.
즉, 가상 파일 시스템만 있으면 어떤 파일 시스템으로 관리하는 파일이라도 읽고 쓸 수가 있다는 것이다.
가상 파일 시스템이 왜 필요할까?
바로 파일 시스템 종류가 많기 때문이다.
파일 시스템마다 자신만의 읽고 쓰는 함수가 존재한다면 사용자 어플리케이션에서는 사용하기 힘들다.
예를 들어 FAT-32 파일 시스템을 사용하는 SD카드(/mnt/sd)에 있는 source라는 파일을 리눅스의 EXT3 파일 시스템을 사용하는 /tmp 디렉터리에 target 이름으로 복사하려면 어떻게 해야할까? 벌써부터 머리가 아프다.
비록 FAT32와 EXT3의 파일 시스템 형식은 서로 다르지만 동일한 open() 함수를 이용하여 파일을 열고, read()나 write() 함수를 이용하여 파일을 읽고 쓰며, 사용이 끝난 이후에는 close() 함수를 이용하여 파일을 닫아주기만 하면된다.
가상 파일 시스템 덕분에 유저 어플리케이션 입장에서는 해당 파일을 관리하는 파일 시스템마다 어떤 함수가 호출되는지, 어떻게 동작하는지 알 필요가 없어진 것이다.
하지만 시스템 소프트웨어 개발자는 가상 파일 시스템이 어떻게 동작하는지 알아야 된다. 다시말해 어떻게 다양한 파일 시스템으로 연결해주는지, 어떤 함수가 호출 되는지를 알아야지 디버깅을 할 수 있다.
가상 파일 시스템의 공통 모델
리눅스 커널의 가상 파일 시스템에서는 다양한 파일 시스템을 지원하기 위해 공통으로 파일을 관리할 수 있는 객체를 제공한다.
이러한 객체를 슈퍼블록 객체, 아이노드 객체, 덴트리 객체, 파일 객체가 있다.
====================================
=> ext4_file_open
=> do_dentry_open
=> vfs_open
=> ##
=> #lookup_open
=> do_last
=> path_openat
=> do_filp_open
=> do_sys_open
=> sys_open
콜스텍 확인하면서 동작확인하려는데 너무 복잡하다.....................................................................................