Всички ние използваме файлове или файлове всеки ден и всички ние го използваме папки или директории, независимо дали във файловите системи на настолния компютър, лаптопите, мобилните устройства и др. Затова в тази статия ще обясня всичко, което трябва да знаете за това, за да можете да разберете какво е информацията и как се съхранява в памет на.
Какво е файлова система?
Un файлова система Файловата система (FS) е метод и структура от данни, които операционната система използва, за да контролира начина, по който информацията се съхранява и извлича. Без файлова система, данните, съхранявани на носител за съхранение, биха били едно цяло, без начин да се разграничи къде свършва един набор от данни и започва следващият или къде се намира даден набор от данни, когато е необходимо да бъде извлечен. Това биха били така наречените сурови данни.
Когато форматирате устройство за съхранение, използвайки NTFS, FAT, ext4, btrfs, HFS+ и др., всъщност създавате файлова система за управление на данните на това устройство. С други думи, това, което наричаме формати, всъщност са файлови системи (FS).
Чрез разделяне на данните на части и именуване на всяка част, lДанните могат лесно да бъдат изолирани и идентифицираниЗа да е възможно всичко това, файловата система се състои от два или три слоя. Понякога тези слоеве са изрично разделени, а друг път функциите са комбинирани. Слоевете, за които говорим, са:
- Логическа файлова система: отговаря за взаимодействието с потребителското приложение. Той предоставя API за файлови операции, като например Отваряне, Затваряне, Четене и т.н.и препраща заявената операция към слоя под него за обработка. Логическата файлова система управлява отворените записи в файловата таблица и файловите дескриптори за всеки процес. Този слой осигурява достъп до файлове, операции с директории, сигурност и защита.
- Виртуална файлова системаТози интерфейс позволява поддръжка на множество едновременни екземпляри на физически файлови системи. Този слой е по избор и не винаги е наличен.
- Физическа файлова система: Управлява физическата работа на устройството за съхранение. Обработва физическите блокове, които се четат или записват. Управлява буферирането, управлението на паметта и е отговорна за физическото разполагане на блокове на определени места върху носителя за съхранение. Физическата файлова система взаимодейства с драйверите на хардуерните устройства за съхранение или канала, за да насочва устройството за съхранение.
Функции на FS
Всяка съществуваща файлова система има своите ограничения и характер което трябва да знаете, като:
- Управление или разпределение на пространството: Файловите системи разпределят пространството гранулирано, обикновено между множество физически дискове на устройството. Файловите системи са отговорни за организирането на файлове и директории и за следенето на това кои области на носителя принадлежат на кои файлове и кои са неизползвани.
- Раздробяване: Това се случва, когато един и същ файл се съхранява на различни места на устройството за съхранение, което означава, че отделните части на файла не са съседни. Тъй като файловете се създават, променят и изтриват, това може да доведе до области с използвано и неизползвано пространство с различни размери. Не само това, това засяга някои файлови системи (напр. FAT и NTFS на Microsoft), забавяйки четенето на файлове.
- Имена на файлове: Файловите системи управляват ограниченията за дължина, чувствителността към малки и големи букви и използването на специални символи в имената на файловете.
- Директории: Те често имат директории за организиране на файлове в отделни колекции. Те могат да бъдат плоски или йерархични. Ще обсъдя това по-подробно по-късно, тъй като това е всичко, за което става въпрос...
- Метаданни: Той има свързана информация за метаданни, която включва подробности като дължина на данните, времеви марки, разрешения за достъп и атрибути на файла.
- Комунални услуги и достъп: Те се използват за инициализиране, модифициране и изтриване на екземпляри на файлови системи, както и за създаване, преименуване и изтриване на директории и файлове, криптиране, квоти, миграция, конвертиране, архивиране и др.
- Управление на цялостност и грешки: Файловата система (FS) трябва да поддържа целостта на структурите на файловата система на вторичното хранилище или външните устройства, дори в случай на повреди в операционната система или прекъсвания на захранването.
- Потребителски данни: трябва да позволява управление на потребителските данни, включително съхранение, извличане и актуализиране на данни.
- Множество файлови системи: Възможно е да имате няколко файлови системи на една система.
- Ограничения на дизайна: Файловите системи имат функционални ограничения, които определят максималния капацитет за съхранение в рамките на тази система, максималния размер на файловете, броя на файловете и т.н.
Какво е дял?
а дял Дялът е логическа секция или подразделение на устройство за съхранение на данни, като например твърд диск (HDD), SSD, флаш устройство и др. Този дял служи за няколко цели, позволявайки по-добра организация и управление на съхранените данни. Например, всеки дял може да се използва за определена цел, на него могат да бъдат инсталирани множество операционни системи и др.
Важно е да се отбележи, че създаване, изтриване и преоразмеряване Промените в дяловете могат да доведат до загуба на данни, така че е важно тези операции да се извършват внимателно и да се архивират важни данни, преди да се правят големи промени в структурата на дяловете.
От друга страна, в обобщение, трябва също да разберете, че има различни видове прегради фундаментален в MBR системата (възможностите са разширени в GPT, с до 128 възможни дяла на едно и също устройство, въпреки че това е друга тема...):
- Основен дял: Всяко устройство за съхранение може да има до четири основни дяла. Това са основните дялове, на които са инсталирани операционните системи и където се съхраняват данни. Един от основните дялове може да бъде определен като активен или дял за зареждане, от който операционната система се зарежда.
- Разширен дял: Разширеният дял е специален първичен дял, използван за създаване на допълнителни логически дялове в него. Той не съдържа директно данни, а действа като контейнер за логически дялове. Можете да имате множество логически дялове в рамките на разширен дял. Това ви позволява да преодолеете ограничението от четири първични дяла на твърд диск.
- Логически дял: Те се създават в разширен дял. Те не се използват за зареждане на операционната система и обикновено се използват за организиране на данни или файлове. Можете да имате множество логически дялове в рамките на разширен дял, което улеснява организацията на данните.
Какво е таблица на дяловете?
La таблица на дяловете Това е структура от данни, разположена в началото на твърдия диск и съдържаща информация за това как устройството е разделено на дялове. Обикновено се съхранява в главния зареждащ сектор (MBR) на системи, базирани на BIOS, или в GPT (GUID Partition Table) на по-модерни системи, базирани на UEFI. Таблицата с дялове включва подробности като размера на всеки дял, неговия тип (напр. NTFS, FAT32, ext4 и др.) и местоположението му на носителя за съхранение.
Следователно, връзката между таблицата на дяловете и файловата система се състои във факта, че таблицата на дяловете показва където започва и свършва всеки дял на физическия диск. Всеки дял е форматиран със специфична файлова система. Когато се осъществява достъп до дял за четене или запис на файлове, операционната система използва информацията в таблицата на дяловете, за да локализира и разбере как е структурирана файловата система на този конкретен дял.
Типове файлова система
Сред различните файлови системи трябва да се подчертаят следните типове:
- Дискови файлови системи: Тези системи се възползват от способността на дисковите носители да осъществяват достъп до данни произволно и бързо. Те позволяват на множество потребители или процеси да имат достъп до данни на диска, независимо от последователното му местоположение. Примерите включват FAT, exFAT, NTFS, Reiser FS, HFS, HFS+, HPFS, APFS, UFS, ext2, ext3, ext4, XFS, btrfs, VMFS, ZFS, ReiserFS, NSS и ScoutFS. В допълнение към тях, могат да се вземат предвид и следните:
- Оптични дискове: често срещани формати като ISO 9660 и Universal Disk Format (UDF), използвани на CD, DVD и Blu-ray.
- Файлови системи за флаш памет: Тези системи са проектирани специално за флаш памети и отчитат техните характеристики и ограничения. Препоръчително е да се използват файлови системи, предназначени за флаш устройства, вместо да се адаптират дискови системи. Някои примери са JFFS, JFFS2, YAFFS, UBIFS, LogFS и F2FS.
- Файлови системи с магнитни ленти: Тези системи управляват съхранението на ленти, които имат по-дълго време за произволен достъп от дисковете. Те се различават по управлението на директории и наблягат на необходимостта от избягване на чести линейни движения върху лентите. Пример за това е LTFS на IBM.
- Файлови системи за бази данни: Файлови системи, базирани на бази данни, където файловете се идентифицират по характеристики като тип, автор или метаданни. Примери за това са IBM DB2, наред с други.
- Транзакционни файлови системи: Тези системи гарантират атомарността и изолацията на операциите върху даден файл. Примерите включват NTFS в Microsoft Windows и други прототипи на транзакционни файлови системи за UNIX/Linux, като LFS, ext3 и др.
- Мрежови файлови системи: Мрежови файлови системи, които позволяват достъп до файлове на отдалечени сървъри чрез протоколи като NFS, AFS, SMB, FTP и WebDAV. Тоест, те са предназначени за разпределени изчисления.
- Споделени файлови системи: Тези системи позволяват на множество сървъри да имат сигурен достъп до една и съща дискова подсистема. Примерите включват GFS2, GPFS, SFS, CXFS, StorNext и ScoutFS.
- Специални файлови системи: Те са донякъде специфични и нямат файлови елементи като такива, но до тях може да се осъществи достъп чрез API. Например, ние дефинираме файловата система на устройството като devfs, използвана в Linux и др. От друга страна, имаме други специални, като configfs, sysfs и procfs, известни също в света на Linux.
- Минимална файлова система / съхранение на аудиокасети: Аудиокасети са били използвани като системи за съхранение на данни за захранване на някои модели микрокомпютри от онова време, като например Commodore PET.
- Плоски файлови системи (плоска файлова система): Тези системи нямат поддиректории и съхраняват всички записи в директориите в една главна директория. Примери за такива файлови системи са използваната в системата CP/M и файловата система Macintosh за класическите компютри Mac на Apple.
FS Technologies

Всяка файлова система има свои собствени особености и те поддържат различни технологии. Някои от най-важните са:
- Самолечение: Отнася се до способността на файловата система автоматично да открива и коригира грешки и проблеми, които могат да възникнат в системата за съхранение. Тези грешки могат да включват лоши сектори на твърд диск или други видове повреда на данните. Когато бъде открита грешка, файловата система може да се опита да възстанови засегнатите данни, като ги възстанови от резервни копия или като поправи повредени данни. Това помага да се запази целостта на данните, съхранени във файловата система.
- Компресия: Това е функция, която ви позволява да намалите размера на файловете и данните, съхранявани във файловата система. Компресирането на данни може да спести дисково пространство и да ускори прехвърлянето на файлове. Когато компресията е активирана, файловата система автоматично компресира файловете, записани на нея, и декомпресира файлове, когато бъдат прочетени. Това може да бъде полезно при системи за съхранение с ограничени ресурси, въпреки че може да забави достъпа.
- Шифроване: Това е техника, използвана за защита на поверителността на данните, съхранявани във файловата система. Данните се криптират, преди да бъдат записани на диск, и се декриптират при четене. Криптирането гарантира, че данните са нечетливи за всеки, който няма подходящ ключ за декриптиране. Това е от съществено значение за защита на поверителността и сигурността на чувствителните данни. Подобно на компресията, тя може да забави и достъпа.
- Дневник (дневник на транзакциите): Това е функция, която съхранява запис на всички операции, извършени във файловата система, като например създаване, промяна или изтриване на файлове. Този запис се нарича „дневник“ или „дневник на транзакциите“. В случай на системна повреда, като например неочаквано прекъсване на захранването, файловата система може да използва дневника на транзакциите, за да се възстанови до консистентно състояние. Това предотвратява повреда на данните и гарантира целостта на файловата система.
- Капацитет за моментни снимки: Моменталните копия (Snapshots) са копия на файловата система в определен момент от времето. Тези копия са моментни копия (snapshots) и се съхраняват заедно с текущите данни във файловата система. Моментните копия позволяват файловата система да бъде възстановена до предишно състояние, ако възникнат грешки или нежелани промени. Това е полезно за архивиране, възстановяване на данни и тестване на промените, преди да бъдат внедрени за постоянно в системата.
Какво е директория или папка?

След като вече знаем как данните се съхраняват в устройства за съхранение и необходимите структури от данни, е време да обясним какво представлява... папка или директория.
Директория или папка е структура за каталогизиране на други файлове във файловата система, което ѝ дава по-интуитивна йерархия или организация за потребителя или операционната система. За да направи това, тя съдържа препратки към други файлове и евентуално други директории или папки, в този случай наречени поддиректории или подпапки.
Някои операционни системи с йерархични файлови системи, като Unix, обикновено имат кеш на директории с последните пътища, съхранени в част от RAM паметта. В Unix тази част е известна като DNLC (кеш за търсене на имена на директории), докато в Linux се нарича dcache. Тази част от паметта се актуализира с най-скоро достъпните пътища, докато в мрежовите файлови системи е необходим механизъм за осигуряване на съгласуваност чрез управление на записи, които са били невалидни или създадени от потребители.
В един йерархична файлова система Съхранението е дървовидно. Термините „родител“ и „дете“ често се използват за описание на връзката между поддиректория и директорията, в която е каталогизирана, като последната е родителската. Директорията с най-висок ранг в такава файлова система, която няма свой собствен родител, се нарича коренна директория. Това може да се види най-добре в Unix или Linux, където имате определена йерархия и коренната директория е root или /, от която висят всички останали директории, дори ако не са на един и същ дял.
Виртуалната директория е вид организация на файлове, която не разчита на местоположение в йерархично дърво на директории. Вместо това, тя събира резултати от източник на данни, като например база данни или персонализиран индекс, и ги представя визуално в същия формат като изгледите на папки.
Тези папки или директории може да се управлява използвайки инструменти, както графичен потребителски интерфейс, така и команден интерфейс. Например, можем да използваме команди или самия файлов мениджър, за да създаваме, изтриваме, преименуваме, преместваме, копираме и т.н. Въпреки че някои операционни системи може да имат определени ограничения върху разрешенията и действията, които можете да извършвате върху определени папки...
Подробности за папка или директория в различни операционни системи
Във всяка файлова система и операционна система, файловете и папките се третират по различен начин:
- Корен: Това е точката, от която виси или където се намира останалата част от йерархията на папките на системата. В Windows това обикновено е C:\, докато в Unix/Linux това е коренният дял или /.
- Път или маршрутТова е пътят, където се намира папка или файл във файлова система. Например, в Windows може да имаме C:\Program Files\Office\Word.exe. В Unix/Linux това би било нещо като /home/user/example.c. Както виждаме, в Windows се използва обратна наклонена черта, докато в света на *nix се използва традиционната наклонена черта.
- Име на файл или име на файл: Това е името, дадено на всеки файл в рамките на определена файлова система. Всяка файлова система има свои собствени ограничения относно максималния брой знаци за име на файл. Освен това, трябва да се прави разлика между основното име и разширението. Някои ранни системи също са имали ограничения за дължината на разширенията, обикновено три. Ето защо понякога ще виждате .htm вместо .html, за да се осигури съвместимост със системите DOS. Пример за име на файл може да бъде example.txt, където „example“ е името, а „txt“ е разширението, което в този случай показва, че е текст.
Конкретният случай на Unix/Linux
Какво е суперблокът?
Un суперблок Това е фундаментална структура от данни, която се намира в началото на файлова система. Суперблокът съдържа важна информация за самата файлова система и се използва за управление и достъп до данни, съхранявани в тази файлова система. Всяка файлова система на Unix има свой собствен суперблок, а специфичният му формат може да варира в зависимост от използваната файлова система (напр. ext4, XFS, UFS и др.).
La информация, която се съхранява в суперблока може да включва:
- Размер на файловата система: показва общия размер на файловата система.
- Брой индексни възли: Указва броя на наличните inode-и във файловата система. Inode-ите са структури от данни, които представляват файлове и директории.
- Безплатни блокове: Записва броя на свободните блокове данни, оставащи във файловата система за съхранение на информация.
- Точка на монтиране: показва директорията, в която е монтирана файловата система на операционната система.
- Идентификация на файловата система: уникален идентификатор за файловата система, който я отличава от другите файлови системи в същата система.
- Дата и час на сглобяване: записва кога файловата система е била монтирана за последен път.
- Използвани броячи на индексни възли и блокове: следи колко inode-и и блокове данни се използват във файловата система.
- Контролна сума и други метаданни за целостта: Някои съвременни суперблокове могат да включват допълнителна информация за проверка на целостта на данните, съхранявани във файловата система.
Когато файлова система, т.е. форматиран дял, е монтирана, операционната система осъществява достъп до суперблока, за да получи жизненоважна информация за структурата и състоянието на файловата система. Тази информация е от съществено значение за четенето и записването на данни във файловата система, както и за осигуряване на целостта и последователността на съхранените данни.
Индексни възли и директории
En Юникс/Линукс, Всичко е файл, като например дялове, устройства и т.н. Това не е така в други системи, като например Windows. Въпреки това, когато всичко е файл, дори папките или директориите се считат за специални типове файлове.
Следователно, директорията е специален файл, който съдържа имена на файлове (и поддиректории) и номера на индексни възли за файлове на една и съща файлова система или имена на символни връзки към файлове или директории на една и съща или различни файлови системи. В случай на твърди връзки, inode следи колко записа в директорията са изброени в него и изтрива файлови блокове, когато броят на връзките достигне нула. Това е различно в случай на мека връзка или символна връзка. Изтриването на символна връзка не засяга целевия файл. Ако обаче файл със символни връзки към него бъде изтрит, връзките стават неизползваеми.
В файловите системи Unix/Linux, файлът може да има няколко имена, със запис в директория за всяко име в същите или различни директории, като всички сочат към една и съща структура на inode, която поддържа списъка с дискови блокове, където се съхраняват данните.
За да разберем по-добре всичко това, е важно да запомним какво е inode (индексен възел). Това е фундаментална структура от данни във файловите системи *nix. Представя и съхранява важна информация върху файл или директория във файловата система. Следователно, както папката, така и файлът ще бъдат разглеждани от системата като inode.
За да е възможно това, всеки inode сочи към следващия информация:
- Номер на индексен възел: уникален идентификатор за всеки файл или директория.
- Тип на файла: Показва дали inode-ът се отнася до обикновен файл (f), директория (d), символна връзка (l) или друг тип файл.
- Размер на файла: текущият размер на файла в байтове.
- Разрешения и собственик: Информация за това кой има разрешения за достъп (четене, запис, изпълнение) и промяна на файла, както и собственика на файла (потребител или root). Собственикът може дори да е потребител, който не съществува като такъв, но може да е устройство и т.н.
- Дата и час на създаване/модификация: Записва кога е създаден индексният възел (in-ode) за първи път и кога е бил последно променен. Могат да бъдат включени и други метаданни или разширени разрешения.
- Брой връзки: Показва колко имена на файлове или директории са свързани с този inode. Директориите имат поне две връзки: една към себе си и една към родителската директория.
- Указатели към блокове с данни: Съдържа препратки към блокове данни в устройството за съхранение, които съхраняват действителното съдържание на файла. Тези блокове могат да бъдат директни, индиректни или двойно индиректни адреси, в зависимост от конкретната реализация на файловата система и размера на файла.
Индексните възли (INODE) са от решаващо значение за функционирането на файловата система, тъй като позволяват на операционната система да следи физическото местоположение и информацията, свързана с всеки файл и директория. Когато се осъществява достъп до файл или директория, операционната система проверява съответния номер на индексния възел, за да намери местоположението на данните и друга информация, свързана с този файл.