Перенос windows 10 на другой жесткий диск из под linux
У меня есть Ubuntu 14.04 с множеством пакетов и всего, что связано с работой, и я очень ей доволен. Он установлен на моем основном SSD-накопителе емкостью 120 ГБ (я выбрал «/», когда установил Ubuntu, поэтому я считаю, что все должно быть на этом диске). Он отображается как / dev / sda
Теперь я добавил еще один SSD на мой компьютер, который является 240Gb. В данный момент у меня нет под рукой других носителей информации (например, внешний жесткий диск).
Поскольку новый накопитель на 240 ГБ, очевидно, имеет большую емкость и работает быстрее (более новое поколение, чем мой на 120 ГБ), я хочу перенести свой Linux на этот новый накопитель. Этот новый диск отображается как / dev / sdb, и на данный момент он не отформатирован или что-то еще (я буквально распаковал и вставил в мой компьютер прямо сейчас: P)
Как я могу безопасно переместить мою установку Linux на новый диск?
Я могу изменить кабель SATA, чтобы новый диск отображался как / dev / sda, если это необходимо.
Это вывод "fdisk -l", если это помогает:
Похоже, вы планируете использовать оба из них сейчас. Если это так, вы должны рассмотреть возможность использования более нового, более крупного, а /home не всей системы. Это должно быть более легкое изменение (просто переместите все и добавьте одну строку в / etcs / fstab), и большинство больших файлов, скорее всего, попадут в ваш домашний каталог (и, следовательно, на большой диск).
Вы можете использовать CLONEZILLA для этой цели.
Clonezilla - это бесплатный инструмент для создания образа и клонирования разделов и дисков, который можно использовать для резервного копирования всех ваших данных (целых дисков или разделов) с высокой степенью сжатия, а затем клонировать их обратно на жесткий диск, чтобы привести их в точно такое же состояние. Это быстрее, чем устанавливать ОС в большинстве случаев.
Создайте загрузочный (Live) USB с помощью Tuxboot 7.0 .
Загрузиться с созданного Clonezilla носителя.
Теперь у вас есть много вариантов:
- Создайте образ только '/' (saveparts) и клонируйте его в любой раздел вашего другого SDD.
- Создайте образ полного диска (saveisk) и клонируйте его на свой новый SSD.
В вашем случае вы также можете использовать опцию «устройство-устройство», но я не знаком с ней.
Я обнаружил, что clonezilla не копирует mbr, поэтому весь образ диска и немного работы с gparted должны
@adampski: похоже, это ошибка в Clonezilla 2.4.5. В качестве обходного пути вы можете использовать Clonezilla 2.4.2 или Clonezilla 2.4.2 Server Edition (DRBL), пока он не будет исправлен. :)
Это можно сделать несколькими способами. Но самый простой - просто скопировать все файлы со старого диска на новый.
Создайте раздел ext4 и раздел подкачки на новом диске.
Загрузиться с LiveUSB.
Смонтируйте старый раздел Ubuntu в некоторый каталог, смонтируйте новый в другой каталог.
Скопируйте все файлы из старого в новый, используя cp -a команду.
Обновление /etc/fstab с новыми UUID.
Если что-то не понятно, могу добавить некоторые пояснения.
+1 - также возможно избежать загрузки с LiveUSB и делать все, пока загружается с оригинального диска, делать все изменения, перезагрузка, вуаля.
@ Этьен: не копируйте эти каталоги (также /dev ), просто создайте пустые каталоги на целевом диске и установите для них того же владельца / прав, что и на исходном диске.
Я закончил тем, что использовал: sudo rsync -a / /mnt/linux/ --exclude sys --exclude proc --exclude dev --exclude tmp --exclude media --exclude mnt --exclude run тогда sudo mkdir sys proc dev tmp media mnt run
@ Этьен, не могли бы вы отредактировать --exclude-comment? Если вы делаете это так, как написали, / var / tmp также исключается (мне кажется), после того, как клон пропустил systemd-resolved.service, в результате чего разрешение имен не работает . Я думаю, что это должно быть --exclude / tmp --exclude / proc и т. д. Спасибо
Если у вас есть время и вы хотите поехать:
- if это вход, of пункт назначения
- bs устанавливает размер блока. Это размер блоков, которые dd будет читать и записывать. Более высокие размеры блоков обычно означают более высокую производительность, но также и большее повреждение данных, если на входном диске есть ошибки, см. Здесь: archwiki на dd
- noerror продолжается в R / W-ошибок.
- sync синхронизирует смещения, если произошла ошибка.
Это в основном создаст образ вашего диска sda и запишет его на sdb (та же схема разделов и т. Д.). Конечно, это запишет все 120 ГБ, поскольку это не зависит от файлов. Таким образом, очень безопасно, но не самый быстрый, если вы используете только небольшие части диска. Однако, если входной диск достаточно заполнен, он может быть даже быстрее.
- После этого вы, вероятно, захотите изменить размер разделов, иначе вы не сможете воспользоваться дополнительным пространством.
- В любом случае может потребоваться изменить файл / etc / fstab.
Это тот случай, если идентификаторы оборудования используются для распознавания дисков.
Спасибо за подробный ответ . Я кое-что узнал! но я решил пойти с clonezilla и изменить размеры разделов впоследствии.
Меню предоставлено, чтобы помочь вам выбрать правильный раздел для клонирования. Клон с раздела - это ваш текущий загруженный раздел.
rsync используется для оптимальной скорости, если вы решите отложить раздел. Это полезно, если обновление не удается, вы ждете исправления ошибки и хотите снова запустить обновление. Точно так же вы, возможно, выбрали неправильные опции во время обновления и хотите сделать это снова.
Когда я переключаюсь на новый жесткий диск, я делаю это так:
- создать макет раздела, который я хочу на новом диске
- загрузка с Live CD / USB или установка, спасение и т. д.
- смонтировать старый раздел (ы) жесткого диска для копирования, скажем, /mnt/a
- смонтировать новый раздел (ы) жесткого диска для получения файлов, скажем /mnt/b
- cp -a или используйте tar для копирования файлов /mnt/a в /mnt/b
- установите загрузчик (lilo или grub) на новый диск ¹
- обновить /etc/fstab (вы можете использовать blkid для определения новых UUID)
- перезагрузите компьютер и проверьте, все ли в порядке
Note¹:
Проверьте все жесткие диски и разделы, используя следующую команду:
Теперь обратите внимание на раздел, на котором установлена Ubuntu, который будет выглядеть так: /dev/sda1
Смонтируйте раздел, где вам нужно установить GRUB 2 (раздел жесткого диска), и файловая система появится в Nautilus. Теперь нам нужно смонтировать правильный раздел жесткого диска, чтобы внести изменения в фактическую MBR жесткого диска. Для этого нам необходимо:
Теперь смонтируйте раздел в другом месте
Создайте неразрывную ссылку из /dev папки на живом образе, из которого вы загрузились, в /dev папку в разделе, к которому вы подключены /mnt
Теперь нам нужно изменить корень с живого корня компакт-диска (/) на корневой каталог смонтированного раздела
Теперь вы находитесь в новой корневой оболочке, в которой смонтированный раздел является новым корневым. Вы можете проверить этот набор ls . Так как мы сейчас находимся в смонтированном разделе, мы можем опередить и установить GRUB 2:
Установки должны завершиться сейчас, без ошибок
Выйдите из оболочки CHROOT, набрав exit или нажав Ctrl +, и D вы вернетесь в Live CD / USB Shell
Размонтируйте разделы, которые мы смонтировали ранее, чтобы выполнить чистую перезагрузку:
и перезагрузите компьютер после извлечения Live CD или USB-накопителя для загрузки с жесткого диска:
@ baobab33: Вы можете скопировать и вставить инструкции здесь на этот сайт, а затем присвоить атрибуты. Вам не разрешено просто ссылаться на внешний источник. Пожалуйста, также обновите источник с исправлениями выше.
Я решил провести эксперимент, связанный с этим постом.
Я приобрел Lenovo ThinkCentre. Он имел 256 ГБ SSD и 1 ТБ HDD (тип спиннера - быстрый, но не такой быстрый, как SSD).
Когда я установил Linux Mint 19.2 (LM19.2), он установил его на диск объемом 1 ТБ. SSD оказался невосстановимым, и я купил новый Kingston 240 ГБ SSD.
Я собирался установить LM19.2 на новый SSD, но казалось, что должен быть способ перенести мой хорошо разработанный образ LM19.2 с диска 1 ТБ на новый SSD.
Я нашел этот пост, и, хотя есть несколько убедительных советов выше, я был в режиме эксперимента. Ниже рассказывается о том, что я сделал, и это работало ОЧЕНЬ хорошо.
- Я использовал GParted для создания таблицы разделов и разделов на SSD, которые были того же типа, что и на 1 ТБ HDD.
- Я выполнил снимок ВСЕГО (нового инструмента в Ubuntu / Linux Mint) TimeShift на жестком диске LM19.2 1 ТБ.
- Я восстановил этот снимок на SSD.
- После того, как вышеуказанные шаги были выполнены (вы даже можете сделать 1 параллельно с 2 и 3), я перезагрузил компьютер, убедившись, что он выберет SSD.
- Единственное, что было странно во время перезагрузки, было то, что начальный экран grub спросил, хочу ли я загрузить Ubuntu. Я предположил, что это было свойственно восстановлению TimeShift, и это было.
- Последующие стартапы загружались, как это обычно делает LM19.2.
- Я отредактирую этот ответ, как только убедился, что могу сделать это с новым диском, висящим снаружи ПК (и кажется очевидным, что это будет работать), потому что это будет означать, что я могу быстро скопировать любую из моих машин LM на новое оборудование.
Только скорость загрузки сделала эти простые шаги стоящими усилий. Даже Dropbox переносился нормально - он просто хотел, чтобы я снова вошел в систему, и потребовалось все время, чтобы проиндексировать файлы, но он работал отлично.
С тех пор как до меня дошла благая весть о существовании операционной системы под названием GNU/Linux, которую используют все настоящие программисты, я несколько раз пытался заменить ей детище Билла Гейтса и несколько раз потерпел неудачу.
Гуру поблизости отсутствовали, доступ к интернету был жёстко ограничен и потому любая нетривиальная задача становилась в те времена совершенно нерешаемой.
Потом, когда появился безлимитный интернет, вследствие чего с получением софта и знаний стало существенно легче, я настроил себе дуал бут и стал осваивать Убунту.
Основные сложности в процессе переезда создались в первую очередь из за необходимости бросить знакомые практически с самого детства программки, которые попросту отсутствуют в операционной системе для настоящих программистов.
В большинстве случаев это было не фатально. Вместо привычного foobar всегда можно послушать музыку на Rhythmbox. Вместо Microsoft Office есть OpenOffice. Да, его совместимость с продуктом корпорации зла порой оставляет желать лучшего, но им вполне можно пользоваться для решения повседневных задач среднестатистического пользователя. Обо всяких Файрфоксах, Операх и Хромах я вообще молчу.
Но в некоторых случаях приходилось перезагружать компьютер, выбирать в меню загрузчика пункт Microsoft Windows и делать всё по старинке. Такой задачей было например снятие образа логического диска в целях переноса на другой физический носитель, потому как текущий уже изрядно поистрепался.
Программой, которая использовалась в таких ситуациях, был Acronis. Интуиция подсказывала, что на выяснение того, как обойтись без него, уйдёт не меньше недели, а результат обычно был нужен край через полчаса, поэтому выяснение откладывалось, откладывалось и откладывалось.
Но после очередной дружеской шутки про никому не нужный и ничего не умеющий, а потому бесплатный Линукс, я решил, что в следующий раз для создания образа диска мне не понадобится ничего, кроме загрузочной флешки и командной строки. И отправился гуглить.
Гугл создавал чёткое впечатление, что как клонировать диски средствами опенсорсных ОС, знает каждая собака. Увы, чёткие инструкции по осуществлению общеизвестных и элементарных вещей найти как правило сложнее всего. Какие-то мануалы в результате упорных поисков в конце концов обнаружились, но всё равно с ними пришлось туговато, ибо их явно писали грамотные люди, которые возятся с темой не первый и даже не второй день, и просто не помнят, что знаниями, почитаемыми ими за необходимый минимум, владеют далеко не все.
Теперь, когда ужасы гугления позади, я понимаю, что всё действительно достаточно просто и хочу оформить результаты своих изысканий в виде краткого руководства по работе с образами дисков в GNU/Linux, обращённого в первую очередь к тем, кто привык к Акронису или другой подобной ему программе. Мне в свое время такой документ бы очень сильно помог, надеюсь, что он поможет и кому-то ещё.
1. Клонирование
▍ 3.2. Моя утилита ntfs_512_to_4k
Вооружившись описанием формата NTFS boot-сектора, я написал свою утилитку для его модификации после клонирования.
Естественно, я полностью отказываюсь от любой ответственности, если вы будете её использовать. Однако мне она помогла. Вот репозиторий на GitHub.
Примеры использования:
Показать информацию из загрузочного сектора NTFS и его копии.
Переделать информацию в загрузочных секторах NTFS из 512 в 4К-секторы (после клонирования)
Откатить изменения в загрузочных секторах с 4К на 512B-сектора
Но есть одна тонкость. Backup NTFS boot сектор хранится в последнем секторе раздела. А точнее в первых 512 байтах последнего сектора. Что даёт его разное положение в зависимости от размера сектора. Поскольку я не был уверен, что в последних 8 секторах нет никакой важной информации, то перед использованием своей проги я немного уменьшил размер NTFS-фс, применил свой скрипт, а потом опять её увеличил. Вот так это выглядело:
▍ 1.5. А что насчёт TRIM?
Можно попробовать увеличить скорость клонирования, если перед клонированием сделать TRIM целого диска-приёмника.
Или одного раздела.
После клонирования (простыми программами типа dd , pv , cat ) можно тримнуть склонированную файловую систему. Но делать это нужно лишь после того, как диск-источник удалён, а склонированная ФС подмонтирована.
Если вы дата-параноик, то не делайте этого, так как потом не сможете с диска восстановить удалённые файлы.
Естественно, ваш диск должен поддерживать TRIM. Многие корпоративные накопители его не поддерживают, так как для у них достаточно резервного пространства и не нужны непредсказуемые задержки от TRIM.
Рейд-массивы тоже, как правило, TRIM не поддерживают, так как содержание ячеек после TRIM по стандартам не определено, а рейд-массиву нужно считать контрольные суммы.
Манипуляции с TRIM перед/после клонирования вряд ли дадут какой-то существенный выигрыш, но хуже точно не будет.
2. Клонирование EFI-раздела.
Вот тут и подстерёг меня первый подводный камень. На дисках с сектором 512 байт размер EFI раздела составляет около 100М. Но мы не можем просто склонировать этот раздел на конечный диск. Потому как для EFI-раздела есть требование, что число секторов в нём должно быть не менее 65527.
Для расширенного формата дисков объемом в машинном формате (4 КБ на сектор) минимальный размер составляет 260 Мб из-за ограничения формата файла FAT32. Минимальный размер раздела для дисков FAT32 вычисляется как размер сектора (4 КБ) x 65527 = 256 МБ.
Это ограничение не затрагивает диски расширенного формата 512e, так как их размер эмулированного сектора составляет 512 байт. 512 байт x 65527 = 32 МБ, что меньше, чем минимальный размер в 100 МБ для этой секции. Документация Microsoft.
У меня раздел на старом диске был как раз около 100МБ. Поэтому мне пришлось вначале создать структуру разделов с увеличенным EFI-разделом на диске-приёмнике, а потом клонировать каждый раздел в отдельности.
Соответственно, на диске-приёмнике я создал EFI-раздел размером 270МБ. Отформатировал его, а потом скопировал все файлы со старого раздела на новый.
Создание FAT32 на разделе 4К-диска:
Монтируем старый и новый EFI-разделы:
Копирование файлов загрузчиков со старого EFI-раздела на новый:
▍ 1.1. Отмонтируем смонтированные файловые системы
Список смонтированных файловых систем проще всего посмотреть командой df .
Отмонтируем (по имени раздела или конечной папки):
MBR, таблица разделов и сигнатура диска
Начнем с копирования данных. Какие же данные нам нужно скопировать? Для Windows XP это MBR (446 байт в начале диска, основная таблица разделов и завершающая сигнатура 55AAh), данные о расширенных разделах и собственно данные системного раздела Windows. Для Vista и Windows 7 добавляется еще и 100-мегабайтный системный раздел (GPT не рассматриваем). При этом нужно помнить, что первый раздел в Windows XP по-умолчанию начинается с сектора 63, а в Windows Vista/7 — с сектора 2048. Естественно, все операции мы будем проводить на незапущенной Windows, загрузившись с System Resque CD.
Так вот, не стоит копировать MBR «в лоб», для этого в Linux существует утилита ms-sys, которая записывает загрузчик любой версии Windows от Win95 до Win7 в MBR. Для сохранения и восстановления структуры разделов есть утилита sfdisk.
Добавлено:
Для того, чтобы WIndows загрузилась, необходимо также сформировать подпись диска (disk signature). Для этого нужно прочитать содержимое ключа реестра HKLM\SYSTEM\MountedDevices\, и выделить первые 8 байт (в шестнадцатеричной записи), например: 4F BE 4F BE. Сделать это на смонтированном в Linux NTFS-томе можно с помощью описанной ниже утилиты reged. Следует учесть, что в reged имя ключа, содержащее слеш, нужно указывать через двойной слеш, например: \\DosDevices\\C:. Затем указанные 8 байт следует записать на диск начиная со смещения 0x01B8 утилитой hexedit. После этого диск готов к загрузке.
Неправильный способ
Часто можно встретить рекомендации использовать для копирования файла устройства или раздела программу под названием dd. Как правило, для снятия образа предлагается сделать что-то вот такое:
dd if=/dev/sda2 of=win_c.img
Не делайте так! Хотя семантически подход верен (произойдёт копирование одного файла в другой), последствия могут быть очень печальны. Да, dd превосходит cp в том отношении, что при обнаружении ошибки cp прекратит работу, а dd не прекратит, но если на диске есть битые или просто плохо читаемые сектора, то dd будет продолжать попытки считать их содержимое пока из винчестера не повалит дым.
Да, у dd есть аргумент noerror, но при его использовании копирование может быть выполнено с ошибками, попыток восстановления которых предпринято не будет. ddrescue в аналогичной ситуации после первого прохода вернётся к пропущенным местам и попробует прочитать их маленькими кусочками. И оставит лог файл, с помощью которого можно будет продолжать попытки вычитать сбойные места в будущем.
Короче, используйте ddrescue. А если кроме dd ничего нет, не забывайте про аргумент noerror.
Описанная выше процедура может применяться например для того, чтобы сохранить образ диска с только что установленной операционной системой для последующего восстановления. Да, настоящий линуксоид так поступать не станет, но среди пользователей операционной системы с другим названием это достаточно распространённая практика. И для периодического вдумчивого ремонта регулярно ломающегося компьютера какой нибудь симпатичной девушки её смело могут применять даже любители пингвинов. А если девушек больше некоторого, сугубо индивидуального для каждого самоделкина, количества, то данный метод просто незаменим. Главное не перепутать названия файлов с образами.
Снятие образа
Итак, устройство опознано и раздел, с которого нужно снять образ, найден. Теперь собственно процесс.
Просмотр содержимого образа физического диска
А вот с монтированием образа диска целиком всё не так просто. Ужасная правда состоит в том, что монтировать файлы из произвольного места файловой системы ядро не умеет и аргумент -o loop, команды mount, сигнализирует о том, что сначала надо связать образ с файлом виртуального устройства в директории /dev, и потом уже присоединить содержимое этого устройства к файловой системе.
Файлы виртуальных устройств создаются заранее (на этапе загрузки системы) и имеют названия loop0, loop1, loop2 и так далее по нарастающей.
Связать образ раздела с одним из этих файлов можно командой losetup. Команда mount из предыдущего раздела на самом деле эквивалентна следующим двум командам.
losetup /dev/loop0 win_c.img
mount /dev/loop0 /mnt/win_c
Но вот для того, чтобы посмотреть содержимое образа в котором есть несколько разделов, этого недостаточно. Дело в том, что если выполнить команду losetup для такого файла, то с устройством /dev/loop0 будет связан весь образ целиком. То есть это устройство будет эквивалентом /dev/sda, а нам нужны эквиваленты /dev/sda1 и /dev/sda2.
Обладатели свежих версий программы losetup (читай гентушники и арчеводы) могут выполнить losetup c аргументом --partscan, что приведёт к автоматическому созданию в директории /dev файлов, соответствующих разделам образа. То есть /dev/loop0p1, /dev/loop0p2 и так далее до самого горизонта. И вот уже эти файлы можно отдавать команде mount.
losetup --partscan /dev/loop0 drive.img
mount /dev/loop0p2 /mnt/win_c
Те же, кому не так повезло с дистрибутивом, могут воспользоваться программой kpartx, которая сделает то же самое, но положит файлы соотвествующие разделaм не в директорию /dev, а в директорию /dev/mapper, откуда их можно монтировать и просматривать.
kpartx -a /dev/loop0 drive.img
mount /dev/mapper/loop0p2 /mnt/win_c
But we can go even deeper than that…
Сжатие образа раздела (логического диска)
Особенно приятной чертой Акрониса является способность не писать в файл образа куски диска или раздела, которые не содержат файлов. Это позволяет ужать образ до реального объёма данных в разделе или на диске.
Изложенный ранее подход имеет принципиальные ограничения, не позволяющие реализовать такую фичу — программы посекторного копирования ничего не знают про структуру файловых систем и даже более того — не знают, что это вообще такое — файловая система.
Однако выход из положения есть. Правда для его использования файловая система, на которой будет храниться образ, должна поддерживать такую специфическую штуку, как sparse файлы.
Общие рекомендации
Образом диска мы обычно называем копию диска на уровне разделов или всего устройства. И если пользователь Windows в ответ на вопрос, как эту копию сделать, обычно слышит рекомендацию воспользоваться специализированным софтом, то в Линуксе всё не так.
Как я уже говорил, здесь каждый диск и каждый раздел диска представлен конкретным файлом. И, так как образ представляет из себя файл с копией диска, логично предположить, что операция снятия образа и операция копирования файла раздела — это одно и то же.
Так оно и есть. Пусть нам надо снять образ раздела /dev/sda2 (на нём Windows 7 обычно держит диск С:) и сохранить его в файл с названием win_c.img.
Для этого достаточно написать cp /dev/sda2 win_c.img. Или cat /dev/sda2 >win_c.img. Короче можно воспользоваться любой программой или комбинацией программ, которая осуществляет копирование файлов.
Sparse файлы
Sparse файл это файл, в котором куски, содержащие нули, на диск не пишутся. То есть, если половина файла заполнена данными, а другая половина нулями — на диск будет записана только половина этого файла и ещё дополнительная информация об областях файла, заполненных нулями. Если область с нулями непрерывна и начинается в середине, то реально на диске файл будет заменять половину от своего теоретического объёма.
6. Заключение
Как мы видим сложности возникают при клонировании EFI-раздела, NTFS-файловых систем, а также Volume Groups от LVM. Но они решаемые.
Благодарности
— За изображение спасибо TripletConcept. Его лучше смотреть в полном размере в отдельном окне.
Автоматическое создание файлов разделов при выполнении команды losetup
Вообще-то ядро (а конкретно модуль loop) уже достаточно давно умеет искать в файле образа таблицу разделов и создавать соответствующие файлы, но по умолчанию эта функция отключена.
Включается она если параметр модуля loop max_part не равен нулю. Задать этот параметр можно только при загрузке модуля, поэтому если система уже запущена, модуль надо выгрузить из памяти и загрузить снова с уже заданным параметром. Для этого нужно выполнить следующие две команды.
modprobe -r loop
modprobe loop max_part=63
Однако в некоторых дистрибутивах (напривер в Убунте) модуль loop вкомпилирован в ядро намертво и поэтому для установки параметра придётся вписать loop.max_part=63 в командную строку ядра и перезагрузить систему.
Просмотр содержимого образа раздела (логического диска)
Так как каждый раздел диска представлен файлом, можно предположить, что должен существовать штатный способ подключения файлов с образами к файловой системе. С определённой точки зрения так оно и есть. Конкретно для этого используется утилита mount, с помощью которой можно поместить дерево файлов, содержащееся в образе, в любую директорию на ваш выбор. Этот процесс называется монтированием.
Итак, у нас уже есть образ, снятый с диска C: операционной системы Windows 7. Мы назвали образ win_c.img и хотим увидеть его содержимое в заранее созданной директории /mnt/win_c. Для этого надо ввести команду mount -o loop win_c.img /mnt/win_c.
But we can go deeper.
▍ 3.1. Пересоздаём загрузочный сектор NTFS c помощью программы TestDisk
Прекрасная программа, которая есть как под Windows, так и в большинстве репозиториев Linux. В данном случае опция «Rebuild BS» выручает, но и она не всегда корректно работает.
Проблема в том, что эта функция работает исходя из битовой карты и $MFT. Для целей восстановления данных — это хороший подход, но для клонирования лучше просто пересчитать NTFS boot sector. Чтобы не делать это руками, я написал скрипт, о котором ниже.
Просмотр перечня накопителей
Для каждого подключенного накопителя (винчестера, флешки) в директории /dev можно найти соотвествующий ему файл. Его название состоит из букв sd и буквы, обозначающей номер устройства. То есть винчестеру, подключенному к первому каналу, будет соответствовать файл sda, второму sdb и так далее. Соответственно самый простой способ посмотреть список устройств — ls -1 /dev/sd[a-z]. Эта команда покажет список накопителей, но не даст нам никакой информации о них. А нам нужно хотя бы увидеть список разделов.
Просмотр перечня разделов на накопителе
Каждому разделу в директории dev тоже соотвествует файл. Его название строится из названия файла, соотвествующего накопителю и номера раздела. То есть для накопителя sda, на котором есть 2 раздела, в директории /dev будет создано 2 файла — sda1 и sda2. Посмотреть перечень разделов на накопителе sda можно командой ls -1 /dev/sda1 полный перечень разделов на всех устройствах получается на выводе команды ls -1 /dev/sd[a-z]9, а если есть необходимость включить в перечень и сами устройства, то можно просто написать ls -1 /dev/sd*, что значительно менее осмысленно, зато коротко и главное работает. Или, как подсказывают в комментариях, есть ещё вариант cat /proc/partitions
Часто владелец может опознать диск просто по такому перечню (это когда дисков у него не 452), но если этого недостаточно, то можно воспользоваться программой hdparm.
Конкретно hdparm -I /dev/sda выведет подробную информацию об устройстве /dev/sda.
Эту же информацию, но в рассеянном по разным файлам виде, можно найти в директории /sys/block/sda. Например модель диска находится в файле /dev/block/sda/device/model.
Если и этого недостаточно, то остается только по очереди монтировать устройства и смотреть что на них записано. Но это уже совсем другая история.
▍ 3.4. Скрытые разделы Windows
Если посмотреть вывод gdisk , то мы увидим кроме основного раздела Windows ещё 2 скрытых раздела с кодами 2700 и 0C01, размерами примерно 500MiB и 16MiB.
Код 2700 соответствует разделу со средой восстановления. Этот раздел отформатирован в NTFS. Поэтому с ним поступаем как и было объяснено выше.
Посмотрим размер сектора, который зашит с помощью ntfsinfo и скорректируем, если нужно.
А вот с разделом с кодом 0C01 (обозначение «Microsoft reserved» в gdisk ) оказалась какая-то странность. На всех компьютерах, где я его смотрел, он не имел никакой файловой системы и был заполнен нулями. Поэтому я просто склонировал его dd .
▍ 1.4. Таблица разделов
Из-за того, что 4К-сектор больше в 8 раз, чем 512B потребуется после клонирования ещё изменить таблицу разделов. Так как разделы задаются в секторах. Это можно сделать вручную по раздельно с помощью gdisk , а можно использовать sfdisk .
В таблице которую показывает gdisk (внутренняя команда p ) можно увидеть что-то подобное:
Мы видим размер логического и физического секторов, а также в таблице есть начальные и конечные сектора. Стартовый сектор нам достаточно разделить на 8, чтобы получить номер сектора для 4К-диска, а вот конечный сектор считает по чуть более сложной формуле. Мы прибавляем 1, делим на 8, и вычитаем 1. В консоли выполнить вычисления можно так:
Или примерно так:
Можно отредактировать все разделы оптом. Мы записываем таблицу разделов в файл, а потом редактируем его.
И заливаем заново на диск:
После любого изменения таблицы дисков желательно дать ядру знать об этом командой:
Acronis
В Акронисе всё было просто и понятно: оконный интерфейс, подсказки и предшествующий опыт работы с образами компакт дисков делали процесс несложным. Снял образ, вставил новый винт, развернул образ на него — даже и рассказывать то не о чем. В случае с Линуксом процесс захлебнулся на этапе снятия образа — как это сделать было абсолютно неясно. Специальной программки с подсказками не нашлось, программки, которая добавляла в список устройств виртуальный DVD — наподобие Daemon Tools тоже. Да и сам список устройств оказался достаточно проблематичен, поэтому начать можно прямо с него.
Подготовка раздела или устройства к сжатию
Для того, чтобы воспользоваться этой возможностью в целях сжатия образа, нужно перед снятием записать в свободное место нули. Сделать это несложно — достаточно смонтировать файловую систему в директорию и создать в этой директории файл с бинарными нулями размер которого будет равен размеру свободного места на разделе.
Но выяснять количество свободного места и передавать его программе, создающей файл, к счастью не обязательно, да и искать программу, создающую файл с нулями, не понадобится. В директории /dev есть безразмерный файл zero, который, как нетрудно догадаться по названию, является неисчерпаемым источником бинарных нулей. Остаётся только скопировать его в нужное место.
Так как файл безразмерен, копирование будет продолжаться до тех пор, пока копия не заполнит всё доступное ей пространство, то есть все свободное место в разделе, что нам собственно и требовалось.
Про то, как копировать файлы стандартными средствами операцинной системы, здесь написано столько раз, что руководство вполне могло бы называться «Искусство копирования файлов в окружении GNU», но так как истина от повторения не тукснеет, я, пожалуй, напишу ещё раз.
Для создания файла с бинарными нулями можно выполнить команду cp /dev/zero zerofile или cat /dev/zero > zerofile.
Заключение
А теперь в сжатом виде о том, что можно почерпнуть из данного руководства.
После прочтения статьи «Фривольное клонирование ОС MS Windows XP / Server 2003 своими руками, средствами GNU/Linux» возникло естественное желание дополнить ее в соответствии с реалиями конца 2014 года.
В общем, проблема разворачивания той или иной версии Windows состоит из двух частей — во-первых, нужно скопировать данные разделов с эталонного ПК на новый, и, во-вторых, надо обеспечить загрузку Windows на изменившемся оборудовании.
Данные разделов NTFS
После копирования MBR и структуры разделов можно копировать собственно данные разделов с помощью partclone. Инструмент partclone позволяет создавать образы разделов ext2/3/4, fat, ntfs, xfs, btrfs, reiserfs и т. д., анализируя внутреннюю структуры ФС и включая в образ только используемые сектора. Создадим на эталонном ПК образ раздела с помощью partclone, размер образа будет равен размеру используемого на томе места.
а на целевом компьютере развернем его
или
К сожалению, внутреннее сжатие в образе не поддерживается.
Возможно также прямое копирование данных с одного устройства на другое с помощью ключа -b:
Теперь рассмотрим вопрос восстановления данных на раздел размера, меньшего, чем эталонный. Для этого нужно смонтировать partclone-образ и либо скопировать с него файлы на целевой том с сохранением атрибутов, разрешений, hardlink-ов и прочих свойств NTFS, либо уменьшить размер раздела NTFS внутри образа partclone, а уже затем скопировать этот уменьшенный раздел на целевой том командой partclone.ntfs с ключом -b.
Мне не известны инструменты, которыми можно было бы в Linux скопировать файлы и hardlink-и с одного тома NTFS на другой со всеми атрибутами и потоками (если кому-нибудь они известны, прошу в комментарии), так что у нас остается только вариант с уменьшением размера тома. К счастью, существует инструмент imagemount, который экспортирует partclone-образ как блочное устройство nbd и поддерживает монтирование образа в том числе и на запись, при этом изменения сохраняются в отдельном файле (ключ -с). Экспортируем том на запись
Теперь изменим размер ФС на томе NTFS. Сначала будет сделан тестовый прогон (ключ -n)
а затем — реальный:
Imagemount, даже последней версии — 0.3.1, не работает с дисками на запись на архитектуре x86_64 (зависает намертво) и практически не работает на архитектуре i386 (записывает образ с ошибками), поэтому изменение размера раздела на данный момент невозможно. Буду писать в багртекер partclone-utils.
К сожалению, partclone не поддерживает сжатие образов, но эту проблему можно обойти с помощью так любимых в Linux костылей и подпорок. Создадим пустой образ формата qcow2 с виртуальным размером, заведомо превышающим наши потребности (например, 1 Tb). Его реальный объем будет увеличиваться в зависимости от количества данных, которые мы туда запишем.
Смонтируем его как блочное устройство
Теперь скопируем на виртуальное устройство файловую систему
размонтируем устройство и в результате получим файл qcow2 с размером чуть больше, чем размер исходного NTFS-тома. Теперь к файлу можно применить внутреннее сжатие:
Легко заметить, что этот способ требует удвоенного места на диске для хранения исходного и сжатого образов, а также дополнительное время на сжатие. Если мы применим еще один костыль, то избавимся и от этих недостатков. После монтирования образа qcow2 (командой qcow-nbd -c /dev/nbd0 ) отформатируем его в файловую систему btrfs
а теперь смонтируем со сжатием:
и создадим образ файловой системы NTFS
После этого размонтируем все.
В результате мы получим файл образ со сжатием, в который включены только используемые сектора и который можно смонтировать через imagemount как файловую систему и прочитать его содержимое.
Мне, например, удалось уменьшить размер образа со свежеустановленной Windows XP c 2,7 Gb до 587 Mb. При этом можно смонтировать образ без распаковки и просмотреть файлы внутри.
Гораздо лучше, чем набившие оскомину dd | gzip, не так ли?
5. Клонирование раздела c BTRFS
Прошло отлично. Никаких коррекций загрузочных секторов не потребовалось.
▍ 3.3. Windows 10 и Windows 7
Windows 10 после коррекции NTFS заработала отлично.
А вот Windows 7 мне не удалось заставить работать. Совсем. Видимо при установке куда-то в неё записывается размер сектора диска и она выдаёт самые разнообразные ошибки, но не хочет работать, если он изменился.
Для корректного перенесения Windows 7 я попробовал использовать xcopy и robocopy с ключами для копирования всех прав. Но это не помогло. Windows 7 так и не смогла запуститься.
Создание sparse файла образа устройства или раздела
Большинство утилит для работы с файлами знают о существовании sparse файлов и умеют их создавать. Упомянутой ранее ddrescue, для того, чтобы образ оказался sparse файлом нужно передать ключ --sparse. Теперь результирующий файл будет занимать столько места, сколько ему необходимо, и не больше.
Развёртывание образа на физический носитель
А теперь о том, как собственно накатить образ на другой диск. Как и раньше надо руководствоваться тем, что диски и разделы представлены в виде файлов. И если для снятия образа нужно было создать копию файла устройства или раздела, то для того, чтобы закатать этот образ обратно надо провести операцию копирования в обратную сторону. То есть вместо cp /dev/sda2 win_c.img написать cp win_c.img /dev/sda2. Ну и лучше помнить о советах, изложенных в руководстве по снятию образа. А именно пользоваться ddrescue и не пользоваться dd.
ddrescue --force win_c.img /dev/sda2 win_c_restore.img.log
Конечно следует помнить, что раздел в который мы восстанавливаем образ (в данном случае /dev/sda2) должен быть не меньше файла с образом. Eсли же раздел окажется больше этого файла, то проблем при восстановлении не будет, но в разделе останется неразмеченное пространство. И придётся либо смириться с этим фактом, либо увеличить размер файловой системы до размера раздела каким-нибудь специализированным софтом (увеличивать, впрочем, обычно гораздо проще и быстрее, чем уменьшать).
Как быть в случае сжатия образа повреждённого диска
Как известно, многие диски и в руки то брать страшно, какой уж может быть разговор о записывании туда многогигабайтных файлов. Если вам в руки попался именно такой диск, следует сначала снять образ, а потом уже сделать из него sparse файл. Для этого нужно смонтировать полученный образ, потом заполнить свободное место нулями и сделать с образа копию, которая уже будет полноценным sparse файлом. Исходный образ после этого можно удалить.
С копированием файла прекрасно справится cp, которая умеет делать sparse файлы не хуже ddrescue. cp --sparse win_c.img win_c_sparse.img
Конечно, для проведения этих операций потребуется много свободного пространства, но так всё-таки значительно лучше, чем вообще никак.
Запуск Windows на новом оборудовании
Теперь перед нами стоит вторая задача — сделать так, чтобы установленная на том NTFS Windows смогла запуститься. В случае Windows 7 копируем еще и загрузочный раздел, для Windows Vista — дополнительно делаем (с Windows Vista Live CD) перезапись BCD, чтобы данные в этой области соответствовали серийному номеру жесткого диска, проверяем, чтобы у загрузочного раздела стояла соответствующий флаг boot (можно сделать через parted) и перезагружаемся. После чего с некоторой вероятностью получаем синий экран с надписью 0x0000007B Inaccesseble boot device. В этом случае для Windows XP рекомендуется выставить правильный HAL, но вот незадача, я уже давно не встречал одноядерные ПК без APIC и тем более ACPI, так что наш эталонный образ скорее всего уже содержит правильный многопроцессорный HAL. Поэтому не стоит надеяться, что замена HAL сразу исправит нашу проблему. Скорее всего, причина в том, что Windows не распознала контроллер жесткого диска, и, соответственно, не смогла продолжить с него загрузку.
Допустим, мы не пользовались sysprep при создании эталона (а то получиться неспортивно, потому что sysprep сделает всю работу за нас). Попробуем разобраться, почему ОС Windows не находит контроллер диска на новом оборудовании, несмотря на то, что в случае «чистой» установки она этот контроллер видит. Дело в том, что на завершающем этапе установки Windows отключает (якобы для ускорения загрузки) все драйверы контроллеров дисков, на которых не расположено системных разделов. Получается как с сусликом в фильме «ДМБ»: система его не видит, но он есть.
Включаем IDE-контроллеры: патч MergeIDE
Для Windows XP существует известный патч MergeIDE, который, собственно, и включает в реестре драйверы IDE-устройств обратно, попутно копируя файлы драйверов из driver.cab в \system32\drivers. Проблема в том, что этот патч предназначен для запуска из-под Windows. Попробуем наложить его под Linux вручную. Пусть раздел с Windows XP смонтирован у нас в /mnt, тогда:
Для того, чтобы наложить патч MergeIDE.reg на реестр, нужно его отредактировать, убрав переводы строк с помощью символа «\» в последних строках файла, а затем воспользоваться утилитой reged с ключом -I
После этого можно перезагружаться. Надо сказать, в моей практике было несколько случаев, когда запустить образ на другом оборудовании не удавалось ни указанным выше способом, ни с помощью платных инструментов вроде Acronis Universal Restore.
Посмотрев содержимое файла MergeIDE.reg можно увидеть, что вся магия запуска загрузочного драйвера состоит в добавлении записей в две ветви реестра — HKLM\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase и HKLM\SYSTEM\CurrentControlSet\Services.
Ветвь CriticalDeviceDatabase содержит список устройств, необходимых для успешной загрузки системы и задает соответствие между классом устройства и той службой (драйвером), который за нее отвечает, а ветвь Services содержит параметры работы конкретных драйверов. Особенно интересен параметр Start — уровень запуска:
0 — загрузка до старта ядра загрузчиком ОС
1 — загрузка в момент инициализации ядра
2 — загрузка в процессе запуска ОС
3 — загрузка по требованию
4 — не загружать
очевидно, если у нашего драйвера уровень запуска будет отличаться от 0, то соответствующего контроллера в момент загрузки мы не увидим.
MergeIDE.reg оперирует идентификатором класса 4d36e96a-e325-11ce-bfc1-08002be10318 — дисковые контроллеры ATA/ATAPI. Идентификаторы ClassGUID для различных классов устройств известны, их можно найти, например, здесь.
Таким образом можно заставить систему запускать в момент загрузки ядра в память любой драйвер, например, для сетевой карты, если вы загружаетесь через AoE или iSCSI.
Для Windows Vista/7 можно просто пройтись по ветви Services в поисках драйверов, содержащих в названии слово IDE, а потом изменить тип запуска (ключ Start) с «3-отложенный запуск» на «0-загружать в момент загрузки ядра». Для этих ОС есть еще один способ — находим в ветви Services записи msachi и iaStorV (универсальный драйвер AHCI и драйвер AHCI для устройств Intel) и так же изменяем тип запуска с «3» на «0», а потом идем в BIOS и меняем там тип контроллера дисков на AHCI. С Windows XP такой фокус, к сожалению, не прокатит, по причине отсутствия встроенного универсального драйвера AHCI.
Загружаемся с любого IDE или SATA-контроллера: драйвер UniATA
Поэтому обратим внимание на совершенно волшебный драйвер контроллера дисков UniATA от Александра Телятникова aka Alter. Этот драйвер инициализирует любой контроллер, считающий себя IDE- или AHCI-совместимым, а поэтому отлично подходит для наших целей. Порядок установки точно такой же — скопировать файл драйвера, прописаться в CriticalDeviceDatabase и в Services.
Теперь интегрируем в образ файл my_uniata_inst.reg следующего содержания
Здесь ven_8086&dev_2922 — идентификатор установленного SATA-контроллера. Мы также считаем, что CurrentControlSet у нас нет и используем активную ветвь — ControlSet001, номер которой указан в HKLM\SYSTEM\Select\Current.
Если такой способ не срабатывает — можно попробовать более «грязные» методы установки — с помощью файла uniata_w2k.reg из архива с драйверами или по инструкции на сайте разработчика.
Как оказалось, UniATA не может инициализировать виртуальный контроллер Intel 8086:2922, который эмулируется QEMU. «Соседний» виртуальный IDE-контроллер инициализируется замечательно. Чей это баг — QEMU или UniATA, не совсем понятно.
Основной набор утилит можно найти в System Rescue CD. Сюда входят ms-sys, mkfs.btrfs, sfdisk, partclone и reged. Imagemount можно взять из пакета partclone-utils, просто распаковав его в корневую ФС systemresquecd. С пакетом qemu-utils дела обстоят сложнее. Я создавал в отдельном каталоге минимальную установку Debian с помощью debootstrap, затем делал туда chroot и уже потом ставил qemu-utils через apt-get. Перед запуском qemu-nbd нужно не забыть примонтировать /proc, /sys и /dev внутрь chroot'а.
Для современного компьютера диск с 4К сектором выглядит предпочтительнее, чем с олдскульным 512B. Так как почти все современные ФС имеют размер кластера по-умолчанию 4KiB или больше. Поэтому использование 512B сектора несколько снижает производительность, а также увеличивает коэффициент умножения записи (Write Amplication) у SSD, что уменьшает ресурс.
Более того, сложно найти современные диски более 4ТБ с сектором 512N. Если диск и рапортует сектор в 512 байт, то, как правило, это 512E — эмулируемый, который используется в основном для совместимости со старыми контроллерами. А в реальности на физическом уровне используется 4К или даже больше (больше в основном у SSD).
Поэтому при покупке нового диска я выбрал диск с сектором 4КiB. И передо мной встала задача клонирования старого диска с 512B сектором (GPT) на новый c сектором 4KiB. Я хотел сохранить установленные Linux, Windows 10, Windows 7 и тома LVM, чтобы не заниматься переустановками ОС. В процессе чего всплыло несколько подводных камней.
Начну с того, что всем советую загрузочные диски (как и прочие, которые >= 2ТБ) делать в разметке GPT. Ибо это очень удобно.
Для GPT-дисков уже не нужна магия хитрых загрузчиков, которые записываются в MBR и многоступенчатым образом загружают вначале себя, а потом и операционную систему.
Достаточно записать загрузчик в специальный EFI-раздел, указать в биосе, что мы хотим загружать именно этот загрузчик и всё. Если биос неудобный или с усеченным функционалом, то я использую программу Hasleo EasyUEFI.
Итак, вернёмся к моей задаче. У меня на диске стоят в мультизагрузке :
- Calculate Linux (btrfs)
- Windows 10 LTSC (ntfs)
- Windows 7 (ntfs)
4. Перенос Volume Groups в LVM
Оказывается, где-то в формате LVM жёстко прописывается размер сектора. Поэтому вместо клонирования пришлось добавить новые разделы в Volume Group. Перенести информацию с помощью pvmove. Удалить старые разделы из Volume Group.
Но перед этих в настройках /etc/lvm/lvm.conf нужно раскомментировать возможность нахождения в одной VG дисков с разным размером сектора.
Объявляем раздел на новом физическом диске частью LVM-инфраструктуры:
Расширяем им Volume Group:
Переносим данные со старого диска на новый:
Удаляем старый диск из Volume Group:
▍ 1.3. Клонирование стандартными утилитами
Вначале я просто склонировал один диск на другой.
Классический способ это:
Хотя, лично я предпочитаю вот такой:
Программа pv показывает полосу копирования, текущую скорость, ожидаемое время и использует/подбирает размер блока для более быстрого копирования.
Если на системе нет ни pv , ни dd то можно использовать cat :
В этом случае тоже будет всё скопировано быстро, то без всяких плюшек типа полосы копирования. Некоторые админы шаманского типа считают, что cat — самая оптимизированная прога для копирования потоков данных и поэтому делают так:
Сочетают оптимизированность cat и плюшки pv . По моим прикидкам достаточно pv . Я не смог увидеть какого-то существенного выигрыша.
Также можно клонировать разделы по отдельности. В конечном итоге мне так и пришлось сделать, так как всплыло несколько проблем (о них ниже).
Вышеперечисленные способы клонирование, естественно, работают когда источник (source) по размеру меньше или равен назначению (target).
Вообще во многих случаях клонировать удобно используя флэшку с Clonezilla. Но, как выяснилось, она не может корректно отработать случай с клонированием с 512B диска на 4КiB-диск. Хотя в остальном Clonezilla хороша. Она умеет клонировать только занятые сектора, что существенно экономит время.
3. Клонируем разделы с NTFS
Поскольку по умолчанию размер кластера у NTFS равен 4К, то я думал никаких проблем не возникнет. Как же я ошибался!
NTFS спроектирована неидеально. Она выходит за пределы своего уровня абстракции, совершает access violation, о которых говорил Эдуард Шишкин (разработчик ReiserFS 4) в своём интервью. А именно непонятно, зачем в первый сектор NTFS записан размер сектора физического диска, размер NTFS в секторах, число скрытых секторов.
Посмотреть информацию об NTFS под Linux:
Из-за того, что в NTFS жёстко зашит размер сектора, разделы в Windows, в диспетчере дисков, отображаются как «RAW». И недоступны для чтения.
Что интересно, размер сектора диска совершенно безразличен Linux-драйверу ntfs-3g . Разделы NTFS под Linux прекрасно видны даже после клонирования 512B -> 4KiB.
Решать проблему «RAW» можно несколькими способами.
На текущий момент ни одна утилита для клонирования не умеет корректно клонировать NTFS-разделы между дисками с разным размером сектора, в том числе Clonezilla. Единственная программа, которая анонсирует эту функцию — это HdClone. Но она это делает топорно и не совсем верно, что лучше использовать мою самописную утилиту.
Вдохновившись анонсированной функций клонирования с 512 на 4К я решил попробовать эту прогу. Но в бесплатной версии не было функции клонирования отдельных разделов. Мне было жалко платить 20 евро и решил найти хакнутую программу. Нашёл. Проверил 10 антивирусами. Всё ОК. Запустил. И на всех моих дисках была испорчена $MFT. Я пока ещё не разобрался были ли они зашифрованы или просто испорчены, так как никакого требования не было оставлено.
Если вы хорошо владеете отладчиком и сможете разобраться с тем, что именно произошло, жду вас в личке для взаимовыгодного сотрудничества.
Потом я уже ради чистоты эксперимента я использовал официальную версию. И что? Она склонировала NTFS-раздел некорректно. Не заполнила NTFS backup boot-сектор. И, насколько я помню, chkdsk увидел ошибки на NTFS-разделе после клонирования.
Правильный способ
Как вы наверное уже догадываетесь, добиться желаемого можно не одним и даже не двумя, остроумными и не очень способами, но правильнее и проще всего на мой взгляд, использовать утилиту ddrescue. Что существенно важно — имеется в виду GNU ddrescue, а не давно уже устаревший оригинал.
Используется ddrescue следующим образом:
ddrescue
ddrescue не способна принимать входные данные с конвейра, или передавать на конвейр результат работы, что впрочем неудивительно. Возможность пропускать места с ошибками при первой итерации и возвращение к ним в последующих циклах подразумевает наличие файлов на выходе и входе.
Команда, которая выполнит операцию, аналогичную описанной выше, будет выглядеть так:
ddrescue /dev/sda2 win_c.img win_c.img.log
Кстати, в данный момент я молчаливо подразумеваю, что жёсткий диск, с которого мы снимаем копию более-менее исправен и фокусов не выкидывает. Если с диском есть серьёзные проблемы, то лучше предварительно ознакомиться с подробностями использования ddrescue, например тут. и применить эти знания при снятии образа.
▍ 1.2. Отключаем активные Volume Groups в LVM
Иначе это может привести к непредсказуемым последствиям, так как ядро может запутаться — будет две одинаковые Volume Groups и на какую-то из них ему нужно писать данные.
Классические способы ( dd , cat , pv ) прекрасно подходят для клонирования LVM-разделов, если диски имеют одинаковый размер сектора. Но в моём случае после клонирования ими LVM-раздел не запустился. Оказалось, что в него всё-таки жёстко вшит размер сектора. Ниже я расскажу, как это обошёл. vgchange делать не пришлось.
Читайте также: