Нуждата от дефрагментиране на файловите системи под Linux

Игра на файлове

Игра на файлове

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

Файловите системи при компютрите представлява начина на съхранение и организиране на файлове и данни върху устройство за съхранение на данни с цел по – лесни откриване и достъп до информацията. Могат да се класифицират по много различни признаци – локални/отдалечени, реални/виртуални, счупени/работещи …

 

На компютърните специалисти са известни огромен брой типове файлове системи. Те решават различни задачи и работят със строго определени операционни системи. Такива са например NTFS (New Technology File System) – за Windows NT базирани операционни системи, ext3 – за Linux, FAT32 – достъпна за почти всички операционни системи и широко използвана за устройства като USB памети, SD-карти.

 

Обект на моите размисли е нуждата от дефрагментиране на файловите системи предвидени за работа с Linux. Тук ще направя бележки, че Linux може да бъде инсталиран не само върху предвидените за целта файлови системи (ext2, ext3, ext4, ReiserFS, …), но също така и върху FAT32 и NTFS, но това са изключения за които услужливо ще си затворя очите.

Устройство на твърдия диск

Устройство на диска

Устройство на диска

Основните части от които е съставен твърдия диск са:

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

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

За да бъде по – лесно за обяснение, ще представя файловата система върху твърдия диск като решетка от квадратни блокове във всеки от който може да бъде записана съответно количество информация. На картинката “Празен диск” е показана графична схема на празна файлова система. Квадрата (блока) “A1″ представлява началото на файловата система, а “T20″ – края.

empty-table

Празен диск

Демонстрация

Първо ще разгледаме как FAT32 подрежда файловете и данните върху твърдия диск. Ще използваме два файла – hello.txt и bye.txt. Идеологията на FAT32 файловата система е да съхранява данните и файловете в началото на файловата система – колко се може по – близко до физическото начало на диска. Целта е главата (рамото носещо главата) да се движи колкото се може по – малко – т.е. записите върху ТД да бъдат намирани възможно най – бързо. Ето какво се случва, когато върху диска запишем нашите два файла (виж фиг. “FAT32: Два файла”):

fat32-two-files1

FAT32: Два файла

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

Какво обаче ще се случи, ако се наложи да редактираме файла hello.txt – първия файл. Има два подхода за решаването на този случай:

  1. Изтриваме оригиналния файл и записваме новия – по – голям файл веднага след втория файл. В този случай трябва да бъдат изпълнени редица изтривания и записвания върху ТД. Това ще доведе до значително увеличаване на времето за записване на данните върху носителя (виж фиг. “FAT32 “Преместен файл”).
  2. Разделяме файла на части така, че файла да съществува на две места. Бързо за записване, но всяко последващо достъпване (прочитане) до файла ще отнема повече време. (виж фиг. FAT32: “Фрагментиран файл”)
FAT32: Преместен файл

FAT32: Преместен файл

FAT32: Фрагментиран файл

FAT32: Фрагментиран файл

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

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

Коментари закрити.