Файлавая сістэма

**Файлавая сістэма** – гэта спецыфічны спосаб захоўвання і арганізацыі іменаваных даных на носьбітах інфармацыі у камп'ютарах, а таксама ў розным іншым электронным абсталяванні: лічбавых камерах, мабільных тэлефонах і г.д. Файлавая сістэма вызначае фармат зместу і спосаб фізічнага захоўвання інфармацыі, якую прынята групаваць у выглядзе файлаў. Канкрэтная файлавая сістэма вызначае памер імя файла (папкі), максімальны магчымы памер файла і падзела, набор атрыбутаў файлу. Некаторыя файлавыя сістэмы прапануюць сэрвісныя магчымасці, напрыклад, размежаванне доступу ці шыфраванне файлаў.

Файлавая сістэма звязвае носьбіт інфармацыі з аднаго боку і API для доступу да файлаў — з іншага. Калі прыкладная праграма звяртаецца да файла, яна не мае аніякага уяўлення аб тым, якім чынам размешчана інфармацыя ў канкрэтным файле, таксама, як і на якім фізічным тыпе носьбіта(CD, цвёрдым дыску, магнітнай стужцы, блоку флэш-памяці ці іншым) ён запісаны. Усё, што ведае праграма — гэта імя файла, яго памер і атрыбуты. Гэтыя даныя яна атрымоўвае ад драйвера файлавай сістэмы. Менавіта файлавая сістэма вызначае, дзе і як будзе запісаны файл на фізічным носьбіце (напрыклад, цвёрдым дыску).

З пункту гледжання аперацыйнай сістэмы, увесь дыск уяўляе сабой набор кластараў (як правіла, памерам 512 байтаў і болей). Драйверы файлавай сістэмы арганізуюць кластары у файлы і каталогі (якія насамрэч з'яўляюцца файламі, што ўтрымліваюць спіс файлаў у гэтым каталозе). Гэтыя ж драйверы адсочваюць, якія з кластараў у цяперашні час ужываюцца, якія вольныя, якія пазначаны няспраўнымі.

Аднак файлавая сістэма не абавязкова наўпрост звязана з фізічным носьбітам інфармацыі. Існуюць віртуальныя файлавыя сістэмы, а таксама сеткавыя файлавыя сістэмы, якія з'яўляюцца толькі спосабам доступу да файлаў, што знаходзяцца на аддаленым камп'ютары.

## Іерархія каталогаў 
Практычна заўсёды файлы на дысках аб'яднаны ў *каталогі*.

У найпростым выпадку ўсё файлы на дадзеным дыску захоўваюцца ў адным каталогу. Такая *аднаўзроўневая* схема ужывалася ў CP/M і ў першай версіі MS-DOS 1.0. *Іерархічная файлавая сістэма* з укладзенымі адзін у другі каталогамі упершыню з'явілася ў Multics, потым у UNIX.

 Wiki.txt
 Tornado.jpg
 Notepad.exe
 (Аднаўзроўневая файлавая сістэма)

Каталогі на розных дысках могуць ствараць некалькі асобных дрэваў, як у DOS/Windows, ці ж яднацца у адно дрэва, агульнае для ўсіх дыскаў, як у UNIX-падобных сістэмах.

 C:
   \Program files
       \CDEx
            \CDEx.exe
            \CDEx.hlp
            \mppenc.exe
   \Мае дакументы
       \Wiki.txt
       \Tornado.jpg
 D:
   \Music
       \ABBA
            \1974 Waterloo
            \1976 Arrival
                \Money, Money, Money.ogg
            \1977 The Album
 (Іерархічная файлавая сістэма Windows/DOS)

У UNIX існуе толькі адзін каранёвы каталог, а усе астатнія файлы і каталогі укладзены ў яго. Каб атрымаць доступ да файлаў і каталогаў на якім-небудзь дыску, патрэбна *замантаваць* гэты дыск камандай mount. Напрыклад, каб адчыніць файлы на CD, трэба, кажучы простай мовай, сказаць аперацыйнай сістэме: «вазьмі файлавую сістэму на гэтым кампакт-дыску і пакажы яе ў каталозе /mnt/cdrom». Усе файлы і каталогі, што знаходзяцца на CD, з'явяцца у гэтым каталозе /mnt/cdrom, які завецца *пунктам мантавання* (). У большасці UNIX-падобных сістэм здымныя дыскі (дыскеты і CD), флэш-носьбіты і іншыя вонкавыя прылады захоўвання даных мантуюць у каталог /mnt, /mount ці /media. Unix і UNIX-падобныя аперацыйныя сістэмы таксама дазваляюць аўтаматычна мантаваць дыскі пры загрузцы аперацыйнай сістэмы.

 /usr                                  
     /bin                              
          /arch                        
          /ls                         
          /raw                     
     /lib                           
          /libhistory.so.5.2           
          /libgpm.so.1                
 /home                                
     /lost+found                      
          /host.sh                    
     /guest                         
          /Pictures                   
               /example.png        
          /Video                     
               /matrix.avi            
               /news                
                    /lost_ship.mpeg    
 (Іерархічная файлавая сістэма ў Unix і UNIX-падобных аперацыйных сістэмах)

*Звярніце увагу на ужыванне слэша у файлавых сістэмах Windows, UNIX і UNIX-падобных аперацыйных сістэмах (У Windows ужываецца адваротны слэш «\», а ў UNIX і UNIX-падобных аперацыйных сістэмах просты слэш «/»)*

Акрамя таго, варта адзначыць, што вышэйапісаная сістэма дазваляе мантаваць не толькі файлавыя сістэмы фізічных прылад, але і асобныя каталогі (параметр *--bind*) ці напрыклад вобраз ISO (опцыя *loop*). Такія надстройкі, як FUSE, дазваляюць таксама мантаваць целы каталог на FTP і яшчэ вельмі вялікую колькасць розных рэсурсаў.

Яшчэ больш складаная структура ужываецца ў NTFS і HFS. У гэтых файлавых сістэмах кожны файл ўяўляе сабой набор *атрыбутаў*. Атрыбутамі лічацца не толькі традыцыйныя толькі чытанне, сістэмны, але і назва файла, памер і нават змест. Такім чынам, для NTFS і HFS тое, што захоўваецца ў файле, — гэта толькі адзін з яго атрыбутаў.

Калі прытрымлівацца гэтай логікі, *адзін файл можа ўтрымліваць некалькі варыянтаў змесціва*. Такім чынам, у адным файле можна захоўваць некалькі версій аднаго дакумента, а таксама дадатковыя дадзеныя (іконка файла, звязаная з файлам праграма). Такая арганізацыя тыповая для HFS на Macintosh.

## Класіфікацыя файлавых сістэм 
Па прызначэнню файлавыя сістэмы можна класіфікаваць на наступныя катэгорыі.

* Для носьбітаў з адвольным доступам (напрыклад, цвёрды дыск): FAT32, HPFS, ext2 і інш. Так як доступ да дыскаў у разы марудней, чым доступ да аператыўнай памяці, для паляпшэння прадукцыйнасці ў шматлікіх файлавых сістэмах ужываецца асінхронны запіс зменаў на дыск. Для гэтаго ужываецца альбо журналяванне, напрыклад у ext3, ReiserFS, JFS, NTFS, XFS, альбо механізм soft updates і інш. Журналяванне  шырока распаўсюджана ў Linux, ужываецца ў NTFS. Soft updates — у BSD сістэмах.
* Для носьбітаў з паслядоўным доступам (напрыклад, [магнітныя стужкі [QIC і інш.
* Для аптычных носьбітаў — CD і DVD: ISO9660, HFS, UDF і інш.
* Віртуальныя файлавыя сістэмы: AEFS і інш.
* Сеткавыя файлавыя сістэмы: NFS, CIFS, SSHFS, GmailFS  і  інш.
* Для флэш-памяці: YAFFS, ExtremeFFS, exFAT.
* Трошкі выпадаюць з агульнай класіфікацыі спецыялізаваныя файлавыя сістэмы: ZFS (менавіта файлавай сістэмай з'яўляецца толькі частка ZFS), VMFS (г. з. кластарная файлавая сістэма, якая прызначана для захоўвання іншых файлавых сістэм) і інш.

## Задачы файлавай сістэмы 
Асноўныя функцыі любой файлавай сістэмы накіраваны на вырашэнне наступных задач:

* іменаванне файлаў;
* праграмны інтерфейс работы з файламі для праграм;
* адлюстраванне лагічнай мадэлі файлавай сістэмы на фізічную арганізацыю сховішча даных;
* арганізацыя ўстойлівасці файлавай сістэмы да збояў сілкавання, памылак апаратных і праграмных сродкаў;
* змяшчэнне параметраў файла, неабходных для правільнага яго ўзаемадзеяння з іншымі аб'ектамі сістэмы (ядро, праграмы і інш.).
 
У шматкарыстальніцкіх сістэмах з'яўляецца яшчэ адна задача: ахова файлаў аднаго карыстальніка ад несанкцыянаванага доступу іншага карыстача, а таксама забеспячэнне сумеснай работы з файламі, напрыклад, пры адкрыцці файла адным з карыстальнікаў, для іншых гэты ж файл часова будзе даступны толькі ў рэжыме «толькі чытанне».