ZFS RAID-ZをUbuntuで試してみる (暗号化、圧縮)

Ubuntu Server で RAID-Z を試してみたので、そのときのメモです。
2TB HDDを5台使って構築しました。

始める前に、Ubuntu 22.04に更新することをおすすめします。
ZFSは圧縮機能があるのですが、アルゴリズムが選べます。
zstdとかいうのが一番効率がよいらしくこれを使おうとしたのですが、Ubuntu Server 20.04ではZFSのバージョンが古く使えなかったので22.04へアップグレードしました。具体的にはZFS 2.0から使えるらしいです。(20.04だと0.8.3止まり)

ZFSのストレージプールをつくる

/dev/sdaみたいにデバイス名で指定すると、順番が変わったときにまずいらしいので、by-idで指定しました。

で、使うディスクを調べます。

プール名をtankとします。-f オプションはディスクの容量が混在してるときに使います。今回は2TBが4台、3TBが1台混ざってたので -f を付けました。もちろん使える容量は2TBに合わせられてしまいます。

by-idは ata, scsi, wwn から始まるやつがありますが、どれも一意なのでどれ使ってもいいらしいです。
https://www.reddit.com/r/zfs/comments/o5qm6e/comment/h2o0o1b/

作ったこのプールは、/tankに自動でマウントされます。

圧縮

圧縮は前述の通り、zstdがよさそうなのでこれを指定しました。ほかにはlz4やgzipがあります。
比較はこのサイトが参考になります。
https://nofu.jp/wiki/blog/2022/2022-02-21

暗号化

ZFSでは、作ったpoolから切り出してそれを1つのファイルシステムとして使う機能があります。切り出したものをデータセットと言うらしいです。

例えば、

とすると、tank/testというデータセットが作られ、/tank/testにマウントされます。

pool自体を暗号化して使うこともできますが、このデータセット単位で暗号化して使ったほうが何かと便利そうです。

tank/data を作り、これを暗号化しました。

暗号化したデータセット(プール)をマウントするには、

でパスワードを入力し、ロードしたのち、

と、マウントすればよいです。

キーをアンロードして、またパスワードが要求されるようにするには

とします。

そのほかの設定など

アクセス時刻の書き込みは、書き込みが多くなって性能劣化するらしいのでオフにしました。

ZFSの機能として、ファイルの重複を検出して容量を削減してくれるdedupという機能があります。
が、大量にメモリを食うので有効にするのはやめておきました。

速いSSDを利用してキャッシュとして使う、L2ARCという機能もあります。
こちらも、搭載したキャッシュの1.59%のメモリを食うらしいのでやめておきました。

メモ、コマンドなど

リスト

とりあえず5TBぐらい書き込みました

圧縮の設定の確認(データセットには、親の設定が引き継がれるみたい)

圧縮率の確認

あれ?全然圧縮されてないような
中身に映像のデータが多いからかもしれません。多分テキストメインとかだともっと小さくなると思います。

暗号化の確認

追記

ディスクの交換

悪名高いST3000DM001が壊れたので、新しいHDDに交換しました。

交換前

壊れたHDDを引っこ抜いて新しいHDDを接続します。その後、GPTを作っておきます。

zpoolに追加して交換

交換中

4時間半ぐらいで終わるみたいですね

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です