Ext2 файлова система в Linux. Как да получите достъп до файлови системи Ext2, Ext3, Ext4 в Windows среда Ext2 файлова система

Как да направите възможен достъп до дисков дял или сменяем носител с файлови системи в Windows среда Ext2/3/4 ? Ако например има и втора система на компютъра Linux. И трябва да работите с неговите данни от околната среда Windows. Или друг пример - когато виртуални дискове са монтирани в Windows с инсталиран виртуални машинисистеми Linuxили Android. С Ext2/3/ 4 Windows не може да работи първоначално; за това се нуждае от инструменти на трети страни. Що за средства са това?Нека разгледаме тези по-долу.

***
Първите три инструмента ще направят възможно само четенето на информационни устройства от Ext2/3/4. Най-новото решение ще ви позволи както да четете, така и да записвате данни. Всички обсъдени по-долу инструменти са безплатни.

1. DiskInternals Linux Reader

Една проста програма е примитивен файлов мениджър, направен като стандартен Windows Explorer, с поддръжка на файлови системи Вътр. 2/3/4 , Reiser4 , HFS , UFS2. В прозореца на програмата ще видим дялове и устройства с Linuxили Android.

За да копирате, трябва да изберете папка или файл, натиснете бутона "Запазване".

След това посочете пътя за копиране.

2. Добавка за Total Commander DiskInternals Reader

Феновете на популярните могат да извличат данни Linuxили Androidвътре в Windows с помощта на този файлов мениджър. Но първо инсталирайте специален плъгин в него. Един от тези плъгини е, той може да свързва и чете информационни устройства, форматирани в Ext2/3/4 , Мазнини/exFAT , HFS/HFS+ , ReiserFS. Изтеглете плъгина, разопаковайте архива му вътре , потвърдете инсталацията.

Да стартираме (важно) от името на администратора. Да отидем в секцията. Кликнете.

Тук, заедно с други дискови дялове и носители, този с Ext2/3/4 .

Данните се копират традиционно начин - чрез натискане на F5 на втория панел.

3. Плъгин за Total Commander ext4tc

Опростена алтернатива на предишното решение - ext4tc, друг плъгин за . Може да се свързва за четене на информационни устройства, форматирани само в Ext2/3/4. Изтеглете плъгина, разопаковайте неговия архив във файловия мениджър и започнете инсталацията.

Да стартираме (важно) от името на администратора. Кликнете. Хайде да отидем до .

Ако трябва да копирате данни, използвайте обичайния метод с клавиша F5.

4. Драйвер за поддръжка на Ext2Fsd

програма Ext2Fsd– това е шофьорът Ext2/3/4, той реализира поддръжка за тези файлови системи на ниво операционна система. Можете да работите с дискови дялове и устройства, форматирани с тези файлови системи, както с обикновени медийни устройства, поддържани от Windows, в прозорец на Explorer или програми на трети страни. Драйверът ви позволява както да четете, така и да записвате данни.

Изтеглете последната текуща версия Ext2Fsd.

По време на инсталацията активираме (ако е за дългосрочна работа) три предложени квадратчета за отметка:

1 — Автоматично стартиране на драйвери с Windows;
2 - Поддръжка на запис за Ext2;
3 - Поддръжка на форматиране за Ext3.

На предварителния етап активираме опцията за стартиране на прозореца на мениджъра на драйвери - - заедно с присвояване на информация на устройства от Ext2/3/4букви на устройството.

В прозореца, който се отваря Ще видим медиите с вече зададеното писмо. Например, в нашия случай, превозвач с Ext4дава се първата свободна буква Е.

Сега можем да работим с диска Ев прозореца на Explorer.

Задайте буква на новите свързани устройства с Ext2/3/4може да се направи с помощта на контекстното меню, извикано на всяко от показаните в прозореца устройства. Но просто чрез присвояване на буква на устройство, такова устройство няма да се появи след това рестартирайте Windows, това решение е само за една компютърна сесия. За да направите ново устройство с Ext2/3/4постоянно видим в средата на Windows, трябва да щракнете двукратно върху него, за да отворите прозореца за конфигурация и да зададете параметри за постоянна връзка. Във втората колона трябва:

За сменяем носител активирайте квадратчето за отметка, обозначено с номер 1 на екранната снимка, и посочете буквата на устройството;
За вътрешни дискове и дялове активирайте квадратчето за отметка, посочено на екранната снимка по-долу с номер 2, и също така посочете буквата на устройството.

14 юни

Файлови системи ext2, ext3, XFS, ReiserFS, NTFS

Файлова система- това е редът, който определя начина на организиране, съхраняване и именуване на данни върху всякакви електронни носители за съхранение в компютрите.

Разнообразието от файлови системи се обяснява с факта, че всяка е измислена за свой специфичен набор от задачи. Някои пишат много бързо малки файлове (да речем до 1 GB), но в същото време взаимодействат лошо с големи файлове или изобщо не работят с тях. Някои са добри от гледна точка на сигурността, други от гледна точка на скоростта на четене/запис. Всяка файлова система има своите плюсове, минуси, уязвимости и отличителни възможности.

IN LinuxНай-често използваните видове файлови системи са:

  1. ext2- означава Втора разширена файлова система(втора разширена файлова система). Разработена от Remy Card през 1993 г. като файлова система за ядрото на Linux, от 1993 г. до 2001 г. тя беше основната файлова система Linux.
    Предимството е висока скорост на четене/запис.
    Основният недостатък на системата ext2е, че не се записва в журнал, но точно поради това има страхотна производителност ( дърводобиве процес на журналиране, който съхранява списък с промени, който помага да се поддържа целостта на файловата система по време на различни системни повреди);
  2. ext3- означава Трета разширена файлова система(трета версия на разширената файлова система). Разработено от Stephen Tweedy през 2001 г., все още се използва днес в дистрибуции Linux. Роден е като подобрен ext2.
    Предимството на тази система е, че се регистрира, тоест надеждността й се увеличава значително в сравнение с ext2.
    Недостатъкът е малко по-ниска производителност и скорост на четене/запис.
  3. XFS— Разработено от компанията Silicon Graphicsпрез 1993 г. е добавен към ядрото Linuxкато файлова система през 2002 г. в цялото семейство дистрибуции Linux, в момента се използва като „роден“ в дистрибуцията червена шапка.
    Предимството е наличието на регистриране на метаданни, висока оперативна стабилност, поддържа се разпределение на входно-изходните потоци в групи, висока скорост на четене/запис, възможно е дефрагментиране дори когато дялът е монтиран и можете да увеличите размера на файловата система. Работи най-ефективно с големи файлове.
    Недостатъкът е, че размерът на дяла не може да бъде намален, процесът на обработка на метаданни не е толкова бърз и работи значително по-бавно с малки файлове в сравнение с други видове файлови системи.
  4. ReiserFS- разработка на фирмата Namesysпод ръководството на Ханс Райзер през 2001 г. Използван е само на операционна система Linux. Това беше първата журналирана файлова система, приета в ядрото.
    Предимството на тази файлова система е, че работи много бързо с малки файлове (скоростта на четене/запис е по-висока от тази на ext4), поддържа регистриране.
    Недостатъкът е, че развитието му се забави значително поради ареста на лидера му Ханс Райзер и няма фоново криптиране.
  5. NTFS- означава нова технологична файлова система(нова технологична файлова система). Разработен през юли 1993 г. от корпорацията Microsoft. Широко използван в различни операционни системи, както и в различни носители за съхранение.
    Предимството е вградената възможност за ограничаване на достъпа до данни за различни потребители, както и задаване на ограничения за максимален обемдисково пространство, използване на система за журналиране, висока скорост на четене/запис на малки файлове.
    Недостатъкът е, че стабилната работа изисква голямо количество RAM на компютъра, работи бавно с големи файлове и дължината на пътя до файловете е ограничена (32 767 Unicode знака).

По този прост начин разбрахме „файлови системи ext2, ext3, XFS, ReiserFS, NTFS«!

Файлова система(английска файлова система) - ред, който определя начина на организиране, съхраняване и именуване на данни върху носители за съхранение на информация на ИТ оборудване (използване на преносими карти с флаш памет за многократно записване и съхранение на информация в преносим електронни устройства: цифрови фотоапарати, мобилни телефонии др.) и компютърно оборудване. Той определя формата на съдържанието и физическото съхранение на информацията, която обикновено е групирана под формата на файлове. Конкретна файлова система определя размера на името на файла (папката), максималния възможен размер на файла и дяла и набор от файлови атрибути. Някои файлови системи предоставят възможности за обслужване, като контрол на достъпа или криптиране на файлове.

Задачи на файловата система

Основните функции на всяка файлова система са насочени към решаване на следните проблеми:

именуване на файлове;

софтуерен интерфейс за работа с файлове за приложения;

картографиране на логическия модел на файловата система върху физическата организация на съхранението на данни;
организиране на устойчивостта на файловата система към прекъсване на захранването, хардуерни и софтуерни грешки;

В многопотребителски системи се появява друга задача: защита на файловете на един потребител от неоторизиран достъп от друг потребител, както и осигуряване на сътрудничество с файлове, например, когато файл се отваря от един от потребителите, за други същия файл ще бъде временно наличен в режим само за четене.

Файловата система е основната структура, която компютърът използва за организиране на информация на своя твърд диск. При инсталиране на нов харддисктой трябва да бъде разделен и форматиран за определена файлова система, след което в него могат да се съхраняват данни и програми. Има три възможни опции за файлова система в Windows: NTFS, FAT32 и рядко използваната наследена FAT система (известна също като FAT16).

NTFS е предпочитаната файлова система за тази версия на Windows. Има много предимства пред по-старата система FAT32; Някои от тях са изброени по-долу.

Възможност за автоматично възстановяване от някои грешки на диска (FAT32 няма тази възможност).
Подобрена поддръжка за големи твърди дискове.
По-висока степен на сигурност. Можете да използвате разрешения и криптиране, за да откажете достъп на потребителите до определени файлове.

Файловата система FAT32 и рядко използваната FAT система бяха използвани в предишния Windows версии, включително Windows 95, Windows 98 и Windows Millenium Edition. Файловата система FAT32 не предоставя нивото на сигурност, осигурено от NTFS, така че ако вашият компютър има дял или том, форматиран като FAT32, файловете на този дял са видими за всеки, който има достъп до компютъра. Файловата система FAT32 също има ограничения за размера на файла. В тази версия на Windows не е възможно да се създаде FAT32 дял, по-голям от 32 GB. В допълнение, FAT32 дял не може да съдържа файл, по-голям от 4 GB.

Основната причина за използването на система FAT32 е, че компютърът ще може да работи с Windows 95, Windows 98 или Windows Millennium Edition, или тази версия на Windows (конфигурация на множество операционни системи). За да създадете такава конфигурация, трябва да инсталирате предишната версия на операционната система на дял, форматиран като FAT32 или FAT, което го прави основния дял (основният дял може да съдържа операционната система). Други секции, достъпни от предишни версии Windows също трябва да бъде форматиран като FAT32. По-ранните версии на Windows имат достъп само до мрежови NTFS дялове или томове. NTFS дяловете на локалния компютър ще бъдат недостъпни.

FAT – предимства:

Изисква малко RAM, за да работи ефективно.
Бърза работас малки и средни каталози.
Дискът прави средно по-малко движения на главата (в сравнение с NTFS).
Ефективна работана бавни дискове.

МАЗНИНИ – минуси:

Катастрофална загуба на производителност с нарастваща фрагментация, особено за големи дискове (само FAT32).
Трудности с произволен достъп до големи (да речем, 10% или повече от размера на диска) файлове.
Много бавна работа с директории, съдържащи голям брой файлове.

NTFS - предимства:

Фрагментирането на файлове практически няма последствия за самата файлова система - производителността на фрагментирана система се влошава само по отношение на достъпа до самите файлови данни.
Сложността на структурата на директорията и броят на файловете в една директория също не представляват специални пречки за производителността.
Бърз достъп до произволен фрагмент от файл (например редактиране на големи .wav файлове).
Много бърз достъп до малки файлове (няколкостотин байта) - целият файл е на същото място като системните данни (MFT запис).

NTFS - минуси:

Значителни изисквания към системната памет (64 MB е абсолютният минимум, повече е по-добре).
Бавните дискове и контролери без Bus Mastering значително намаляват производителността на NTFS.
Работата със средно големи директории е трудна, тъй като те почти винаги са фрагментирани.
Диск, който работи дълго време при 80% - 90% пълен, ще покаже изключително ниска производителност.

Следните файлови системи се считат за „родни“ за Linux (т.е. тези, на които може да се инсталира и от които може да стартира): ext2fs, ext3fs, ext4fs, ReiserFS, XFS, JFS.Те обикновено се предлагат като избор при инсталиране на по-голямата част от дистрибуциите. Разбира се, има начини Linux инсталациикъм FAT/VFAT/FAT32 файлови системи, но това е само за онези милички и господа, които разбират от извращения, и няма да говоря за тях.

Основните критерии при избора на файлова система обикновено са надеждността и производителността. В някои случаи трябва да вземете предвид и фактора за съвместимост - в този случай това означава способността на други операционни системи да имат достъп до определена файлова система.
Ще започна прегледа с ReiserFS - защото причината да напиша тази бележка беше въпросът: какво трябва да се счита за малки файлове? В крайна сметка е добре известно, че ефективността при работа с малки файлове е силата на тази файлова система.

И така, малки файлове означава файлове, по-малки от логически блок на файловата система, който в Linux в повечето случаи е равен на четири килобайта, въпреки че може да бъде посочен по време на форматирането в определени граници (в зависимост от конкретната FS). Има безброй такива малки файлове във всяка Unix-подобна операционна система. Типичен пример са файловете, които съставят дървото на портовете на FreeBSD, преносите на Gentoo и подобни системи, подобни на портове.
В повечето файлови системи такива мини-файлове имат както собствен inode (информационен възел, съдържащ мета информация за файла), така и блок с данни, което води както до потребление на дисково пространство, така и до намаляване на производителността на файловите операции. По-специално, това е причината за катастрофалната внимателност на файловата система FreeBSD (както старата, UFS, така и новата, UFS2) при работа със собствена система от портове.

Във файловата система ReiserFS в такива случаи отделни блокове не се разпределят за данни - тя успява да избута файловите данни директно в областта на inode. Поради това се спестява дисково пространство и се увеличава производителността - буквално няколко пъти в сравнение с всички останали FS.
Тази обработка на малки файлове на ReiserFS породи легендата за неговата ненадеждност. Наистина, когато файловата система се срине (т.е. унищожаването на зоните на обслужване), данните, разположени заедно с нейните inodes, изчезват заедно с тях - и безвъзвратно. Докато в тези файлови системи, където inodes и блоковете с данни винаги са разделени пространствено, последните теоретично могат да бъдат възстановени. И така, за ext2/ext3 дори има инструменти, които ви позволяват да направите това.

Но като всяка легенда и тази създава само впечатление за автентичност. Първо, постоянната загуба на данни се отнася само за много малки файлове. Сред потребителските практически няма такива, а всички останали могат лесно да бъдат възстановени от комплекта за разпространение.
Второ, когато говорех за възможността за възстановяване на данни от блокове, които са загубили връзката си с техните inodes, не случайно използвах думата „теоретичен“. Защото на практика тази дейност е изключително трудоемка и не дава гарантиран резултат. Всеки, който е трябвало да направи това, ще се съгласи, че човек може да се отдаде на това само от пълно отчаяние. И това важи за всички файлови системи Linux. Така че този аспект може да бъде пренебрегнат при избора на файлова система.

По отношение на цялостната производителност ReiserFS определено е по-бърз от всички останали журналирани FS и в някои отношения превъзхожда ext2. Тук можете да намерите сравнение на скоростта на някои често срещани файлови операции.
Но с ReiserFS ситуацията със съвместимостта е малко по-лоша. Достъпът до него от операционни системи Windows, доколкото знам, е невъзможен. Някои операционни системи от семейството BSD (DragonFlyBSD, FreeBSD) поддържат тази файлова система, но в режим само за четене. Дори вероятността произволен Linux LiveCD от предишни години да няма поддръжка на ReiserFS не е нула.

И тук е време да си припомним ext3fs. Предимството му изобщо не е в по-голямата надеждност - това е същата легенда като нестабилността на ReiserFS. Чувал съм не по-малко за сривовете на ext3fs, отколкото за подобни инциденти с ReiserFS. Аз самият не можах да унищожа нито едното, нито другото. Освен че работеше с ext2 - но дори и тогава много отдавна, по времето на ядрото 2.2 (или дори 2.0).

Не, основното предимство на ext3fs е неговата съвместимост - гарантирано е, че се чете от всяка Linux система. Например, когато възстановявах от някакъв древен LiveCD под ръка - ситуация, която на практика не е толкова невероятна, трябваше да вляза в нея. Отново, повечето BSD системи могат лесно да разберат ext3fs (макар и без логване). За Windows също има, доколкото знам, всякакви драйвери и плъгини за общ файлови мениджъри(Тип Total Commander), осигуряващ достъп до дялове с ext2fs/ext3fs.

По отношение на производителността, ext3fs оставя смесено впечатление. Първо, неговата производителност зависи много от режима на регистриране, от който има три: с пълно регистриране на данни, частично регистриране и регистриране само на метаданни. Във всеки режим той показва различна производителност при различни типове файлови операции. В никакъв случай обаче производителността не е рекордна.

Въпреки това, ако изискването за производителност е на първо място, тогава ext2fs няма конкуренция - обаче, в този случай ще трябва да се примирите с липсата на регистриране изобщо. И, следователно, с продължителни проверки на файловата система в случай на неправилно изключване - и с обема на съвременните дискове това може да отнеме много време ...

За XFS може да се каже следното. По отношение на съвместимостта, всичко, което е написано за ReiserFS, важи и за него - освен това до известно време не се поддържаше от стандартното Linux ядро. По отношение на производителността XFS също не блести, представяйки се общо приблизително на същото ниво като ext3fs. А операцията по изтриване на файлове като цяло демонстрира депресираща бавност.
Според моите наблюдения използването на XFS се отплаща при работа не само с големи, но и с много големи файлове - които всъщност са само DVD изображения и видео файлове.

Нека се върна на въпроса за надеждността. Баналното изключване на захранването по време на нормална потребителска работа, като правило, се толерира безболезнено от всички журналирани файлови системи (и никоя от тях не гарантира безопасността на потребителските операции, които не са записани на диск - спасяването на давещи се хора остава работа на самите давещи се хора). Вярно е, че за всяка файлова система е възможно да се симулира ситуация, при която изключването на захранването ще доведе до повече или по-малко сериозни щети върху нея. В реалния живот обаче е малко вероятно да се случат подобни ситуации. И можете напълно да ги премахнете, като закупите непрекъсваемо захранване - това ще даде повече увереност в безопасността на данните, отколкото вида на файловата система. Е, във всеки случай единствената гаранция за възстановяване на повредени данни може да бъде редовното архивиране...

Мисля, че представената по-горе информация е достатъчна за информиран избор. Моят личен избор през последните няколко години беше ReiserFS. Понякога, на системи, където е оправдано да се премести всичко възможно извън основния дял, има смисъл да се използва ext3fs за основната файлова система и ReiserFS за всички останали.

Ако е предоставен отделен дял за директорията /boot (и това се препоръчва при използване GRUB буутлоудърот нейните разработчици) - за нея никоя друга файлова система освен ext2fs не е оправдана, всяко логване тук няма смисъл. И накрая, ако създадете отделен дял за всички видове мултимедийни материали, можете да помислите за XFS.

Ако подходим към обяснението по-методично

ext - в ранните дни на Linux, ext2 (разширена файлова система версия 2) беше доминираща. От 2002 г. тя беше заменена от системата ext3, която до голяма степен е съвместима с ext2, но също така поддържа функции за регистриране, а при работа с версия на ядрото 2.6 и по-нова, ACL. Максималният размер на файла е 2 TB, максималният размер на файловата система е 8 TB. В края на 2008 г. беше официално обявено пускането на ext4, което е обратно съвместимо с ext3, но много функции се изпълняват по-ефективно от преди. В допълнение, максималният размер на файловата система е 1 EB (1 048 576 TB) и можете да очаквате това да е достатъчно за известно време. Относно reiser - системата е кръстена на своя основател, Hans Reiser, и е първата система с функции за регистриране за достъп до ядрото на Linux за данни. SUSE версията на Zp дори се смяташе за стандарт за известно време. Основните предимства на reiser в сравнение с ext3 са по-висока скорост и ефективност на поставяне при работа с малки файлове (а във файловата система по правило повечето файлове са малки). С течение на времето обаче развитието на рейзеферите спря. Отдавна беше обявено, че ще бъде пусната версия 4, която все още не е готова, а поддръжката на версия 3 е спряна. Относно xfs - файловата система xfs първоначално е разработена за SGI работни станции, работещи на операционна система IRIX. Xfs е особено добър за работа с големи файлове и е особено идеален за работа с поточно видео. Системата поддържа квоти и разширени атрибути (ACL).
jfs

jfs - a66peBHaTypaJFS означава "Journaled File System". Първоначално е разработен за IBM и след това е адаптиран за Linux.Jfs никога не се е радвал на голямо признание в Linux и в момента тъне в мизерно съществуване, по-лошо от другите файлови системи.
brtfs

brtfs - Ако това е волята на водещите разработчици на ядро, файловата система brtfs в Linux има светло бъдеще. Тази система е разработена от нулата в Oracle. Включва поддръжка за картографиране на устройства и RAID. Brtfs е най-подобен на системата ZFS, разработена от Sun. Най-интересните му функции включват проверка на файловата система в движение, както и поддръжка за SSD (твърдотелни устройства са твърди дискове, захранвани от флаш памет). За съжаление, работата по brtfs няма да бъде завършена в обозримо бъдеще. Fedora, започвайки от версия 11, предоставя възможност за инсталиране на brtfs, но препоръчвам да я използвате само за разработчици на файлови системи!
Няма "най-бърза" или "най-добра" файлова система - оценката зависи от това за какво възнамерявате да използвате системата. На начинаещите потребители на Linux, работещи на локален компютър, се препоръчва да работят с ext3, а на сървърните администратори с ext4. Разбира се, при ext4 скоростта на работа е по-висока, отколкото при ext3, но в същото време в системата ext4 ситуацията с надеждността на данните е много по-лоша - може да загубите информация, ако системата внезапно се изключи.

Ако сте инсталирали втора UNIX-подобна операционна система на вашия компютър, тогава следните файлови системи ще ви бъдат полезни при обмен на данни (от една операционна система към друга).

sysv - използва се в SCO, Xenix и Coherent OS.

ufs - използва се във FreeBSD, NetBSD, NextStep и SunOS. Linux може само да чете информация от такива файлови системи, но не може да прави промени в данните. За достъп до сегменти от BSD ще ви е необходимо допълнително разширението BSD disklabel. Подобно разширение съществува за таблици на дялове на SunOS.

ZFS е сравнително нова система, разработена от Sun за Solaris. Тъй като кодът на ZFS не е съвместим с GPL, той не може да бъде интегриран с ядрото на Linux. Поради тази причина Linux поддържа тази файлова система само индиректно, чрез FUSE.
Windows, Mac OS X

Следните файлови системи ще бъдат полезни при обмен на информация с MS DOS, Windows, OS/2 и Macintosh.

vfat - използва се в Windows 9x/ME. Linux може да чете информация от такива дялове и да прави промени в нея. vfat системните драйвери ви позволяват да работите с по-стари MS DOS файлови системи (8 + 3 знака).

ntfs - системата се използва във всички съвременни версии на Windows: otNT и по-нови. Linux може да чете и променя своите файлове.

hfs и hfsplus - тези файлови системи се използват в Apple компютри. Linux може да чете и променя своите файлове.

CD и DVD с данни обикновено използват собствени файлови системи.

iso9660 - Файловата система за CD-ROM е описана в стандарта ISO-9660, който позволява само кратки имена на файлове. Дългите имена се поддържат по различен начин в различните операционни системи, като се използват различни разширения, които са несъвместими едно с друго. Linux може да изпълнява както разширението Rockridge, което е често срещано в UNIX, така и разширението Joliet, разработено от Microsoft.

udf - този формат (универсален дисков формат) се появява и развива като наследник на ISO 9660.

Мрежови файлови системи

Файловите системи не трябва да са на локалния диск - те
може да се свърже с компютър и чрез мрежа. Ядрото на Linux поддържа различни мрежови файлови системи, от които следните са най-често използваните.

smbfs/cifs - помага за свързване на мрежови директории на Windows или Samba към дърво на директории.

nfs е най-важната мрежова файлова система в UNIX.

coda - тази система е много подобна на NFS. Има много допълнителни функции, но не е много често срещано.

ncpfs - работи по протокола на ядрото на NetWare; oH се използва от Novell Netware.

Виртуални файлови системи

Linux има няколко файлови системи, които не са проектирани да съхраняват данни на твърдия диск (или друг носител за съхранение), а само да обменят информация между ядрото и потребителските програми.
devpts - Тази файлова система осигурява достъп до псевдо терминали (съкратено PTY) чрез /dev/pts/* според спецификацията UNIX-98. (Псевдотерминалите емулират сериен интерфейс. В UNIX/Linux системите такива интерфейси се използват от терминални емулатори като xterm. Обикновено се използват устройства като /dev/ttypn. За разлика от тях спецификацията UNIX-98 дефинира нови устройства. Повече подробна информация се съобщава в текстовия терминал H0WT0.)
proc и sysfs - файловата система proc се използва за показване на служебна информация, свързана с управлението на ядрото и процеса. В допълнение към това файловата система sysfs изгражда връзки между ядрото и хардуера. И двете файлови системи са монтирани в /proc и /sys.
tmpfs - Тази система е изградена на базата на споделена памет според System V. Обикновено се монтира на позиция /dev/shm и позволява ефективен обмен на информация между две програми. В някои дистрибуции (като Ubuntu) директориите /var/run и /var/lock също се създават с помощта на файловата система tmpfs. Файловете в тези директории се използват от някои мрежови демони за съхраняване на идентификационни номера на процеси, както и информация за достъп до файлове. Благодарение на tmpfs тези данни вече се отразяват в RAM. Методът гарантира висока скорост, а също така, че след изключване на компютъра няма да останат файлове в директориите /var/run или /var/lock.

usbfs - файловата система usbfs, започваща с версия на ядрото 2.6 и по-нова, предоставя информация за свързани USB устройства. Обикновено е интегриран във файловата система proc. Относно поддръжката на USB устройства в Linux.

Други файлови системи

auto - всъщност няма файлова система под това име. Въпреки това, думата auto може да се използва в /etc/fstab или с командата mount за указване на файловата система. В този случай Linux ще се опита сам да разпознае файловата система. Този метод работи с повечето основни файлови системи.
autofs, autofs4

autofs, autofs4 също не са файлови системи, а разширения на ядрото, които се изпълняват автоматично команда за монтиранеза избрани файлови системи. Ако дадена файлова система не се използва известно време, командата umount се изпълнява автоматично върху нея. Този метод е удобен предимно в случаите, когато само няколко от много NFS директории се използват активно едновременно.

За да извърши такива операции, скриптът /etc/init.d/ autofs автоматично изпълнява програмата за автоматично монтиране, когато системата стартира. Конфигурира се с помощта на файла /etc/auto.master. Съответните програми се инсталират автоматично, например в Red Hat и Fedora. Във всеки случай autofs се активира само след конфигуриране на /etc/auto.master или /etc/auto.misc.
cramfs и squashfs

cramfs и squashfs - файловите системи Cram и Squash са само за четене. Те се използват за „пакетиране“ на възможно най-много компресирани файлове във флаш памет или ROM (памет само за четене).

предпазител - FUSE означава файлова система в потребителското пространство и позволява драйверите на файловата система да бъдат разработени и използвани извън ядрото. Следователно FUSE винаги се използва с драйвер на външна файлова система. FUSE работи по-специално с NTFS драйвера ntfs-3g.

gfs и ocfs - Глобалната файлова система и клъстерната файлова система от Oracle (Oracle Cluster File System) ви позволяват да изградите гигантски мрежови файлови системи, които могат да бъдат достъпни паралелно от много компютри едновременно.

jffs и yaffs - журнална флаш файлова система и още една флаш файлова система са специално оптимизирани за работа със твърдотелни устройства и флаш носители. Използвайки специални алгоритми, те се опитват да използват равномерно всички клетки на паметта (технология за изравняване на износването), за да избегнат преждевременна повреда на системата.
цикъл

loop - използва се за работа с псевдо устройства. Устройството за обратна връзка е адаптер, който има достъп до обикновен файл като блоково устройство. Благодарение на него можете да поставите всяка файлова система във всеки файл и след това да я свържете към дървото на директорията с помощта на монтиране. Функцията на ядрото, отговорна за това - поддръжка на псевдоустройство - е внедрена в модула за цикъл.

Има различни приложения за псевдоустройства. По-специално, те могат да се използват при създаване на първоначални RAM дискове за GRUB или LILO, при внедряване на криптирани файлови системи или тестване на ISO изображения за компактдискове.

Медийни файлови системи за съхранение

Файлови системи
ISO 9660
Разширение на файловата система Joliet ISO 9660.
Rock Ridge (RRIP, IEEE P1282) – разширение на файловата система ISO 9660, предназначено да съхранява файлови атрибути, използвани в POSIX операционни системи
Разширения на Amiga Rock Ridge
Ел Торито
Apple ISO9660 разширения
HFS, HFS+
Универсален Формат на дискаспецификация на формат на файловата система, независим от операционната система за съхраняване на файлове на оптичен носител. UDF е реализация на стандарта ISO/IEC 13346
Маунт Рение

Файл Linux система- това най-често е ext4. Той се регистрира и ви позволява удобно да работите с данни, когато решавате по-голямата част от проблемите. Има обаче и други. В рамките на този материал ще бъдат разгледани основните видове файлови системи и принципите на работа с тях.

Видове файлови системи на Linux и техните характеристики

Отличителни характеристики са скоростта на работа с файлове, сигурност и параметри (като размер на блок), които съществуват по подразбиране и се задават при създаването на FS. Може би най-важната характеристика е наличието на списание. Системният дневник записва данни или метаданни(само заглавки), от които може да се възстанови информация в случай на повреда.

Файлова система може да бъде създадена на всяко устройство: на диск или системен дял.

EXT2 файлова система

EXT2 в момента е остаряла файлова система, която практически не се използва в съвременните инсталации. Основният недостатък е липсата на регистриране, което съответно прави невъзможно възстановяването на данни в случай на повреда. Все още се използва на преносими носители за съхранение като USB. За тях не е необходимо списание, тъй като заема определено място.

Освен това гарантира максимална скорост на работа.

  • за EXT2 максимален размер на файла -2 TB

EXT3 файлова система

Заменен EXT2, основната характеристика е външният вид на пълнителя, е напълно обратно съвместим с EXT2 (EXT2 може свободно да се преобразува в EXT3). В днешно време също е рядкост; EXT4 се използва почти винаги.

Журнал - специална област в паметта, в която се записва информация за всички промени

  • за EXT3 максимален размер на файла -2 TB
  • максималният размер на всички файлове е 32 TB
  • всяка директория може да има до 32 000 поддиректории

При журналиране има три опции (посочени при създаването на файловата система):

  • дневник – метаданни, както и самата информация, в дневника
  • подредено – опция по подразбиране, само метаданните се запазват дори след запис на диск
  • обратно записване – също се записват само метаданни, можете да изберете да ги запазите преди или след запис на диск

EXT4 файлова система

Модерната версия на разширената файлова система, това е най-често използваната

  • максимален размер на файла -2 TB 16 TB
  • Максималният размер на всички файлове е 1 EB (екзабайт). 1 EB = 1024 PB (петабайт). 1 PB = 1024 TB (терабайт).
  • всяка директория може да има до 64 000 поддиректории

В EXT4 регистрирането може да бъде изключено чрез задаване на опцията данникогато е монтиран в изключено

EXT като основна файлова система и операционна практика на Linux

Файловата система се създава с командата mk2fs

Необходимата опция за регистриране се посочва по време на монтажа, например:

монтиране /dev/vdc /mnt/1 -t ext3 -o данни=журнал

Преобразуване от EXT2 E в XT3

ReiserFS

ReiserFS (и модерната реализация на Reiser4 с поддръжка на SELinux) има добра производителност и е много продуктивна - особено при работа с голям брой малки файлове. ReiserFS не разпределя inodes за всеки малък файл, а ги обработва заедно, а ReiserFS също използва дневник с няколко налични опции. В момента файловата система се поддържа от разработчици от Русия.

Можете да създадете FS за устройство с командата

XFS

XFS е файлова система за журналиране. Употреби RAMза съхраняване на информация, така че е възможна загуба на данни – например при спиране на тока.

За да използвате XFS на Ubuntu, ще трябва да инсталирате пакети xfsprogsИ xfsdump

vfat

Файловата система Linux съществува и в средата на Windows. Използва се, когато трябва да организирате споделен достъп до определени дискове и дялове на клиенти с различни операционни системи. В други случаи не се препоръчва да го използвате, тъй като могат да възникнат трудности при работа в Linux.

(Втора разширена файлова система).

· История на развитието на Linux файловите системи

· Структура на дяловете на диска в ext2fs

·

· Каталози

· Файлове на устройството

·

·

· EXT2fs библиотека

· Системни инструменти EXT2fs

· Изчисляване на производителността

Математически факултет

Софтуерна програма

2-ра година 5-та гр.

Чичиров Андрей

Фалшива система EXT2fs (втора разширена файлова система).

История на развитието на файловите системи на Linux

Първите версии на Linux са разработени на базата на операционната система Minix. Би било по-лесно да споделяте дисковете между двете системи, отколкото да разработите нова файлова система, така че Линус Торвалдс реши да въведе поддръжка на Linux за файловата система Minix. По това време тази файлова система беше доста ефективен софтуерен продукт с относително малък брой грешки.

Въпреки това, ограниченията, свързани със структурата на файловата система Minix, бяха доста високи, така че те започнаха да мислят за разработването на нова файлова система за Linux.

За да се опрости внедряването на новата файлова система в ядрото на Linux, беше разработена виртуална файлова система (VFS). Първоначално VFS е написана от Крис Провенцано и след това пренаписана от Линус Торвалдс, преди да бъде интегрирана в ядрото.

След инсталирането на VFS в ядрото, през април 1992 г. беше разработена нова файлова система, EXTfs (разширена файлова система), която беше добавена към Linux версия 0.96c. В новата файлова система бяха премахнати две значителни ограничения на системата Minix: максималният й размер можеше да достигне 2 гигабайта, а максималната дължина на името на файла можеше да бъде 255 знака. Това беше подобрение спрямо файловата система Minix, въпреки че някои проблеми все още бяха налице. Нямаше поддръжка за споделен достъп, модификация на дескриптора на индекса и модификация на клетките за време на промяна на файла. Тази файлова система използва свързани списъци, за да оперира със свободни блокове и inodes, което значително повлия на производителността на системата: с течение на времето списъците станаха неподредени и несортирани, което доведе до фрагментация на файловата система.

Решението на тези проблеми беше пускането през януари 1993 г. на алфа версии на две нови файлови системи: Xia и EXT2fs (Втора разширена файлова система). В по-голямата си част файловата система Xia беше базирана на Minix, с добавени няколко нови функции. Това беше главно възможността за работа с дълги имена на файлове, поддръжка за по-големи дискови дялове и поддръжка за три клетки за време за промяна на файла. От друга страна, EXT2fs беше базиран на EXTfs с много подобрения и допълнения. Имаше и възможности за бъдещо развитие.

Когато тези две файлови системи бяха пуснати, те бяха функционално приблизително еднакви. Системата Xia беше по-надеждна от EXT2fs, като я минимизира. С по-широкото им използване бяха открити грешки в системата EXT2fs и бяха добавени голям брой нови функции и подобрения. Файловата система EXT2fs вече е много надеждна и се превърна в де факто стандарт за файлова система на Linux.

Следната таблица предоставя обща информация за функционалността, предоставена от различни файлови системи.

Minix FS

Ext FS

Ext2FS

Xia FS

Максимален размер на файловата система

Максимална дължина на файла

Максимална дължина на името на файла

Поддръжка на три клетки за време за промяна на файла

Разширяемост

Променяем размер на блока

Защита на информацията

Ако е необходимо, дължината на името на файла в Ext 2може да се увеличи до 1012.

EXT2fs запазва определен брой блокове за root потребителя. Обикновено това е 5% от общата сума, което позволява на системния администратор да избегне изчерпване на пространството на твърдия диск, когато той е запълнен с процеси на други потребители.

Структура на дяловете на диска в ext2fs

Производителите на твърди дискове обикновено доставят продуктите си форматирани на ниско ниво. Доколкото знам, това означава, че цялото дисково пространство е разделено на „сектори“ с размер 512 байта с помощта на специални етикети. Такъв диск (или дисков дял) трябва да бъде подготвен за използване на конкретна операционна система. В MS-DOS или Windows процедурата по подготовка се нарича форматиране, а в Linux – създаване на файлова система. Създаване на файлова система ext2fsсе състои в създаване на определена логическа структура в дисков дял. Тази структура е конструирана по следния начин. Първо, на диска се заделя област за зареждане. Областта за зареждане се създава на всяка файлова система. На основния дял той съдържа запис за зареждане - част от код, който инициира процеса на зареждане на операционната система при стартиране. Тази област не се използва в други дялове. Останалото дисково пространство е разделено на блокове. Един блок може да бъде с размер 1, 2 или 4 килобайта. Блокът е адресируема единица дисково пространство. Файловете се разпределят в блокове, така че има компромиси при избора на размера на блока. Голям размер block, като правило, намалява броя на достъпите до диска при четене или запис на файл, но увеличава дела на загубеното пространство, особено когато има голям брой малки файлове.

Блоковете в техния район са обединени в групи от блокове. Групи от блокове във файлова система и блокове в група са номерирани последователно, започвайки с 1. Първият блок на диска е номериран с 1 и принадлежи към група номер 1. Общият брой блокове на диск (в дисков дял) е делител на капацитета на диска, изразен в сектори. И броят на групите блокове не трябва да разделя броя на блоковете, защото последната група блокове може да не е пълна. Началото на всяка група блокове има адрес, който може да се получи като ((номер на група - 1)* (брой блокове в групата)).

Всяка група блокове има еднаква структура. Структурата му е представена в следващата таблица.

Структурата на дисков дял група от блокове в ext2fs

Първият елемент от тази структура (суперблок) е еднакъв за всички групи, а всички останали са индивидуални за всяка група. Суперблокът се съхранява в първия блок на всяка група блокове (с изключение на група 1, която има запис за зареждане в първия блок). Суперблоке началната точка на файловата система. Той е с размер 1024 байта и Винаги разположен на отместване 1024 байта от началото на файловата система. Наличието на множество копия на суперблок се обяснява с изключителното значение на този елемент от файловата система. Дубликатите на Superblock се използват при възстановяване на файлова система след повреди.

Съхранената в суперблока информация се използва за организиране на достъпа до останалите данни на диска. Суперблокът определя размера на файловата система, максималния брой файлове в дяла, количеството свободно пространство и съдържа информация къде да търсите неразпределени области. Когато ОС стартира, суперблокът се чете в паметта и всички промени във файловата система първо се отразяват в копие на суперблока, намиращо се в ОС, и се записват на диска само периодично. Това подобрява производителността на системата, тъй като много потребители и процеси непрекъснато актуализират файлове. От друга страна, когато системата е изключена, суперблокът трябва да бъде записан на диск, което не позволява изключване на компютъра просто изключванехранене. В противен случай при следващото зареждане информацията, записана в суперблока, няма да съответства на реалното състояние на файловата система.

Суперблокът има следната структура

Име на полето

Тип

Коментар

s_inodes_count

ULONG

Брой inodes във файловата система

s_blocks_count

ULONG

Брой блокове във файловата система

s_r_blocks_count

ULONG

Брой блокове, запазени за суперпотребител

s_free_blocks_count

ULONG

Безплатен брояч на блокове

s_free_inodes_count

ULONG

Безплатен брояч на inode

s_първи_блок_данни

ULONG

Първият блок, който съдържа данни. В зависимост от размера на блока това поле може да бъде 0 или 1.

s_log_block_size

ULONG

Индикатор за размер на логически блок: 0 = 1 KB; 1 = 2 KB; 2 = 4 KB.

s_log_frag_size

ДЪЛГ

Индикатор за размер на фрагмент (изглежда концепцията за фрагмент не се използва в момента)

s_blocks_per_group

ULONG

Брой блокове във всяка група блокове

s_frags_per_group

ULONG

Брой фрагменти във всяка блокова група

s_inodes_per_group

ULONG

Брой inodes във всяка блокова група

s_mtime

ULONG

Часът на последното монтиране на файловата система.

s_wtime

ULONG

Време, когато последно е писано във файловата система

s_mnt_count

USHORT

Брояч на броя монтирания на файловата система. Ако този брояч достигне стойността, посочена в следващото поле (s_max_mnt_count), файловата система трябва да бъде проверена (това се прави при рестартиране) и броячът се нулира.

s_max_mnt_count

КЪС

Число, което определя колко пъти файловата система може да бъде монтирана

s_magic

USHORT

„Магическо число“ (0xEF53), което показва, че файловата система е от тип ex2fs

s_състояние

USHORT

Флагове, показващи текущото състояние на файловата система (чиста ли е и т.н.)

s_грешки

USHORT

Флагове, които указват процедури за обработка на съобщения за грешка (какво да се направи, ако се открият грешки).

s_pad

USHORT

Пълнеж

s_lastcheck

ULONG

Час на последната проверка на файловата система

s_checkinterval

ULONG

Максимален период от време между проверките на файловата система

s_creator_os

ULONG

Индикация за типа на операционната система, в която е създадена файловата система

s_rev_level

ULONG

Версия (ниво на ревизия) на файловата система.

s_reserved

ULONG

Подпълване до 1024 байта

След суперблока е описание на групата от блокове (Групови дескриптори). Това описание е масив със следната структура.

Име на полето

Тип

Предназначение

bg_block_bitmap

ULONG

Адрес на блока, съдържащ растерното изображение на блока на тази група

bg_inode_bitmap

ULONG

Адрес на блока, съдържащ растерното изображение на inode на тази група

bg_inode_table

ULONG

Адрес на блока, съдържащ inode таблицата на тази група

bg_free_blocks_count

USHORT

Брояч на броя безплатни блокове в тази група

bg_free_inodes_count

USHORT

Брой свободни inodes в тази група

bg_used_dirs_count

USHORT

Броят на inodes в дадена група, които са директории

bg_pad

USHORT

Пълнеж

bg_reserved

ULONG

Пълнеж

Размерът на описанието на блоковата група може да се изчисли като (размер_на_група_блок_в_екст2 * брой_групи) / размер_на_блок(ако е необходимо кръгло).

Информацията, съхранена в описанието на групата, се използва за намиране на растерните карти на блока и inode, както и таблицата на inode. Не забравяйте, че блоковете и групите от блокове са номерирани, започвайки от 1.

Блоковото растерно изображение е структура, в която всеки бит показва дали съответният блок е разпределен към файл. Ако битът е 1, тогава блокът е зает. Тази карта се използва за търсене на свободни блокове в случаите, когато е необходимо да се разпредели място за файл.Растерното изображение на блока заема брой блокове, равен на (брой_блокове_в_група / 8) / размер_на_блок(ако е необходимо кръгло).

Растерната карта на inode изпълнява подобна функция на таблицата на inode: показва кои inode се използват.

Следващата област в структурата на блоковата група се използва за съхраняване на таблицата с inode на файла. Структурата на самия inode е разгледана по-подробно в следващия подраздел.

Е, и накрая, цялото останало пространство в групата блокове се разпределя за съхраняване на действителните файлове.

Файлова системаВътр 2 се характеризира с:

  • йерархична структура,
  • координирана обработка на масиви от данни,
  • динамично файлово разширение,
  • защита на информацията във файлове,
  • третиране на периферни устройства (като терминали и лентови устройства) като файлове.

Представяне на вътрешни файлове

Всеки файл в системата Ext 2 има уникален индекс. Индексът съдържа информацията, необходима на всеки процес за достъп до файла. Процесите осъществяват достъп до файлове, като използват добре дефиниран набор от системни извиквания и идентифицират файла с низ от знаци, който действа като квалифицирано име на файл. Всяко съставно име уникално идентифицира файл, така че системното ядро ​​преобразува това име във файлов индекс.Индексът включва таблица с адреси, където се намира информацията за файла на диска. Тъй като всеки блок на диска се адресира със собствен номер, тази таблица съхранява колекция от номера на дискови блокове. За да увеличи гъвкавостта, ядрото добавя файл един блок наведнъж, позволявайки информацията за файла да бъде разпръсната из цялата файлова система. Но това оформление усложнява задачата за търсене на данни. Адресната таблица съдържа списък с номера на блокове, съдържащи информация, принадлежаща на файл, но прости изчисления показват, че линеен списък от файлови блокове в индекс е труден за управление. За да може структурата на малък индекс да позволява работа с големи файлове, таблицата с адреси на дискови блокове се привежда в съответствие със структурата, показана на фигура 1

Повечето файлове в система Ext 2 не са по-големи от 10 KB или дори 1 KB!Тъй като 10 KB от файл се намират в блокове за директно адресиране, повечето от данните, съхранени във файловете, могат да бъдат достъпни с достъп до един диск. Следователно, за разлика от достъпа до големи файлове, работата с файлове със стандартен размер е бърза.

Файлови inodes

Всеки файл на диска е свързан с един и само един файлов inode, който се идентифицира с неговия пореден номер - файловия индекс. Това означава, че броят на файловете, които могат да бъдат създадени във файлова система, е ограничен от броя на inodes, който или е изрично посочен при създаването на файловата система, или се изчислява въз основа на физическия размер на дяла на диска. Inodes съществуват на диска в статична форма и ядрото ги чете в паметта, преди да работи с тях.

Inode на файла има следната структура:

Име на полето

Тип

Описание

I_mode

USHORT

Типът и правата за достъп до този файл.

I_uid

USHORT

Идентификатор на собственика на файла (Owner Uid).

I_size

ULONG

Размер на файла в байтове.

I_atime

ULONG

Час на последния достъп до файла (Access time).

I_ctime

ULONG

Време за създаване на файл.

I_mtime

ULONG

Час на последната модификация на файла.

I_dtime

ULONG

Време за изтриване на файл.

I_gid

USHORT

ID на групата (GID).

I_links_count

USHORT

Връзките се броят.

I_blocks

ULONG

Броят на блоковете, заети от файла.

I_flags

ULONG

Файлови флагове (файлови флагове)

I_reserved1

ULONG

Запазено за OS

I_block

ULONG

Указатели към блокове, в които се записват файлови данни (пример за директно и непряко адресиране на фиг. 1)

I_версия

ULONG

Версия на файла (за NFS)

I_file_acl

ULONG

ACL файл

I_dir_acl

ULONG

ACL на директория

I_faddr

ULONG

Адрес на фрагмент

I_frag

УЧАР

Номер на фрагмента

I_fsize

УЧАР

Размер на фрагмента

I_pad1

USHORT

Пълнеж

I_reserved2

ULONG

Запазено

Полето тип файл и права за достъп е двубайтова дума, всеки бит от която служи като флаг, указващ връзката на файла с конкретен тип или настройката на едно конкретно право на файл.

Идентификатор

Значение

Предназначение на флага (поле)

S_IFMT

F000

Маска за тип файл

S_IFSOCK

A000

Домейн сокет

S_IFLNK

C000

S_IFREG

8000

Обикновен файл

S_IFBLK

6000

Блоково ориентирано устройство

S_IFDIR

4000

Каталог

S_IFCHR

2000

Байт-ориентирано (символно) устройство

S_IFIFO

1000

Именувана тръба (FIFO)

S_ISUID

0800

SUID - промяна на бита на собственика

S_ISGID

0400

SGID - бит за промяна на групата

S_ISVTX

0200

Бит за запазване на задачи (залепващ бит)

S_IRWXU

01C0

Маска на правата на собственик на файл

S_IRUSR

0100

Право на четене

S_IWUSR

0080

Пиши правилно

S_IXUSR

0040

Право на изпълнение

S_IRWXG

0038

Маска за групови права

S_IRGRP

0020

Право на четене

S_IWGRP

0010

Пиши правилно

S_IXGRP

0008

Право на изпълнение

S_IRWXO

0007

Маска на правата на други потребители

S_IROTH

0004

Право на четене

S_IWOTH

0002

Пиши правилно

S_IXOTH

0001

Право на изпълнение

Сред inode има няколко inode, които са запазени за специални цели и играят специална роля във файловата система. Това са следните дескриптори

Идентификатор

Значение

Описание

EXT2_BAD_INO

Inode, който изброява адресите на лоши блокове на диска (Bad blocks inode)

EXT2_ROOT_INO

Inode на основната директория на файловата система (Root inode)

EXT2_ACL_IDX_INO

ACL inode

EXT2_ACL_DATA_INO

ACL inode

EXT2_BOOT_LOADER_INO

Inode на зареждащото устройство

EXT2_UNDEL_DIR_INO

Възстановяване на inode на директорията

EXT2_FIRST_INO

Първи нерезервиран inode

Най-важният манипулатор в този списък е манипулаторът на основната директория. Този манипулатор сочи към основната директория, която, както всички директории, се състои от записи със следната структура:

Име на полето

Тип

Описание

Inode

ULONG

номер на inode на файла

rec_len

USHORT

Дължина на този запис

name_len

USHORT

Дължина на името на файла

Име

CHAR

Име на файл

Отделен запис в директория не може да пресича границата на блок (тоест трябва да се намира изцяло в рамките на един блок). Следователно, ако следващият запис не се побира изцяло в даден блок, той се прехвърля в следващия блок, а предишният запис продължава, така че да запълни блока до края.

Фигура 1 Блокове за пряко и индиректно адресиране в индекса

Фигура 2 Размер на файла в байтове с размер на блока 1 KB

Фигура 3. Пример за дисков индекс

Фигура 3 показва дисковия индекс на определен файл. Този индекс принадлежи на обикновен файл, чийто собственик е "mjb" и чийто размер е 6030 байта. Системата позволява на потребителя "mjb" да чете, пише и изпълнява файла; членовете на групата "os" и всички други потребители имат право само да четат или изпълняват файла, но не и да записват данни в него. Файлът е прочетен за последен път на 23 октомври 1984 г. в 13:45 ч. и последно е писан на 22 октомври 1984 г. в 10:30 ч. Индексът е последно модифициран на 23 октомври 1984 г. в 13:30 ч., въпреки че по това време във файла не е записана информация. Ядрото кодира всички горепосочени данни в индекс. Обърнете внимание на разликата при записване на диск на съдържанието на индекса и съдържанието на файла. Съдържанието на файл се променя само когато се извърши запис във файла. Съдържанието на индекса се променя както при промяна на съдържанието на файла, така и при промяна на собственика на файла, правата за достъп и набора от указатели. Промяната на съдържанието на файл автоматично води до коригиране на индекса, но коригирането на индекса не означава промяна на съдържанието на файла.

Каталози

Директориите са файловете, от които се изгражда йерархичната структура на файловата система; те играят важна роля при превръщането на името на файла в индексен номер. Директорията е файл, чието съдържание е набор от записи, състоящи се от индексен номер и име на файл, включени в директорията. Квалифицираното име е низ от знаци, завършващ с нулевия знак и разделен с наклонена черта ("/") на множество компоненти. Всеки компонент с изключение на последния трябва да бъде името на директория, но последният компонент може да бъде името на файл, който не е директория. В UNIX версия V дължината на всеки компонент е ограничена до 14 знака; По този начин, заедно с 2 байта, разпределени за номера на индекса, размерът на записа в директорията е 16 байта.

Байт отместване
вътре в директорията

Индекс номер
(2 байта)

Имефайл

1798

в него

1276

fsck

clri

1268

motd

1799

монтиране

mknod

2114

passwd

1717

umount

1851

контролен списък

fsdbld

конфиг

1432

Гети

катастрофа

mkfs

Фигура 4 /etc формат на директория

Фигура 4 показва формата на директорията "etc". Всяка директория съдържа файлове, чиито имена са обозначени с точка и две точки ("." и "..") и чиито индексни номера съвпадат съответно с индексните номера на дадената директория и родителската директория. Индексен номер за файл "." в директорията "/etc" има адрес при отместване 0 и стойност 83. Номерът на inode за файла ".." има адрес при отместване 16 от началото на директорията и стойност 2. Записите в директорията може да е празна, но номерът на inode е 0. Например, записът на адрес 224 в директорията "/etc" е празен, въпреки факта, че някога е съдържал входна точка за файл, наречен "crash". Програмата mkfs инициализира файловата система, така че номерата на inode за файловете да са "." и ".." в главната директория са същите като номера на главния индекс на файловата система.

Ядрото съхранява данни в директория точно както в обикновен тип файл, използвайки индексна структура и блокове с нива на пряко и индиректно адресиране. Процесите могат да четат данни от директории по същия начин, по който четат обикновени файлове, но изключителният достъп за запис в директорията е запазен от ядрото, което гарантира, че структурата на директорията е правилна. Разрешенията за директория имат следното значение: разрешението за четене дава на процесите възможност да четат данни от директорията; разрешението за запис позволява на процес да създава нови записи в директория или да премахва стари (използвайки системните операции creat, mknod, link и unlink), като по този начин променя съдържанието на директорията; Правото за изпълнение позволява на процес да търси в директория по име на файл (тъй като "изпълнението" на директория е безсмислено).

Когато даден процес използва файлов път, ядрото търси в директориите съответния номер на inode. След като името на файла е преобразувано в номер на inode, inode се поставя в паметта и след това се използва в следващите заявки.

Концепцията за файлови системи Unix включва концепцията за връзка. Един inode може да бъде свързан с множество имена на файлове. Дескрипторът съдържа поле, което съхранява номера, с който е свързан файлът. Добавянето на връзка се състои в създаване на запис в директория, където номерът на inode сочи към друг inode, и увеличаване на брояча на връзките в inode. Когато връзката бъде премахната, ядрото намалява брояча на връзката и премахва манипулатора, ако броячът стане нула.

Такива връзки се наричат ​​твърди връзки и могат да се използват само в рамките на една файлова система (не можете да създадете връзка за файл от друга файлова система). Освен това твърда връзка може да сочи само към файл (твърда връзка към директория може да причини цикъл във файловата система).

В повечето Unix системи има друг тип връзка. Тези връзки, съдържащи само името на файла, се наричат ​​символни. Когато ядрото обработва такива връзки, когато преобразува пътя на файла в inode, ядрото замества името на връзката със съдържанието на inode (т.е. името на целевия файл) и преинтерпретира пътя на файла. Тъй като символната връзка не сочи към inode, е възможно да се създават връзки към файлове, разположени на друга файлова система. Тези връзки могат да сочат към всеки тип файл, дори несъществуващи. Символните връзки са широко използвани, защото нямат същите ограничения, които имат твърдите връзки. Те обаче заемат малко място на диска, където се намират inode и блоковете с данни. Тяхното използване може да доведе до известно забавяне при преобразуването на файловия път в inode, поради факта, че ядрото трябва да интерпретира повторно файловия път, когато обработва символна връзка.

Файлове на устройството

В Unix-подобни операционни системи достъпът до устройствата се осъществява чрез специални файлове. Такъв файл не заема място във файловата система. Това е само точка за достъп до драйвера на устройството.

Има два типа файлове на устройството: символни и блокови. Когато използвате символен тип, е възможно да обменяте данни с устройството само в символен режим, докато файловете на устройство от блоков тип позволяват само блокове да се обменят с помощта на буфер. Когато се направи I/O заявка към файл на устройство, заявката се препраща към съответния драйвер на устройството. Всеки такъв файл има голям номер, който идентифицира типа на устройството, и вторичен номер, който идентифицира самото устройство.

Допълнителни функции на EXT2fs

В допълнение към стандартните функции на Unix, EXT2fs предоставя някои допълнителни функции, които обикновено не се поддържат от файловите системи на Unix.

Атрибутите на файла ви позволяват да промените начина, по който ядрото реагира при работа с набори от файлове. Можете да зададете атрибути на файл или директория. Във втория случай файловете, създадени в тази директория, наследяват тези атрибути.

По време на монтирането на системата може да бъдат зададени някои функции, свързани с файловите атрибути. Опцията за монтиране позволява на администратора да избира как да се създават файловете. В специфична за BSD файлова система файловете се създават със същия групов идентификатор като родителската директория. Характеристиките на System V са малко по-сложни. Ако дадена директория има зададен бит setgid, тогава създадени файловенаследяват идентификатора на групата на тази директория, а поддиректориите наследяват идентификатора на групата и бита setgid. В противен случай файловете и директориите се създават с ID на основната група на извикващия процес.

Системата EXT2fs може да използва синхронна модификация на данни, подобна на BSD система. Опцията за монтиране позволява на администратора да укаже, че всички данни (inodes, битови блокове, индиректни блокове и блокове на директория) се записват на диска синхронно, когато се променят. Това може да се използва за постигане на висок капацитет за запис на данни, но също така води до лоша производителност. В действителност тази функция обикновено не се използва, тъй като освен влошаване на производителността, може да доведе до загуба на потребителски данни, които не са маркирани при проверка на файловата система.

EXT2fs ви позволява да изберете размера на логическия блок, когато създавате файлова система. Може да бъде с размер 1024, 2048 или 4096 байта. Използването на по-големи блокове води до по-бързи I/O операции (тъй като се правят по-малко заявки за диск) и следователно по-малко движение на главата. От друга страна, използването на големи блокове води до загуба на дисково пространство. Обикновено последният блок на файл не се използва напълно за съхраняване на информация, така че с увеличаването на размера на блока количеството загубено дисково пространство се увеличава.

EXT2fs ви позволява да използвате ускорени символни връзки. При използване на такива връзки не се използват блокове с данни на файловата система. Името на целевия файл не се съхранява в блока с данни, а в самия inode. Тази структура ви позволява да спестите дисково пространство и да ускорите обработката на символни връзки. Разбира се, мястото, запазено за манипулатор, е ограничено, така че не всяка връзка може да бъде представена като ускорена връзка. Максималната дължина на име на файл в ускорена връзка е 60 знака. В близко бъдеще се планира да се разшири тази схема за малки файлове.

EXT2fs следи състоянието на файловата система. Ядрото използва отделно поле в суперблока, за да посочи състоянието на файловата система. Ако файловата система е монтирана в режим на четене/запис, тогава нейното състояние е зададено на „Нечисто“. Ако бъде демонтиран или монтиран отново в режим само за четене, тогава състоянието му е зададено на „Чист“. По време на зареждане на системата и проверки на състоянието на файловата система, тази информация се използва, за да се определи дали е необходима проверка на файловата система. Ядрото също поставя някои грешки в това поле. Когато ядрото открие несъответствие, файловата система се маркира като "Грешна". Инструментът за проверка на файловата система тества тази информация, за да провери системата, дори ако състоянието й действително е Чиста.

Пренебрегването на тестването на файловата система за дълго време понякога може да доведе до някои трудности, така че EXT2fs включва два метода за редовна проверка на системата. Суперблокът съдържа брояча за монтиране на системата. Този брояч се увеличава всеки път, когато системата се монтира в режим на четене/запис. Ако стойността му достигне максимума (също се съхранява в суперблока), тогава програмата за тестване на файловата система започва да го проверява, дори ако състоянието му е "Чисто". Последното време за проверка и максималния интервал между проверките също се съхраняват в суперблока. Когато се достигне максималния интервал между сканиранията, състоянието на файловата система се игнорира и сканирането започва.

Системата EXT2fs съдържа инструменти за нейното конфигуриране. Програмата tune2fs може да се използва за промяна на:

  • действия при откриване на грешка. Когато ядрото открие несъответствие, файловата система се маркира като „Грешна“ и може да се извърши едно от следните три действия: продължаване на изпълнението, повторно монтиране на файловата система в режим само за четене, за да се избегнат повреди, или рестартиране на системата, за да се провери файлова система.
  • максимална стойност на монтиране.
  • максимален интервал между проверките.
  • брой логически блокове, запазени за root потребителя.

Опциите, определени при монтиране, могат също да се използват за промяна на това, което ядрото прави, когато открие грешка.

Използването на атрибути позволява на потребителите да изтриват чувствителни файлове. Когато такъв файл бъде изтрит, произволна информация се записва в блоковете, които преди са били използвани за поставяне на този файл. Това не позволява на външни лица да получат достъп до предишното съдържание на този файл с помощта на дисков редактор.

Наскоро бяха добавени нови типове файлове към системата EXT2fs, взети от файловата система 4.4 BSD. Файловете от първия тип могат да се използват само за четене: никой няма право да ги променя или изтрива. Това може да се използва за защита на важни конфигурационни файлове. Друг тип файл е файл, който може да се отваря в режим на запис и данните могат да се добавят само в края на файла. Файлове от този тип също не могат да бъдат изтривани или преименувани. Те могат да се използват като лог файлове, които могат само да растат по размер.

Оптимизация на производителността

Системата EXT2fs съдържа много функции, които оптимизират нейната производителност, което води до повишена скорост на обмен на информация при четене и писане на файлове.

EXT2fs активно използва дисковия буфер. Когато един блок трябва да бъде прочетен, ядрото изпраща заявка за I/O операция към няколко съседни блока. По този начин ядрото се опитва да се увери, че следващият блок за четене вече е зареден в дисковия буфер. Такива операции обикновено се извършват при последователно четене на файлове.

Системата EXT2fs съдържа и голям брой оптимизации за разполагане на информация. Групите блокове се използват за групиране заедно на съответните inode и блокове с данни. Ядрото винаги се опитва да постави блоковете с данни на един файл в една и съща група, както и неговия дескриптор. Това има за цел да намали движението на главите на устройството при четене на дескриптора и съответните му блокове данни.

Когато записва данни във файл, EXT2fs предварително разпределя до 8 последователни блока, когато разпределя нов блок. Този метод ви позволява да постигнете висока производителност при голямо натоварване на системата. Това също позволява файловете да се поставят в съседни блокове, което ускорява последващото им четене.

Библиотека EXT2fs

За да се опрости използването на ресурсите на EXT2fs и работата на контролните структури на тази файлова система, беше разработена библиотеката libext2fs. Тази библиотека съдържа функции, които могат да се използват за дефиниране и модифициране на данни на файловата система EXT2 чрез директен достъп до физическото устройство.

Повечето помощни програми EXT2fs (mke2fs, e2fsck, tune2fs, dumpe2fs, debugfs и др.) използват тази библиотека. Това значително опростява модифицирането на тези помощни програми, тъй като всички промени за въвеждане на допълнителни възможности във файловата система EXT2fs трябва да се правят само в библиотеката EXT2fs.

Тъй като интерфейсът на библиотеката EXT2fs е доста широк и абстрактен, програмите, които изискват директен достъп до файловата система, могат лесно да бъдат написани с негова помощ. Например, библиотеката EXT2fs беше използвана по време на прехвърлянето на дъмпа на 4.4 BSD и възстановяването на някои помощни програми. Бяха необходими много малко промени, за да се адаптират тези инструменти към Linux (трябваше да заменим няколко функции, взаимодействащи с файловата система, с извиквания към библиотеката EXT2fs).

Библиотеката EXT2fs осигурява достъп до операциите на няколко класа. Първият клас са операции, свързани с файловата система. Всяка програма може да отваря или затваря файлова система, да чете или записва блок от битове или да създава нова файлова система на диск. Има и функции за манипулиране на списък с лоши блокове на файловата система.

Вторият клас операции работи с директории. Програма, използваща библиотеката EXT2fs, може да създава или разширява директория, както и да добавя или изтрива записи в директория. Има функции както за определяне на пътя до файл с помощта на inode, така и за определяне на пътя до файл с помощта на определен дескриптор.

Последният клас операции работи с манипулатори на индекси. Възможно е да се прочете таблицата с дескриптори, да се прочете или напише дескриптор и да се видят всички блокове на посочения дескриптор. Възможно е да се използват функции за поставяне и освобождаване на блокове и дескриптори.

Системни инструменти EXT2fs

За системата EXT2fs са разработени мощни контроли. Тези инструменти се използват за създаване, модифициране и коригиране на всякакви несъответствия във файловите системи EXT2fs. Програмата mke2fs се използва за монтиране на дисков дял, съдържащ празна файлова система EXT2fs.

Програмата tune2fs може да се използва за конфигуриране на параметрите на файловата система.С нейна помощ можете да промените реакцията на грешки, максималния брой монтирания на системата, максималния интервал между системните проверки и броя на логическите блокове, запазени за root потребителя.

Може би най-интересният инструмент е инструментът за проверка на файловата система. E2fsck е предназначен да елиминира несъответствия във файловата система след неточно изключване на цялата система. Първоначалната версия на програмата e2fsck е базирана на програмата Linus Torvald fsck за файловата система Minix. Текущата версия на програмата обаче е пренаписана с помощта на библиотеката EXT2fs и е по-бърза и може да коригира повече грешки в системата при проверка в сравнение с оригиналната версия.

Програмата e2fsck е проектирана да работи с максимална скорост. Тъй като програмите за проверка на файловата система водят до зареждане на диска, алгоритмите на e2fsck трябва да бъдат оптимизирани, така че структурите на файловата система да се осъществяват много по-рядко. И в допълнение, редът на проверка на inodes и директории ще се изпълнява по номер на блок, за да се намали времето, необходимо за преместване на главите на дисковите устройства.

При първото преминаване e2fsck преминава през всички inode на файловата система и разглежда всеки inode като отделен системен елемент. По този начин други обекти на файловата система не се проверяват по време на това тестване. Една от целите на такива проверки е да се провери съществуването на типа на проверявания файл, както и съответствието на всички блокове в дескриптора с блокове със съществуващи номера. Първото преминаване проверява битовите карти, показващи използването на блокове и дескриптори.

Ако e2fsck намери блокове с данни, чиито номера се съдържат в повече от един дескриптор, тогава преминаванията от 1B до 1D се изпълняват, за да се разреши несъответствието, или чрез увеличаване на блоковете за споделяне, или чрез премахване на един или повече дескриптори.

Първото преминаване отнема най-много време, тъй като всички inodes трябва да бъдат прочетени в паметта и проверени. За да се намали времето на входно-изходните операции в следващите преминавания, цялата необходима информация остава в буфера. Характерна особеност на тази схема е търсенето на всички блокове директории на файловата система. За да се получи тази информация, при второто преминаване дескрипторните структури на всички директории във файловата система се четат отново.

При второто преминаване директориите се проверяват като отделни елементи на файловата система. Всеки блок директория се проверява отделно, без препратка към други блокове директория. Това позволява на e2fsck да сортира всички блокове на директория по номер на блок и да ги проверява във възходящ ред, като по този начин намалява времето за достъп до диска. Блоковете на директорията се тестват, за да се гарантира, че техните записи са валидни и че съдържат препратки към манипулатори със съществуващи номера (както е определено при първото преминаване).

За първия блок на директория във всеки дескриптор на директория се проверява съществуването на записи "." и "..", и че номерът на дескриптора за записа "." съответства на текущата директория. (Номерът на дескриптора за записа ".." не се тества до третото преминаване.)

По време на второто преминаване информацията, съответстваща на родителската директория, се съхранява в буфер.

Трябва да се отбележи, че до края на второто преминаване почти всички I/O операции на диска са завършени. Цялата информация, необходима за третото, четвъртото и петото преминаване, се съдържа в паметта, но останалите преминавания натоварват процесора и заемат по-малко от 5-10% от общото време за изпълнение на e2fsck.

При третото преминаване се проверяват връзките към директорията. E2fsck проверява пътищата на всяка директория към корена, използвайки информацията, получена по време на второто преминаване. Тук се проверява записът ".." за всяка директория. Всички директории, идентифицирани след проверка и нямащи връзка с основната директория, се поставят в директорията /lost+found.

В четирите времена E2FSCK достига референциите за всеки дескиптоп на индекса чрез прилагане на всички дескипти и интерпретацията на референциите (тази информация е следобед) с местните измервателни уреди, чиито стойности са изчислени в останалата част вторият и вторият ход. Всички неизтрити файлове с брой препратки нула също се поставят в директорията /lost+found.

И накрая, в петия проход, e2fsck проверява дали цялата информация за файловата система съвпада. Тук растерните изображения на блокове и дескриптори, получени в предишни преминавания, се сравняват с действителните стойности и, ако е необходимо, информацията на диска се коригира съответно.

Друг полезен инструмент е дебъгерът на файловата система. Debugfs е мощна програма, която ви позволява да определяте и задавате състоянието на файловата система. По същество това е интерактивен интерфейс към библиотеката EXT2fs, т.е. превежда въведените команди в извиквания на библиотечни функции.

Debugfs може да се използва за определяне на вътрешната структура на файлова система, ръчно поправяне на повредена система или създаване на условни тестове за e2fsck. За съжаление, тази програма може да повреди файловата система, ако не знаете как да я използвате. С помощта на този инструмент можете просто да унищожите файловата система. Следователно debugfs отваря файловата система в режим само за четене по подразбиране. За достъп в режим на четене/запис посочете опцията -w.

Изчисляване на производителността

Резултатите от теста на Bonnie могат да се видят от следната таблица:

Запис символ по знак (Kb/s)

Блоков запис (Kb/s)

Презапис (Kb/s)

Четене символ по знак (Kb/s)

Четене на блок (Kb/s)

BSD Async

BSD синхронизиране

Ext2fs

1237

1033

Xia fs

Резултатите са доста добри за блок I/O: системата EXT2fs превъзхожда други системи по отношение на производителността. Това се дължи на оптимизациите, включени в процедурите за настаняване. Записването също става доста бързо, поради факта, че се извършва в групов режим. Високата скорост на четене се дължи на факта, че блоковете са разпределени към файла, така че главите на устройството не се движат между две четения и оптимизацията за предварително четене е напълно работеща.

От друга страна, системата FreeBSD има по-висока производителност за символен I/O. Това може да се дължи на факта, че FreeBSD и Linux използват различни процедури за съответните C библиотеки. Освен това FreeBSD най-вероятно има по-оптимизирана библиотека за символно четене и следователно производителността тук е малко по-добра.

Резултати от теста на Андрю

Резултатите от теста на Андрю могат да се видят от следната таблица:

Пасаж 1 Сътворение

Преминаване 2 Копие

Пасаж 3 Проверка на състоянието

Преминете проверката 4 байт по байт

Пасаж 5 Компилация

2203

7391

6319

17466

75314

BSD синхронизиране

2330

7732

6317

17499

75681

Ext2fs

Резултатите от първите две преминавания показват, че Linux печели с асинхронен обмен на данни. Когато създава директории и файлове, системата BSD записва манипулатори на директории и записи в директории синхронно. Има спекулации, че асинхронната поддръжка за FreeBSD все още не е напълно внедрена.

При третото преминаване стойностите за Linux и BSD са много сходни. Въпреки че BSD работи по-добре, добавянето на буфер за имена на файлове към Linux VFS елиминира този проблем.

При четвъртото и петото преминаване Linux е по-бърз от FreeBSD, главно поради използването на унифицирано управление на буфера. Размерът на буфера може да нараства според нуждите и да заема повече памет от FreeBSD, която използва фиксиран размер. Сравнението на резултатите от системите EXT2fs и Xia fs показва, че оптимизациите, включени в EXT2fs, действително се използват: разликата в производителността на тези системи е около 5-10%.

Заключение

Файловата система EXT2 е най-широко използваната сред потребителите на Linux. Той предоставя стандартни функции на Unix и допълнителни функции. Освен това, благодарение на оптимизацията, включена в ядрото, той показва отлични резултати в производителността.

Системата EXT2fs включва функции, които ви позволяват да добавяте нови възможности. Някои хора работят върху разработването на разширения към реалната файлова система: Posix ACL, възстановяване изтрити файловеи компресиране на файлове в реално време.

Първо системата EXT2fs беше интегрирана в ядрото на Linux и сега активно се пренася към други операционни системи. EXT2fs също е важен компонент на операционната система Masix, която в момента се разработва от един от авторите.


Връх