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' для основного раздела. Затем потребуется ввести следующие два параметра:
Размер цилиндра можно ввести, добавив в приглашении «+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.