Назад | Перейти на главную страницу

Является ли размер, сообщаемый zfs send, точным или приблизительным?

Рассмотрим следующую команду и результат:

zfs send -Pvi \
    tank/vms/langara@zfsnap-2016-05-11_00.00.00--1w \
    tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w \
        | dd  > /dev/null

Запуск 1:

incremental   zfsnap-2016-05-11_00.00.00--1w tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w    4903284160
size 4903284160
17:29:42   1244483472  tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w
17:29:43   2487508120  tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w
17:29:44   3741453864  tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w
9582310+895 records in
9582799+1 records out
4906393272 bytes (4.9 GB) copied, 3.94883 s, 1.2 GB/s

Запуск 2:

incremental   zfsnap-2016-05-11_00.00.00--1w tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w    4903284160
size 4903284160
17:30:07   1209666712  tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w
17:30:08   2411042632  tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w
17:30:09   3632274072  tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w
17:30:10   4853372344  tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w
9582450+654 records in
9582799+1 records out
4906393272 bytes (4.9 GB) copied, 4.05346 s, 1.2 GB/s

Беги без -P вариант:

total estimated size is 4.57G
TIME        SENT   SNAPSHOT
17:36:23   1.11G   tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w
17:36:24   2.25G   tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w
17:36:25   3.39G   tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w
17:36:26   4.50G   tank/vms/langara@zfsnap-2016-05-13_00.00.00--1w
9582443+679 records in
9582799+1 records out
4906393272 bytes (4.9 GB) copied, 4.01077 s, 1.2 GB/s

У меня 4 связанных вопроса.

  1. Указан ли начальный размер с -P переключить смету? Я полагаю, это то же самое, что и без -P переключатель, но отсутствует пояснение, что это оценка.
  2. Есть ли способ получить zfs send вывести фактический размер потока после завершения отправки?
  3. Есть ли способ определить размер потока, оцененный zfs send используя существующие свойства ZFS, или единственный способ отправить пробный прогон?
  4. Есть что-нибудь вроде logicalwritten (ПРИМЕЧАНИЕ: это не недвижимость), которая предоставит мне ту же информацию, что и written свойство, но используя несжатые размеры?
  1. Я бы судил по описанию страницы руководства Print machine-parsable verbose information about the stream package generated что это та же информация, только в лучшем формате (например, байты вместо преобразования в КБ / МБ / ГБ). Кроме того, из вашего примера 4903284160/1024 ^ 3 ~ = 4,566, округленное до 4,57, что подтверждается.
  2. Посмотри на эта документация Oracle, это может быть полезно:

    Use the following dry-run syntax to estimate the size of the snapshot stream but not send it.
    # zfs send -rnv tank/source@snap1
    estimated stream size: 10.0G
    
    You can monitor the progress of the send stream by inserting the pv command between the zfs send and the zfs receive commands. [...] When the snapshot stream is completely received, the progress monitor identifies the total size received. For example:
    # zfs send tank/source@snap1 | pv |zfs recv pond/target
    10GB 0:01:55 [88.5MG/s] [       <=>   ]
    

    Solaris 11.3 также представил некоторые новые возможности мониторинга из send/recv, что-то подобное может быть принято в illumos / OpenZFS в будущем.

  3. Примерный размер уже есть, вы имели в виду реальный размер? Получить реальный размер, к сожалению, невозможно, подробности см. эта тема.
  4. Может быть logicalused? Из Справочная страница FreeBSD из zfs (у illumos также есть свойство, но на странице руководства отсутствует описание):

    logicalused
    
    The amount of space that is "logically" consumed by this dataset and
    all its descendents.  See the used property.  The logical space
    ignores the effect of the compression and copies properties, giving a
    quantity closer to the  amount of data that applications see.