Привет всем!
Есть два компьютера (ноутбук и настольный). Хочу иметь одну и ту же систему на обоих и синхронизировать с того компьютера, где более новое состояние, на тот, где более старое. Начиналось всё с настольного компьютера. Операционная система на нём стоит давно, многократно обновлялась между версиями и всё настроено как мне удобно, нужное ПО, какие-то костыли и т.п. Поэтому я хочу синхронизировать ОС целиком, а не только настройки или отдельные файлы.
На данный момент стоит Ubuntu 21.10 с KDE, обновление до 22.04 планируется. В обоих компьютерах стоят SSD, размеры которых одинаковые до байта. Накопители имеют GPT таблицу разделов и два раздела: ESP на гибибайт и LVM PE на всё остальное. Внутри LVM: /, /home и swap. Файловые системы везде ext4. Шифрования на уровне блочного устройства или самих ext4 не применяется.
Первую синхронизацию я сделал просто через DD, физически переставив один накопитель в другой компьютер. Естественно, дальше это было неприменимо. Поэтому я написал скрипт, который с использованием ключей SSH делает синхронизацию с помощью rsync. А кроме этого предварительно применяет нужные настройки, поднимает нужные сервисы (сеть, SSH). Запускаю я его из rescue режима, чтобы система в это время ничего не делала. В принципе rescue вполне достаточно, только лишь systemd успевает накидать несколько каких-то незначительных файлов. journald при этом остановлен. Хотя, конечно, загрузка с отдельного носителя или какой-то специальный initramfs подошли бы больше. Но, в общем, работает в обе стороны. Однако недостаточно быстро.
А недавно возникла необходимость изменить логические тома на LVM. И после такого изменения один rsync уже не поможет, т.к. размеры томов изменились. Мало того, что изменения размеров томов так не синхронизируются (естественно), так и на одном места для данных не хватит теперь. Конечно, можно синхронизировать опять через dd, но разбирать не хочется, а через сеть медленно. Да и перезаписывать накопитель целиком ещё раз тоже идея так себе. Можно и руками изменить размеры на целевой системе, но муторно. Надо будет сначала удалить ненужные файлы, чтобы освободилось место, потом поменять размеры, потом синхронизировать. А если понадобиться изменить размеры ещё раз, то опять? Морока...
И я подумал, нет ли какого-то решения, чтобы синхронизировать два PV или VG, но только те экстенты, что изменились? Погуглил, но ничего не нашёл. Не знаю, хранят ли экстенты время последнего изменения, чтобы это было в принципе возможно. Хотя тут хватило бы даже не времени, а просто некоторого идентификатора компьютера. Например, когда ОС записывает что-то, то в метаданных экстента записывается хеш от названия материнской платы или т.п. Но это я уже фантазирую. Так существует ли что-то подобное? Может быть как некое дополнение к обычному LVM?
Если ничего такого нет, что тогда? Я нагуглил штуку под названием Distributed Replicated Block Device. Но пока не разобрался по поводу загрузки с неё. Кроме того, она должна же быть под LVM, т.е. это надо всё переустановить. Точнее, скопировать куда-то, потом переразбить носитель и скопировать всё обратно.
Какие есть другие варианты, если без переделывания всего не получится обойтись? У меня такие мысли:
* Один LV просто на весь объём накопителя, тогда не надо будет менять его размер. Но мне это решение не очень нравится, т.к. я хотел завести себе LXC контейнеры и под них создавать отдельные LV. Кроме того, деление на LV и для бекапов полезно. Да, бекапы у меня отдельно, это не на другой компьютер.
* Какие-то иные файловые системы, вроде ZFS и BTRFS могут мне что-то предложить? Думаю, что subvolume (или что-то такое) вполне заменят отдельные LV как для LXC, так и для бекапов. Правда у меня память что там, что там без ECC. А она вроде как очень рекомендована для таких файловых систем.
Кто что думает?
P.S.: Написал в администрирование т.к. думаю, что вопрос больше подходит сюда, т.к. выходит за рамки повседневного использования, хоть это и для личных нужд и «администрирую» я локальные свои системы.
![](/photos/164479:-1039243570.png)
![](/photos/156632:1736252755.jpg)
Ответ на:
комментарий
от mord0d
![](/photos/52012:1888548381.jpg)
![](/photos/137874:-1713972000.jpg)
![](/img/p.gif)
Ответ на:
комментарий
от vdk10
![](/photos/52012:1888548381.jpg)
![](/photos/35494:-1111736652.jpg)
![](/photos/26318:-1671726323.jpg)
![](/img/p.gif)
![](/img/p.gif)
Ответ на:
комментарий
от theurs
![](/photos/52012:1888548381.jpg)
Ответ на:
комментарий
от Shushundr
![](/photos/52012:1888548381.jpg)
Ответ на:
комментарий
от ls-h
![](/photos/56337:1521526582.png)
Ответ на:
комментарий
от ls-h
![](/img/p.gif)
Ответ на:
комментарий
от ls-h
![](/photos/164479:-1039243570.png)
Ответ на:
комментарий
от mord0d
![](/img/p.gif)
![](/photos/32142:-682293051.jpg)
Ответ на:
комментарий
от Harliff
![](/photos/164479:-1039243570.png)
Ответ на:
комментарий
от mord0d
![](/img/p.gif)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Синхронизация home на двух компьютерах (2014)
- Форум Синхронизация звука с двух компьютеров через ethernet (2014)
- Форум синхронизация двух сайтов (2012)
- Форум синхронизация двух ВМ (2013)
- Форум синхронизация двух БД (2021)
- Форум синхронизация двух циклов (2009)
- Форум Как обезопасить свой компьютер от вредоносного кода из сторонних библиотек/модулей? (2022)
- Форум Синхронизация разных компьютеров (2011)
- Форум Постоянная синхронизация двух машин. (2018)
- Форум Синхронизация двух сетевых папок. (2015)