Ви знаєте, що таке MBR? Що таке основний і додатковий розділ диска? Що таке кластери, як вони можуть бути "втрачені"? Як працює бут-вірус? Для чого потрібен fdisk? Якщо немає, то вам буде корисно прочитати цю статтю.
Трохи про фізичну організації
Відповідно до ідеології MS-DOS жорсткий диск може складатися з так званих "розділів" - незалежних областей диска, які можуть бути побудовані за схемою будь-якій операційній системи, тобто використовувати будь-яку файлову систему. Таких розділів має бути два - основний (Primary), з якого зазвичай здійснюється завантаження, і розширений (Extended), який може бути розділений на декілька частин-підрозділів (логічних дисків). Таким чином, перший розділ диска самостійний, інші об'єднуються в групу. Кожен розділ має приналежність до тієї чи іншої файлової системи.
В рамках DOS (і заснованих на цій же операційній системі Windows3.x / 95/98 / ME) існують три файлових системи - FAT12, FAT16 і FAT32. Про їх відмінності я згадаю нижче.
Системні сектора
Найперший сектор розділу називається Boot Sector. У його складі також є завантажувальна програма і таблиця BIOS Parameter Block, BPB. У цій таблиці є інформація про місцезнаходження і розмір іншої важливої області - таблиці розміщення файлів, FAT. За своєю суттю FAT - це великий масив елементів, кожен елемент відповідає кожному кластеру. Кластер - блок секторів (від 8 до 128), елемент розподілу всього дискового простору розділу. Кожному файлу при його створенні виділяється потрібне число кластерів. Номер першого кластера заноситься в каталог (директорій, папку), а відповідний цьому кластеру елемент FAT містить номер другого кластера. Елемент FAT, відповідний другого кластеру, містить номер третього кластера і т.д. Весь FAT складається з таких ланцюжків (Chains).
Якщо елемент FAT не пов'язаний ні в один ланцюжок, і при цьому не дорівнює 0, він називається "втраченим" (Lost Cluster). "Втрата" кластерів відбувається при перезавантаженні в момент запису ланцюжка в FAT, наприклад, при створенні / зміну файлу, коли операція записи переривається. Звичайно, це не найстрашніші наслідки несподіваної перезавантаження, але все ж втрачати місце на диску не дуже хочеться. Програмісти з Microsoft добре знали про "стабільність" своєї Windows, тому і запускається Scandisk автоматично.
Якщо файл згодом збільшується в розмірах, йому призначаються нові кластери з числа вільних, причому найчастіше вони знаходяться в іншому місці диска. Ланцюжок "перестрибує" інші ланцюжки - ось вам і фрагментація, яку усувають програми-дефрагментатори, які переносять файли так, щоб їх кластери йшли один за одним по порядку.
Хоча система ланцюжків і є досить ефективною і простою, у неї є недоліки. По-перше, низька надійність - при зникненні одного елемента весь файл буде нечитабельним, а псування FAT означає втрату великої кількості (якщо не всіх) файлів. Для усунення цього недоліку існує дві однакових копії FAT. Друге - якщо розмір файлу не кратний розміру кластера, утворюється Слек (Slack) - частина кластера, не зайнята корисною інформацією. Чим більше розмір кластера, тим більша частина диска зайнята Слек. Для файлу довжиною 1 байт ви втрачаєте весь кластер, а якщо він має великий розмір (32 Кбайта, наприклад), то втрати на Слек можуть становити 30-50% від загальної ємності диска (до речі, перевірити їх можна програмою Sandra - модуль Drive Information) .
Розмір елемента FAT дає назву самої файлової системи. FAT12 має 12-бітові елементи, які дозволяють організувати на диску близько 4-х тисяч кластерів. FAT16 має 16-бітові елементи, число кластерів - 65530. FAT32 - 32-бітові елементи, близько 4 млрд. Кластерів. Чим більше на диску буде кластерів, тим менше можна зробити розмір самого кластера і тим самим менше втратити місця. З цього FAT12 використовується тільки для гнучких дисків, FAT16 - для дисків ємністю до 500 Мб (в принципі можна і до 2 Гб).
Початкова завантаження
Boot virus
Так називається різновид вірусів, що впроваджуються на одному з етапів початкового завантаження, зазвичай на найпершому. Boot-вірус записує в MBR свій завантажувач замість вихідного. Тим самим замість операційної системи першим завантажується вірус. Він розміщує в пам'яті своє тіло, яке зберігає в невикористаних секторах, що йдуть після MBR, але до першого завантажувального сектора розділу. Перехопивши звернення до дисків, вірус продовжує завантаження операційної системи. У разі звернення до дискеті вірус змінить її boot-сектор, замінивши в ньому програму-завантажувач. Якщо користувач завантажиться з такою дискети, вірус отримає управління і відразу ж заразить MBR жорсткого диска.
Якщо boot-вірус не вміє заражати файли, обходячись тільки системними секторами, він не представляє великої небезпеки. По-перше, заразитися можна тільки при завантаженні з дискети (або другого жорсткого диска), по-друге, можна просто включити "Virus Warning" в Setup - ви отримаєте попередження про спробу вторгнення в завантажувальний сектор (всупереч поширеній думці, ця опція повинна вимикатися тільки при інсталяції Windows), по-третє, вилікувати жорсткий диск можна всього однією командою - "fdisk / mbr", яка записує в MBR оригінальну програму-завантажувач.
Проблеми при завантаженні
Порушення процесу завантаження може статися на будь-якому з етапів. Щоб визначити причину і "винуватця", потрібно звернути увагу на що з'являються повідомлення:- Якщо все повідомлення - в верхньому регістрі (тобто великими літерами), то це BIOS не знаходить MBR на зазначеному йому в Setup пристрої, що свідчить про помилку читання або про відсутність ознаки системного сектора у першого сектора диска (тобто диск НЕ розмічений). Щоб переконатися, що з диском все нормально, потрібно зайти в BIOS Setup і запустити Autodetect.
- Повідомлення "Invalid partition table" і "Error loading operating system" належать завантажувачу з MBR; завантажувальний сектор активного розділу або не читається, або його ще (або вже) немає;
- Повідомлення "Invalid system disk" і "Disk I / O error" видає завантажувач з boot-сектора, повідомляючи про відсутність файлів операційної системи або про помилку на диску.
- Якщо проблема не пов'язана з самим диском, потрібно серйозно розбиратися з тим, куди поділися системні сектора. Звичайним користувачам це не під силу.
- У другому випадку в наявності або порушення таблиці DPT, або руйнування завантажувального сектора. Лікувати диск запуском NDD або Scandisk з дискети я не рекомендую - можна все остаточно занапастити і додати роботи тим, хто буде потім відновлювати інформацію на диску;
- У третьому випадку системні файли могли бути видалені або зіпсовані, можна спробувати виправити ситуацію завантаженням з дискети і введенням команди "sys c:".
NDD, Scandisk, fdisk ... Поради
Перш за все, при виникненні серйозних проблем з системними секторами ніколи не користуйтеся програмами діагностики NDD або Scandisk. Призначення таких програм - відшукання "втрачених" кластерів і "відв'язаних" довгих імен, все інше їм не під силу.
Для "ручний" роботи з диском зазвичай використовується Diskedit з комплекту Norton Utilities - не тому що він самий просунутий і зручний, а в силу звички, так як нортоновские утиліти існують з незапам'ятних часів. Якщо ви не володієте глибокими знаннями про структуру і механізми роботи системних секторів і завантажувачів, вам краще не намагатися експериментувати з цією програмою. Хоча мати її, безумовно, необхідно. Для чого - дивіться нижче.
А ось вміти користуватися fdisk повинен кожен. Як розмічати їй диски - не тема цієї статті. Можу тільки дати одну підказку. Якщо ви хочете виділити перший розділ диска виключно під Windows, краще задати йому розмір 1-2 Гб і поставити туди FAT16 - швидше буде завантажуватися, легше буде, в разі чого, відновлювати. Відомо, що fdisk за замовчуванням встановлює FAT32 на розділ більше 500 Мб. Щоб "переконати" його, виберіть "N" в "початковій заставці" fdisk (там, де щось говориться про підтримку великих розділів). Розмічайте перший розділ (більше 2 Гб не вийде), запускайте fdisk знову, вибравши вже "Y".
Ще одна порада. Після розмітки і форматування нового диска не полінуйтеся створити дискету, на яку за допомогою diskedit запишіть MBR (Alt-A, Alt-W, вибрати ім'я файлу), завантажувальний сектор першого розділу (Alt-B, Alt-W, ім'я файлу), diskedit, unerase, fdisk, sys, format, himem.sys, який-небудь русифікатор (якщо DOS русифікована). У разі збою така дискета дозволить заощадити масу часу і нервів.
Тепер рада з відновлення. Якщо ви вмієте користуватися diskedit'ом, ви можете відновити "полетів" жорсткий диск і без автоматичних програм-відновників типу Tiramisu. Як знайти початок розділу - зрозуміло, за сигнатуре 55АА, причому в останніх версіях diskedit можна шукати за певним зміщення (в даному випадку це "510"). Бут-сектор (якщо не стандарту FAT32, який займає три сектори) можна взяти у дискети і вручну підібрати параметри. Відновити FAT теж можливо. Для цього потрібно знайти кореневої каталог (шукати потрібно рядок "MSDOS" або "COMMAND COM"), кожному файлу змінити першу букву назви на російську "х" (код E5), після чого запустити unerase. Чим менше фрагментація, тим вище шанси повернути файли до життя, тому проводити дефрагментацію важливих даних потрібно якомога частіше.