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.

 

КОМАНДЫ ИНТЕРАКТИВНОГО РЕЖИМА

Для входа в интерактивный режим даем команду (например для диска /dev/sdg)

fdisk /dev/sdg

Основные команды

Команда m выдаст все возможные команды интерактивного режима:

Help
Работа с разбиением диска в стиле DOS (MBR)
  a   установить/сброосить флаг загрузки на раздел 
  b   редактировать вложенную BSD метку диска
  c   установить/сброосить флагсовместимости с dos 
Общие
  d   удалить раздел
  l   выдать таблицу известных типов разделов
  n   добавить новый раздел
  p   выдать список видимых разделов
  t   изменить тип раздела
  v   проверить таблицу разделов
Прочие
  m   распечатать список команд (эта справка)
  u   изменить единицу измерения показываемых размеров
  x   дополнительные функции (экспертный режим)
Сохранение и выход
  w   записать таблицу разделов на диск и выйти
  q   выйти без сохранения сделанных изминений
Создание новых меток
  g   Создать новую пустую таблицу разделов GPT
  G   Создать новую пустую таблицу разделов SGI (IRIX)
  o   Создать новую пустую таблицу разделов DOS
  s   Создать новую пустую таблицу разделов Sun

Комады экспертного режима

Help (expert commands)
Работа с разбиением диска в стиле DOS (MBR)
  b   переместить начало данных в разделе
  i   изменить идентификатор диска
Геометрия
  c   изменить число цилиндров
  h   изменить число головок
  s   изменить число секторов на дорожке
Generic
  p   выдать таблицу разделов
  v   проверить таблицу разделов
  d   выдать данные первого сектора устройства в необработанном виде
  D   выдать данные метки диска (disklabel) в необработанном виде 
  f   исправить порядок разделов
  m   выдать эту справку
Save & Exit
  q   выйти без сохранения изминений
  r   вернуться в предыдущее меню

ОКРАСКА

        Окраска по-умолчанию может быть отключена созданием пустого файла /etc/terminal-colors.d/fdisk.disable..
       См terminal-colors.d(5)@ для получения более подробной информации о раскрашивания конфигурацииния. 
        Логические имена цветов, поддерживаемые FDISK являются:
 
        header - заголовок выходных таблиц.
 
        help-title - названия секций помощь.
 
        warn - предупреждающие сообщения.
 
        welcome - приветственное сообщение.

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

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

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

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

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

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

 

ПЕРЕМЕННЫЕ СРЕДЫ ОКРУЖЕНИЯ

       Установка LIBFDISK_DEBUG=0xffff разрешает отладочный вывод.

СОСТАВ

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

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

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

Авторы

       Karel Zak ⟨kzak@redhat.com⟩
       Davidlohr Bueso ⟨dave@gnu.org⟩
 
       Оригинальная версия была написана Andries E. Brouwer, A. V. Le Blanc
       и другими.


ПЕРЕВОД

Перевод с английского сделал Руслан Хихин

Примечание: Последний оригинальный английский man fdisk размещён в обсуждении этой статьи. Правки и предложения приветствуются.


--HihinRuslan 13:11, 21 марта 2015 (MSK)