Sfdisk скопировать разметку диска

Обновлено: 03.07.2024

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

Данная процедура потенциально опасна для данных. Любое неверное действие или нюанс, связанный с уникальной настройкой, могут привести к потере данных. Обязательно, выполняем резервное копирование всех важных файлов. Также я рекомендую потренироваться в тестовой среде.

В зависимости от системы и типа разделов, действия могут отличаться, а могут появляться особенности, которые сделают работу сложнее. Клонирование диска может быть выполнено в несколько действий, а может превратиться в кошмар. Запасаемся временем и терпением.

Процесс будет выполнен в несколько шагов:

1. Клонирование диска

Первым делом мы создаем полную копию нашего диска. Это единственный этап, который может быть выполнен без нюансов на любой из систем, так как он выполняется с помощью утилиты dd.

Смотрим состояние дисков и разделов на текущий момент:

Определяемся, с какого диска на какой мы будем выполнять копию. Это может прозвучать банально, но тут важно не перепутать источник диска, с которого клонируется информация и целевой носитель.

dd if=/dev/sdx1 of=/dev/sdy1 bs=64K conv=noerror,sync

* Команда выполняет блочное копирование и запускается со следующими параметрами:

  • if — источник данных.
  • of — куда копировать данные.
  • bs — объем блока, который будет читаться и копироваться за раз.
  • conv — дополнительные опции. В данном примере noerror — продолжать операцию в случае ошибки чтения данных; sync — копировать все, в том числе и нулевые данные.

* Таким образом, мы клонируем диск или раздел с /dev/sdx1 в /dev/sdy1 (не путаем источник и назначение).

Команда будет выполняться некоторое время. После ее завершения можно снова посмотреть состояние дисков и разделов:

При клонировании диска мы должны увидеть, что целевой носитель приобрел такую же разметку.

Следующим шагом настроим загрузчик.

2. Загрузчик grub2

Для большинства современных систем характерно использование grub2. Его мы и будем рассматривать. Но если в вашем случае используется сервер с grub первой версии, то мы можем обратиться к инструкции How to Migrate the Root Filesystem to a New Disk.

Мы можем увидеть разные варианты строки, указывающей на загрузку системы.

а) В некоторых случаях это будет универсальная строка, которую не нужно менять, например:

GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"

* в данной строке мы видим, что загрузчик будет искать том LVM centos/root. Так как после клонирования он не поменяется, то нам ничего не нужно редактировать.

б) В некоторых случаях строка может быть пустой:

* в данном примере также от нас не потребуется никаких действий.

в) В некоторых случаях указатель может вести на конкретные диски:

GRUB_CMDLINE_LINUX="root=/dev/disk/by-id/<partition/disk name> resume=/dev/disk/by-id/<partition/disk name> splash=silent quiet showopts"

Тогда нам понадобиться изменить строки, чтобы диск соответствовал новому.

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

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

3. Файл fstab

На следующем шаге мы проверяем настройки монтирования корневой директории и раздела boot при загрузке системы. Они задаются в файле fstab.

Есть два надежных способа указать диск при монтировании — использовать его идентификатор или точку монтирования тома LVM. Рассмотрим оба варианта.

Данный способ можно использовать частично, так как раздел boot не может использовать LVM, поэтому данное монтирование будет применяться только к корневому разделу.

Если мы используем LVM, то все, что нам нужно сделать, это открыть файл fstab и проверить, что в нем, на самом деле, используется LVM при монтировании корневого раздела:

Мы можем увидеть что-то на подобие:

.
/dev/mapper/centos-root / xfs defaults 0 0
.

Понять, используется ли LVM можно командой:

Мы должны увидеть пометку lvm:

.
centos-root 253:0 0 13.4G 0 lvm /
.

Как было сказано выше, в случае использования LVM, нам не придется редактировать fstab, так как точка монтирования не поменяется.

Использование идентификатора

Для получения списка дисков с их идентификаторами, вводим команду:

Мы получим что-то на подобие:

* как видим, идентификаторы дисков совпадают, так как команды dd клонирует информацию полностью. Также обратите внимание, что разделы LVM также имеют свои идентификаторы. Это очень важный момент, так как точка монтирования в случае использования LVM должна указывать на него.

Чтобы лучше понять, какой идентификатор нам нужен, смотрим список раздело и их монтирования:

Находим раздел, который соответствует корневому и смотрим его идентификатор. После открываем файл:

Наши записи могут быть, примерно, такими:

Но также никто нам не запретит использовать гибридный вариант, например:

* в данном варианте мы используем том LVM для корня и идентификатор для boot.

Буква (цифра) раздела

Также мы можем использовать монтирование при указании конкретного диска и раздела, например:

/dev/sda2 / xfs defaults 0 0
/dev/sda1 /boot xfs defaults 0 0

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

4. Перезагрузка

Надеемся, что мы все сделали правильно и перезагружаемся. На данном этапе также могут быть варианты.

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

б) Если мы сохранили оба диска, нам нужно убедиться в настройках БИОС/UEFI, что загрузка выполняется с нового диска.

Favorite

Добавить в избранное

Главное меню » Linux » Руководство по Sfdisk в Linux

(1 оценок, среднее: 5,00 из 5)

Руководство по Sfdisk в Linux

Р азбиение на разделы жизненно важно для системного администрирования. Это причина того, что программное обеспечение для разметки существует во многих вариантах. fdisk и cfdisk созданы для интерактивного взаимодействия. С помощью parted вы можете создавать все с помощью команд. Это наиболее часто используемые; sfdisk не очень распространен. У него есть много функций, но вы можете использовать его для скриптов в гораздо большей степени. Долгое время sfdisk отставал в поддержке GPT, начиная с версии 2.26, он действительно поддерживает GPT.

Эта программа по-прежнему использует MBR по умолчанию, поэтому вы должны явно указать, что используете GPT.

Резервное копирование

Перед тем как начать работу с диском, вы должны сделать резервную копию любых важных данных на другом носителе! Это предположение, что у вас должен быть ясный ум с самого начала. Чтобы убедиться, что вы можете восстановить текущее состояние или реализовать его на другом диске, вы можете выгрузить таблицу.

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

Чтобы вернуть его или поместить на новый диск, используйте параметр восстановления. Точнее, вы просто передаете этот результат в следующий вызов sfdisk.

Кстати, это хороший пример правильно отформатированного командного файла для разметки диска. Все части являются необязательными, это позволяет подключить другой диск к той же машине и разбить его на такие же разделы. Когда вы удаляете dev/sdaX из вышеуказанного файла, вы можете разбить любой диск с этим файлом.

Интерактивный режим

В интерактивном режиме вам нужно знать, что вы делаете. Начальный дисплей скудный. Вы увидите тип диска и его размер. Когда диск пуст, вы НЕ увидите старую ситуацию, из-за чего начало работы может сбить с толку. Тем не менее процедура строгая. У вас есть четыре значения для каждого раздела, разделенные запятой, для значений по умолчанию вы просто ставите запятую.

Перед тем, как начать, создайте этикетку. Этот пример предназначен для раздела GPT.

Именно так разработан Sfdisk, но давайте начнем с интерактивного режима.

Выполняется простое разбиение.

Установка метки диска и меток разделов

Вы также можете использовать sfdisk с командой за раз. Для этого вы используете параметры с тире. Многие из этих команд можно установить с помощью файлов сценариев. Установить метку диска можно двумя способами, один из которых вы видели ранее в этом руководстве.

Это сделает ваш диск диском GPT. У вас есть возможность остаться с dos или, что более целесообразно, использовать флаг LegacyBIOSBootable для gpt, когда вы используете оборудование, которое не поддерживает gpt. Это редко, поэтому, скорее всего, вы будете использовать этот флаг только для карты памяти, которая вам нужна, чтобы иметь возможность загружаться даже на старом оборудовании.

Вы также можете установить метки для каждого раздела. См. Команды ниже.

Обратите внимание на разницу между меткой детали и меткой диска. Этикетка диска дает только вспомогательную метку для использования другим программным обеспечением. Метка диска делает диск целиком, либо gpt, либо dos.

Создание скриптов

Использование выходных данных в качестве руководства облегчает начало работы, просто не забудьте проверить документацию, прежде чем делать что-нибудь необдуманное. Вы можете, например, отредактировать предыдущий файл, удалив диск. В этом примере дамп взят из /dev/sda. Если вы удалите эту часть, у вас останется действующий файл.

Все остальные части файла также можно использовать в качестве команд. Скопируйте или заберите то, что хотите, и вставьте в sfdisk.

Будьте осторожны! Все команды будут запущены немедленно. Хотя он покажет вам итоговую таблицу и попросит подтвердить уничтожение диска, с которым вы работаете.

Заключение

Это был краткий обзор возможностей и слабостей использования программы sfdisk для ваших новых дисков. Как вы можете видеть из этого беглого осмотра, вы можете использовать эту программу для многих вещей, особенно если вы заранее спланировали то, что вам нужно сделать. Также существует большая степень свободы при добавлении sfdisk в скрипты.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

У нас есть сервер в котором 2 диска: /dev/sda и /dev/sdb. Эти диски собраны у нас в софтверный RAID1 с помощью mdadm. Один из дисков вышел из строя, в нашем случае это /dev/sdb.

I. Удаление диска из массива

Перед заменой диска желательно убрать диск из массива. Для начала проверим как размечен диск в массиве:

В данном случае массив собран так. Что md0 состоит из sda2 и sdb2, md1 из sda3 и sdb3, md2 из sda4 и sdb4. На этом сервере md0 это /boot, md1 — своп, md2 — корень. Убираем sdb из всех устройств.

Если разделы из массива не удаляются, это как в нашем случае. Mdadm не считает диск неисправным и использует его, и при удалении мы увидим ошибку, что устройство используется. В этом случае перед удалением помечаем диск как сбойный.

А затем снова выполним команды по удалению разделов из массива. Все, мы удалили сбойный диск из массива. Теперь можем писать в датацентр запрос на замену диска.

II. Добавление диска в массив после замены

  1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск

После замены поврежденного диска нужно добавить новый диск в массив. Для этого надо определить какая у нас таблица разделов: GPT или MBR. Для этого будем использовать gdisk Установим gdisk:

Где /dev/sda — исправный диск находящийся в raid. В выводе будет примерно это для MBR:

И примерно это для GPT:

Перед добавлением диска в массив нам нужно на нем создать разделы в точности такие же как и на sda. В зависимости от разметки диска это делается по разному.

Копирование разметки для GPT:

Здесь надо быть внимательным. Первым пишется диск на который копируется разметка, а вторым с которого копируют. Если перепутать их местами, то разметка на изначально исправном диске будет уничтожена. Даем диску новый случайный UIDD:

Копирование разметки для MBR:

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

  2. Добавление диска в массив

Когда мы создали разделы на /dev/sdb, то можно добавлять диск в массив.

III. Установка загрузчика

После добавления диска в массив нужно установить на него загрузчик. Если сервер загружен в нормальном режиме, то это делается одной командой:

Если сервер загружен в recovery или rescue, т.е с live cd, то установка загрузчика выглядит следующим образом. Монтируем корневую файловую систему в /mnt:

fdisk из пакета util-linux - интерактивная консольная утилита, которая может создать таблицу разделов и разделы на жестком диске и управлять ими. В таблице разделов описано разбиение жесткого диска на разделы.

Эта статья объясняет fdisk(8) и связанную с ней утилиту sfdisk(8) .

Совет: Для основных функций разделения можно использовать cfdisk(8) с текстовым пользовательским интерфейсом.

Contents

Установка

Для использования fdisk и связанных с ним утилит требуется пакет util-linux , который является частью группы base .

Чтобы перечислить таблицы разделов и разделы на устройстве, вы можете выполнить следующее, где устройство - имя подобное /dev/sda :

Примечание: Если устройство не указано, fdisk покажет все разделы из /proc/partitions .

Резервное копирование и восстановление таблицы разделов

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

Через dd

Таблица разделов MBR хранится в первых 512 байтах диска. Она состоит из 4 частей:

  1. Первые 440 байт содержат код начальной загрузки (загрузчика).
  2. Следующие 6 байтов содержат сигнатуру диска
  3. Следующие 64 байта содержат таблицу разделов (4 записи по 16 байт каждая, по одной записи для каждого первичного раздела).
  4. Последние 2 байта содержат загрузочную сигнатуру.

Чтобы сохранить как файл mbr_file.img :

Вы также можете извлечь MBR с полного образа диска dd:

Чтобы восстановить (будьте осторожны, это уничтожит существующую таблицу разделов и с ней доступ ко всем данным на диске):

Важно: Восстановление MBR с несоответствующей таблицей разделов сделает ваши данные нечитабельными и почти невозможными для восстановления. Если вам просто нужно переустановить загрузчик, посмотрите их соответствующие страницы, так как они также используют область совместимости DOS: GRUB или Syslinux.

Если вы хотите только восстановить загрузчик, но не записи первичной таблицы разделов, просто восстановите первые 440 байт MBR:

Чтобы восстановить только таблицу разделов, необходимо выполнить:

Чтобы стереть код начальной загрузки MBR (может быть полезно, если вам нужно выполнить полную переустановку другой операционной системы), необходимо обнулить только первые 440 байт:

Через sfdisk

Вы можете использовать sfdisk для таблиц разделов GPT и MBR, чтобы сохранить разметку разделов вашего устройства в файл с параметром -d / --dump . Выполните следующую команду для устройства /dev/sda :

Файл должен выглядеть примерно так для одного раздела ext4 размером 1 гигабайт:

Чтобы позже восстановить эту разметку, вы можете выполнить:

Создание таблицы разделов и разделов

Первый шаг в разбиение диска - создание таблицы разделов. После этого фактические разделы создаются в соответствии с желаемой cхемой. Посмотрите статью о таблице разделов, чтобы решить что выбрать для использования MBR или GPT.

Перед началом вы можете пожелать сделать резервное копирование своей текущей таблицы разделов и схемы.

В недавних версиях fdisk отказались от устаревшей системы использования цилиндров, в качестве стандартного дисплэй юнита, так же как от совместимости с MS-DOS по умолчанию. fdisk автоматически выравнивает все разделы до 2048 секторов или 1 MiB, которые должны работать для всех размеров EBS, которые, как известно, используются производителями SSD. Это означает, что с настройки по умолчанию вы получите правильное выравнивание.

Запустите fdisk для вашего диска от суперпользователя. В этом примере мы используем /dev/sda :

Это откроет интерактивный режим fdisk, где вы можете вводить команды.

Создание новой таблицы

Важно: Если вы создаете новую таблицу разделов на диске с информацией, то вся информация на нем будет удалена. Убедитесь, что это то, что вы хотите сделать.

Чтобы создать новую таблицу разделов и удалить всю текущую информацию о разделах, введите o для таблицы разделов MBR или g для таблицы разделов GUID (GPT). Пропустите эти шаги, если необходимая таблица уже была создана.

Создание разделов

This article or section needs expansion.

Reason: Поместить каждый шаг в подраздел. (Discuss in Talk:Fdisk (Русский))

Создайте новый раздел с помощью команды n . Вам нужно будет ввести тип раздела, номер раздела, начальный сектор и конечный сектор.

Когда будет предложено, укажите тип раздела, введя p для создания первичного раздела или e для создания расширенного. Может быть до четырех основных разделов.

Первый сектор должен быть указан в абсолютном выражении с использованием номеров секторов. Последний сектор может быть задан с использованием абсолютного положения в секторах или с использованием символа + для указания позиции относительно начального сектора, измеренной в секторах, в килобайтах ( K ), в мегабайтах ( M ), в гигабайтах ( G ), в терабайтах ( T ) или в петабайтах ( P ); например, после +2G последний сектор будет указывать точку 2Гб после начального сектора. Нажатие клавиши Enter без ввода указывает значение по умолчанию, которое является началом самого большого доступного блока для начального сектора и конца того же блока для конечного сектора.

This article or section needs expansion.

Выберите тип идентификатора раздела. По умолчанию Linux filesystem должно быть хорошо для большинства целей. Нажмите l , чтобы показать список кодов. Вы можете сделать раздел загрузочным, введя a .

  • При разбиение всегда рекомендуется следовать значениям по умолчанию для первых и последних секторов раздела. Кроме того, укажите размеры разделов с помощью нотации +<размер> . Такие разделы всегда выравниваются в соответствии со свойствами устройства. требует тип EFI System . требует раздел загрузки BIOS с типом BIOS boot , когда устанавливаете GRUB на диск.
  • Рекомендуется использовать Linux swap для любого раздела swap, так как systemd будет монтировать его.

Для рекомендаций по размеру и расположения этих разделов смотрите соответствующие статьи.

Повторяйте эту операцию, пока у вас не будет желаемых разделов.

Запись изменений на диск

Запишите таблицу на диск и выйдите с помощью команды w .

Советы и рекомендации

Сортировка разделов

Это применяется, когда новый раздел создается в пространстве между двумя разделами или раздел удаляется. В этом примере используется /dev/sda .

После сортировки разделов, если вы не используете имена постоянных блочных устройств, может потребоваться отредактировать файлы конфигурации /etc/fstab и/или /etc/crypttab .

Читайте также: