zfsの重複排除で未来を感じてみる
追記
日付がおかしくなってた問題を修正。ごめんなさい。
あと、zfsのデータ圧縮も試してみました。 ついでにzfsのデータ圧縮も試してみる
重複排除を試してみたい。というか、試してみました。ので、メモ。 いやー、これはいい。安定性がどうなのかってところはあるけれどね。
インストールと設定
今回はubuntuで試したので、インストールはこんな感じ。
$ sudo apt-get install zfs-fuse
無事インストールできたら、HDD代わりにファイルを作成します。 なにゆえファイルなのかというと、HDDが余ってないから。 余ってる方はそれで問題ないので、この手順はスキップしてください。
$ head -c 100M /dev/zero > /tmp/testfile
こんな感じね。
さて、いよいよ本命、ストレージプールを作成。
$ sudo zpool create testpool /tmp/testfile
これだけ。
作成と同時に/testpool
にマウントされます。
マウントポイントを移動するときは
$ sudo zfs set mountpoint=/tmp/test testpool
こんな感じで。
ちなみに、マウント先のディレクトリは存在しなくてもおっけーです。
で、重複排除を有効にします。
$ sudo zfs set dedup=on testpool
こんな感じ。再起動とか再マウントとかの必要はなし。あら素敵。
試してみる
さあいよいよ実験だ。 ファイルを100MBで作成したので、このHDDモドキの容量は100MBです。 という訳で、その限界を突破してみましょう。
$ sudo head -c 1G /dev/zero > /testpool
100Mのディスクに1Gのファイルを詰め込む! おお、なんてキモチワルイ。 キモチワルイですが、難なく成功するはずです。
ちなみに、dfコマンド使えば現在の使用量を見る事が出来ます。 見る事ができるのだけれど、重複してるファイルを追加すると最大容量も増えてくのね。 いやー、キモチワルイ。
まあ、実際は0x00だけのファイルなんて理想的なものがあるはず無いので、現実的な実験じゃないけれど。
当然、/dev/zero
の代わりに/dev/urandom
あたりから書き込むと一瞬で使い切ります。
いやー、面白い。
後片付け
そんな感じで遊び終わったら、後片付け。
$ sudo zpool destroy testpool
これでアンマウント出来ます。 多分これでおっけー。多分。