Linux는 많은 파일 시스템 (예 : ext3, NTFS, FAT32 등)을 지원합니다.
다음 다이어그램은 Linux에서 프로세스가 파일에 액세스하는 방법을 보여줍니다.
따라서 read()
파일을 읽기 위해 시스템 호출 이라고하는 프로세스 가 VFS 계층에 액세스하고 VFS 계층이 파일이있는 파티션의 파일 시스템을 기반으로 액세스 할 파일 시스템 드라이버를 결정한다고 가정합니다. 읽을 수 있습니다.
리눅스 (예 : 파일 액세스 많은 시스템 호출을 제공 read()
, write()
, rename()
, 등).
지금 read()
과 write()
및 rename()
리눅스에서 지원하는 모든 파일 시스템에서 작동합니다.
그러나 일부 파일 시스템에만 존재하지만 다른 파일 시스템에는 존재하지 않는 특정 기능이 있습니다. 예를 들어 NTFS 파일 시스템에서는 파일의 보관 비트를 설정할 수 있지만 ext3 파일 시스템에서는 수행 할 수 없습니다.
이제 제 질문은 리눅스가 지원하는 파일 시스템의 모든 기능에 액세스하기위한 시스템 호출을 가지고 있습니까? 예를 들어 : Linux 에 NTFS 파일 시스템의 파일에 대한 보관 비트 를 설정하기위한 시스템 호출이 있습니까?
답변
Linux에서 NTFS 파일 시스템의 파일에 대한 보관 비트를 설정하기위한 시스템 호출이 있습니까?
이 특정한 경우 ntfs-3g
드라이버는 확장 된 속성을 통해 파일 속성을 내 보냅니다 . Linux의 NTFS에서 파일에 “아카이브”비트를 설정할 수 있습니까?를 참조하십시오 .
(V) FAT 파일 시스템의 파일 속성은 비슷하지만 ioctl()
액세스 하는 기능을 사용합니다 ioctl_fat(2)
. ( ioctl()
실제 시스템 호출을 보증하지 않는 모든 종류의 장치 특정 항목에 사용되는 일종의 다목적 시스템 호출입니다.)
이제 제 질문은 리눅스가 지원하는 파일 시스템의 모든 기능에 액세스하기위한 시스템 호출을 가지고 있습니까?
확실히 대답 하기 는 어렵지만 적어도 반대의 예가 있습니다. ext4는 내부적으로 파일에 대한 “출생 시간”타임 스탬프를 지원합니다 (예 : ctime
inode 수정의 변경 과 달리 실제 생성 시간 ). 그러나 ext4가 “표준”파일 시스템이지만 오랫동안 태어날 시간에 액세스하기위한 시스템 호출은 없었습니다.
2017 년 4 월 Linux 4.11 에 statx()
시스템 호출이 추가되어 이제 지원 될 예정입니다.
관련 :
- ext4에서 출생이 비어 있습니다
- statx () v3을 포함하여 statx에 관한 lwn.net의 많은 기사