Как перенести старые журналы systemd в другую файловую систему?

So how do I replace a fresh writable root subvolume from a received snapshot?

Вы не можете.

В вашем случае верхний -уровень (корневой )подтом (с идентификатором 5 )является /вашей файловой системы Linux; Ничто не может существовать рядом с ним. Как вы обнаружили, btrfs-receiveсоздает подтом -только для чтения, поэтому вам нужно создать подтом для чтения -записи моментального снимка из только одного чтения -, и для этого вам понадобится чтобы иметь возможность создать подтом за пределами /; Следовательно, почему вы не можете заменить подтом верхнего уровня -.

Обратите внимание, что вы сказали:

I have created a readonly snapshot of the fs I want to convert first and started sending it into a subvolume in another fs.

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

Лучше всего использовать такой инструмент, как partclone, для резервного копирования всей файловой системы и последующего восстановления из нее. В противном случае вам придется изменить макет подтома с плоского , который у вас есть, на вложенный . С вложенным макетом у вас будет что-то вроде этого:

/ (top-level)
|
|__ /rootfs (subvolume)
|   |
|   _/home
|
|__ /rootfs-backup (read-only subvolume, which you can delete later)
|   |
|   _/home

Вложенный макет дает вам возможность создавать моментальные снимки любого подтома в файловой системе (, кроме верхнего -уровня, который вам в любом случае не понадобится ). Тогда вы просто смонтируете подтом rootfsна /вместо всей файловой системы. Например:mount -t btrfs /dev/sda1 -o defaults,subvol=/rootfs

1
13.05.2020, 11:15
1 ответ

Одна из возможностей состоит в том, чтобы просто удалить «заархивированные» файлы журналов systemd, т. е. те, которые systemd закрыла. Это файлы в /var/log/journal/*с @в их имени, согласноman systemd-journald:«Когда systemd -journald прекращает запись в файл журнала, он будет переименован в «исходное -name@suffix. журнал" (или "исходное -имя@суффикс.журнал ~" ). Такие файлы "заархивированы" и больше не будут записываться в них")

Перед этим вы можете по желанию чередовать файлы, чтобы убедиться, что текущие файлы заархивированы, если вы хотите быть уверены, что переместили все записи журнала. Это было бы просто sudo journalctl --rotate. Затем вы можете сделать следующее, чтобы заархивировать старые журналы:sudo mv /var/log/journal/*/*@* /mnt/wherever.

Другой вариант, если вы хотите сохранить в журналах только те файлы, которые старше определенной даты, — использовать journalctl --untilдля отображения журналов до определенной даты (и сохранения их где-нибудь ), а затем journalctl --vacuum-timeдля удалить журналы за соответствующий период времени.

1
28.04.2021, 23:14

Теги

Похожие вопросы