Fdisk linux створити розділ. Утиліти розмітки. fdisk. Розбиття жорсткого диска

Минула лекція була присвячена жорстким дискам в цілому та в Linuxзокрема. Сьогодні ми поговоримо про те, як розбити жорсткий дискна розділи, як відформатувати розділ та які файлові системи. Для того, щоб створити розділи на новому диску, нам цілком підійде команда. fdisk. Команда fdiskіснує у всіх дистрибутивах Linuxтому є в цьому сенсі універсальним інструментом. Команда fdiskвміє створювати та видаляти розділи диска, але не вміє змінювати розміри існуючих розділів. Якщо є розділ А та Б однакового розміру та необхідно збільшити розділ А за рахунок розділу Б, то команда fdiskне зможе зробити це "на льоту". Доведеться зберегти всю інформацію, видалити розділи А та Б, а потім створити нові розділи А та Б з потрібними розмірами.

Нехай у нас є чистий невідформатований жорсткий диск /dev/sdc, який нам потрібно розбити для встановлення системи Linux. Запустимо програму fdiskз параметром /dev/sdc. Працювати у програмі fdiskнеобхідно від імені суперкористувача.

igor@adm-ubuntu:~/linux$ sudo fdisk /dev/sdc

Кількість циліндрів для цього диска встановлено 19457.
З цим все гаразд, але значення більше, ніж 1024,
і в окремих установкахможуть виникнути проблеми з:
1) програмами, що запускаються під час завантаження (напр., старі версії LILO)
2) завантаженням та програмами розмітки з інших ОС
(наприклад, DOS FDISK, OS/2 FDISK)

Команда (m для довідки):

За цією командою ми починаємо роботу з нашим жорстким дискомв інтерактивному режимі. Підказка повідомляє нам, що потрібно натиснути mдля довідки. Натискаємо клавішу mі бачимо перелік основних команд:

Дія команди
a перемикання прапора завантаження
b редагування мітки диска bsd
c перемикання прапора dos-сумісності
d видалення розділу
l список відомих типівфайлових систем
m виведення цього меню
n додавання нового розділу
o створення нової порожньої таблиці розділів DOS
p виведення таблиці розділів
q вихід без збереження змін
s створення нової чистої мітки диска Sun
t зміна id системи розділу
u зміна одиниць вимірювання екрана/вмісту
v перевірка таблиці розділів
w запис таблиці розділів на диск та вихід
x додаткова функціональність (тільки для експертів)

Давайте натиснемо на кнопку p, щоб подивитися, чи є розділи на нашому диску:

Диск /dev/sdc: 160.0 ГБ, 160041885696 байт
255 heads, 63 sectors/track, 19457 cylinders
Units = циліндри of 16065 * 512 = 8225280 bytes
Disk identifier: 0×28f12a69

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

5 - розширений
82 - Linux swap
83 - Linux (ext2/ext3/ext4)

Почнемо створювати розділи. Нехай у нас буде 5 розділів. Перший розділ будемо розміром 200 Мб, і на ньому зберігатиметься каталог /boot. Далі буде йти розділ куди буде встановлена ​​решта операційної системи Linux(Виділимо 20 Гб), далі розділ swap(2 Гб), далі розширений розділ, який буде поділено на два однакові розділи.

Щоб створити розділ, необхідно натиснути на клавішу n:

Команда (m для довідки): n
Дія команди
e розширений
p основний розділ (1-4)

fdiskпитає який розділ ми хочемо створити: розширений чи основний. Нам потрібен основний розділ, тому натискаємо pі Enter

Номер розділу (1-4):

Далі необхідно вказати номер розділу, щоб програма fdiskзнала в який розділ таблиці розділом MBRзаписати інформацію про розділ. Варіантом може бути лише чотири (за кількістю розділів). Будемо вказувати по порядку, тому натискаємо 1 і Enter

Перший циліндр (1-19457, за замовчуванням 1):

Далі fdiskпросить вказати з якого циліндра буде починатися розділ і пропонує за замовчуванням перший циліндр, тобто початок нашого диска. Погоджуємось і нічого не вводячи, натискаємо Enter

Last циліндр, +циліндри or +size(K,M,G) (1-19457, за замовчуванням 19457):

Далі нам необхідно вказати, який розмір буде у розділу. Розмір можна вказувати або в циліндрах (що нам не дуже зручно), або в кіло-, мега-, гігабайтах, що набагато зручніше. Наш перший розділ буде 200 Мб, тож набираємо +200Mта натискаємо Enter. Створення розділу закінчено, натиснемо p, щоб перевірити це:

Команда (m для довідки): p

Устр-во Загр Початок Кінець Блоки Id Система

Бачимо, що розділ створено. Створюємо так само ще два основні розділи. Після цього натискаємо p, щоб перевірити розділи:

Устр-во Загр Початок Кінець Блоки Id Система
/dev/sdc1 1 26 208813+ 83 Linux

/dev/sdc3 2639 2900 2104515 83 Linux

Четвертий розділ створюємо розширений. Після того як виберемо натиснувши на e- тип розширений далі натискаємо Enterприймаючи всі значення за промовчанням. Таким чином ми виділимо під розширений розділ весь простір, що залишився:

Команда (m для довідки): n
Дія команди
e розширений
p основний розділ (1-4)
e
Вибраний розділ 4
Перший циліндр (2901-19457, за замовчуванням 2901):
Використовується за замовчуванням 2901
Last циліндр, +циліндри or +size(K,M,G) (2901-19457, за замовчуванням 19457):
Використовується за замовчуванням 19457

Тепер почнемо створювати логічні розділи в нашому розширеному розділі. Знову натискаємо nі бачимо, що тепер програма fdiskпрацює тільки з розширеним розділом:

Перший циліндр (2901-19457, за замовчуванням 2901):

Процес створення логічних розділівнічим не відрізняється від процесу створення основних розділів. У результаті отримуємо наступну картину за розділами:

Устр-во Загр Початок Кінець Блоки Id Система
/dev/sdc1 1 26 208813+ 83 Linux
/dev/sdc2 27 2638 20980890 83 Linux
/dev/sdc3 2639 2900 2104515 83 Linux


/dev/sdc6 11180 19457 66493003+ 83 Linux

Розділ /dev/sdc3у нас має бути відформатований як swap-розділ. Тому нам необхідно внести зміни до типу файлової системи розділу /dev/sdc3. Для цього натискаємо tпотім вибираємо розділ і вказуємо ідентифікатор нового типу розділу (для swap- це 82):

Команда (m для довідки): t
Номер розділу (1-6): 3
Шістнадцятковий код (введіть L для отримання списку кодів): 82
Системний тип розділу 3 змінено на 82 (Linux своп / Solaris)

Так само можна змінити типи файлових систем в інших розділах. Перевіряємо розділи командою p :

Устр-во Загр Початок Кінець Блоки Id Система
/dev/sdc1 1 26 208813+ 83 Linux
/dev/sdc2 27 2638 20980890 83 Linux
/dev/sdc3 2639 2900 2104515 82 Linux своп / Solaris
/dev/sdc4 2901 19457 132994102+ 5 Розширений
/dev/sdc5 2901 11179 66501036 83 Linux
/dev/sdc6 11180 19457 66493003+ 83 Linux

Розділи створено. Тепер увага!Всі маніпуляції з жорстким диском ми тільки що робили поки збережені в оперативної пам'ятіі жодних змін до жорсткого диска не було внесено. Для того, щоб внести ці зміни, потрібно натиснути на клавішу w (write). Після цього зміни будуть незворотними. Якщо зараз натиснути замість wна клавішу q, то утиліта fdiskзавершить свою роботу і жодних змін не буде застосовано.

Якщо за допомогою команди fdiskбуде створюватись розділ у який буде встановлюватися завантажувач Windows, то такий розділ необхідно не забути зробити активним – за допомогою команди a.

Після створення розділів та перезавантаження комп'ютера розділи потрібно відформатувати. Для цього призначено команду mkfs. Щоб відформатувати розділ, потрібно вказати тип файлової системи і сам розділ:

igor@adm-ubuntu:~$ mkfs -t ext4 /dev/sda

Для файлових систем, що найчастіше використовуються, є команди виду mkfs.ext4, mkfs.ext3, mkfs.vfatта інші. Тобто відформатувати розділ /dev/sda8можна було б командою: sudo mkfs.ext4 /dev/sda8.

Для того, щоб відформатувати розділ під swap-областьпотрібно скористатися командою mkswap: mkswap /dev/sdc3. Для того, щоб підключити swap-розділ використовується команда swapon. Для відключення swap-області існує команда swapoff. Щоб swap-розділ підключався автоматично під час завантаження системи, необхідно у файлі /etc/fstabпрописати відповідний рядок монтування. Для того щоб подивитися чи використовується в системі область підкачки ( swap) можна використовувати команду free:

igor@adm-ubuntu:~$ free
total used free shared buffers cached
Mem: 1024752 581616 443136 0 16888 158100
-/+ buffers/cache: 406628 618124
Swap: 1140544 1792 1138752

Бачимо, що в системі під область підкачування використовується 1 Гб дискового простору.

Для більш складних маніпуляцій із розділами диска (зміна розміру розділів диска без втрати інформації), можна скористатися командою parted, яка також за замовчуванням входить до більшості дистрибутивів. Є й графічна версія утиліти, яка називається gparted. На цьому із розділами жорсткого дискапоки все. Отриманої інформації має вистачити для самостійного розбиття жорсткого диска на потрібну кількість розділів.

Олексій Федорчук

Почнемо з fdisk: саме їм найбільше лякали за старих часів початківців користувачів Linux, пропонуючи дружні альтернативи типу Disk Druid. Однак при найближчому розгляді з'ясовується, що нічого страшного в ній немає.

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

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

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

# fdisk Usage: fdisk [-l] [-b SSZ] [-u] device E.g.: fdisk /dev/hda (для першого IDE диска) або: fdisk /dev/sdc (для третього SCSI диска) або: fdisk /dev/eda (для першого PS/2 ESDI drive) або: fdisk /dev/rd/c0d0 або: fdisk /dev/ida/c0d0 (for RAID devices)

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

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

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

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

# fdisk -l /dev/sd?

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

Диск /dev/sda: 160.0 ГБ, 160041885696 байт 255 heads, 63 sectors/track, 19457 cylinders Units = циліндри of 16065 * 512 = 8225280 bytes Disk 0800 /dev/sda1 1 14 112423+ 83 Linux /dev/sda2 15 15680 125837145 5 Розширений /dev/sda5 15 2626 20980858+ 83 Linux /dev/sda6 2627 4585 15835

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

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

# fdisk /dev/sdb

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

Після цього ми отримуємо у своє розпорядження якийсь інтерфейс, що вимагає введення певної команди, виконання якої зводиться до відповіді на кілька запитань. З повним списком доступних командможна ознайомитися завдяки чудовій системі допомоги, що викликається командою 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 створити не можна):

Command (m for help): n Command action l logical (5 або over) p primary partition (1-4)

Для кожного знову створюваного засобами 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 - виняткову гнучкість: можна визначити розділ певного розміру і точно позиціонувати його на диску. Або зарезервувати в будь-якому місці накопичувача нерозбитий простір, з двох сторін оточений створеними розділами.

Найвідоміший інструмент для роботи з таблицею розбиття - програма fdisk. Програми з такою назвою є у всіх операційних системах. Але, незважаючи на збіг назв, по суті це абсолютно різні програмитак що не варто користуватися описом однієї з них, застосовуючи іншу. До того ж в одному з посібників я знайшов твердження про те, що використання FDISK від Win95/Win98 у системах з кількома різними файловими системами(встановленими у різні розділи) небезпечно. Відомі випадки, коли ця програма видаляла логічні розділи типу, відмінного від FAT, хоча їй було задано видалити розділ FAT, розташований десь далі в ланцюжку логічних розділів.

Лінукс має три версії цієї програми: fdisk, sfdisk, cfdisk. Їхнє основне призначення - створення розділів на "чистому" диску або зміна розбиття диска. Але основний метод перерозподілу диска у цих програмах зводиться до видалення існуючих розділів та створення нових (відповідно, зі втратою всієї інформації на диску). Правда, man-сторінка до утиліти sfdiskповідомляє, що ця утиліта може проводити перерозбиття диска, але попереджає, що операція ця дуже небезпечна.

Усі три згадані програми мають лише текстовий інтерфейс, тобто запускаються у консолі чи вікні терміналу. На сторінці manдо програми fdiskповідомляється, що cfdiskстворює високоякісні таблиці розбиття диска і тому, якщо є можливість, треба використовувати саме цю програму. Одночасно зазначається, що fdiskзазвичай дає непоганий результат, але має деякі недоліки і його не рекомендується застосовувати, якщо є інші можливості. Щодо sfdiskстверджується, що це програма для хакерів - вона коректніша, ніж fdiskі потужніше ніж fdiskі cfdisk, але має дуже незручний інтерфейс. І дійсно, інтерфейс cfdiskздається найбільш зручним, оскільки він має інтуїтивно зрозуміле меню. Автор статті стверджує, що саме з цієї причини програма cfdiskвикористовується у текстових інсталяторах Debian GNU/Linux та Slackware Linux. А ось у системі, встановленій з дистрибутива Red Hat Linux 9 цієї утиліти чомусь не виявилося.

У fdiskі sfdiskє одна важлива особливість-- вони можуть виводити список усіх існуючих розділів у неінтерактивному режимі. Для цього достатньо запустити ці команди із опцією -l. Причому, якщо не вказувати пристрій, буде виведено список розділів всіх наявних дисків. Результати цих команд виглядають трохи по-різному. На моєму диску зі зіпсованою таблицею розділів я отримав наступні результати:

Лістинг 4.

# /sbin/sfdisk -l /dev/hda

Disk /dev/hda: 77545 cylinders, 16 heads, 63 sectors/track Warning: розширена партія не start at a cylinder boundary. DOS і Linux буде тлумачити contents differently. Units = cylinders of 516096 bytes, блоки з 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/hda1 0+ 764- 765- 385528 ​​82 Linux swap end: (c,h,s) expected (764,15,62) found (47,254,62) /dev/hda2 * 765+ 4574- 3809 1919736 c W95 FAT32 (LBA) start: (c,h,s) expected (765,1,1) found (48,1,1) end: (c,h,s) expected (1023, 15,63) found (286,254,63) /dev/hda3 4574+ 4765- 192- 96390 83 Linux start: (c,h,s) expected (1023,15,63) found (287,0,1) end: (c,h,s) expected (1023,15,63) found (298,254,63) /dev/hda4 4765+ 77535- 72771- 36676395 f W95 Ext'd (LBA) start: (c,h,s) expected (1023,15,63) found (1023,5,1) end: (c,h,s) expected (1023,15,63) found (1023,14,63) /dev/hda5 4765+ 6805- 2040- 1028128+ 83 Linux start: (c,h,s) expected (1023,15,63) found (299,1,1) end: (c,h,s) expected (1023,15,63) found (426,254, 63) /dev/hda6 6805+ 10885- 4080- 2056288+ 83 Linux start: (c,h,s) expected (1023,15,63) found (427,1,1) end: (c,h,s) expected (1023,15,63) found (682,254,63) /dev/hda7 10885+ 27141- 16257- 8193118+ 83 Linux start: (c,h,s) expected (1023,15,63) found ,1) end: (c,h,s) expected (1023,15,63) found (1023,254,63) /dev/hda8 27141+ 36895- 9754- 4915858+ 83 Linux start: (c,h,s ) expected (1023,15,63) found (1023,254,63) end: (c,h,s) expected (1023,15,63) found (1023,254,63) /dev/hda9 36895+ 77535- 40641- 20482843+ b W95 FAT32 start: (c,h,s) expected (1023,15,63) found (1023,254,63) end: (c,h,s) expected (1023,15,63) found (1023,254,63)

Лістинг 5.

Disk /dev/hda: 40.0 GB, 40020664320 bytes 16 heads, 63 sectors/track, 77545 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Linux swap Partition 1 does not end on cylinder boundary. /dev/hda2 * 766 4575 1919736 з W95 FAT32 (LBA) Partition 2 не кінець на cylinder boundary. /dev/hda3 4575 4766 96390 83 Linux Partition 3 не кінець cylinder boundary. /dev/hda4 4766 77536 36676395 f W95 Ext"d (LBA) Partition 4 does no end on cylinder boundary. /dev/hda5 4766 6806 1028128+ 83 Linux /de8/6 dev/hda7 10886 27142 8193118+ 83 Linux /dev/hda8 27142 36896 4915858+ 83 Linux /dev/hda9 36896 77536 20482843+ b W95 FAT32

Усе сказане ще дозволяє зробити однозначного висновку у тому, яка їх цих програм краще. Тому розглянемо всі три утиліти послідовно.

2.2. Програма fdisk

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

Лістинг 6.

# /sbin/fdisk /dev/hdaНомер циліндів для цього диска набір до 2498. Там не існує, з тим, але це є значне, що 1024 року, і можна в певних розділах відповідати питанням: 1) Software, що run at boot time (eg. ) 2) booting і partitioning software з інших OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help):

Список доступних команд ми отримуємо за командою (оскільки виклик цих команд здійснюється натисканням відповідної клавіші, я позначатиму команди літерою, укладеною в кутові дужки):

Лістинг 7.

Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition"s system id u change display/entry units in verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help):

Найвживаніша з цих команд, мабуть, команда

, за якою виводиться повний перелікнаявних на диску розділів (включаючи логічні). Результат виконання цієї команди аналогічний результату, що отримується після виконання команди
# /sbin/fdisk -l /dev/hda
з командного рядка, тому приклад виконання цієї команди ви вже бачили (листинг 5). Межі розділів у разі показані у вигляді номерів циліндрів. Взагалі кажучи, у процесі знайомства з програмами розбиття диска складається враження, що межі розділів найкраще розміщувати по межах циліндрів.

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

після запуску самої утиліти у наступному форматі:
# /sbin/fdisk -u /dev/hda
Втім, перейти з одного способу вказівки меж розділів на інший можна в будь-який момент роботи з програмою, достатньо дати клавіатурну команду .

Призначення деяких клавіатурних команд я поясню так само коротко, як вони даються утилітою, але російською мовою:

Дві останні команди вимагають додаткових пояснень. Як бачите, розробники програми передбачили деякі запобіжні заходи, щоб захиститися від необдуманих дій користувача. Поки що ви не виконали команду , внесені вами зміни ще не є незворотними. Ви завжди можете натиснути клавішу та таблиця розділів залишиться недоторканою. Ймовірно, програма працює з якимось тимчасовим файлом – чином MBR, і лише за командою відбувається запис вмісту цього файлу MBR.

За командою ми переходимо "на другий рівень" програми fdisk. Як сказано вище, цей рівень – для експертів! Перелік додаткових можливостей, доступних на цьому рівні, можна знову отримати за командою (див. листинг 8):

Лістинг 8.

Command (m for help): x Expert command (m for help): m Command action b move beginning of data in a partition c change number of cylinders d print the raw data in the partition table e list extended partitions f fix partition order g створіть IRIX (SGI) partition table h змінення числа heads m print this menu p print the partition table q quit without saving changes r return to main menu with change number of sectors/track in verify the partition table w write table to disk and exit Expert command (m for help):

Деякі з цих команд вам вже знайомі.

, , , . Вони тут діють так само, як на основному рівні. Командою - виправити порядок розташування розділів, вам доведеться скористатися в тому випадку, коли ви видаляли розділи та створювали нові. Справа в тому, що після таких операцій порядок нумерації розділів не відповідає порядку їх розміщення на диску. Команда дозволяє виправити цю невідповідність. Команда служить для того, щоб вивести на екран у шістнадцятковому вигляді вміст секторів, де зберігається структура розділів диска. За допомогою інших команд другого рівня можна змінити кількість циліндрів (команда ), головок (команда ) та секторів (команда ), тобто фактично встановити "фальшиву" геометрію диска. Але якщо ви задумаєте це зробити, ви повинні чітко розуміти, до чого це веде (дивись попередню частину цих нотаток). Тим більше, треба уявляти собі наслідки таких команд, як - Переміщення початку даних у розділі. Я нічого не беруся пояснити або додати до сказаного, бо не використовував цих команд стосовно реальних ситуацій. Тому я закінчу розповідь про команду fdiskі перейду до утиліти cfdisk.

2.3. Програма cfdisk

Запуск цієї утиліти здійснюється у тому ж форматі, що й інших команд цієї групи:
# /sbin/fdisk /dev/hda

Вказівку на пристрій можна опустити, якщо ви хочете змінити розбиття на диску /dev/hda (диск вибирається за замовчуванням). Після запуску програма намагається прочитати таблицю розбиття вказаного диска. Якщо їй це з якихось причин не вдається, видається повідомлення про помилку та виконання програми припиняється. Однією з причин може бути некоректна інформація про геометрію диска, і в такому випадку можна змусити програму працювати, якщо вказати їй геометрію диска у рядку виклику. Інший шлях – запустити програму з опцією -z. У цьому випадку існуюча таблиця розбиття диска буде ігноровано.

На відміну від fdiskінтерфейс програми cfdiskпобудований на основі невеликого меню, розташованого у нижній частині екрану (рис.1).

Рис.1. Вікно програми cfdisk

Перехід від одного пункту меню до іншого здійснюється кнопкою <Тab> або за допомогою клавіш курсору "стрілка вправо/вліво". Клавіші "стрілка вгору/вниз" використовуються для вибору розділу диска у списку, що відображається в центральній частині екрана. Для кожного розділу вказано його найменування, значення прапорів, тип розділу (первинний чи логічний), тип файлової системи у розділі, позначка розділу та його розмір. У графі Flags (прапори) значення може бути відсутнім або може стояти Boot (що означає завантажувальний розділ), або NC («Not Compatible with DOS or OS/2» - не сумісний з DOS або OS/2). Останній прапор має таке значення. Деякі операційні системи (у тому числі DOS та OS/2) створюють розділи на диску таким чином, що перший розділ диска, а також усі логічні розділи починаються з другої доріжки, залишаючи першу доріжку порожній циліндра. Встановивши прапор NC за допомогою команди меню Maximizeабо гарячої клавіші , Ви зможете використовувати цей дисковий простір. Але врахуйте, що в системі, що працює, економити таким чином дисковий простір не варто. Я спробував отримати таким чином пару зайвих доріжок, і моя система працювала лише до першого перезавантаження. А при наступному завантаженні з'явилося повідомлення про Kernel Panic. На щастя, після того, як я зняв за допомогою тієї ж програми цей прапорець (для чого, звичайно, довелося завантажитись з LiveCD Knopix), працездатність системи відновилася.

Розмір розділу в cfdiskможе бути показаний у мегабайтах (за замовчуванням), кілобайтах, а також кількості секторів або циліндрів. Перемикання між цими режимами здійснюється командою Unitsабо за допомогою гарячої клавіші (В останньому випадку перемикання здійснюється за циклом). Якщо після вказівки розміру стоїть зірочка, це означає, що межі розділу не збігаються з межами циліндрів, або використовується неправильна геометрія диска. Лінукс не використовує геометрію в роботі з дисками, тому боятися цього не варто. Але можна й поміняти геометрію диска, з якою працюватиме cfdisk. Для цього є гаряча клавіша . Однак у посібнику до програми сказано, що це може тільки той, хто знає, що він робить. А решті у визначенні геометрії диска краще довіритися програмі cfdisk.

За допомогою команди Deleteабо гарячої клавіші Ви можете видалити розділ, виділений на даний момент у списку розділів.

Якщо у списку розділів підсвічування переміщене на вільний простір, вид меню зміниться (див. мал.2).


Рис.2. Створення нового розділу за допомогою cfdisk

Новий розділ створюється за допомогою команди Newабо гарячої клавіші . Якщо тип розділу не визначається однозначно, програма попросить вас його задати. Пам'ятайте, що можна створити не більше 4 первинних розділів і розширеним може бути тільки один з них. Тому всі логічні розділи повинні бути розташовані на диску послідовно і не можуть чергуватись з первинними. Потім програма запросить у вас розмір створюваного розділу, причому за промовчанням запропонує вам створити його рівним всьому вільному простору. Якщо вас це влаштовує, можна просто натиснути клавішу . В іншому випадку можна ввести бажаний розмір, причому програма сприймає розмір, заданий у мегабайтах (M), кілобайтах (K), циліндрах (С) та секторах (S). Наведені у дужках літери ви повинні вказати відразу після цифри, що задає розмір (M можна не вказувати, це значення за промовчанням). Розділ, що створюється, можна розмістити або на початку, або в кінці вільного дискового простору, і cfdiskзнову попросить вас прийняти рішення щодо цього.

До чого приведуть зроблені зміни, можна переглянути за допомогою команди Print (

). При цьому можливі три варіанти відображення цього результату:

    так званий raw data формат, тобто шістнадцятковий вид секторів, які будуть записані в перші сектори кожного розділу;

    секторний формат (рис.3);

Рис.3. Таблиця розділів у секторному форматі


Щоб зроблені зміни набули чинності, необхідно записати таблицю розбиття на диск, що робиться за допомогою команди Writeабо гарячої клавіші (причому, саме великої W). Програма запросить у вас підтвердження та запише результат на диск.

Для виходу із програми служить команда Quitабо гаряча клавіша .

2.4. Програма sfdisk

Запустивши без параметрів, ця утиліта видає тільки двосторінкову довідку про параметри запуску. Але лише з цієї довідки зрозуміти, як використати цю утиліту, важко. Потрібно заглянути і на сторінку інтерактивної підказки man sfdisk. З цієї довідки дізнаємося, що утиліта sfdiskмає 4 основні варіанти використання.

Варіант 1.Будучи запущеною з опцією -s partition вона видає розмір розділу у блоках. Параметр partitionможе вказувати на конкретний розділ, наприклад /dev/hda2, або на весь диск. У такому разі буде виведено об'єм диска у блоках. А якщо залишити лише опцію -sі не вказувати диск або розділ, буде виведено об'єм всіх розділів на кожному диску та загальний обсяг диска (див. листинг 9).

Лістинг 9.

# /sbin/sfdisk -s /dev/hdb 1251936 # /sbin/sfdisk -s/dev/hda: 39082680 /dev/hda1: 530113 /dev/hda2: 2048287 /dev/hda3: 104422 /dev/hda4: 1 /dev/hda5: 1534176 /dev/hda6: 2048256 /dev/hda7: 12289693 /dev /hda8: 20523006 /dev/hda9: 4536 /dev/hdb: 1251936 /dev/hdb1: 128992 /dev/hdb2: 1121904

Варіант 2.Другий варіант використання утиліти sfdiskслужить отримання інформації про таблиці розділів диска. Для цього слід запустити її з опцією -lабо ж з опцією -d. Будучи запущеною з опцією -l

# /sbin/sfdisk -l [опції] /dev/hdb

утиліта sfdiskвидає таблицю розділів зазначеного диска приблизно у такому ж форматі, як і утиліта fdisk(Приклади наведені в ). Але якщо запустити програму з додатковою опцією -x, ми побачимо весь ланцюжок логічних розділів, вкладених у розширений розділ, тобто отримаємо більш детальну інформацію про розділи (див. листинг 3).

Опція -d(листинг 10) дозволяє отримати інформацію в іншому форматі, орієнтованому застосування утиліти sfdiskдля зміни таблиці розділів (див. нижче опис четвертого варіанта використання sfdisk).

Лістинг 10.

# /sbin/sfdisk -d /dev/hda Warning: розширена партія не start at a cylinder boundary. DOS і Linux буде тлумачити contents differently. # partition table of /dev/hda unit: sectors /dev/hda1: start= 63, size= 1060227, Id=82 /dev/hda2: start= 1060290, size= 4096575, Id= b, bootable /dev/hda3: start = 5156865, size = 208845, Id = 83 / dev / hda4: start = 5365710, size = 72799650, Id = f / dev / hda5: start = 5365773, size = 3068336, 8434188, size = 4096512, Id = 83 / dev / hda7: start = 12530763, size = 24579387, Id = 83 / dev / hda8: start = 37110213, size = 4104601

Варіант 3.Третій варіант запуску sfdiskвизначається використанням опції -Vі служить для тестування таблиці розділів на конкретному пристрої. Цю опцію, ймовірно, краще використовувати разом із опцією -lтоді ви побачите і таблицю розділів і інформацію про некоректності в цій таблиці.

Варіант 4.І, нарешті, четвертий спосіб запуску цієї програми призначений для зміни таблиці розділів диска. Man-сторінка попереджає, що цей варіант треба дуже обережно, оскільки будь-яка помилка призведе до втрати ваших даних. Тому попередньо потрібно скласти чіткий і добре продуманий план розбиття диска на розділи, оскільки програма вимагатиме у вас явним чином задати параметри кожного із запланованих розділів, причому жодних підказок у ході цього процесу не видає. Вона просто виводить послідовно запит на введення параметрів чергового розділу (листинг 11)

Лістинг 11.

# /sbin/sfdisk /dev/hdb/dev/hdb1:
та очікує від вас введення параметрів розділу у наступному форматі<номер начального сетора> <размер(в секторах)> <тип(id)> Це фактично той самий формат, який використовується програмою для виведення таблиці розділів у тому випадку, коли вона була запущена з опцією -d(Див. лістинг 10). Тому, якщо ви хочете щось виправити в існуючій таблиці розділів, варто спочатку скористатися опцією -d, щоб на основі отриманих даних скласти план перерозподілу диска.

Тип розділу (поле Id) задається шістнадциричним кодом без додавання префікса 0x, або просто одним із наступних символів: S- Linux_Swap (82), L- Linux_Native (83), E- Extended (5) або X- Linux_Extended (85).

При створенні таблиці розділів можна обмежитися введенням двох перших полів - інші будуть задані за замовчуванням.

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

Лістинг 12.

# /sbin/sfdisk /dev/hdaОцінка того, що один не використовує цей диск праворуч ... BLKRRPART: Device or resource busy Цей диск є поточно в роботі - репортаж є хибним ідеєю. За допомогою всіх системних файлів, і скинути всі скидання партій на цей диск. Use the --no-reread flag to suppress this check. Використовуйте --force flag для overrule all checks.

Так що найкраще запускати sfdiskу системі на кшталт Knoppix, або застосовувати її до другого жорсткому диску, попередньо розмонтувавши його (зазначу, що fdiskу аналогічній ситуації запускається без заперечень). Втім, якщо ви впевнені у правильності своїх рішень, можна змусити утиліту працювати, вказавши опцію -f("Роби, що кажуть, і без міркувань!"), або просто скасувати перевірку того, що диск в даний момент використовується, вказавши опцію --no-reread.

Як бачите, утиліта sfdiskвимагає заздалегідь продумати структуру розділів, що створюються на диску. Як запобіжний засіб можна зберегти на диск існуючу таблицю розділів командою

# /sbin/sfdisk /dev/hda -O hda-part.save

У цьому випадку перед записом зміненої таблиці на диск старий вміст секторів, що визначають розбиття диска, буде збережено у файлі hda-part.save. Якщо в процесі внесення змін ви зробите якусь помилку, можна буде відновити вихідний станза допомогою команди

# /sbin/sfdisk /dev/hda -I hda-part.save

Зауважте, що використання опцій -Oі -Iне еквівалентно простому збереженню таблиці розділів.Інформація, що зберігається під час використання опції -O, являє собою двійкову версію виведення, одержуваного за допомогою опції -d.

За допомогою утиліти sfdiskможна змінити лише один розділ на диску, використовуючи опцію -N.

Прочитавши наведені вище описи трьох основних утиліт для розбиття диска, що існують у Лінукс, ви самі можете вибрати найбільш підходящу для себе. Зазначу тільки ще раз, що всі ці утиліти не дозволяють перезабивати диск зі збереженням інформації на вже існуючих розділах. Так що якщо мова йдепро перерозподіл диска, вам доведеться подбати про те, щоб зберегти ваші дані на якомусь резервному носії. У Останнім часомз'явилися й утиліти, які дозволяють перерозбивати диск без втрати інформації (принаймні, так стверджується). І я розповім про такі утиліти, але трохи пізніше, після того, як наведу коротку характеристику утиліт для створення розділів, що входять до складу кількох дистрибутивів Linux.

В.А. Костромін - 2. Утиліта fdisk та її найближчі родичі

Щоб визначити, в якому стані знаходиться жорсткий диск придбаного ПК, слід:

1) спробувати завантажитися з жорсткого диска, навіщо включити комп'ютер за відсутності дискети у приводі А. Якщо якась операційна система завантажилася, то жорсткий диск до роботи вже підготовлено і можна вдаватися до допомоги утиліти FDISK. Якщо завантаження не пройшло, потрібно перейти до п. 2.

2) перевірити, чи налаштований жорсткий диск, тобто. чи є у ньому розділи DOS. Для цього потрібно завантажитись із завантажувальної дискети, ввести команду FDISK (на дискеті має бути утиліта FDISK) і вибрати опцію «Виведення відомостей про наявні розділи» у головному меню. Якщо в результаті буде повідомлено, що розділи відсутні, конфігурування жорсткого диска обов'язково. Інакше є можливість реконфігурування (зміни кількості та/або розмірів розділів та логічних дисків) цією ж утилітою. У будь-якому з описаних випадків можна завершити підготовку жорсткого диска до роботи шляхом високорівневого форматуваннявсіх логічних дисків з використанням команди FORMAT (дуже часто форматування дисків здійснюється надалі в процесі встановлення операційної системи). Якщо хочете зробити форматування перед встановленням ОС, то на одній з дискет має бути утиліта FORMAT. Якщо утиліта FDISK не запускається, потрібно перейти до п. 3.

3) зробити низькорівневе форматування жорсткого диска спеціальною утилітою, що постачається разом із ПК. Низькорівневе форматування вінчестера полягає у формуванні секторів (з урахуванням коефіцієнта чергування), що полягає у записі на доріжки секторних міток та перевірці їх доброякісності ( фізичної можливостізаписи в них інформації). Дефектні сектори спеціальним чином позначаються. Після низькорівневого форматуванняслід виконати команду FDISK і, якщо необхідно, форматування логічних дисків. Неможливість низькорівневого форматування диска означає, що ПК несправно або погано підстиковані кабелі.

Таким чином, підготовка жорсткого диска до роботи з нуля реалізується трьома етапами: 1) низькорівневим форматуванням жорсткого диска; 2) конфігуруванням жорсткого диска; 3) високорівневим форматуванням всіх створених у ньому логічних дисків (цей пункт необов'язковий). Низькорівневе форматування сучасних жорсткихдисків виробляється ще заводі-изготовителе. Повторне низькорівневе форматування таких дисків не потрібне, та й дуже небезпечна операція, оскільки може призвести до втрати службової інформації. Низькорівневе переформатування жорстких дисківзастарілих моделей можна виконати утилітою CALIBRATE із комплекту NORTON UTILITIES. Цю процедуру корисно проводити приблизно раз на рік, щоб відновити секторні мітки та одночасно протестувати якість поверхні диска. Необхідність рознесення низькорівневого та високорівневого форматування жорсткого диска у часі пояснюється тим, що після низькорівневого форматування потрібно здійснити його конфігурацію. Алгоритм конфігурування жорсткого диска для роботи в середовищі Windowsполягає в наступному:


1) створення основного розділу DOS з логічним дискомв ньому;

2) створення додаткового розділу DOS (якщо необхідно, наприклад, є потреба встановити на комп'ютері 2 ОС: Windows 98 та Windows NT та працювати з різними файловими системами);

3) формування логічних дисків у додатковому розділі DOS (якщо він створений у п.2);

4) встановлення ознаки активності основного розділу DOS.



Кожен рядок введення наведеного вище виду визначає один розділ. Поля поділяються пробілами. Можна використовувати як роздільники кому або точку з комою. Числа можуть бути десятковими, вісімковими або шістнадцятковими. Поля , що задають розділ у форматі "циліндр, головка, сектор", можуть бути відсутніми (man-сторінка навіть рекомендує не ставити ці значення), оскільки утиліта вміє обчислювати їх самостійно. Завантажувальний розділ позначається зірочкою у відповідному полі. Втім, якщо у вас не встановлено інших систем, крім Лінукс, завантажувальний розділможна не вказувати, оскільки Лінукс не використовує цю мітку.