技術ノート 特徴 Linux 用 Z ファイル システム (ZFS) の概要

Linux 用 Z ファイル システム (ZFS) の概要

Linux 用 Z ファイル システム (ZFS) の概要

ZFS は、データの蓄積者、NAS 愛好家、およびクラウドではなく独自の冗長ストレージ システムに信頼を置くことを好むその他のマニアによってよく使用されます。これは、データの複数のディスクを管理するために使用するのに最適なファイル システムであり、最も優れた RAID セットアップのいくつかに匹敵します。

Linux 用 Z ファイル システム (ZFS) の概要

写真: ケニー・ルイ

ZFS とは何ですか? なぜ ZFS を使用する必要があるのですか?

Linux 用 Z ファイル システム (ZFS) の概要

Z ファイル システムは、Sun Microsystems が Solaris オペレーティング システムで使用するために構築した、無料のオープン ソースの論理ボリューム マネージャーです。最も魅力的な機能には次のようなものがあります。

無限の拡張性

技術的には 無限ではありませんが、ゼタバイト (10 億テラバイト) のデータを管理できる 128 ビット ファイル システムです。ハードドライブの空き容量がどれほど多くても、ZFS はその管理に適しています。

最大限の整合性

ZFS 内で行うすべての操作では、ファイルの整合性を確保するためにチェックサムが使用されます。ファイルとその冗長コピーでは、サイレントなデータ破損が発生することはありませんので、ご安心ください。また、ZFS はデータの整合性を静かにチェックするのに忙しい一方で、可能な限りいつでも自動修復を実行します。

ドライブプーリング

ZFS の作成者は、ZFS をコンピューターが RAM を使用する方法と似ていると考えてほしいと考えています。コンピュータにさらにメモリが必要な場合は、別のメモリを挿入すれば完了です。 ZFS と同様に、より多くのハードドライブ容量が必要な場合は、別のハードドライブを取り付ければ完了です。ディスクのパーティション分割、フォーマット、初期化などに時間を費やす必要はありません。より大きなストレージ「プール」が必要な場合は、ディスクを追加するだけです。

RAID

ZFS は 、さまざまな RAID レベル に対応しながら、ハードウェア RAID コントローラと同等のパフォーマンスを実現します。これにより、コストを節約し、セットアップが容易になり、ZFS が改良した優れた RAID レベルにアクセスできるようになります。

Linux 用 Z ファイル システム (ZFS) の概要

ZFS のインストール

このガイドでは基本のみを説明しているため、ZFS をルート ファイル システムとしてインストールするつもりはありません。このセクションでは、ext4 またはその他のファイル システムを使用しており、一部のセカンダリ ハード ドライブに ZFS を使用したいと想定しています。ここでは、最も人気のある Linux ディストリビューションに ZFS をインストールするためのコマンドを示します。

Solaris と FreeBSD には、ZFS がすでにインストールされており、すぐに使用できる状態になっているはずです。

Ubuntu:

$ sudo add-apt-repository ppa:zfs- native /stable
$ sudo apt- get update
$ sudo apt- get install ubuntu-zfs
$ sudo add-apt-repository ppa:zfs- native /stable
$ sudo apt- get update
$ sudo apt- get install ubuntu-zfs

デビアン:

$ su -
# wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_2%7Ewheezy_all.deb
# dpkg -i zfsonlinux_2~wheezy_all.deb
# apt-get update
# apt-get install debian-zfs
$ su -
# wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_2%7Ewheezy_all.deb
# dpkg -i zfsonlinux_2~wheezy_all.deb
# apt-get update
# apt-get install debian-zfs

RHEL/CentOS:

$ sudo yum localinstall --nogpgcheck http: //archive.zfsonlinux.org/epel/zfs-release-1-3.el6.noarch.rpm
$ sudo yum install zfs
$ sudo yum localinstall --nogpgcheck http: //archive.zfsonlinux.org/epel/zfs-release-1-3.el6.noarch.rpm
$ sudo yum install zfs

他のディストリビューションをお持ちの場合は、 zfsonlinux.org をチェックし、「パッケージ」リストの下にあるディストリビューションをクリックして、ZFS のインストール方法を確認してください。

このガイドを進めるにあたり、Linux マニアにとって Ubuntu が第一の選択肢と思われるため、Ubuntu を使用することにします。 ZFS コマンドはディストリビューションが異なっても変更されないため、何があっても理解できるはずです。

インストールにはかなり時間がかかりますが、完了したら実行してください

$ sudo zfs list

正しくインストールされていることを確認します。次のような出力が得られるはずです。

現在、Ubuntu サーバーの新規インストールを使用しており、ハード ドライブは 1 台だけです。

Linux 用 Z ファイル システム (ZFS) の概要

ZFSの構成

さて、コンピュータにさらに 6 台のハード ドライブを取り付けたとします。

 $ sudo fdisk -l | grep Error

取り付けたばかりの 6 台のハードドライブが表示されます。これらにはいかなる種類のパーティション テーブルも含まれていないため、現在は使用できません。

前に述べたように、ZFS の優れた点の 1 つは、パーティションを気にする必要がないことです (ただし、必要に応じてパーティションを気にする必要はありません)。まず、次のコマンドを実行して、ハードディスクを 3 つ取り出し、ストレージ プールに置きます。

$ sudo zpool create -f geek1 /dev/sdb /dev/sdc /dev/sdd
 $ sudo zpool create -f geek1 /dev/sdb /dev/sdc /dev/sdd
 zpool create

新しいストレージ プールを作成するために使用されるコマンドです。

 -f

発生したエラー (ディスクにすでに情報がある場合など) をオーバーライドします。

 geek1

はストレージ プールの名前であり、

 /dev/sdb /dev/sdc /dev/sdd

プールに置いたハードドライブです。

プールを作成したら、次のコマンドを使用してプールを確認できるようになります。

 df

コマンドまたは

sudo zfs list

:

ご覧のとおり、/geek1 はすでにマウントされており、使用する準備ができています。

プールにどの 3 つのディスクを選択したかを確認したい場合は、次のコマンドを実行できます。

 sudo zpool status

:

これまでに行ったことは、9 TB の動的ストライプ プール (実質的には RAID 0) の作成です。これが何を意味するのかよくわからない場合は、/geek1 に 3 KB のファイルを作成したと想像してください。 1 KB は sdb に、1 KB は sdc に、1 KB は sdd に自動的に転送されます。次に、3 KB のファイルを読み込むと、各ハード ドライブは 3 つのドライブの速度を合わせて 1 KB を提供することになります。これにより、データの書き込みと読み取りが高速になりますが、同時に単一障害点が発生することも意味します。ハードドライブが 1 台だけ故障した場合、3 KB のファイルが失われます。

データに素早くアクセスすることよりもデータを保護することの方が重要であると仮定して、他の一般的な設定を見てみましょう。まず、作成した zpool を削除して、これらのディスクをより冗長なセットアップで使用できるようにします。


 $ sudo zpool destroy geek1

バン、私たちのzpoolがなくなってしまった。今回は、3 つのディスクを使用して RAID-Z プールを作成してみましょう。 RAID-Z は基本的に RAID 5 の改良版であり、コピーオンライトを使用して「 書き込みホール 」を回避します。 RAID-Z には少なくとも 3 台のハード ドライブが必要で、 RAID 0 と RAID 1 の間の妥協 のようなものです。 RAID-Z プールでは、ブロックレベルのストライピングの速度が得られますが、分散パリティも利用できます。プール内の 1 つのディスクが故障した場合、そのディスクを交換するだけで、ZFS は他のディスクからのパリティ情報に基づいてデータを自動的に再構築します。ストレージ プール内のすべての情報を失うには、2 つのディスクが停止する必要があります。さらに冗長性を高めるために、RAID 6 (ZFS の場合は RAID-Z2) を使用し、二重パリティを持たせることができます。

これを達成するには、同じものを使用できます

zpool create

前と同様にコマンドを指定しますが、

 raidz

プール名の後に:

$ sudo zpool create -f geek1 raidz /dev/sdb /dev/sdc /dev/sdd
 $ sudo zpool create -f geek1 raidz /dev/sdb /dev/sdc /dev/sdd

ご覧のように、

 df -h

3 TB がパリティ情報の保持に使用されているため、9 TB のプールが 6 TB に減ったことがわかります。とともに

zpool status

コマンドを実行すると、プールは以前とほぼ同じですが、現在は RAID-Z を使用していることがわかります。

ストレージ プールにディスクをいかに簡単に追加できるかを示すために、他の 3 つのディスク (さらに 9 TB) を別の RAID-Z 構成として geek1 ストレージ プールに追加してみましょう。


 $ sudo zpool add -f geek1 raidz /dev/sde /dev/sdf /dev/sdg

最終的には次のようになります。

Linux 用 Z ファイル システム (ZFS) の概要

サーガは続く…

ZFS とその機能のほんの一部を紹介しただけですが、この記事で学んだことを使用して、データの冗長ストレージ プールを作成できるようになります。 ZFS に関する今後の記事については、またご連絡ください。マンページを参照し、ZFS 機能をカバーする無限のニッチなガイドや YouTube ビデオを検索してください。

「 Linux 用 Z ファイル システム (ZFS) の概要」に関するベスト動画選定!

Create ZFS File System with best practices Part-01
【Linuxファイルシステム応用編】LVM(ロジカル・ボリューム・マネージャ)とは? ディスクスペースを柔軟に変更できる、LVMを詳しく解説。