it-swarm-ko.tech

FuseFS 파일 시스템을 사용하면 어떤 이점과 단점이 있습니까?

일부 파일 시스템이 Fuse를 통해 자신을 제시한다는 것을 알고 있으며이 접근 방식의 장단점에 대해 궁금합니다.

19
geoffc

실제, 온 디스크 파일 시스템 또는 모든 파일 시스템을 의미한다면 긍정적이지 않습니다. 나는 그것이 가능하다고 생각하지만 일반적인 파일 시스템이 Fuse를 사용하는 것을 본 적이 없습니다. Fuse의 주요 이점은 파일 시스템처럼 보이는 애플리케이션 (또는 사용자)에게 무언가를 제공 할 수있게 해주지 만 실제로는 사용자가 디렉터리에 파일을 나열하거나 새 파일을 만들려고 할 때 애플리케이션 내의 함수를 호출 할 수 있다는 것입니다. 파일. Plan9 파일 시스템을 통해 모든 것에 액세스 할 수 있도록하는 것으로 잘 알려져 있으며 /proc 의사 파일 시스템이 여기에서 나옵니다. 퓨즈는 애플리케이션이 해당 패턴을 쉽게 따를 수있는 방법입니다.

예를 들어 다음은 SE 사이트 데이터에 대한 액세스를 제공하는 (매우 기능이없는) 퓨즈 파일 시스템의 스크린 샷입니다.

Screenshot of Fuse filesystem in action

당연히 이러한 파일은 실제로 존재하지 않습니다. ls가 Fuse 디렉터리에있는 파일 목록을 요청했을 때 사용자 73 (me)에 대한 정보를로드하기 위해이 사이트에 API 요청을 수행 한 내 프로그램의 함수를 호출했습니다. catdisplay_namewebsite_url에서 실제로 디스크에 존재하지 않고 메모리에서 캐시 된 데이터를 반환하는 더 많은 함수를 호출했습니다.

17
Michael Mrozek

유닉스 파일 시스템은 전통적으로 커널에서 구현됩니다. Fuse 는 파일 시스템이 사용자 프로그램에 의해 구현되도록합니다.

커널 내 파일 시스템은 프로그램 및 데이터의 기본 파일 시스템에 더 적합합니다.

  • 부트 미디어에서 사용할 수 있습니다 (Fuse 파일 시스템을 구현하는 프로그램은 어딘가에서로드해야합니다).
  • 프로세스가 충돌하거나 실수로 죽어도 사라지지 않는다는 점에서 더 강력합니다.
  • 다소 빠릅니다.

퓨즈 파일 시스템에는 다른 장점이 있으며 대부분 유연성을 중심으로합니다.

  • 일반 사용자가로드 및 마운트 할 수 있으므로 네트워크 액세스, 아카이브 파일 통과, 이동식 미디어 등 사용자가 직접 마운트하는 파일 시스템에 편리합니다.
  • Fuse 파일 시스템 드라이버가 충돌하더라도 커널에 당황하지 않습니다. 파일 시스템에 액세스하는 응용 프로그램에서 I/O 오류보다 더 나쁜 것은 없습니다.
  • 매우 빠르게 프로그래밍 할 수 있습니다. 유용한 Fuse 파일 시스템 드라이버를 수백 줄의 코드로 작성할 수있는 많은 스크립팅 언어에 대해 Fuse bindings 이 있습니다.
  • 설치를 위해 관리자의 개입이 필요하지 않고 지원되는 OS 간에 쉽게 이식 될 수 있기 때문에 매우 빠르게 배포 할 수 있습니다.
  • 커널과 정적으로 연결되는 것과 관련된 라이센스 문제는 없습니다 ( zfs 에 영향을 미침).

Fuse는 실제로 파일 시스템이 아니라 파일 시스템이 커널 모듈 대신 프로세스로 구현 될 수 있도록하는 코드입니다.

Fuse의 가장 유용한 이점 중 하나는 GPL 코드가 비 GPL 코드와 "혼합"되도록하는 것입니다. 예를 들어 Gnu/Linux 및 ZFS http://zfs-Fuse.net/ 또는 OpenSolaris 및 * BSD와 같은 많은 OS에서 NTFS-3G http://www.tuxera.com/community/ntfs-3g-download /

주요 단점은 기본 (커널) 드라이버에 비해 성능에 미치는 영향입니다.

7
jlliagre