Btrfs/Настройка: различия между версиями
Dzmuh (обсуждение | вклад) |
Dzmuh (обсуждение | вклад) |
||
| Строка 35: | Строка 35: | ||
{{Imbox | {{Imbox | ||
| type = notice | | type = notice | ||
| text = Совет: В соответствии с примечанием выше, вы можете использовать следующий трюк, чтобы отключить копирование при записи для существующих файлов в каталоге: | | text = '''Совет:''' В соответствии с примечанием выше, вы можете использовать следующий трюк, чтобы отключить копирование при записи для существующих файлов в каталоге: | ||
<syntaxhighlight lang="bash"> | |||
mv /путь/к/каталогу /путь/к/каталогу_old | |||
mkdir /путь/к/каталогу | |||
chattr +C /путь/к/каталогу | |||
cp -a --reflink=never /путь/к/каталогу_old/. /путь/к/каталогу | |||
rm -rf /путь/к/каталогу_old | |||
</syntaxhighlight> | |||
Убедитесь, что данные не используются во время этого процесса. | |||
Также обратите внимание, что <code>mv</code> или <code>cp</code> без <code>--reflink=never</code>, как описано ниже, работать не будут. | |||
}} | }} | ||
==== Влияние на снимки ==== | |||
Если для файла отключено копирование при записи (NOCOW) и сделан [[Btrfs/Снимки|снимок]], то первая запись в блок файла после создания снимка [https://www.spinics.net/lists/linux-btrfs/msg33090.html будет COW-операцией], поскольку снимок блокирует старые блоки файла на своих местах. Однако файл сохранит атрибут NOCOW, и все последующие записи будут выполняться в одни и те же блоки файла до момента создания следующего снимка. | |||
Частые снимки могут снизить эффективность NOCOW, так как при первой записи всё равно требуется COW. Чтобы полностью избежать COW-операций для таких файлов, поместите их в отдельный подтом и не создавайте снимки этого подтома. | |||
== Примечания == | == Примечания == | ||
Версия от 23:06, 6 января 2024
На этой странице мы рассмотрим настройку файловой системы.
Копирование при записи (CoW)
По умолчанию Btrfs постоянно использует копирование при записи (copy-on-write) для всех файлов. Когда выполняется операция записи, новые данные не записываются поверх старых; вместо этого изменённая копия блока записывается в новое место и в метаданные записывается адрес нового блока. Подробности реализации, а также преимущества и недостатки описаны в Btrfs Sysadmin Guide.
Отключение CoW
Внимание! Важно: Отключение CoW в Btrfs также отключает контрольные суммы. Btrfs не сможет обнаружить повреждения в nodatacow файлах. В сочетании с RAID 1 перебои в электропитании или другие причины повреждений могут привести к рассинхронизации данных. |
Чтобы отключить копирование при записи для создаваемых файлов в примонтированном подтоме, используйте опцию монтирования nodatacow. Это повлияет только на новые файлы. Для существующих файлов копирование при записи всё равно будет происходить. Опция nodatacow также отключает сжатие.[1]
Примечание: Из btrfs(5) § MOUNT OPTIONS: в рамках одной файловой системы невозможно монтировать одни подтома с nodatacow, а другие с datacow. Опция монтирования первого смонтированного подтома применяется ко всем остальным подтомам. |
Чтобы отключить копирование при записи для отдельных файлов/каталогов, выполните:
chattr +C /каталог/файл
Это отключит копирование при записи для операций над файлами, на которые есть только одна ссылка. Если ссылок на файл больше одной, например, из-за клонирования файлов или облегчённых клонов или снимков файловой системы, копирование при записи всё равно будет происходить. Начиная с coreutils 9.0, cp пытается создавать облегчённые копии по умолчанию — смотрите cp(1) для более подробной информации.
Примечание: Из chattr(1): При использовании Btrfs флаг ' C' следует устанавливать для новых или пустых файлов. Если он установлен на файле, который уже имеет блоки данных, то неизвестно, когда блоки, назначенные файлу, станут полностью стабильными. Если флаг 'C' установлен для каталога, он не будет иметь никакого эффекта на каталог, но новые файлы, создаваемые в этом каталоге, будут иметь атрибут No_COW. |
Влияние на снимки
Если для файла отключено копирование при записи (NOCOW) и сделан снимок, то первая запись в блок файла после создания снимка будет COW-операцией, поскольку снимок блокирует старые блоки файла на своих местах. Однако файл сохранит атрибут NOCOW, и все последующие записи будут выполняться в одни и те же блоки файла до момента создания следующего снимка.
Частые снимки могут снизить эффективность NOCOW, так как при первой записи всё равно требуется COW. Чтобы полностью избежать COW-операций для таких файлов, поместите их в отдельный подтом и не создавайте снимки этого подтома.
Примечания
- ↑ btrfs(5) — Arch manual pages (англ.). Arch manual pages (14 декабря 2023). Дата обращения: 6 января 2024. Архивировано 28 декабря 2023 года.
Ссылки и источники
- Btrfs (Русский) - ArchWiki. ArchWiki (25 ноября 2023). Дата обращения: 6 января 2024. Архивировано 6 января 2024 года.