Кіріспе

Қатты дискідегі секторларды біріктірілген бөліктерге қайта орналастыру

Файл жүйелерін күтіп ұстау кезінде дефрагментация – бұл фрагментация деңгейін төмендететін процесс. Ол файлдарды сақтау үшін қолданылатын жаппай сақтау құрылғысының мазмұнын ең аз сандағы біріктірілген аймақтарға (фрагменттер, экстенттер) физикалық түрде ұйымдастыру арқылы жүзеге асырылады. Сонымен қатар, фрагментацияның қайта пайда болуына кедергі келтіру үшін тығыздауды қолдана отырып, бос орынның үлкен аймақтарын жасауға тырысады. Кейбір дефрагментация құралдары кішкентай файлдарды бір каталогта сақтауға ұмтылады, себебі олар көбінесе реттілікпен қол жеткізіледі. Дефрагментация электромеханикалық дискілердегі (қатты дискілер, дискеттер және оптикалық дискілер) файл жүйелері үшін пайдалы және маңызды. Фрагменттелген файлдарға қол жеткізген кезде қатты дискінің оқу/жазу басының дискінің әртүрлі аймақтарында жылжуы, оқу/жазу басын басқа фрагменттерді іздеу үшін жылжытпай, біртіндеп фрагменттелмеген файлдың барлық мазмұнына қол жеткізуге қарағанда баяу болады.

Фрагментацияның себептері

Фрагментация файлдық жүйе толық файлды бір бөлік ретінде сақтау үшін жеткілікті үздіріссіз орынды бөле алмағанда немесе бөлмегенде пайда болады, бірақ оның бөліктерін қолданыстағы файлдар арасындағы бос кеңістіктерге орналастырады (әдетте, бұл бос кеңістіктер бұрын файлдық жүйе кейін жойған файлды ұстағандықтан немесе файлдық жүйе бастапқыда файл үшін артық орын бөлгендіктен туындайды). Жиі қосылатын файлдар (мысалы, журнал файлдары), сондай-ақ файлдарды жиі қосу және жою (электрондық пошта мен веб-браузер кэші сияқты), үлкен файлдар (видеолар сияқты) және көптеген файлдар фрагментацияға және оның салдарынан туындайтын өнімділіктің төмендеуіне ықпал етеді. Дефрагментация осы мәселелерді жеңілдетуге бағытталған.

Жеңілдіктер

Фрагменттеу – файлдық кеңейтімдерді (физикалық бөлу блоктарын) жылжыту операциясы, осылайша олар біртіндеп біріктіріліп, мүмкіндігінше біреуге тоғысады. Мұндай операцияны жүзеге асыру үшін кемінде екі көшіру операциясы қажет: бірі – блоктарды дискідегі бос орынға жылжыту, екіншісі – блоктарды олардың арналған орнына жылжыту. Мұндай қағида бойынша деректер дискіден ешқашан жойылмайды, сондықтан қуат жоғалу жағдайында да операцияны қауіпсіз тоқтатуға болады. Мақаладағы сурет мысал келтіреді. Дискіні фрагменттеу үшін фрагменттеу бағдарламалық құралы (немесе «дефрагментатор») файлдарды қолданыстағы бос орын шегінде ғана жылжыта алады. Бұл күрделі операция, сондықтан бос орын аз немесе мүлдем жоқ файлдық жүйеде оны орындау мүмкін емес. Фрагменттеу кезінде жүйе тиімділігі төмендейді, сондықтан файлдық жүйенің күтпеген өзгерістерінен дефрагментатор шатаспауы үшін процеске кедергі келтірмеу керек. Қолданылатын алгоритмге байланысты бірнеше рет өңдеу тиімді болуы мүмкін немесе болмауы мүмкін. Фрагменттеу кезіндегі қайта ұйымдастыру файлдардың логикалық орналасуын өзгерте алмайды (директория құрылымындағы орналасуы ретінде анықталады). Бағдарлама файлдарын фрагменттеуден басқа, фрагменттеу құралы бағдарламаларды жүктеу және файлдарды ашу жылдамдығын қысқарта алады. Мысалы, Windows 9x дефрагментаторы Intel Application Launch Accelerator қамтыды, ол дефрагменттелген бағдарлама файлдарын және олардың тәуелділіктерін бағдарламаларды жүктеу ретімен дискіде орналастыру арқылы бағдарламаларды оңтайландырады, осылайша оларды жылдам жүктеуге мүмкіндік береді. Windows жүйесінде жақсы дефрагментатор Prefetch файлдарын оқып, осы файлдық топтардың мүмкіндігінше көп санын анықтап, олардың ішіндегі файлдарды қолжетімділік тізбегімен орналастырады. Қатты дискінің басындағы сыртқы тректер ішкі тректерге қарағанда жоғары деректер беру жылдамдығына ие. Жиі қолданылатын файлдарды сыртқы тректерге орналастыру тиімділікті арттырады. MyDefrag сияқты үшінші тараптың дефрагментаторлары жиі қолданылатын файлдарды сыртқы тректерге көшіріп, оларды фрагменттей алады. Қазіргі заманғы қатты дискілердегі RAM кэші, табақтың жылдам айналуы, командаларды кезекке қою (SCSI/ATA TCQ немесе SATA NCQ) және деректердің жоғары тығыздығы фрагментацияның жүйе тиімділігіне тигізетін теріс әсерін белгілі бір деңгейде азайтады, бірақ жиі қолданылатын деректер көлемінің артуы бұл артықшылықтарды жояды. Дегенмен, қазіргі жүйелер қазіргі қолданыстағы үлкен дискілік сыйымдылықтан үлкен пайда көреді, себебі жартылай толтырылған дискілер толық дискілерге қарағанда аз фрагменттеледі, ал жоғары сыйымдылықтағы HDD-де сол бөлім цилиндрлердің кішігірім диапазонын алады, нәтижесінде іздеу жылдамдығы артады. Алайда, орташа қолжетімділік уақыты табақтың жарты айналымынан ешқашан төмен болмайды, ал табақтың айналуы (rpm өлшемдерінде) ондаған жылдар бойы ең баяу өсімді көрсеткен HDD сипаттамасы болып табылады (деректер беру жылдамдығымен және іздеу уақытымен салыстырғанда), сондықтан іздеу санын азайту көп жағдайда деректерді көп сақтауға арналған қосымшаларда тиімді болып қалады. Дефрагментацияның мәні – файлға ең көп дегенде бір іздеуді қамтамасыз ету, тек іргелес емес тректерге жасалған іздеулерді есепке алу.

Бөлімдеу

Фрагменттеуді оңтайландыру және фрагменттеудің әсерін азайтудың жалпы стратегиясы – қатты дискілерді файл жүйесінің оқу саны жазу санынан көп болатын бөлімдерін, файлдар жиі жасалатын және жойылатын өзгермелі аймақтардан бөлу арқылы жүзеге асыру. Пайдаланушылардың профильдерін қамтитын каталогтар үнемі өзгеріп тұрады (әсіресе Temp каталогы мен веб-браузер кэші бірнеше күн ішінде жойылатын мыңдаған файлдарды құрайды). Егер пайдаланушы профильдеріндегі файлдар жеке бөлімде сақталса (UNIX ұсынылған файл жүйелерінде бұл әдетте /var бөлімінде сақталады), дефрагментатор тиімдірек жұмыс істейді, себебі оған басқа каталогтардағы барлық статикалық файлдарды өңдеудің қажеті болмайды. (Балама ретінде, дефрагментаторға белгілі бір файлдық жолдарды қарапайым түрде назардан тыс қалдыруды тапсыруға болады.) Жазу белсенділігі салыстырмалы түрде аз бөлімдер үшін, алғашқы дефрагментациядан кейін дефрагментация уақыты едәуір жақсарады, өйткені дефрагментатор болашақта тек аз ғана жаңа файлдарды дефрагментациялауға тура келеді.

Желіден тыс бөлшектеу

Қозғалмайтын жүйелік файлдардың болуы, әсіресе ауыстыру файлының, фрагментацияны қиындатуы мүмкін. Бұл файлдарды операциялық жүйе қолданылмайтын кезде қауіпсіз түрде жылжытуға болады. Мысалы, ntfsresize осы файлдарды NTFS бөлімінің көлемін өзгерту үшін жылжытады. PageDefrag құралы Windows жүйелік файлдарын, мысалы ауыстыру файлын және Windows тіркелгісін сақтайтын файлдарды, графикалық интерфейс жүктелу алдында, жүктелу кезінде іске қосып, фрагментациялауға мүмкіндік береді. Windows Vista нұсқасынан бастап бұл мүмкіндік толық қолдау таппады және жаңартылмады. NTFS жүйесінде, дискіге файлдар қосылғанда, жаңа файлдар туралы ақпаратты сақтау үшін Master File Table (MFT) кеңеюі керек. MFT кеңейтілмейтін жағдайға түскенде, қандай да бір файл кедергі келтірсе, MFT фрагмент алады. Windows-тың алғашқы нұсқаларында, бөлім қосылған күйде фрагментациялау қауіпсіз болмағандықтан, Microsoft фрагментациялау API-сіне қатты блок қосты. Алайда, Windows XP нұсқасынан бастап, Windows фрагментациялау API-сі жақсартылғандықтан және қазіргі таңдағы осы жылжыту операциясын қолдайтындықтан, фрагментациялаушылардың саны артып келеді. Жақсартуларға қарамастан, MFT-нің алғашқы төрт кластері Windows фрагментациялау API-сімен жылжымайтын болып қалады. Соның салдарынан, кейбір фрагментациялаушылар MFT-ні екі фрагментте сақтайды: алғашқы төрт кластер дискі форматыланған кезде орналасқан жерінде, ал MFT-нің қалған бөлігі дискінің басында (немесе фрагментациялаушының стратегиясы ең жақсы деп санаған жерде) сақталады.

Қатты күйдегі дискілер

Дәстүрлі электромеханикалық қатты дискіден деректерді оқығанда, дискі контроллері ең алдымен оқу басын, салыстырмалы түрде баяу, нақты фрагмент орналасқан ізге орналастыруы керек, содан кейін фрагмент басқа жеткенше дискінің айналуы күтілуі тиіс. Қатты күйдегі дискі (SSD) қозғалмалы бөліктері жоқ флэш-жадқа негізделген, сондықтан флэш-жадтағы файл фрагментіне кездейсоқ қол жеткізу осы кешігуге ұшырамайды, бұл қол жеткізу жылдамдығын оңтайландыру үшін фрагментацияны қажетсіз етеді. Сонымен қатар, флэш-жадқа тек шектеулі рет жазуға болады, одан кейін ол бұзылуы мүмкін болғандықтан, фрагментация көбінесе зиянды (апаттық сәтсіздікті азайтудан басқа). Дегенмен, Windows файлдық жүйенің фрагментацияға төзімділігінің максималды деңгейіне жетуіне жол бермеу үшін SSD-ді автоматты түрде (бірақ азырақ қарқынмен) фрагменттеуді жалғастырады (метадеректер енді файл фрагменттерін көрсетуге келмейтін кезде). Фрагментацияның максималды шегіне жеткеннен кейін, дискіге жазудың келесі әрекеттері сәтсіз аяқталады.

SMR қатты дискілері

SMR қатты дискілерінің көпшілігі TRIM командасын қабылдаса да, олардың өнімділігін арттыру үшін дефрагментация жасау қажет.

Файл-жүйе түрі бойынша тәсілдер мен фрагменттеушілер

FAT: MS DOS 6.x және Windows 9x жүйелері Defrag деп аталатын фрагменттеу құралымен бірге келеді. DOS нұсқасы – Norton SpeedDisk-тің шектеулі нұсқасы. Windows 9x-пен бірге шыққан нұсқасы Symantec Corporation лицензиясымен, ал Windows 2000 және XP-мен бірге шыққан нұсқасы Condusiv Technologies лицензиясымен шығарылды. NTFS Windows NT 3.1 бағдарламасымен енгізілді, бірақ NTFS файлдық жүйе драйверіне ешқандай фрагментация мүмкіндіктері кірмеген. Windows NT 4.0-де фрагменттеу API-лері енгізілді, олар үшінші тарап құралдары фрагменттеу тапсырмаларын орындауға пайдалана алады; алайда, фрагменттеу бағдарламалық жасақтамасы енгізілген жоқ. Windows 2000, Windows XP және Windows Server 2003-те Microsoft Diskeeper-ге негізделген фрагменттеу құралын қосты, ол фрагменттеу API-лерін пайдаланды және Компьютерлік басқаруға енгізілді. Windows Vista, Windows 7 және Windows 8 бағдарламаларында құрал едәуір жақсартылды және визуалды дискі картасы жоқ жаңа интерфейс берілді және енді Компьютерлік басқарудың бөлігі емес. Microsoft Windows үшін тегін және коммерциялық үшінші тараптың дефрагментация өнімдері де бар. BSD UFS және әсіресе FreeBSD ішкі қайта бөлуді қолданады, ол ақпаратты дискіге жазған сәтте фрагментацияны азайтуға тырысады. Бұл ұзақ уақыт пайдаланылғаннан кейін жүйедегі нашарлауды тиімді түрде бақылайды. Btrfs онлайн және автоматты фрагментация мүмкіндігіне ие. Linux ext2, ext3 және ext4: UFS сияқты бұл файлдық жүйелер фрагментацияны үнемі бақылауда ұстауға арналған бөлу әдістерін қолданады. Нәтижесінде, көптеген жағдайларда фрагментация қажет емес. ext2 өзінің кейінгі ext3 файлымен жұмыс істемейтін e2defrag деп аталатын офлайн дефрагментация құралын қолданады. Алайда, басқа бағдарламалар немесе файлдық жүйеге тәуелсіз defragfs сияқты құралдар ext3 файлдық жүйені фрагменттеу үшін пайдаланылуы мүмкін. ext4 ext3-ке біршама кері үйлесімді, сондықтан дефрагментация бағдарламалары бірдей қолдау көрсетеді. Қазіргі уақытта e4defrag файлдық жүйені, оның ішінде онлайн-дефрагментацияны фрагменттеу үшін пайдалануға болады. VxFS fsadm бағдарламалық жасақтамасын ұсынады, оған фрагментация операциялары кіреді. JFS IBM операциялық жүйелерінде defragfs бағдарламалық қамтамасыз етуіне ие. 1998 жылы Mac OS 8.1 бағдарламасымен енгізілген HFS Plus файлдарды жеке дефрагментаторсыз қолжетімділік кезінде дефрагментациялау үшін бөлу алгоритмдерін оңтайландыруға мүмкіндік береді. Файлдарды "ұшып" фрагменттеуге бірнеше шектеулер бар (оның ішінде 20 МБ дейін). OS X 10.3 кезінен бастап Coriolis Systems компаниясының iDefrag бағдарламасы қол жетімді. Дәстүрлі Mac OS-де фрагментацияны Norton SpeedDisk және TechTool Pro жасай алады. WAFL NetApp-тің ONTAP 7.2 операциялық жүйесінде үлкен файлдарды фрагменттеуге арналған қайта бөлу деп аталатын команда бар. XFS xfs fsr деп аталатын онлайн-дефрагментация құралын ұсынады. SFS фрагменттеу функциясын мүлдем мемлекетсіз (оның жұмыс істейтін жерінен басқа) өңдеуге мүмкіндік береді, сондықтан фрагменттеуді бірден тоқтатып, бастауға болады. ADFS, RISC OS және Acorn Computers қолданған файлдық жүйе файлдарды фрагментациялауды қолмен дефрагментациялауды қажет етпей, бақылауда ұстайды.