Почему вызовы chown и chmod, которые ничего не меняют, создают различия между снимками на ZFS?

Вопрос или проблема

На нашем сервере есть задание cron, которое регулярно вызывает chown и chmod для директории в файловой системе ZFS. Обычно это не меняет пользователя и права, потому что директория уже имеет те же атрибуты.

Есть еще одно задание cron, которое регулярно создает снимок этой файловой системы.

На Рождество я был в офисе один, поэтому изменений на сервере быть не должно, но я обнаружил, что снимки ZFS не были пустыми.

Для пула и набора данных установлены следующие атрибуты:

compression=on (lz4)
atime=off
xattr=sa
acltype=posixacl

Почему снимок не пуст, если вызов chown и chmod ничего не меняет?

Можно ли это предотвратить?

(Нет, я не могу отключить это задание cron.)

Ответ или решение

Обнаружение изменений в снимках ZFS, несмотря на отсутствие реальных изменений атрибутов пользовательских прав и разрешений, вызывает вопросы в контексте работы с файловой системой ZFS, особыми свойствами которой являются снимки (snapshots). Ваша ситуация связана с периодическим запуском cron-задач, которые вызывают команды chown и chmod на директорию внутри ZFS, а также создают снимки файловой системы. Важный момент заключается в том, что даже если разговорные команды фактически не меняют атрибуты, они всё равно могут вносить изменения на более низком уровне файловой системы.

Почему снимок ZFS не пуст?

ZFS реализует механизм записи изменений на уровне блоков. Таким образом, даже небольшие изменения метаинформации файловой системы могут быть зафиксированы как изменения в снимке. В контексте использования chown и chmod, хотя визуально и видимо атрибуты могут оставаться неизменными, само обращение к файловой системе для проверки и подтверждения этих атрибутов всё равно может повлечь за собой запись метаданных, таких как временные метки доступа (в данном случае это отключено, но другие изменения метаданных возможны) или другая служебная информация, которая будет зафиксирована в снимке.

Возможные решения

  1. Анализ вызовов: Используйте инструменты отслеживания системных вызовов, такие как strace, чтобы увидеть, какие изменения создаются в метаданных при вызове chown и chmod.

  2. Оптимизация cron-задач: Если невозможно отключить cron-задачи, возможно, стоит рассмотреть их оптимизацию. Например, можно использовать условное обновление, проверяя через скрипт, изменились ли реально атрибуты перед вызовом chown или chmod.

  3. Изменения в политике паллиативных решений: Если изменение политики настроек ZFS не является возможным, определение использования атрибутов на уровне файловой системы может быть рассмотрено с администраторами системы для оценки возможности минимизации нежелательных эффектов.

Подводя итог, даже когда атрибуты прав и владельцев файлов остаются прежними, обращение к системным вызовам может обновлять метаданные, что и фиксируется в снимках ZFS. Предпринятие шагов для минимизации таких вызовов или их оптимизация может сократить частоту ненужных изменений.

Оцените материал
Добавить комментарий

Капча загружается...