10 вариантов использования команды fdisk для управления дисковыми разделами Linux

fdisk (fixed disk или format disk) является наиболее часто используемой утилитой для манипуляций с диском из командной строки Linux/Unix систем. С помощью команды fdisk вы можете просматривать, создавать, изменять размер диска, удалять, изменять, копировать и перемещать разделы на жестком диске, используя текстовый интерфейс.

Эта утилита очень полезна с точки зрения создания пространства для новых разделов, организации пространства для новых дисков, реорганизации старых дисков и копирования или перемещения данных на новые диски. Она позволяет создать максимум четыре новых первичных раздела и количество логических (расширенных) разделов, исходя из размера жесткого диска.

Выполнение команды fdisk производится под суперпользователем, иначе вы получите ошибку «команда не найдена».

Приведенная ниже базовая команда показывает список всех существующих разделов диска в вашей системе. Аргумент '-l' (список всех разделов) используется с командой fdisk для просмотра всех доступных разделов в Linux. Разделы отображаются по именам устройств. Например: /dev/sda, /dev/sdb или /dev/sdc.

# fdisk -l
 
Диск /dev/sda: 149,5 GiB, 160041885696 байт, 312581808 секторов
Disk model: WDC WD1600AAJS-6
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x000f2aa9

Устр-во    Загрузочный    начало     Конец   Секторы Размер Идентификатор Тип
/dev/sda1  *                2048 295804927 295802880 141,1G            83 Linux
/dev/sda2              295804928 312580095  16775168     8G            82 Linux 


Диск /dev/sdb: 298,9 GiB, 320072933376 байт, 625142448 секторов
Disk model: WDC WD3202ABYS-0
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x41381666

Устр-во    Загрузочный начало     Конец   Секторы Размер Идентификатор Тип
/dev/sdb1                2048 625141759 625139712 298,1G            83 Linux


Диск /dev/sdc: 232,91 GiB, 250059350016 байт, 488397168 секторов
Disk model: Transcend       
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x32fd1328

Устр-во    Загрузочный начало     Конец   Секторы Размер Идентификатор Тип
/dev/sdc1                2048 488396799 488394752 232,9G             7 HPFS/NTFS

Для просмотра всех разделов конкретного жесткого диска используйте опцию '-l' с именем устройства. Например, следующая команда отобразит все разделы диска устройства /dev/sda. В случае, если у вас другие имена устройств, просто запишите имя устройства как /dev/sdb или /dev/sdc.

# fdisk -l /dev/sda

Диск /dev/sda: 149,5 GiB, 160041885696 байт, 312581808 секторов
Disk model: WDC WD1600AAJS-6
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x000f2aa9

Устр-во    Загрузочный    начало     Конец   Секторы Размер Идентификатор Тип
/dev/sda1  *                2048 295804927 295802880 141,1G            83 Linux
/dev/sda2              295804928 312580095  16775168     8G            82 Linux 

Для просмотра всех опций, доступных для fdisk, введите fdisk и имя жесткого диска, например, /dev/sda.

# fdisk /dev/sda

Добро пожаловать в fdisk (util-linux 2.34).
Изменения останутся только в памяти до тех пор, пока вы не решите записать их.
Будьте внимательны, используя команду write.


Команда (m для справки): 

Введите 'm', чтобы вывести список всех доступных опций fdisk, с которыми можно работать на жестком диске /dev/sda.

# fdisk /dev/sda

Добро пожаловать в fdisk (util-linux 2.34).
Изменения останутся только в памяти до тех пор, пока вы не решите записать их.
Будьте внимательны, используя команду write.

Команда (m для справки): m

Справка:

  DOS (MBR)
   a   переключение флага загрузки
   b   редактирование вложенной метки диска BSD
   c   переключение флага dos-совместимости

  Общие
   d   удалить раздел
   F   показать свободное неразмеченное пространство
   l   список известных типов разделов
   n   добавление нового раздела
   p   вывести таблицу разделов
   t   изменение типа раздела
   v   проверка таблицы разделов
   i   вывести информацию о разделе

  Разное
   m   вывод этого меню
   u   изменение единиц измерения экрана/содержимого
   x   дополнительная функциональность (только для экспертов)

  Сценарий
   I   загрузить разметку из файла сценария sfdisk
   O   записать разметку в файл сценария sfdisk

  Записать и выйти
   w   запись таблицы разделов на диск и выход
   q   выход без сохранения изменений

  Создать новую метку
   g   создание новой пустой таблицы разделов GPT
   G   создание новой пустой таблицы разделов SGI (IRIX)
   o   создание новой пустой таблицы разделов DOS
   s   создание новой пустой таблицы разделов Sun


Команда (m для справки): 

Чтобы вывести всю таблицу разделов жесткого диска, вы должны быть в командном режиме определенного жесткого диска, например /dev/sda.

# fdisk /dev/sda

Из командного режима введите 'p' вместо 'm', как мы делали это ранее. После ввода 'p', распечатается таблица разделов /dev/sda.

Команда (m для справки): p
Диск /dev/sda: 149,5 GiB, 160041885696 байт, 312581808 секторов
Disk model: WDC WD1600AAJS-6
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x000f2aa9

Устр-во    Загрузочный    начало     Конец   Секторы Размер Идентификатор Тип
/dev/sda1  *                2048 295804927 295802880 141,1G            83 Linux
/dev/sda2              295804928 312580095  16775168     8G            82 Linux 

Команда (m для справки): 

Если вам необходимо удалить определенный раздел с определенного жесткого диска, запускаем fdisk с указанием конкретного диска

# fdisk /dev/sdb

и вводим 'd' для удаления любого заданного имени раздела из системы. После ввода 'd', вам будет предложено ввести номер раздела, который необходимо удалить с жесткого диска /dev/sda. После ввода номера раздела, система удалит раздел с этим номером и покажет свободное место в таблице разделов. Далее введите 'w', чтобы записать обновленную таблицу разделов на диск и выйти после внесения новых изменений в таблицу разделов. Новые изменения произойдут только после следующей перезагрузки системы. Это можно легко понять из приведенного ниже вывода.

Команда (m для справки): p
Диск /dev/sdb: 298,9 GiB, 320072933376 байт, 625142448 секторов
Disk model: WDC WD3202ABYS-0
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x41381666
Команда (m для справки): p
Диск /dev/sdb: 298,9 GiB, 320072933376 байт, 625142448 секторов
Disk model: WDC WD3202ABYS-0
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x41381666

Устр-во    Загрузочный начало     Конец   Секторы Размер Идентификатор Тип
/dev/sdb1                2048 625141759 625139712 298,1G            83 Linux

Команда (m для справки): d
Выбранный раздел 1
Раздел 1 был удален.

Команда (m для справки): w
Таблица разделов была изменена.
Failed to remove partition 1 from system: Устройство или ресурс занято

Ядро всё ещё использует старые разделы. Новая таблица будет задействована при следующей перезагрузке. 
Синхронизируются диски.

Устр-во    Загрузочный начало     Конец   Секторы Размер Идентификатор Тип
/dev/sdb1                2048 625141759 625139712 298,1G            83 Linux

Команда (m для справки): d
Выбранный раздел 1
Раздел 1 был удален.

Команда (m для справки): w
Таблица разделов была изменена.
Failed to remove partition 1 from system: Устройство или ресурс занято

Ядро всё ещё использует старые разделы. Новая таблица будет задействована при следующей перезагрузке. 
Синхронизируются диски.

Если у вас осталось свободное место на одном из устройств, скажем /dev/sda, и вы хотите создать новый раздел на нём. Тогда вы должны быть в режиме командной строки fdisk в /dev/sda. Введите следующую команду, чтобы войти в командный режим конкретного жесткого диска.

# fdisk /dev/sdb

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

Во время создания нового раздела вам будут предложены два варианта 'extended' или 'primary' создания раздела. Нажмите 'e' для расширенного раздела и 'p' для основного раздела. Затем потребуется ввести следующие два параметра:

  1. Номер первого сектор создаваемого раздела.
  2. Номер последнего сектора создаваемого раздела, количество секторов под новый раздел или размер нового раздела.

Размер цилиндра можно ввести, добавив в приглашении «+5000M», где «+» означает добавление, а «5000M» - размер нового раздела в мегабайтах (т.е. 5000MB). После создания нового раздела, необходимо сохранить изменения в таблице разделов, запустив команду 'w' и, наконец, перезагрузить вашу систему, чтобы задействовать только что созданный раздел.

После создания нового раздела не пропустите команду 'mkfs', чтобы отформатировать вновь созданный раздел. Для форматирования раздела в терминале введите следующую команду. Здесь /dev/sda4 - это вновь созданный раздел.

# mkfs.ext4 /dev/sda4

После форматирования нового раздела, проверьте его размер, с помощью команды fdisk, указав опцию 's' (отображает размер в блоках). Таким образом, вы можете проверить размер любого конкретного устройства.

# fdisk -s /dev/sda2
5194304

Если вы удалили логический раздел и заново создали его, вы можете заметить проблему «Раздел не в порядке» или сообщение об ошибке типа «Записи таблицы разделов не соответствуют порядку разделов на диске».

Например, когда удалены три логических раздела, таких как (sda4, sda5 и sda6), и при создании нового раздела, можно ожидать, что имя нового раздела будет sda4. Но система может задать его как sda5. Это происходит из-за того, что после удаления раздела, раздел sda7 был перемещен как sda4 и произошло смещение свободного пространства в конец.

Для исправления таких проблем с порядком расположения разделов и назначения sda4 новому создаваемому разделу, введите 'x' для входа в дополнительный функциональный раздел, а затем введите команду эксперта 'f' для исправления порядка расположения разделов в таблице, как показано ниже.

# fdisk /dev/sdb

Добро пожаловать в fdisk
Изменения останутся только в памяти до тех пор, пока вы не решите записать их.
Будьте внимательны, используя команду write.


Команда (m для справки): x

Команды эксперта (m для справки): f

После выполнения команды 'f' не забудьте выполнить команду 'w' для сохранения и выхода из режима команд fdisk. После того, как порядок с таблицей разделов исправится, вы больше не будете получать сообщения об ошибках.

По умолчанию команда fdisk показывает символ загрузочного флага (т.е. '*') на каждом разделе. Если вы хотите включить или выключить флаг загрузочный радела, выполните следующие шаги. 1. Входим в командный режим fdisk необходимого диска

# fdisk /dev/sda

2. С помощью команды 'p' для просмотра текущей таблицы разделов, видим, например, что на диске /dev/sda1 есть загрузочный флаг (символ звездочки (*) оранжевого цвета).

3. Вводим команду 'a' для отключения загрузочного флага, затем вводим номер раздела '1' как (т.е. /dev/sda1), в данном случае. Это отключит загрузочный флаг на разделе /dev/sda1. При этом будет удален флаг звездочки (*) при выводе результатов команды 'p'.

В этой статье мы рассмотрели почти все основные команды fdisk, но все же fdisk содержит множество и других экспертных команд, которые можно использовать, введя 'x'. За более подробной информацией обратитесь к man fdisk.

Источник