Почему моментальные снимки занимают гораздо меньше места, чем данные, измененные после их создания?

Я понимаю, что это старый вопрос, но ответ можно найти в RFB RFC.

Когда клиент отправляет сообщение FramebufferUpdateRequestна сервер, помеченный как incremental, этот запрос будет оставаться ожидающим на сервере до тех пор, пока не произойдет фактическое изменение для отчета. В этот момент сервер отправит обратно сообщение FramebufferUpdate, содержащее данные прямоугольника с изменениями.

Это означает, что если вы посмотрите на свои сетевые данные, вы, вероятно, обнаружите, что (помимо поддержки активности, возможно, ), последний пакет идет от клиента к серверу и является FramebufferUpdateRequestс пометкой incremental. Сервер не отправит ответ до тех пор, пока не будет отправлено обновление, поэтому сеть останется тихой.

Чаще всего экран меняется часто, что может привести к множеству последовательных FramebufferUpdateRequestсообщений, приводящих к одному составному FramebufferUpdateсообщению от сервера.

1
04.05.2021, 17:51
1 ответ

Теперь я могу сам ответить на свой вопрос. Поскольку я не получил ответа в течение нескольких дней, я также задал вопрос в списке рассылки ZFS в Linux, и два участника по имени «Греческий» и «Стефан Ринг» объяснили мне тему. Тема здесь .

Подводя итоги:

Размер USEDмоментального снимка (, в отличие от моего первого понимания ), не отражает объем данных, которые были записаны в ZVOL с момента создания этого моментального снимка до того, как был сделан следующий снимок..

Вместо этого, это количество данных, которое является уникальным для этого моментального снимка. Другими словами, это объем дискового пространства, которое освободится, если вы удалите этот снимок.

Теперь понятно, почему это никогда не является объемом данных, которые вы добавили в ZVOL до того, как был сделан следующий снимок. Возвращаясь к моему примеру :, я добавил около 18 ГБ в ZVOL после того, как был сделан следующий -— -последний снимок.

Однако, если я удалю этот снимок, эти 18 ГБ данных, конечно же, останутся в ZVOL. Следовательно, это пространство не будет освобождено при удалении этого моментального снимка.

Вместо этого будет освобождено только около 1 ГБ (размера USED); только это пространство является уникальным для снимка и, вероятно, занято смесью метаданных для управления снимком и данными полезной нагрузки, которые были удалены или изменены (, но не добавлены )после этого снимка.

Если вы хотите увидеть объем данных, которые были записаны в снимок с момента его создания и до создания следующего снимка, используйте свойство WRITTEN.

Разница между USEDи WRITTENчетко описана в руководстве zfs. Хотя я читал это руководство более одного раза, я, очевидно, пропустил свойство WRITTEN.

1
28.07.2021, 11:35

Теги

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