Linux上のzfsでzfsファイルシステムに書き込まれるデータの順序は何ですか?
私が見つけた唯一の特定の文書 http://docs.oracle.com/cd/E36784_01/html/E36835/gkknx.html と言う。 When a file is written, the data is compressed, encrypted, and the checksum is verified. Then, the data is deduplicated, if possible.
しかし、それが真実であれば、重複排除は異なる圧縮アルゴリズムで圧縮されたブロックを重複排除しません。
私はmysqlfをテストしました、そして、私は順序が以下であると信じます: dedup, compress, encrypt
。
私のテスト設定:
zpool create tank /dev/sdb
zfs create tank/lz4
zfs create tank/gzip9
zfs set compression=lz4 tank/lz4
zfs set compression=gzip-9 tank/gzip9
zfs set dedup=on tank
の出力 zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 106K 19,3G 19K /tank
tank/gzip9 19K 19,3G 19K /tank/gzip9
tank/lz4 19K 19,3G 19K /tank/lz4
でランダムファイルを生成する dd if=/dev/urandom of=random.txt count=128K bs=1024
131072+0 Datensätze ein
131072+0 Datensätze aus
134217728 Bytes (134 MB) kopiert, 12,8786 s, 10,4 MB/s
空のプール上のzpoolリストの出力
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
tank 19,9G 134K 19,9G - 0% 0% 1.00x ONLINE -
次に、ファイルを異なる圧縮アルゴリズムでデータセットにコピーします。
cp random.txt /tank/lz4
cp random.txt /tank/gzip9
の出力 zfs list
コピー後
NAME USED AVAIL REFER MOUNTPOINT
tank 257M 19,1G 19K /tank
tank/gzip9 128M 19,1G 128M /tank/gzip9
tank/lz4 128M 19,1G 128M /tank/lz4
の出力 zpool list
コピーを避けます。
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
tank 19,9G 129M 19,7G - 0% 0% 2.00x ONLINE -
重複排除率は 2.0 同じファイルを別のデータセットにコピーした後。私の意見では、これは重複排除が行われることを意味します データ 圧縮と暗号化の前にブロックします。
誰かがこれが正しいかどうか確認できますか?