Fdisk

Материал из ALT Linux Wiki

Русский перевод man fdisk

НАЗВАНИЕ

fdisk - программа работы с разделами диска.

СИНТАКСИС

fdisk [-u] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device

fdisk -l [-u] [device...]

fdisk -s partition...

fdisk -v

 

ОПИСАНИЕ

Жесткие диски могут состоять из одного или нескольких логических дисков, которые назыавют разделами. Разбиение жесткого диска на разделы отражено в таблице разделов, которая записана в нулевом секторе диска.

В мире BSD это-же описывается в терминах слайсы (slices) дисков и стили разметки дисков (disklabel). Таблицы бывают нескольких стилей, наиболее известные из них - DOS, BSD, Sun, Mac.

Для работы Linux, требуется по крайней мере один раздел, называемый корнем файловой системы. Linux может использовать файлы подкачки ( свопы ) и/или разделы подкачки ( свопа ), но разделы больее эффективны. Как правило, создаётся отдельный раздел, описываемый, как раздел свопа. Раньше многие BIOS (базовые системы ввода-вывода), загружающие систему, имели доступ только к первым 1024 цилиндров диска. По этой причине для больших дисков, в начале их, создавался маленький раздел, в несколько десятков мегабайт, который обычно монтировался как /boot, содержал образ ядра и файлы, необходимые для загрузки, с тем, что-бы они были доступны для BIOS. Существуют и другие причины разбиения диска на больщее чило разделов (безопасность, простота администрирования, резервное копирование, тестирование и т.п.).

fdisk (в первой форме вызова) является программой, использующей меню, для создания и управления таблицами разделов. Он умеет работать с таблицами разделов типа DOS и с дисковыми метками BSD и SUN

fdisk не понимает GUID Partition Table (GPT), и не предназначен для для работы с крупными разделами. В случае необходимости, вы можете использовать более мощную команду GNU parted(8).

Устройства - это как правило /dev/sda , /dev/sdb и т.п.. Имя устройства относится ко всему диску. Если для обслуживания контроллера не используется библиотека libata (библиоткеув ядра, для обслуживания ATA контроллеров), то существует различие между именами IDE и SCSI дисками. Имена /dev/hd* закреплены за IDE устройствами, и /dev/sd* за SCSI устройствами. Внешние жёсткие диски , обслуживаемые через USB, также имеют имена типа /dev/sd*

Имя раздела состоит из буквенного имени и из номера раздела.
Например /dev/sda1,- это первый раздел первого жесткого диска системы.

Диски типа sd могут иметь до 15 разделов. См. также документацию к ядру Linux (файл Documentation/devices.txt ).

  • При использовании стиля BSD/SUN , каждый раздел ( спайс ) можно разделить на 8 меток подразделов ( DiskLabels ), один из которых, (третий подраздел) используется для доступа ко всему разделу. Нельзя начинайть раздел, который фактически использует его первый сектор (например, раздел подкачки) с цилиндра 0, так-как это уничтожит метку подраздела. Под своп принято отводить второй подраздел одного из разделов. При этом максимально получается один корневой раздел (занимающий весь первый раздел), один раздел подкачки и 20 подразделов в трёх оставшихся разделах (по семь на каждый). Также возможно разбиение диска, при котором три раздела не используются, а один разбит на подразделы (режим полного диска). Подробнее смотри документацию по FreeBSD.
  • При использовании стиля IRIX/SGI первичный раздел может состоять из 16 подразделов, из которых, одиннадцатый представляет весь объем раздела (как третий в стиле BSD ) , а девятый помечен как заголовок тома IRIX/SGI машинах или специализированных для IRIX/SGI дистрибутивах.
  • При использованиии стиля DOS , таблицы могут описывать неограниченное количество разделов. В нулевом секторе таблицы есть место для описания 4 разделов (Так называемых первичных разделов). Один из них может быть расширенным разделом, этот раздел можно назвать контейнером, в который можно помещать, "вторичные разделы" (логические диски) - аналогично тому, как в спайс помещаются вторичные разделы (Disklabels) в BSD стиле. В отличии от BSD стиля, где каждый из спайсов может содержать вторичные разделы, в DOS стиле только один (обычно последний) может содержать вторичные разделы. Официально "вторичные разделы" называются логическими дисками , что вносит некоторую путаницу, так-как и раздел, занимающий основной ("первичный") раздел также можно назвать "логическим диском". Описание вторичных разделов представляют из себя связанный список дескрипторов, каждый из которых указывает на начальный сектор следующего раздела.
Четыре первичных раздела , нумеруются цифрами 1-4. Вторичные разделы имеют нумерацию, начинающуюся с 5, независимо от числа первичных разделов.
При использовании стиля DOS, начальное смещение и размер каждого раздела хранится двумя способами
как абсолютное число секторов (приводятся к 32 бит), так и тройкой цилиндры/головки/сектора - C/H/S (приведены к 10 8 и 6 бит). Первый способ позволяет описать геометрию диска с 512-байтовыми секторами и размером до 2 ТБ. У второго способа есть две проблемы. Прежде всего значения C/H/S полей могут быть заполнены только тогда, когда количество головок и количество секторов на дорожку известны. Во-вторых, даже если мы знаем, что эти значения этих чисел, 24 бит которые доступны для каждого из полей не хватает. Операционная система DOS использует для доступа к диску только C/H/S способ, Windows использует для доступа оба способа, Linux не использует способ C/H/S.

Если это возможно, fdisk стремиться получить геометрию диска автоматически. Это не обязательно реальная физическая геометрия диска (на самом деле, современные диски имеют совсем другие физические параметры, чем те, которые выдаёт BIOS в виде C/H/S), но это логическая геометрия диска, которую использует стиль DOS в описании таблицы разделов диска.

Обычно все идет хорошо, без всяких проблем, если Linux - это единственная операционная система на диске. Однако, если на диске вместе с ним стоит другая операционная система, то часто удобно вначале создать хотя-бы один раздел средствами этой, другой, операционной системы. Когда Linux при загрузке увидет таблицу разделов, то попытается подобрать логическую геометрию раздела так, что она будет совпадать с геометрией, используемой в соседней операционной системе.

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

В некоторых версиях MS-DOS создают первый раздел , начало которого находится не на границе цилиндра, а на втором секторе первого цилиндра. В этом случае начало первого раздела не может совпасть с границей цилиндра, но это обычно не вызывает какие-либо проблемы, если у вас не установлена OS/2.

При обновлении содержания таблицы разделов, перед выходом из fdisk вызываются функции sync() и BLKRRPART ioctl() с целью заново перечитать таблицу разделов на диске.

Раньше, после использования fdisk, было необходимо перезагрузить ОС. Сейчас в этом нет необходимости, напротив, быстрая перезагрузка может привести к потере недописанных данных. Заметим, что и ядро и буфер данных дисковой подсистемы может иметь данные в оперативной памяти.

 

DOS 6.x ПРЕДУПРЕЖДЕНИЯ

Команда DOS 6.x format ищет информацию о разделе в первом секторе области данных раздела, и рассматривает эту информацию как более надежную, чем информация, содержащаяся в таблице разделов.

Команда format (DOS) ожидает что команда fdisk (DOS) очистила первые 512 байт данных области раздела, при изменении размера размера. Команда format будет проверять эту дополнительную информацию, даже если указать флаг /U, - мы считаем что это ошибка в командах DOS format и fdisk.

Суть в том, что если вы используете команды сfdisk или fdisk (Linux), чтобы изменить размер записи в таблице разделов DOS, то вы должны, используя команду dd, обнулить первые 512 байт, прежде чем использовать команду format (DOS) для форматирования раздела.

Например, если вы используете команду сfdisk для создания DOS раздела на /dev/sda1 , то после выполнения fdisk или cfdisk и перезагрузки Linux, с тем чтобы данные в таблице разделов, стали достоверными, надо выполнить команду

" dd if=/dev/zero of=/dev/sda1 bs=512 count=1 "

обнулив первые 512 байт раздела.

БУДЬТЕ КРАЙНЕ ОСТОРОЖНЫМИ при выполнении команды dd , так как небольшая опечатка в команде может привести к потере данных на диске или стиранию таблицы разделов.

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

Например, для создания раздела DOS, иcпользуйте программу fdisk операционной системы DOS, а для создания разделов для Linux, используйте програмы fdisk, cfdisk, parted и т.п. )          

ОПЦИИ

-b sectorsize

задаёт размер сектора диска в байтах. Допустимые значения: 512, 1024, 2048, 4096. (последние версии ядра Linux сами определяют размером сектора диска. Используйте этот параметр только на старых ядрах, или в случае, если вы хотите изменить размер определённый ядром).

-h

печать подсказки команды и выход.

-c

выключение DOS-совместимого режима работы (рекомендуется).

-C cyls

задаёт число цилиндров на диске. Не представляю зачем это надо.

-H heads

задаёт число головок диска. (конечно, не реальное их число, а число, которое используется в таблице разделов). Разумное значений 255 и 16.

-S sect

задаёт число число секторов на дорожку на диске. (не реальное значение, а число, которое используется в таблице раздела) разумные значения 63.

-l

выдача списка разделов для указанного устройства. Если не указано ни одного устройства, то выдаётся информация об всех устройствах, указанных в файле /proc/partitions (если он есть)

-u

при выдаче списка разделов, размеры указываются в секторах, а не в цилиндрах.

-s partition

выдача размера раздела в блоках.

-v

выдача версии программы fdisk.

 

ИЗВЕСТНЫЕ ОШИБКИ И ПРОБЛЕМЫ

Существуют несколько программ с именем *fdisk сfdisk, fdisk, sfdisk. На самом деле, сfdisk красивая программа, она понимает и создаёт таблицы разделов очень качественно, удовлетворяющие строгим требованиям. Используйте её в первую очередь. По сравнению с ней, программа fdisk выглядит менее сторогой. fdisk может создать неправильные описания разделов, нестандартные записи и т.п., но если вы знаете что вы делаете, то обычно всё заканчивается успешно. Ее преимущество заключается в том, что она может работать с таблицами в стилях, отличных от DOS ( BSD и проч.) Если у вас нет опыта и знаний работы с разделами, старайтесь.избегать её использование.

Программа sfdisk прежде всего для професионалов - пользовательский интерфейс её ужасен, но её работа более корректна, чем fdisk и возможности у неё более мощные чем у fdisk или cfdisk. Кроме того её удобно использовать в неинтерактивном режиме, например в скриптах.

В последнее время стала популярна программа parted сfdisk , но parted обладает гораздо большими возможностями - она не только может изменить размер раздела, но и изменить размер файловой системы, находящейся в разделе.

Стили разделов IRIX/SGI в настоящее время не поддерживается ядрами Linux, кроме того заголовки директориев IRIX/SGI поддерживаются только частично.

Опция `dump partition table to file' - сброс таблицы разделов в файл - отсутствует.

 

СМОТРИТЕ ТАКЖЕ

cfdisk(8) , sfdisk(8) , mkfs(8) , parted(8) , partprobe(8) , kpartx(8)


СОСТАВ

Программа fdisk - это часть пакета util-linux-ng и доступна по адресу ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.


ПЕРЕВОД

Перевод с английского сделал Руслан Хихин <ruslandh@altlinux.ru>

manHOWTO