가상 파일 시스템

Virtual file system

VFS(가상 파일 시스템) 또는 가상 파일 시스템 스위치는 보다 구체적인 파일 시스템 위에 있는 추상 계층이다.VFS의 목적은 클라이언트 애플리케이션이 서로 다른 유형의 콘크리트 파일 시스템에 균일한 방식으로 액세스할 수 있도록 하는 것이다.예를 들어 VFS는 클라이언트 애플리케이션이 차이를 인식하지 않고도 로컬 및 네트워크 스토리지 디바이스에 투명하게 액세스하는 데 사용될 수 있다.응용 프로그램이 어떤 유형의 파일 시스템에 액세스하는지 알 필요 없이 이러한 유형의 로컬 파일 시스템에 있는 파일에 액세스할 수 있도록 Windows, 클래식 Mac OS/macOS Unix 파일 시스템의 차이를 연결하는 데 사용할 수 있다.

VFS는 커널과 콘크리트 파일 시스템 사이의 인터페이스(또는 "계약")를 지정한다.따라서, 계약을 이행하는 것만으로 커널에 새로운 파일 시스템 유형에 대한 지원을 추가하는 것은 쉽다.계약 조건은 릴리스에서 릴리스로 비호환적으로 변경될 수 있으며, 이는 구체적인 파일 시스템 지원을 다시 컴파일하고 재컴파일하기 전에 수정하여 운영 체제의 새로운 릴리스와 함께 작동하도록 요구하거나, 운영 체제의 공급자가 콘에 대해 역호환성 변경만 할 수 있다.운영 체제의 특정 릴리즈를 위해 구축된 콘크리트 파일 시스템 지원이 운영 체제의 미래 버전과 함께 작동하도록 트랙.

구현

리눅스 커널의 스토리지 스택의 다양한 부분 내에서 VFS 계층의 위치.[1]

유닉스 유사 시스템에 대한 최초의 가상 파일 시스템 메커니즘 중 하나는 1985년 SunOS 2.0에서 Sun Microsystems에 의해 도입되었다.[2]Unix 시스템 호출이 로컬 UFS 파일 시스템과 원격 NFS 파일 시스템에 투명하게 액세스하도록 허용했다.이러한 이유로 Sun으로부터 NFS 코드를 라이센스를 받은 Unix 공급업체들은 종종 Sun의 VFS 설계를 복사했다.SunOS 4.1까지는 제품으로서 출하되지 않았지만 Sun에서 개발된 MS-DOS FAT 파일 시스템의 구현이 있었다.SunOS 구현은 System V 릴리스 4에서 VFS 메커니즘의 기본이었습니다.

John Heidemann은 실험용 Ficus 파일 시스템을 위해 SunOS 4.0에 따라 스택형 VFS를 개발했다.이 설계는 의미가 다르지만 유사한 파일 시스템 유형 간에 코드 재사용을 위해 제공되었다(예: 암호화 파일 시스템은 비암호화 파일 시스템의 명명 및 저장 관리 코드를 모두 재사용할 수 있다).Heidemann은 작품을 4.4에 사용하도록 개조했다.그의 논문 연구의 일부로서 BSD; 이 코드의 후손들은 MacOS를 포함한 현대 BSD 파생상품에서 파일 시스템 구현을 뒷받침한다.

다른 Unix 가상 파일 시스템으로는 System V 릴리스 3의 File System Switch, Ultrix의 Generic File System 및 Linux의 VFS가 있다.OS/2마이크로소프트 윈도우즈에서는 가상 파일 시스템 메커니즘을 설치 가능한 파일 시스템이라고 부른다.

FUSE(Filesystem in Userspace) 메커니즘은 사용자랜드 코드가 Linux, NetBSD, FreeBSD, OpenSolaris 및 MacOS의 가상 파일 시스템 메커니즘에 연결되도록 한다.

마이크로소프트 윈도우즈에서는 가상 파일 시스템도 userland Shell 네임스페이스 확장을 통해 구현될 수 있지만, 윈도우즈에서 가장 낮은 수준의 파일 시스템 액세스 애플리케이션 프로그래밍 인터페이스를 지원하지 않기 때문에 모든 애플리케이션이 네임스페이스 확장으로 구현된 파일 시스템에 액세스할 수는 없을 것이다.KIOGVFS/GIOKDEGNOME 데스크톱 환경(존중적으로)에서 유사한 메커니즘을 제공하며, FUSE 기법을 사용하여 시스템에 원활하게 통합될 수 있지만, 이와 유사한 제한이 있다.

단일 파일 가상 파일 시스템

때때로 가상 파일 시스템은 소프트웨어의 사용을 통해 콘크리트 파일 시스템의 기능을 제공해야 하는 관리 가능한 컨테이너 역할을 하는 파일 또는 파일 그룹(콘크리트 파일 시스템 내부에 반드시 있는 것은 아님)을 가리킨다.이러한 컨테이너의 예로는 PCTask 또는 소위 WinUAE, Oracle의 VirtualBox, Microsoft의 Virtual PC, VMware와 같은 에뮬레이터의 CBFS 스토리지 또는 단일 파일 가상 파일 시스템이 있다.

이러한 유형의 파일 시스템의 주요 이점은 중앙 집중화되어 제거하기 쉽다는 것이다.단일 파일 가상 파일 시스템은 모든 파일 시스템에 예상되는 모든 기본 기능(가상 또는 그 밖의 기능)을 포함할 수 있지만, 이러한 파일 시스템의 내부 구조에 대한 접근은 (범용적인 억제를 허용하는 드라이버를 통한 구현 대신) 단일 파일 가상 파일 시스템을 사용하기 위해 특별히 작성된 프로그램으로 제한되는 경우가 많다.s). 또 다른 주요 단점은 다른 가상 파일 시스템에 비해 성능이 상대적으로 낮다는 점이다.성능 저하는 대부분 가상 파일 시스템에서 데이터를 쓰거나 삭제할 때 가상 파일을 섞는 비용 때문이다.

단일 파일 가상 파일 시스템 구현

단일 파일 가상 파일 시스템의 직접적인 예로는 파일 시스템 데이터뿐만 아니라 에뮬레이트된 디스크 레이아웃을 캡슐화하는 PCTask, WinUAE 등의 에뮬레이터가 있다.이것은 OS 설치를 다른 소프트웨어와 같이 다루기 쉽게 하며, 이동식 미디어로 전송하거나 네트워크를 통해 전송한다.

PCTask

Amiga 에뮬레이터 PCTask는 4.77MHz(이후 80486SX는 25MHz로 클럭 처리됨)의 Intel PC 8088 기반 기계를 에뮬레이트했다.PCTask 사용자는 아미가 파일 시스템에 큰 크기의 파일을 만들 수 있으며, 이 파일은 실제 PC 하드 디스크인 것처럼 에뮬레이터에서 가상으로 액세스할 수 있다.파일은 일반적인 MS-DOS 또는 Windows 파일을 저장하기 위해 FAT16 파일 시스템으로 포맷될 수 있다.[1][2]

윈UAE

UAE for Windows WinUAE는 Windows의 단일 대용량 파일을 아미가 파일 시스템으로 취급할 수 있도록 허용하고 있다.WinUAE에서는 이 파일을 하드 파일이라고 부른다.[3]

UAE는 또한 호스트 파일 시스템의 디렉토리(Windows, Linux, macOS, Amiga)를 처리할 수 있다.OS)를 Amiga 파일 시스템으로 사용.[4]

참고 항목

  • 9P(프로토콜) – Plan 9의 VFS 계층에 직접 매핑하여 모든 파일 시스템을 네트워크로 투명하게 액세스하는 분산 파일 시스템 프로토콜
  • 통합 파일 시스템 – 디스크 기반 파일 시스템의 트리에 일반 파일인 것처럼 나타나는 파일 이외의 개체에 대한 계층적 인터페이스

메모들

  1. ^PCX와 PCTask의 Amiga 비교에 관한 에뮬레이션, Amiga PC 에뮬레이터.
  2. ^ PCTask 작동 방식을 설명하는 이 기사도 참조하십시오.
  3. ^ WinUAE에 대한 도움말(하드 파일 섹션 참조).
  4. ^ WinUAE에 대한 도움말(디렉토리 추가 섹션 참조)

참조

  1. ^ Werner Fischer; Georg Schönberger (2015-06-01). "Linux Storage Stack Diagram". Thomas-Krenn.AG. Retrieved 2015-06-08.
  2. ^ Kleiman, Steve R. (June 1986). "Vnodes: An Architecture for Multiple File System Types in Sun UNIX" (PDF). USENIX Summer. 86: 238–247. Archived from the original (PDF) on 2014-06-29. Retrieved 31 December 2016.

외부 링크