GNU/Linux >> Linux の 問題 >  >> Linux

Linux でファイル圧縮を使用して ZFS ファイルシステムを作成する方法

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 のクローンとスナップショットを作成する方法について説明します。


Linux
  1. zpool コマンドの例を使用して Linux で ZFS ファイルシステムをセットアップする方法

  2. Linuxで特定のサイズのファイルを作成するには?

  3. LinuxでCでファイルを書く方法は?

  1. Linuxパーティションまたは論理ボリュームにファイルシステムを作成する方法

  2. Linuxでパスワードで保護されたZIPファイルを作成する方法

  3. Linuxでスワップを作成する方法

  1. Linuxでスワップスペースを作成または増やす方法

  2. Linuxでスワップファイルを作成する方法

  3. Linuxで1GBのランダムファイルを作成するにはどうすればよいですか?