web-dev-qa-db-ja.com

`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プロパティを使用してzfs sendによって推定されたストリームサイズを把握する方法はありますか、それともドライラン送信が唯一の方法ですか?
  4. logicalwrittenプロパティと同じ情報を提供するが、非圧縮サイズを使用するwritten(注:実際のプロパティではない)のようなものはありますか?
6
Ryan J
  1. マニュアルページの説明から判断しますPrint machine-parsable verbose information about the stream package generatedそれは同じ情報ですが、より良い形式(たとえば、KB/MB/GBに変換する代わりにバイト)でのみです。また、例から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も導入されました いくつかの新しい監視機能 of send/recv、同様の何かが将来illumos/OpenZFSによって採用されるかもしれません。

  3. 推定サイズはすでにありますが、実際のサイズですか?残念ながら、実際のサイズを取得することはできません。詳細については、 このスレッド を参照してください。
  4. 多分logicalusedFreeBSD manpage of zfsから(illumosにもプロパティがありますが、manページに説明がありません):

    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.
    
2
user121391