Утиліти розмітки

Почнемо з fdisk : саме їм найбільше лякали в старі часи користувачів Linux, пропонуючи дружні альтернативи типу Disk Dru >

Походження fdisk губиться у темряві століть, йдучи за часів перших UNIX для PC-архітектури — наскільки я розумію, раніше потреби в ній не було, а головними інструментами дискової розмітки були утиліти типу disklabel або bsdlabel. Мені не вдалося з'ясувати, коли ця утиліта з'явилася в Linux. Можу тільки припускати, що на ранніх стадіях створення утиліт обрамлення для його ядра — т.зв. linux-utils. Нині fdisk входить до складу пакету linux-utils-ng.

Для початку слід запам'ятати, що запуск команди fdisk у будь-якій якості, навіть просто для отримання інформації про диск, можливо тільки з правами суперкористувача, які і треба забезпечити собі будь-яким чином, наприклад, через su або sudo.

Якщо команду fdisk дати без опцій та аргументів, вона виведе коротку довідку про її використання:

Як аргумент команди фігурує ім'я файлу пристрою - фізичного диска повністю. Оскільки в сучасних версіях ядра Linux всі диски, незалежно від їх інтерфейсів (PATA, SATA, SCSI, SAS, USB) визначаються єдиною підсистемою ATA-SCSI, насправді ці імена будуть мати вигляд /dev/sda , /dev/sdb і так далі.

Сенс опцій команди fdisk наступний:

  • l не наказує виконання будь-яких дій, а лише виводить інформацію про диск і його розділи, якщо такі є;
  • b задає розмір блоку одиниці вимірювання дискового простору; за умовчанням, без зазначення цієї опції, він дорівнює фізичному блоку (512 байт), інші можливі значення кратні його розміру - 1024, 2048 або 4096 байт;
  • u запускає fdisk , будучи опцієюза замовчуванням.

Насамперед подивимося на інформаційну функцію fdisk , навіщо запустимо її так:

Відповіддю буде висновок приблизно такого виду:

Якщо опустити аргумент команди, то аналогічні відомості будуть виведені для всіх фізичних дисків даної машини: спочатку - загальна інформація про диск, що включає його розмір, число головок, секторів і циліндрів, а потім для кожного розділу, що існує на диску, вказуються його перший і останній циліндри ( символом + маркуються розділи, що не займають останній циліндр повністю), розмір блоків (фізичних або заданих опцією b ), ідентифікатор типу файлової системи та його назва.

Для будь-яких маніпуляцій із дисковими розділами команду fdisk слід запустити в інтерактивному режимі:

Що можна зробити без будь-яких опцій, але вказівка ​​аргументу тут буде обов'язковим.

Після цього ми отримуємо у своє розпорядження якийсь інтерфейс, що вимагає введення певної команди, виконання якої зводиться до відповіді на кілька запитань. З повним списком доступних команд можна ознайомитися завдяки чудовій системі допомоги, яку викликає командаm.

Так, командаp виведе поточний список дискових розділів із зазначенням їх типу та розміру. Далі розділи можна створювати (командоюn ) або видаляти (командоюd ), однак до команди запису змін (w ) ніяких незворотних дій, які можуть зруйнувати раніше існуючу розмітку (і, відповідно, файлові системи та дані, до неї прив'язані), не буде: невдало створені розділи можна видалити і на їх місці створити нові. І будь-якої миті командоюq можна без жодних наслідків вийти з програми.

При створенні розділу засобами fdisk спочатку визначається, чи буде він первинним(primary) чи розширеним (extended). Розглянемо спочатку перший випадок. При ньому далі просто вказується номер розділу (від 1 до 4). У цих межах номер може бути будь-яким — можна спочатку створити розділ 2, а потім 1, або навіть весь диск відвести під розділ 4. Номер розділу залишиться на віки: саме він ідентифікуватиме файл пристрою, відповідний створеному розділу (наприклад, /dev/sda2 , або /dev/sdb1).

Далі визначається початковий циліндр створюваного розділу (за замовчуванням - перший вільний, для порожнього диска - просто перший). Однак ніхто не заважає вказати будь-який інший циліндр як стартовий (на нерозбитому просторі, зрозуміло). А потім - кінцевий циліндр (за замовчуванням - останній фізичний на нерозбитому дисковому просторі), або просто розмір розділу в мегабайтах, наприклад,300M (і +, і M - обов'язкові, інакше обсяг диска виявиться дуже дивним) . При заданні розміру в одиницях, відмінних від циліндрів, він завжди буде округлятися (за звичайними правилами округлення) до найближчого числа, кратного кількості останніх. Так що не варто дивуватися, якщо замість розділу, що шукається, в 20 Мбайт виникне 16-мегабайтний, а замість 22-мегабайтного - розділ в 24 Мбайт.

При створенні розширеного розділу спочатку все відбувається точно також завдання номера (очевидно, що в тому ж діапазоні 1-4), вказівка ​​початкового циліндра і кінцевого (або - обсягу в мегабайтах). Однак це ще половина справи, потрібно розділити розширений розділ на розділи логічні. І тому при наступній команді на створення розділу нам буде запропоновано вже вибір між первинним (якщо число останніх ще не вичерпано) та логічним (адже другий extended-розділ засобами fdisk створити не можна):

Далі ж логічний розділ створюється аналогічно до первинного.

Длякожного новоствореного засобами fdisk розділу (первинного чи логічного) за умовчанням встановлюється ідентифікатор типу файлової системи Linux native (83 у шістнадцятковому обчисленні). Розширений розділ також автоматично отримує правильний ідентифікатор свого типу — 5. Однак ці типи не є щось незмінне. Більше того, принаймні в одному випадку, при створенні розділу підкачки зміна типу розділу — необхідність. Це знадобиться також і для використання таких технологій, як Software RAID або LVM, про які буде говорити пізніше.

Робиться це командоюt, після чого запитується номер розділу, тип якого має бути змінений, а потім ідентифікатор бажаного типу. Повний список типів файлових систем (та їх ідентифікаторів), що підтримуються, можна вивести командоюl. Нагадаю, що ідентифікатор типу файлової системи розділу аж ніяк не файлова система, яка на ньому розміщується. І на розділі Linux native, як це підкреслює назву, можна створити будь-яку файлову систему з тих, які підтримуються Linux як рідні (ext2/ext3, ext4, XFS, ReiserFS, JFS, btrfs, NILFS2).

Теоретично fdisk дозволяє присвоїти створеному розділу ідентифікатор типу майже будь-якої з можливих файлових систем - від FAT12 до Free-, Open-і NetBSD. Однак самі по собі файлові системи засобами fdisk не створюються, і тому для розділів чужого типу надалі потрібно їх форматування (у термінах DOS): або в рідному середовищі (наприклад, DOS-командою FORMAT для FAT-розділу), або спеціальними командами типу mkfs , Про які йдеться у наступному розділі.

Сказаного, сподіваюся, достатньо, щоб усвідомити велику перевагу fdisk - виняткову гнучкість: можна визначити розділ строго певного розміру іточно позиціонувати його на диску. Або зарезервувати в будь-якому місці накопичувача нерозбитий простір, з двох сторін оточений створеними розділами.