Кіріспе
Виртуалды файл жүйесі (VFS) немесе виртуалды файл жүйесі коммутаторы – нақты файл жүйесінің үстіндегі абстрактілі қабат. VFS-тің мақсаты – клиенттік бағдарламаларға нақты файл жүйелерінің әртүрлі түрлеріне біркелкі түрде қол жеткізуге мүмкіндік беру. Мысалы, VFS клиенттік бағдарлама айырмашылықты байқамай, жергілікті және желілік сақтау құрылғыларына түсінікті түрде кіруге пайдаланылуы мүмкін. Ол Windows, классикалық Mac OS/macOS және Unix файлдық жүйелері арасындағы айырмашылықтарды жою үшін қолданылуы мүмкін, соның арқасында бағдарламалар осы типтегі жергілікті файлдық жүйелердегі файлдарға, олар қол жеткізіп отырған файлдық жүйенің түрін білмей, қол жеткізе алады. VFS ядро мен нақты файлдық жүйе арасындағы интерфейсті (немесе "шартты") анықтайды. Сондықтан, шартты орындау арқылы ядроға жаңа файлдық жүйе типтерін қосу оңай. Шарттың талаптары нұсқадан нұсқаға үйлесімсіз өзгеруі мүмкін, бұл нақты файлдық жүйеге қолдау көрсетуді қайта құрастыруды және мүмкін, қайта құрастыру алдында өзгертуді қажет етеді, осылайша ол операциялық жүйенің жаңа нұсқасымен жұмыс істей алады; немесе операциялық жүйенің жеткізушісі шартқа тек кері үйлесімді өзгерістер енгізе алады, сонда операциялық жүйенің белгілі бір нұсқасы үшін құрастырылған нақты файлдық жүйеге қолдау болашақ нұсқалармен де жұмыс істейді.
A virtual file system (VFS) or virtual filesystem switch is an abstract layer on top of a more concrete file system. The purpose of a VFS is to allow client applications to access different types of concrete file systems in a uniform way. A VFS can, for example, be used to access local and network storage devices transparently without the client application noticing the difference. It can be used to bridge the differences in Windows, classic Mac OS/macOS and Unix filesystems, so that applications can access files on local file systems of those types without having to know what type of file system they are accessing. A VFS specifies an interface (or a "contract") between the kernel and a concrete file system. Therefore, it is easy to add support for new file system types to the kernel simply by fulfilling the contract. The terms of the contract might change incompatibly from release to release, which would require that concrete file system support be recompiled, and possibly modified before recompilation, to allow it to work with a new release of the operating system; or the supplier of the operating system might make only backward compatible changes to the contract, so that concrete file system support built for a given release of the operating system would work with future versions of the operating system.
Қолданылу
Unix-қа ұқсас жүйелердегі алғашқы виртуалды файл жүйесі механизмдерінің бірі 1985 жылы Sun Microsystems компаниясы SunOS 2.0 нұсқасында ұсынған. Ол Unix жүйелік шақыруларына жергілікті UFS файл жүйелеріне және қашықтағы NFS файл жүйелеріне түсінікті түрде кіруге мүмкіндік берді. Осы себепті Sun-тен NFS кодын лицензиялаған Unix сатушылары көбінесе Sun-ның VFS дизайнын көшіріп алды. Басқа файл жүйелерін де қосуға болады: Sun-да жасалған MS DOS FAT файл жүйесі SunOS VFS-ке қосылды, бірақ SunOS 4.1 нұсқасына дейін өнім ретінде жеткізілмеді. SunOS-тің іске асырылуы VFS механизмінің негізі болды. Джон Хайдеманн эксперименталды Ficus файл жүйесі үшін SunOS 4.0 аясында жинақтамалы VFS жүйесін жасады. Бұл жоба әртүрлі, бірақ ұқсас семантикасы бар файл жүйелері түрлері арасында кодты қайта пайдалануға мүмкіндік берді (мысалы, шифрлау файл жүйесі шифрланбаған файл жүйесінің атау және сақтауды басқару кодын қайта пайдалана алады). Хайдеманн бұл жұмысты 4.4BSD-де өзінің диссертациялық зерттеулерінің бір бөлігі ретінде пайдаланды; осы кодтың ұрпақтары қазіргі заманғы BSD туындыларындағы файл жүйесінің іске асырылуын қамтамасыз етеді, соның ішінде macOS. Басқа Unix виртуалды файл жүйелеріне System V Release 3-тегі файл жүйесі коммутаторы, Ultrix-тегі жалпы файл жүйесі және Linux-тағы VFS жатады. OS/2 және Microsoft Windows жүйелерінде виртуалды файл жүйесі механизмі орнатылатын файл жүйесі деп аталады. Пайдаланушы кеңістігіндегі файл жүйесі (FUSE) механизмі Linux, NetBSD, FreeBSD, OpenSolaris және macOS жүйелеріндегі виртуалды файл жүйесі механизміне пайдаланушы кодын қосуға мүмкіндік береді. Microsoft Windows жүйесінде виртуалды файл жүйелерін userland Shell кеңістігінің кеңейтімдері арқылы да іске асыруға болады; алайда, олар Windows жүйесіндегі файл жүйесіне кірудің ең төменгі деңгейіндегі қолданбалық бағдарламалау интерфейстерін қолдамайды, сондықтан барлық қолданбалар кеңістік кеңейтімдері ретінде іске асырылған файл жүйелеріне кіре алмайды. KIO және GVfs/GIO KDE және GNOME десктоп орталарында (сәйкесінше) ұқсас механизмдерді ұсынады, сондай-ақ ұқсас шектеулерге ие, бірақ оларды FUSE әдістерін пайдалануға және осылайша жүйеге біркелкі интеграциялауға болады.
Бір файлды виртуалды файл жүйелері
Кейде виртуалды файл жүйесі нақты файл жүйесінде міндетті түрде болмаған файл немесе файлдар тобын білдіреді, ол бағдарламалық қамтамасыз етуді пайдалану арқылы нақты файл жүйесінің функционалдығын қамтамасыз ететін басқарылатын контейнер ретінде жұмыс істейді. Мұндай контейнерлердің мысалдары – CBFS Storage, сондай-ақ PCTask, WinUAE, Oracle's VirtualBox, Microsoft's Virtual PC, VMware сияқты эмуляторлардағы бір файлдық виртуалды файл жүйесі. Осы типтегі файл жүйесінің басты артықшылығы – оның орталықтандырылғандығы және оңай жойылуы. Бір файлдық виртуалды файл жүйесі кез келген файл жүйесінен (виртуалды немесе нақты) күтілетін негізгі мүмкіндіктердің барлығын қамтуы мүмкін, бірақ осы жүйелердің ішкі құрылымына қол жеткізу көбінесе бір файлдық виртуалды файл жүйесін пайдалануға арналған бағдарламалармен шектеледі (драйвер арқылы жалпы қол жеткізуді қамтамасыз етудің орнына). Тағы бір маңызды кемшілігі – өнімділігі басқа виртуалды файл жүйелерімен салыстырғанда төмендеуі. Төмен өнімділік негізінен деректер виртуалды файл жүйесіне жазылғанда немесе одан жойылғанда виртуалды файлдарды жылжытуға кететін уақыттан туындайды.
Бір файлды виртуалды файл жүйелерін енгізу
Бір файлдық виртуалды файлдық жүйелердің нақты мысалдары ретінде, PCTask және WinUAE сияқты эмуляторларды келтіруге болады, олар файлдық жүйе деректерін ғана емес, сонымен қатар эмуляцияланған дискінің құрылымын да қамтиды. Бұл операциялық жүйені кез келген басқа бағдарламалық қамтамасыздай қарастыруды жеңілдетеді – оны алып жүруші құралдар арқылы немесе желі бойынша тасымалдауға мүмкіндік береді.
PCTask
Amiga эмуляторы PCTask, 4.77 МГц (кейіннен 25 МГц жиілікте жұмыс істейтін 80486SX) процессорлары негізіндегі Intel PC 8088 машинасының жұмысын эмуляциялады. PCTask пайдаланушылары Amiga файлдық жүйесінде үлкен файлдарды құра алады, ал бұл файл эмулятор ішінде нақты PC қатты дискісі сияқты қолжетімді болады. Файл FAT16 файлдық жүйесімен форматталап, қалыпты MS DOS немесе Windows файлдарын сақтауға болады.
WinUAE
Windows үшін WinUAE, Windows жүйесіндегі үлкен жеке файлдарды Amiga файлдық жүйелері ретінде пайдалануға мүмкіндік береді. WinUAE-да бұл файл hardfile деп аталады. WinUAE сондай-ақ хост жүйесінің (Windows, Linux, macOS, AmigaOS) қалтасын Amiga файлдық жүйесі ретінде қарастыра алады.