Партнерские сервисы
Simple AI Logo
 Назад
  15.03.2024
Клонируем ноутбук при помощи NVME over TCP

Недавно я купил новый ноутбук и мне нужно было настроить его перед использованием. Но у меня не было настроения выполнять все те привычные шаги, о которых я рассказывал в предыдущем посте. Я пожаловался на это своему коллеге, и в ответ он предложил целиком копировать диск на новый ноутбук. Хотя эта идея показалась мне интересной, у меня возникли сомнения, которыми я поделился с ним.

  1. У меня нет инструментов для вскрытия старого ноутбука и подключения нового диска через USB к новому ноутбуку.

  2. Я использую полное шифрование диска, у старого ноутбука диск на 512 ГБ, а у нового — NVME на 1 ТБ; как менять размер LUKS, я не знаю.

Он ответил, что обе проблемы можно решить. На первом этапе можно просто открыть доступ к диску при помощи NVME over TCP, подключить его по сети и создать полную копию диска, а остальное сделать достаточно просто. Если вкратце, он предложил следующее:

  1. Экспортировать диск, использовав из старого ноутбука nvmet-tcp.

  2. Создать копию диска на новом ноутбуке.

  3. Изменить размер раздела, чтобы использовать весь 1 ТБ.

  4. Изменить размер LUKS.

  5. Изменить размер корневого диска BTRFS.

Экспортируем диск через NVME TCP

Коллега сказал, что проще всего это сделать при помощи systemd-storagetm.service. Этот сервис можно вызвать, просто загрузившись в storage-target-mode.target, указав rd.systemd.unit=storage-target-mode.target. Но он рекомендовал не использовать это, потому что мне нужно настроить образ dracut initrd, чтобы задействовать сетевые сервисы, а также настроить из этого режима WiFi, а это довольно непростой процесс.

Поэтому вместо этого я просто запустил оба ноутбука с аварийным CD GRML. А для того, чтобы экспортировать диск NVME на новый ноутбук при помощи модуля nvmet-tcp Linux, я выполнил следующий шаг:

modprobe nvemt-tcp
cd /sys/kernel/config/nvmet
mkdir ports/0
cd ports/0
echo "ipv4" > addr_adrfam
echo 0.0.0.0 > addr_traaddr
echo 4420 > addr_trsvcid
echo tcp > addr_trtype
cd /sys/kernel/config/nvmet/subsystems
mkdir testnqn
echo 1 >testnqn/allow_any_host
mkdir testnqn/namespaces/1
cd testnqn
# replace the device name with the disk you want to export
echo "/dev/nvme0n1" > namespaces/1/device_path
echo 1 > namespaces/1/enable
ln -s "../../subsystems/testnqn" /sys/kernel/config/nvmet/ports/0/subsystems/testnqn

Эти команды гарантируют экспорт устройства при помощи NVME over TCP. Дальше нужно распознать это на новом ноутбуке и подключить устройство:

nvme discover -t tcp -a <ip> -s 4420
nvme connectl-all -t tcp -a <> -s 4420

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

Копируем диск

Я просто воспользовался командой копирования корневого диска на новый ноутбук. Так как у нового ноутбука нет разъёма Ethernet, мне пришлось пользоваться только WiFi, и для копирования всех 512 ГБ на новый ноутбук понадобилось семь с половиной часов. Скорость копирования составляла примерно 18-20 МБ/с. Ещё одно решение заключалось бы в создании начального раздела и файловой системы с последующим выполнением rsync корневого диска или использованием непосредственно BTRFS для переноса файловой системы.

dd if=/dev/nvme2n1 of=/dev/nvme0n1 status=progress bs=40M

Меняем размер раздела и контейнера LUKS

Последняя часть была очень простой. После запуска parted он обнаружил, что таблица разделов не соответствует размеру диска и спросил, нужно ли исправить это, на что я ответил утвердительно. Дальше мне нужно было установить cloud-guest-utils, чтобы получить growpart для исправления второго раздела. Следующая команда расширила раздел на весь 1 ТБ:

growpart /dev/nvem0n1 p2

Дальше я использовал cryptsetup-resize для увеличения размера контейнера LUKS.

cryptsetup luksOpen /dev/nvme0n1p2 ENC
cryptsetup resize ENC

Далее я перезапустил диск, и всё заработало. После входа в систему я изменил размер файловой системы BTRFS. Для изменения размера BTRFS требует монтирования системы, поэтому я не мог попробовать это сделать при live boot.

btfs filesystem resize max /

Вывод

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

Кроме того, благодаря своему коллеге я научился экспортировать диски при помощи NVME over TCP.

ЭКСПЕРТЫ Все эксперты
Random Image
Olga Blednova
ТОП Эксперт
Random Image
Эдуард Демерчян
ИТ
Специалист
Random Image
Анна Ржешевская
Специалист
Random Image
Игорь Бочаров
ИТ
Специалист
Random Image
Дарья Казарина
ИТ, Банки
Специалист
Random Image
Таисия Тихомирова
Банки, Бизнес-коучинг
Специалист
Все эксперты