Розділи і логічні диски

Логічна структура дисків

З апаратної точки зору будь-який пристрій збереження прямого доступу (диск) можна представити як сукупність секторів, адресуемих тим або іншому способові (CHS або LBA), і кожен сектор може бути записаний і лічений тільки цілком і незалежно від інших. Однак для більшості прикладних програм інтерес представляє звертання не до окремих секторів, а до файлів, що можуть займати довільне (можливо, не ціле) кількість секторів. Для полегшення звертання до файлів і упорядкування використання простору секторів диска до складу будь-якої операційної системи входить файлова система, тісно зв'язана з логічною структурою диска.

Операційна система представляє зовнішню пам'ять у виді набору логічних дисків (logical drive). Кожному логічному дискові привласнюється своє логічне ім'я: А, У — для дискет, З, D, Е и наступні букви — для твердих дисків, CD-ROM і інших пристроїв. Розглянемо логічну організацію фізичних дисків, щоб зрозуміти, яким образом кілька логічних дисків (наприклад, З, D і Е) можуть виявитися на одному вінчестері.

Логічний диск — це сукупність секторів з послідовно наростаючими номерами. Найперший сектор логічного диска називається завантажувальним (boot sector). У цьому секторі завжди зберігається описатель параметрів диска і файлової системи. Додатково може утримуватися програма завантаження операційної системи (завантажник). Якщо на диску з завантажником присутні ще і самі файли ОС, що забезпечує можливість завантаження цієї ОС на комп'ютер, такий диск називається системним.

Оскільки твердий диск (hard drive) у загальному випадку не є знімним (інша його назва — fixed disk — фіксований диск), а операційних систем, що хочеться використовуватися на одному комп'ютері, може бути трохи, і кожна з них претендує на свою логічну організацію диска, домовилися про можливості розбивки твердого диска на кілька незалежних розділів. Дискети в такій розбивці не мають потреби, оскільки їх легко перемінити, та й маленький обсяг не розташовує до розподілу. Крім забезпечення «плюралізму» операційних систем, розбивка диска на розділи дозволяє зменшити розміри логічних дисків, що буває вигідно через обмеження файлових систем. Шляхом розбивки вінчестера на логічні диски домагаються упорядочивания використання дискового простору.

Фізичний твердий диск може бути розбитий на кілька розділів (partition). Інформація про структуру диска — таблиця розділів (partition table) — зберігається в головному завантажувальному записі (Master Boot Record, MBR), що знаходиться в загальновідомому місці — циліндр 0, голівка 0, сектор 1. На початку цього сектора розташовується програма головного завантажника (master boot), а за нею — таблиця розділів, що містить чотири описателя розділи. Кожен описатель задає границі розділів, причому в двох системах: CHS (координати початку і кінця) і LBA (початок і довжина). Розділи, як правило, починаються точно по границі циліндра (координати N, 0, 1), крім першого, що починається звичайно з першої голівки нульового циліндра (0, 1,1), оскільки під нульовою голівкою розташований сектор з MBR. Закінчуватися розділи повинні на границі циліндра, що дозволяє через номери кінцевої голівки і кінцевого сектора визначити число голівок і секторів на треку.

 

Описатель задає й атрибути роздягнула — системний код і прапор активності. Прапор активності вказує головному завантажникові, який розділ йому варто завантажувати. Прапор активності може бути встановлений тільки для одного розділу диска (або взагалі не встановлюватися). Системний код визначає тип розділу; операційна система для своєї файлової системи може використовувати розділи тільки відомих їй типів. Таблиця розділів може заповнюватися як з початку, так і з кінця. Якщо розділів менше чотирьох, то вільні описатели обнуляются. Вільні описатели, так само як і зайняті, можуть розташовуватися в будь-якому місці таблиці (на початку, середині, кінці). Формування таблиці розділів — конфигурирование твердого диска — як правило, виконується утилітою FDISK.

 

По розташуванню на фізичному диску розширені розділи є вкладеними друг у друга; усі вони розташовуються в області, описаної в головній таблиці розділів як розширений розділ. У головній таблиці може бути описаний лише один розширений розділ.

Якщо розширені розділи мають код OFh, то лінійні адреси всіх елементів таблиць указуються відносно початку фізичного диска (так надходить нова версія утиліти FDISK, і це більш природно, оскільки при цьому описатель LBA є еквівалентом описателя CHS).

Кожен логічний диск із розширеного розділу має ту ж структуру, що і вищеописаний первинний розділ. Він також починається з завантажувального сектора (тільки завантажник ніколи не виповнюється), у якому мається опис структури логічного диска. Координати завантажувальних секторів логічних дисків звичайно мають вигляд N, 1, 1. Операційна система призначає логічним дискам розширених розділів імена (букви), що залишаються після дисків первинних розділів. Так, якщо мається один твердий диск і в нього є первинний і вторинний розділи, причому останній розбитий на два логічних диски, то ми побачимо наступне:

♦ С — первинний розділ;

♦ D — перший логічний диск розширеного розділу;

♦ Е — другий логічний диск розширеного розділу.

Тепер якщо додати другий твердий диск (усього з одним первинним розділом), те картина зміниться:

♦ С — первинний розділ першого диска (залишився на місці);

♦ D — первинний розділ другого диска (новий);

♦ Е — перший логічний диск розширеного розділу першого диска (той, що мав букву D);

♦ F — другий логічний диск розширеного розділу першого диска (той, що мав букву Е).

Якби в нового диска був розширений розділ зі своїми логічними дисками, то вони б зайняли наступні букви (G, Н...). Про механізм присвоєння логічних імен варто пам'ятати, установлюючи програми на комп'ютер, до якого епізодично підключають додаткові вінчестери. Непорушне ім'я (З) залишиться тільки в первинного розділу вінчестера, підключеного ведучої до першого контролера АТА (якщо використовується SCSI, те всі небагато складніше).

.

Для підвищення ефективності використання дискової пам'яті іноді застосовують дискові компресори — програмні засоби, що стискають дані на диску «прозоро» для додатків (і користувача). Щораз при записі файлу (або його фрагмента) виконується компресія, при читанні — декомпресія. Звичайно, для виконання в реальному часі придатні не всякі алгоритми компресії, і заради економії часу жертвують досяжним ступенем стиску. Можливість стиску закладена в такі складні файлові системи, як Novell NetWare (починаючи з версій 4.x) і NTFS. Для файлової системи FAT (MS-DOS і Windows 9x) убудованих компресорів не передбачено, але з ними широко використовуються компресори типу, що завантажуються, Stacker, DoubleSpace і DriveSpace. Ідея цих компресорів полягає в наступному. На звичайному логічному диску, називаному несущої, розміщається великий файл-образ стиснутого диска (Compressed Volume File, CVF). У цьому образі є своя система каталогів і таблиця розміщення файлів. Під час завантаження (до виконання команд файлу CONFIG.SYS) в оперативну пам'ять міститься спеціальний резидентний драйвер з файлу DBLSPACE.BIN (або DRVSPACE.BIN), що знаходиться в кореневому каталозі завантажувального диска. Цей драйвер эмулирует звертання до реального диска операціями доступу до файлу-образа, на ходу здійснюючи компресію/декомпресію. Для ОС эмулируемий диск виглядає як звичайний логічний диск, і для зручності користувача йому може призначатися логічне ім'я (буква), що раніше належало несущому дискові. Несущий диск при цьому одержує нове (раніше невикористане) ім'я, і до нього, у принципі, теж можна звертатися звичайним способом. Несущий диск можна сховати від додатків і користувача (щоб не було намірів видалити «нікому не потрібний» величезний файл-образ). На одному несущому диску може розміщатися кілька файлів-образів, кожний з яких представляє свій стиснутий логічний Диск (тім).