web-dev-qa-db-ja.com

ZFS論理参照vs参照

あるプールから別のプールにzvolを送信した後、データの半分だけが「そこに」あることに気づきました(REFERによる)。次に、送信されたスナップショットで、referenced302Gであり、logicalreferenced150Gであることに気付きました。しかし、それを新しいプールに送信した後、これら2つの値は一致します。これがなぜなのかわかりません。どちらかといえば、logicalreferencedreferencedよりも大きいはずだと思いました。 ddを使用してiSCSI経由で150GBドライブを送信することにより、zvolにデータが入力されたため、302Gは特に混乱を招きます。

tank/Win10Root         831G   747G   302G  -
tank/Win10Root@send  referenced            302G                   -
tank/Win10Root@send  logicalreferenced     150G                   -

# zfs send tank/Win10Root@send | zfs recv wd/Win10Root

wd/Win10Root           151G  6.24T   151G  -
wd/Win10Root@send  referenced            151G                   -
wd/Win10Root@send  logicalreferenced     150G                   -

編集:事故でlogicalusedの代わりにlogicalreferenced(0)を投稿しました

これらはすべてtank/Win10Rootのプロパティです。 zvolはzfs create -V 512G tank/Win10Rootで作成されました。

@ubuntu1:~$ Sudo zfs get all tank/Win10Root | sort
NAME            PROPERTY              VALUE                  SOURCE
tank/Win10Root  available             740G                   -
tank/Win10Root  checksum              on                     default
tank/Win10Root  compression           off                    default
tank/Win10Root  compressratio         1.00x                  -
tank/Win10Root  context               none                   default
tank/Win10Root  copies                1                      default
tank/Win10Root  creation              Sat Nov  4 14:21 2017  -
tank/Win10Root  dedup                 off                    default
tank/Win10Root  defcontext            none                   default
tank/Win10Root  fscontext             none                   default
tank/Win10Root  logbias               latency                default
tank/Win10Root  logicalreferenced     150G                   -
tank/Win10Root  logicalused           150G                   -
tank/Win10Root  mlslabel              none                   default
tank/Win10Root  primarycache          all                    default
tank/Win10Root  readonly              off                    default
tank/Win10Root  redundant_metadata    all                    default
tank/Win10Root  refcompressratio      1.00x                  -
tank/Win10Root  referenced            302G                   -
tank/Win10Root  refreservation        528G                   local
tank/Win10Root  reservation           none                   default
tank/Win10Root  rootcontext           none                   default
tank/Win10Root  secondarycache        all                    default
tank/Win10Root  snapdev               hidden                 default
tank/Win10Root  snapshot_count        none                   default
tank/Win10Root  snapshot_limit        none                   default
tank/Win10Root  sync                  standard               default
tank/Win10Root  type                  volume                 -
tank/Win10Root  used                  831G                   -
tank/Win10Root  usedbychildren        0                      -
tank/Win10Root  usedbydataset         302G                   -
tank/Win10Root  usedbyrefreservation  528G                   -
tank/Win10Root  usedbysnapshots       0                      -
tank/Win10Root  volblocksize          8K                     -
tank/Win10Root  volsize               512G                   local
tank/Win10Root  written               0                      -
2
chew socks

これは完全に、ZFSの manページ をチェックする場合です。

参照

このデータセットからアクセスできるデータの量。プール内の他のデータセットと共有される場合と共有されない場合があります。スナップショットまたはクローンが作成されると、その内容が同一であるため、最初は作成元のファイルシステムまたはスナップショットと同じ量のスペースが参照されます。

このプロパティは、短縮された列名で参照することもできます。を参照してください。

そして...

論理参照

このデータセットが「論理的に」アクセスできるスペースの量。参照されるプロパティを参照してください。論理空間は、圧縮とコピーのプロパティの影響を無視し、アプリケーションが見るデータの量に近い量を提供します。ただし、メタデータによって消費されるスペースは含まれます。

このプロパティは、短縮された列名lreferで参照することもできます。

考慮事項:

  • あなたのzvolはまばらでしたか?
  • 圧縮と重複排除のプロパティは何でしたか?
  • Zvolの内部は何ですか?
1
ewwhite