Утилита FDISK в Unix/Linux

С FDISK утилитой можно просматривать, создавать, изменять размер, удалять, копировать и перемещать разделы на жестком диске. И я приведу наглядные примеры по использованию.

Просмотр разделов в Unix/Linux

Начнем с самого легкого — просмотра разделов. Используйте опцию «-l» с командой FDISK, для просмотра доступных разделов в Linux (в Unix системах — данная опция может не сработать. Проверялось на Mac OS X). Все имеющиеся разделы в линукс отображаются по имени их устройства. Например: /dev/sda, /dev/sdb или /dev/sdc.

И так, запустим команду:

# fdisk -l

Вывод получаем следующий:

fdisk -lМожно узнать некоторую полезную информацию по конкретному блочному устройству. Например, следующая команда отобразит все разделы  для /dev/sda:

# fdisk -l /dev/sda

Вывод:

fdisk -l /dev/sda

Если у Вас есть разные названия устройств, простое имя устройства записи как /dev/sdb или /dev/sdc и так далее.

Вывод доступных команд по FDISK

Если вы хотели бы просмотреть все команды, которые доступны для FDISK, то просто используйте следующую команду, упомянув название жесткого диска, например /dev/sda, как показано ниже:

вывод все доступных команд для FDISK

вывод все доступных команд для FDISK например для /dev/sda

Введите ‘m’, чтобы увидеть список всех доступных команд по FDISK, которые помогут с работой по жесткому диску /dev/sda. После, ввода ‘m’ на экране, вы увидите все доступные параметры для FDISK которые можете использовать для устройства /dev/sda (данное устройство взято как пример):

список команд FDISK

ПРЕДУПРЕЖДЕНИЕ: DOS-совместимый режим не рекомендуется. Настоятельно рекомендуется
выключить режим (команда ‘c’) и изменить units для сектора (команда ‘u’).

Допустимые опции при работы с fdisk

  • a :- Данная опция служит для переключение загрузочного флага.
  • b :- Данная опция служит для редактирования BSD метки диска.
  • c :- Данная опция служит для переключения флага совместимости дос.
  • d :- Данная опция служит для удаления раздела.
  • g :- Данная опция служит для создания новой, пустой таблицы разделов GPT.
  • G :- Данная опция служит для создание таблицы разделов IRIX (SGI).
  • l :- Данная опция служит для вывода известных типов разделов (Linux swap, Linux, GPT, Solaris и так далее).
  • m :- Данная опция служит для вывода доступных команд (меню).
  • n :- Данная опция служит для добавления нового раздела.
  • o :- Данная опция служит для создание новой пустой таблицы разделов DOS.
  • p :- Данная опция служит для вывода таблиц разделов.
  • q :- Данная опция служит для выхода из меню но без какого-либо сохранения изменений.
  • s :- Данная опция служит для создания новой и пустой Sun метки диска (disklabel).
  • t :- Данная опция служит для изменения типа «System ID» раздела (взять можно с вывода «l» опции).
  • u :- Данная опция служит для изменения блоков отображения/ввода.
  • v :- Данная опция служит для проверка таблиц разделов.
  • w :- Данная опция служит для записи всего измененного и потом выйти.
  • x :- Данная опция служит для вызова дополнительной функциональности (только для экспертов).

Вывод всех партиций (разделов) в Unix/Linux

Чтобы вывести таблицу разделов вашего блочного устройства, используйте:

# fdisk /dev/sda

После чего, вы попадаете в меню ( в нем можно проводить различные операции с разделами), нас интересует только просмотр, по этому — вводим «p» опцию:

таблица разделов fdisk

Создать таблицу разделов (disklabel) в Unix/Linux

Если имеется пустое блочное устройство и вы хотите на нем сделать разметку для установки будущей ОС, то для начала, стоит выбрать будущую разметку.

Приеду основные таблицы для разметки:

  • GPT
  • MBR (msdos)

Чтобы создать таблицу разделов вашего блочного устройства, используйте:

# fdisk /dev/sda

Данным действием было выбрано блочное устройство /dev/sda и чтобы создать на нем новую таблицу разделов, используем одну из опций:

  • g — Чтобы создать новую, пустую таблицу GPT разделов.
  • o — Чтобы создать новую, пустую таблицу DOS разделов .

И переходим к созданию разделов.

Создать новый раздел в Unix/Linux

И так, допустим у вас есть свободное место на одном из устройств ( у меня это /dev/sda) и вам необходимо создать новый раздел (например для установки ОС). Тогда вы должны запустить утилиту следующим образом (Введите следующую команду, чтобы войти в режим управления конкретного блочного устройства):

# fdisk /dev/sda

После входа в командный режим нажмите «n», чтобы создать новый раздел в /dev/sda с определенным размером.

Как создать новый раздел в Linux fdisk

Как создать новый раздел в Linux fdisk

После нажатия «n», вас просят выбрать тип будущего раздела:

  • p — Для «primary», т.е создать первичный раздел.
  • e — Для «extended», т.е создать расширенный раздел.

Хочу отметить следующее, что «primary» разделов можно создать до 4-х штук, а все остальные будут «extended» (т.е расширенными разделами). Т.к у меня — это всего лишь 1-й раздел, то я выбираю опцию «p». Как я сказал ранее, это мой первый, первичный раздел и для него, я должен указать номер ( номер партиции), логично указать 1 (Но можно выбрать 1-4, т.к всего 4). Для создания полноценного раздела, необходимо указать сектор ( начало позиции цилиндра для создаваемого раздела), мне подсказывают что это будет — 2048 (выбрал стандартное значение), а так же, нужно указать где будет заканчиваться данный сектор (конец позиции цилиндра для создаваемого раздела) — мне предлагают указать стандартное значение, но оно мне не подходит, т.к оно создаст 1 раздел максимальной длины ( у меня это 21 Гб — тестовая машина). На данном этапе, можно указывать конец сектора в килобайтах (K), мегабайтах (M), гигабайтах (G). Предположим, я хочу создать 1-й раздел 5Гб, тогда я должен прописать «+5G» (или «+5000M» и так далее). 

Можно еще создать несколько разделов. Действия будут какие же.

Пожалуйста, имейте в виду, что после создания нового раздела, вы должны запустить (выполнить) команду ‘w’, чтобы все действия сохранились. Ну а после чего, выполнить перезапуск ОС, чтобы убедиться что создался раздел.

Форматирование разделов в Unix/Linux

После того, как разделы создали, необходимо выполнить форматирование. Но прежде чем перейти к данному действию, нужно определится с файловой системой (ФС).

Я буду использовать утилиту «mkfs для форматирования раздела. Данная утилита поддерживает следующие ФС:

  • ext2:
    # mkfs.ext2 /dev/sda1
  • ext3:
    # mkfs.ext3 /dev/sda4
  • ext4:
    # mkfs.ext4 /dev/sda4
  • fat: 
    # mkfs.fat /dev/sda4
  • minix:
    # mkfs.minix /dev/sda4
  • msdos: 
    # mkfs.msdos /dev/sda4
  • vfat:
    # mkfs.vfat /dev/sda4
  • xfs:
    # mkfs.xfs /dev/sda4

Выбираем тип ФС и переходим к фармотированию.

Проверить размер раздела в Unix/Linux

После форматирования нового раздела, проверить размер раздела можно с помощью флага «s» и команды FDISK. Таким образом, вы можете проверить размер любого конкретного устройства. Например:

# fdisk -s / dev/sda3
5285413

Размер отображается в блоках.

Для вывода в гигабайтах (Гб), используйте:

# echo "`fdisk -s /dev/sda2`/(2^20)" | bc
# echo "`fdisk -s /dev/sda1`/(2^20)" | bc
# echo "`fdisk -s /dev/sda`/(2^20)" | bc

Выглядит юзабельно.

Включение/Выключение загрузки флага (*) из раздела в Unix/Linux

При разметке, я обычно выделяю 100мб для раздела, в котором будет хранится загрузчик. И для этой цели, необходимо указать что именно с него будет выполнятся загрузка. И по этому, нужно указать нужный из разделов. Начнем:

# fdisk /dev/sda

Первым шагом, будет просмотр имеющихся разделов, чтобы увидеть текущую таблицу разделов. Как вы помните — это «p» опция. У меня на скриншоте ниже, видно что загрузочный раздел на / dev/sda1 диске (вы видите, что это флаг загрузки — звездочка ‘*’), как показано ниже:

Как отключить загрузки флага из раздела fdisk

Затем введите ‘а’ опцию, чтобы отключить флаг загрузки. Нам предлагают выбрать номер раздела где будет убрана загрузка ( я выбираю ‘1 ‘ т.е. / dev/sda1). Это отключит флаг загрузки на разделе / ​​dev/sda1:

Как отключить загрузки флага из раздела fdisk

Чтобы включить флаг с загрузки, используем «a» опцию. После того как нажали, необходимо будет ввести номер раздела который будет загружаться ( например 1-й) и сново вернули все на места.

Удалить раздел в Unix/Linux

Если вы хотели бы удалить определенный раздел (т.е. /dev/sda4) от конкретного блочного устройства (например — /dev/sda). Вы должны выполнить:

# fdisk /dev/sda

Затем, введите ‘d’ — чтобы войти в меню удаления разделов. После ввода, просят ввести номер раздела, который я хочу удалить. Предположим, мне нужно удалить 4-й раздел, то я ввожу «4». Все, раздел был удален. Вводим ‘w’  для записи всех изменений! Новые изменения будут работать только после следующей перезагрузки системы. Это можно легко понять из приведенного ниже вывода.

Как удалить раздел в Linux fdisk

Как удалить раздел в Linux fdisk

Предупреждение: Будьте осторожны, выполняя этот шаг, потому что с помощью опции ‘d’ полностью удалит раздел из системы и вы можете потерять все данные с разделе!

 Использование fdisk в bash скриптах

Если хорошо знаешь команды, то можно написать небольшой баш-скрипт или просто использовать данную конструкцию в шеле оболочки, который эмулировал бы работу пользователя:

fdisk /dev/hda << EOF
n
p
1

a
1
t
c
w
EOF