Linux가 지원하는 파일 시스템의 모든 기능에 액세스하기위한 시스템 호출이 있습니까?


12

Linux는 많은 파일 시스템 (예 : ext3, NTFS, FAT32 등)을 지원합니다.

다음 다이어그램은 Linux에서 프로세스가 파일에 액세스하는 방법을 보여줍니다.

여기에 이미지 설명을 입력하십시오

따라서 read()파일을 읽기 위해 시스템 호출 이라고하는 프로세스 가 VFS 계층에 액세스하고 VFS 계층이 파일이있는 파티션의 파일 시스템을 기반으로 액세스 할 파일 시스템 드라이버를 결정한다고 가정합니다. 읽을 수 있습니다.

리눅스 (예 : 파일 액세스 많은 시스템 호출을 제공 read(), write(), rename(), 등).

지금 read()write()rename()리눅스에서 지원하는 모든 파일 시스템에서 작동합니다.

그러나 일부 파일 시스템에만 존재하지만 다른 파일 시스템에는 존재하지 않는 특정 기능이 있습니다. 예를 들어 NTFS 파일 시스템에서는 파일의 보관 비트를 설정할 수 있지만 ext3 파일 시스템에서는 수행 할 수 없습니다.

이제 제 질문은 리눅스가 지원하는 파일 시스템의 모든 기능에 액세스하기위한 시스템 호출을 가지고 있습니까? 예를 들어 : Linux 에 NTFS 파일 시스템의 파일에 대한 보관 비트 를 설정하기위한 시스템 호출이 있습니까?

답변:


10

Linux에서 NTFS 파일 시스템의 파일에 대한 보관 비트를 설정하기위한 시스템 호출이 있습니까?

이 특정한 경우 ntfs-3g드라이버는 확장 된 속성을 통해 파일 속성을 내 보냅니다 . Linux의 NTFS에서 파일에 "아카이브"비트를 설정할 수 있습니까?를 참조하십시오 .

(V) FAT 파일 시스템의 파일 속성은 비슷하지만 ioctl()액세스 하는 기능을 사용합니다 ioctl_fat(2). ( ioctl()실제 시스템 호출을 보증하지 않는 모든 종류의 장치 특정 항목에 사용되는 일종의 다목적 시스템 호출입니다.)

이제 제 질문은 리눅스가 지원하는 파일 시스템의 모든 기능에 액세스하기위한 시스템 호출을 가지고 있습니까?

확실히 대답 하기 는 어렵지만 적어도 반대의 예가 있습니다. ext4는 내부적으로 파일에 대한 "출생 시간"타임 스탬프를 지원합니다 (예 : ctimeinode 수정의 변경 과 달리 실제 생성 시간 ). 그러나 ext4가 "표준"파일 시스템이지만 오랫동안 태어날 시간에 액세스하기위한 시스템 호출은 없었습니다.

2017 년 4 월 Linux 4.11statx()시스템 호출이 추가되어 이제 지원 될 예정입니다.

관련 :


3
ntfs! = 지방. 최소한 ntfs의 커널 버전에는 헤더를 정의하지만 아카이브 플래그를 설정하거나 가져올 수있는 방법이 없습니다. 퓨즈 기반의 ntfs-3g만이 특수 ioctl이 아닌 확장 속성을 통해 지원하는 것으로 보입니다.
Billy 삼촌

이것은 질문과 직접 ​​관련이 없지만에 대한 보완으로 statxC 라이브러리와 며칠 전에 릴리스 된 최신 버전의 coreutils에서 지원됩니다.
Stephen Kitt

@UncleBilly, d' oh, 분명히 읽을 수는 없지만 자동으로 (v) 지방을 생각했습니다. 이 점을 알아 주셔서 감사합니다. 더 적절한 참조를 찾을 수 있는지 확인할 것입니다.
ilkkachu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.