Я использую BTRFS. Я могу подтвердить и уточнить некоторые из того, что говорит этот ответ ; и я могу добавить что-то еще.
Вы можете смонтировать любой снимок. Вы можете изменить его, если он не был создан с опцией «только для чтения». Снимок - это просто подобъем, он не «запоминает», из какого другого подобъема он был создан. Подобъем источника и его снимок изначально эквивалентны. Лучше думать о вновь созданном снимке как о «форке», а не буквальном «снимке», «копировании», «замороженном состоянии» или любом другом имени, которое указывает на его более низкий статус по сравнению с «оригиналом».
Когда вы разветвляетесь подобъем (создаете моментальный снимок), вы можете подумать о снимке на момент времени, если решите больше не изменять «копию» (либо явно создав его как доступный только для чтения, либо просто ничего не делая с ним). , оставив его в покое), пока «оригинал», возможно, все еще используется. Я использую моментальные снимки для резервного копирования своей системы перед «apt-get upgrade», но никогда не удосужился создать их «только для чтения». Моя точка зрения такова: их статус Point-In-Time не из-за некоторых метаданных на моем диске, а из-за метаданных в моей голове - я просто воздерживаюсь от их изменения.
Снимки делят (изначально почти все) блоки данных с «оригинальным» подобъемом. Если содержимое данного блока приводит к повреждению файла, то файл будет поврежден в каждом снимке, который разделяет блок. Перезапись (изменение) файла в одном из подобъемов отображает его в блок (ы), содержащие новый контент, только в контексте этого подобъема; другие подтомы остаются такими, какими они были.
Если у вас есть поврежденный файл, совместно используемый несколькими подобъемами, и вы хотите заменить его из резервной копии, вы можете:
- (общий метод) перезаписать весь файл (или отсоединить и создать заново), это переназначит все его части в другие блоки;
- (необычный метод) применяет двоичное исправление к файлу, это переназначит некоторые его части на другие блоки (это возможно, если повреждение происходит внутри файла, а не внутри файловой системы, например, недопустимый, но иным образом читаемый PDF).
Выполнение этого независимо в нескольких подобъемах приведет к независимому переназначению, при этом неиспользуемые блоки будут приниматься несколько раз, а не только один раз.
Чтобы избежать этого и сделать эти замененные файлы в нескольких подобъемах общими для всех своих блоков, выполните следующие действия:
- Если он еще не установлен, установите корень файловой системы Btrfs где:
mount -o subvol=/ …
. Таким образом, все возможные подобъемы будут доступны в одной точке монтирования.
- Замените файл из резервной копии в любом отдельном объеме.
- Для каждого другого подобъема, где файл должен быть заменен
- отсоединить (удалить) файл,
- затем скопируйте (
cp
) уже замененный файл из другого подобъема с --reflink=always
опцией; важно сделать это в одной точке монтирования.
- Теперь вы можете получить
umount
корень файловой системы BTRFS.