Linux: утилита разметки fdisk
Начнем с fdisk
: именно им больше всего пугали в старые времена начинающих пользователей Linux, предлагая дружественные альтернативы типа Disk Druid. Однако при ближайшем рассмотрении выясняется, что ничего устрашающего в ней нет.
Происхождение fdisk
теряется во мраке веков, уходя во времена первых UNIX для PC-архитектуры -- насколько я понимаю, раньше необходимости в ней не было, а главными инструментами дисковой разметки были утилиты типа disklabel
или bsdlabel
. Мне не удалось также выяснить, когда эта утилита появилась в Linux. Могу только предполагать, что на самых ранних стадиях создания утилит обрамления для его ядра -- т.н. linux-utils. Ныне fdisk
входит в состав
Для начала следует запомнить, что запуск команды fdisk
в любом качестве, даже просто для получения информации о диске, возможно только с правами суперпользователя, каковые и надо обеспечить себе любым образом, например, через su
или sudo
.
Если команду fdisk
дать без опций и аргументов, она выведет краткую справку об её использовании:
# fdisk Usage: fdisk [-l] [-b SSZ] [-u] device E.g.: fdisk /dev/hda (for the first IDE disk) or: fdisk /dev/sdc (for the third SCSI disk) or: fdisk /dev/eda (for the first PS/2 ESDI drive) or: fdisk /dev/rd/c0d0 or: 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 identifier: 0x0008e008 Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 1 14 112423+ 83 Linux /dev/sda2 15 15680 125837145 5 Расширенный /dev/sda5 15 2626 20980858+ 83 Linux /dev/sda6 2627 4585 15735636 83 Linux
Если опустить аргумент команды, то аналогичные сведения будут выведены для всех физических дисков данной машины: сначала -- общая информация о диске, включающая его размер, число головок, секторов и цилиндров, а затем для каждого существующего на диске раздела указываются его первый и последний цилиндры (символом + маркируются разделы, не занимающие последний цилиндр полностью), размер в блоках (физических или заданных опцией 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 (или что-либо аналогичное) -- обязательны, иначе объем диска окажется равных ровно трёхстам цилиндрам.
В современных версиях fdisk
возможно указание объема в двух системах единиц (не считая цилиндров). Во-первых, он может задаваться в том, что мы испокон веков привыкли называть мегабайтами и гигабайтами, то есть степенях двойки. Однако ныне авторитетные товарищи утверждают, что такие единицы измерения должны величаться мебибайтами, гибибайтами и так далее. Их следует указывать так: +1000MB, +10GB и так далее.
А можно определять объём раздела и в "настоящих", с точки зрения пуристов от метрологии, мегабайтах и гигабайтах, представляющих собой собой степени десятки -- тех, в которых производители жестких дисков издревле указывают размеры своей продукции. И тогда он определяется таким образом: +1000M, +10G etc.
При задании размера в единицах, отличных от цилиндров, он всегда будет округляться (по обычным правилам округления) до ближайшего числа, кратного целому количеству последних. Так что не следует удивляться, если вместо искомого раздела в 20 Мбайт возникнет 16-мегабайтный, а вместо 22-мегабайтного -- раздел в 24 Мбайт.
При создании расширенного раздела сначала все происходит точно также -- задание номера (очевидно, что в том же диапазоне 1--4), указание начального цилиндра и конечного (или -- объема в мегабайтах). Однако это еще полдела, нужно поделить расширенный раздел на разделы логические. И потому при следующей команде на создание раздела нам будет предложен уже выбор между первичным (если число последних еще не исчерпано) и логическим (ведь второй extended-раздел средствами fdisk
создать нельзя):
Command (m for help): n Command action l logical (5 or 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
-- кажущаяся: благодаря системе подсказки дисковые разделы создаются легко и непринуждённо. Тем не менее, если таки она удручает своей недостаточной наглядностью, можно воспользоваться утилитой cfdisk
с меню-ориентированным интерфейсом.
- Linux: утилиты дисковой разметки. Обзор
- Linux: утилита разметки fdisk
- Linux: утилита разметки cfdisk
- Linux: разметка диска с помощью утилиты parted
- Linux: методы высвобождения дискового пространства
- Linux: высвобождение дискового пространства с помощью утилиты parted
- Linux: переразметка диска с помощью Gparted
Теги: fdisk, linux, средства разметки