ZFS ファイルシステムは、Linux で広く認識されています。
ZFS では、ファイルシステム レベルで圧縮を有効にできます。これにより、データが圧縮形式で保存され、ディスク容量が大幅に節約されます。
この記事では、ZFS ストレージ プールからファイル システムを作成し、ZFS で圧縮を有効にする方法について説明します。
これは、ZFS ファイル システム シリーズの 2 回目の記事です。
このシリーズの第 1 回では、ZFS の基礎と、ZFS を Linux にインストールする方法について説明しました。また、ZFS プールも作成しました。
ZFS ファイルシステムの作成
まず、以下に示すように zfs list コマンドを使用して、現在のすべての ZFS ファイルシステムを表示します。この例では、現在 1 つの ZFS ファイルシステムがあります。
# zfs list NAME USED AVAIL REFER MOUNTPOINT mypool 296K 5.84G 30K /mypool
ここで、zfs create コマンドを使用して新しい ZFS ファイルシステムを作成します。
# zfs create mypool/fs1
以下に示すように、新しい ZFS ファイルシステムが正常に作成されました。
# zfs list NAME USED AVAIL REFER MOUNTPOINT mypool 170K 5.84G 30K /mypool mypool/fs1 30K 5.84G 30K /mypool/fs1
ZFS 見積もりと予約の設定
ZFS ファイルシステムを作成すると、デフォルトでプール内のすべてのスペースが消費されます。そのため、ファイルシステムのクォータと予約を指定する必要があります。
見積もりを設定するには、以下に示すように zfs set コマンドを使用します。ここでは、このファイルシステムのクォータを 1GB に指定しています。
# zfs set quota=1G mypool/fs1
次に、ファイルシステムの予約を設定します。この例では、fs1 は 5.59G のうち 256M が予約されているため、誰もこのスペースを使用できず、使用可能な空きスペースがある場合は、設定したクォータに基づいて最大 1G まで拡張できます。
# zfs set reservation=256M mypool/fs1 # zfs list NAME USED AVAIL REFER MOUNTPOINT mypool 256M 5.59G 32.5K /mypool mypool/fs1 30K 1024M 30K /mypool/fs1
ZFS 代替マウント ポイントの作成
「mypool/fs1」という名前を使用してマウントする代わりに、ファイルシステムに任意の名前を付けて別のマウント ポイントを設定することもできます。
たとえば、次のコマンドはマウント ポイントを「mypool/fs1」ではなく「/testmnt」に設定します。
# zfs set mountpoint=/testmnt mypool/fs1
次の出力からわかるように、最初の列 NAME は、ZFS ファイルシステムの実際の名前を示しています。最後の列 MOUNTPOINT は、上で作成した代替マウント ポイントを示します。
# zfs list NAME USED AVAIL REFER MOUNTPOINT mypool 256M 5.59G 32.5K /mypool mypool/fs1 30K 1024M 30K /testmnt
df コマンドを実行すると、以下に示すように別のマウント ポイントが表示されます。
# df -h Filesystem Size Used Avail Use% Mounted on .. mypool 5.6G 128K 5.6G 1% /mypool mypool/fs1 1.0G 128K 1.0G 1% /testmnt
ZFS ファイルシステムで圧縮を有効にする
ZFS データセットで圧縮を設定するには、以下に示すように圧縮プロパティを設定できます。このプロパティが設定されると、この ZFS ファイルシステムに保存されている大きなファイルはすべて圧縮されます。
# zfs set compression=lzjb mypool/fs1
有効な圧縮プロパティは次のとおりです:
- オン
- オフ
- lzjb
- gzip
- gzip[1-9]
- ズレ
既存のファイルシステムでも圧縮を有効にすることができます。その場合、圧縮は新しいデータと変更されたデータにのみ適用されます。既存のデータは圧縮されません。
ZFS 圧縮の検証
次の例では、61M tar ファイルを /testmnt の下にマウントされた ZFS ファイルシステム mypool/fs1 にコピーしました。
# ls -lh /testmnt/test.tar -rw-r--r--. 1 root root 61M Nov 11 09:44 /testmnt/test.tar
zfs list コマンドから USED スペースの合計サイズを見ると、20.9M スペースしか消費されていないことがわかります。これは、圧縮がオンになっており、機能していることを示しています。
# zfs list NAME USED AVAIL REFER MOUNTPOINT mypool 256M 5.59G 32.5K /mypool mypool/fs1 20.9M 1003M 20.9M /testmnt
次のコマンドを使用して圧縮率を取得することもできます。
# zfs get compressratio mypool/fs1 NAME PROPERTY VALUE SOURCE mypool/fs1 compressratio 2.90x -
圧縮とは別に、ZFS ファイルシステムにはいくつかの高度な機能があります。 ZFS シリーズの次の記事では、ZFS のクローンとスナップショットを作成する方法について説明します。