지금까지 나는 그 말씀에 대해 깊이 생각해 본 적이 없습니다. fuse
그러나 그 후에 나는 거기에 있다는 것을 보았습니다 nofuse
.
인터넷에서 검색해 본 결과 차이점을 명확하게 설명하지 못했습니다. 이들 fuse
그리고 의 차이점은 무엇인가요 nofuse
?
예를 들어, 성능 및 이점 측면에서 이것과 fuse
비교하면 무엇입니까? 부팅 시 플래시 드라이브를 시작할 수 있지만 그렇지 않습니까? 이것이 제가 관심을 갖는 것입니다.nofuse
nofuse
fuse
답변1
두 사람은 서로 다른 운전자입니다. 그 중 하나는 FUSE를 사용하여 생성되고 다른 하나는 커널 모듈입니다.
FUSE는 파일 시스템 드라이버를 "사용자 공간", 즉 커널 모듈이 아닌 독립형 서비스로 작성할 수 있도록 하는 프레임워크입니다. 이것이 발전을 만든다.많이성능이 저하되는 대신 더 쉽습니다.
FUSE 기반 파일 시스템은 각 작업이 프로그램에서 커널, 해당 FUSE 서비스(장치에서 데이터를 읽어 커널로 다시 읽어야 함) 등 여러 컨텍스트 스위치를 거치기 때문에 커널 내 파일 시스템보다 다소 느릴 수 있습니다. 다시 출력), 응답은 다시 커널에 의해 처리되어 프로세스에 전달됩니다. 서비스로도 실행되는 데이터베이스와 비교하면 특별한 것은 아니지만 커널의 일부로 직접 실행되는 파일 시스템과 비교할 때 속도가 느려집니다.
그러나 exfat-fuse와 같은 FUSE 기반 드라이버는 각각의 새로운 주요 커널 버전에 맞게 조정해야 하는 ZFS와 같은 커널 기반 드라이버와 비교하여 현재 실행 중인 커널(인터페이스는 특히 안정적이어야 함)에 관계없이 설치할 수 있습니다.그리고모듈은 각 부 버전마다 별도로 다시 컴파일해야 합니다(종종 사용자 컴퓨터에서).
따라서 (아직) Linux 커널의 일부가 아닌 파일 시스템의 경우(이유와 관계없이) FUSE를 사용하는 것이 일반적인 선택입니다. 드라이버를 더 쉽게 작성할 수 있기 때문입니다.그리고배포가 더 쉬움 - 이것이 exfat-fuse가 일반적으로 사용되는 이유입니다. (드라이버가 일반 프로그램이기 때문에 FUSE를 사용하면 sshfs, ftpfs 또는 wikipediafs와 같은 사용자 정의 파일 시스템을 쉽게 구축할 수 있습니다.)
하지만 현재 'exfat-nofuse' 패키지는 더 이상 사용되지 않습니다(음,둘 다그 중 더 이상 사용되지 않음), 현재 커널 버전에는내장exFAT 드라이버이므로 더 이상 외부 드라이버가 필요하지 않습니다.
마찬가지로 "ntfs-3g" NTFS 드라이버도 FUSE 기반이지만 어느 시점에서는 새로운 커널 내 "ntfs3" 드라이버로 대체될 가능성이 높습니다.
답변2
에서fuse(8)
:
FUSE(Filesystem in Userspace)는 가상 파일 시스템을 Linux 커널로 내보내는 사용자 공간 프로그램을 위한 간단한 인터페이스입니다. FUSE는 또한 권한이 없는 사용자가 자신의 파일 시스템 구현을 생성하고 마운트할 수 있는 안전한 방법을 제공하는 것을 목표로 합니다.
는 nofuse
순수하게 커널 모듈에 의해 처리된다는 의미입니다.
답변3
커널에는 하드웨어와 통신하는 방법이 있습니다. 이 방법(및 커널 자체)은 링 0에서 실행됩니다. 이는 권한이 있음을 의미합니다. 파일 시스템 코드에는 루트킷이 포함될 수 있습니다. 게다가 파일 시스템 드라이버를 구현하는 커널 모듈을 설치하려면 루트여야 합니다. 또한 마운트 지점을 설정하려면 루트여야 합니다.
FUSE는 파일 시스템 드라이버가 사용자 공간에서 실행됨을 의미합니다. 커널의 모듈은 일반 사용자로 실행되는 코드에 연결됩니다. 이는 취약성의 발자국이 더 작고 더 보편적이라는 것을 의미합니다. FUSE 드라이버의 초보 구현은 다른 모든 FUSE 드라이버와 동일한 커널 브리지를 사용합니다.
여기서 배포판은 exfat에 대한 두 가지 방법을 제공합니다. 하나는 커널 기반이고 다른 하나는 FUSE에 있습니다.