ZFS は、ボリューム マネージャーとファイルシステムをいくつかの高度な機能と組み合わせています。
これは、ZFS に関する一連の記事の第 1 部です。
この記事では、ZFS の概要を紹介し、Linux に ZFS をインストールする方法、ZFS プールを作成する方法、およびいくつかの ZFS zpool コマンドについて説明します。
1. ZFS の概要
以下は、ZFS ファイルシステムの機能の一部です:
- データ破損に対する保護
- 大容量ストレージのサポート
- 効率的なデータ圧縮
- ファイルシステムのスナップショットを取る
- コピー オン ライト クローン
- RAID Z のサポート
- 整合性チェック
- ネイティブ NFSV4 ACL の自動修復とサポート
これは、もともと Sun Microsystems が Solaris プラットフォーム用に開発したものです。 2010 年、Oracle は Sun のマイクロシステムを買収し、ZFS ファイルシステムに多くの改良を加えました。
ZFS は、より安定しているため、Linux で最近人気が高まっています。
ZFS on Linux ポートは、ローレンス リバモア国立研究所 (LLNL) によって作成されています。
Linux 上の ZFS は、ダウンロード、コンパイル、およびインストールできるカーネル モジュールです。カーネルにパッチを当てたり、再コンパイルしたりする必要はありません。
ここから、それぞれの OS ディストリビューションのソース パッケージをダウンロードできます。
2. Linux に ZFS をインストール
この記事では、ZFS を CentOS サーバーにインストールします。ただし、以下で説明する zfs コマンドは、インストール部分を除いて、Linux ディストリビューションのほぼすべてのディストリビューションで同じです。
次の yum コマンドを実行して、Redhat / CentOS に ZFS をインストールします。
# yum localinstall --nogpgcheck https://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el6.noarch.rpm # yum install kernel-devel zfs
すべての依存関係が満たされていることを確認してください。インストールが通常失敗する依存関係の 1 つは、GCC コンパイラをインストールするための要件です。この場合、ZFS をインストールする前に GCC コンパイラをインストールしてください。
以下に示すように、ZFS モジュールが lsmod コマンドを使用してロードされていることを確認してください:
# lsmod | grep zfs zfs 1188621 0 zcommon 45591 1 zfs znvpair 81046 2 zfs,zcommon zavl 6900 1 zfs zunicode 323051 1 zfs spl 264548 5 zfs,zcommon,znvpair,zavl,zunicode
関連するメモとして、Linux ローダブル カーネル モジュールの作成方法の基本についてお読みになることをお勧めします。
ZFS 機能をテストするために、このサーバー (/dev/sdb から /dev/sdf まで) にいくつかのディスクを追加しました。
# ls -l /dev/sd* brw-rw----. 1 root disk 8, 0 Jul 15 15:52 /dev/sda brw-rw----. 1 root disk 8, 1 Jul 15 15:52 /dev/sda1 brw-rw----. 1 root disk 8, 2 Jul 15 15:52 /dev/sda2 brw-rw----. 1 root disk 8, 3 Jul 15 15:52 /dev/sda3 brw-rw----. 1 root disk 8, 16 Jul 16 10:57 /dev/sdb brw-rw----. 1 root disk 8, 32 Jul 16 10:57 /dev/sdc brw-rw----. 1 root disk 8, 48 Jul 16 10:58 /dev/sdd brw-rw----. 1 root disk 8, 64 Jul 16 11:27 /dev/sde brw-rw----. 1 root disk 8, 80 Jul 16 11:27 /dev/sdf
3. zpool を作成する
ZFS でストレージプールを構成するために使用される Zpool コマンド。ストレージ プールは、zfs データセットの物理ストレージとデータ レプリケーションを提供するデバイスのコレクションです。
以下は zpool を作成します。
# zpool create -f mypool raidz sdb sdc sdd sde sdf
上記の例では:
- create は、新しいプールを作成することを表します。
- -f オプションは、これらが新しいディスクであるため、ディスク パーティション ラベルを無視することです
- レイドはレイドレベルです。 RAIDZ は、パリティの分散を改善し、「RAID-5」書き込みホール (停電後のデータとパリティの不一致) を排除する RAID-5 のバリエーションに他なりません。
- raidz グループは、シングル、ダブル、またはトライブ パリティを持つことができます。つまり、データを失うことなく、それぞれ 1 つ、2 つ、または 3 つの障害に耐えることができます。データとパリティは、raidz グループ内のすべてのディスクにわたってストライピングされます。
次に、作成した zpool のステータスを確認します。
# zpool status pool: mypool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 sdf ONLINE 0 0 0 errors: No known data errors
プールが作成されたら、df –h を実行すると、新しく作成されたプールがマウントポイントに自動的にマウントされます。
# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vglocal-rootlv 14G 2.4G 11G 18% / tmpfs 939M 0 939M 0% /dev/shm /dev/sda1 504M 46M 433M 10% /boot mypool 3.9G 0 3.9G 0% /mypool
4.ミラーリングされたプールを作成
ミラー化されたプールを作成するには、次のオプションを指定して zpool create コマンドを使用します。
特定のミラー グループ内のいずれかのディスクに障害が発生した場合でも、他のディスクにデータが保持されます。故障したディスクが交換されるとすぐに、内容が新しく交換されたディスクにミラーリングされます (再同期とも呼ばれます)。
# zpool create -f mypool mirror sdb sdc mirror sdd sde
次に、作成したばかりのミラーリングされた zpool のステータスを確認します。
# zpool status -v pool: mypool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 errors: No known data errors
5. Zpool のインポートとエクスポート
システム間で zfs プールを移行する必要がある場合があります。
ZFS は、あるシステムからプールをエクスポートし、別のシステムにインポートすることでこれを可能にします。
プールをエクスポートするには、次の例に示すように、zpool export コマンドを使用し、zpool import コマンドを使用してプールをインポートします。
# zpool export mypool # zpool import mypool
6. ZFS プールの I/O 統計を表示
zpool I/O 統計を表示するには、以下に示すように zpool iostat コマンドを使用します。
# zpool iostat -v mypool capacity operations bandwidth pool alloc free read write read write ---------- ----- ----- ----- ----- ----- ----- mypool 147K 4.95G 0 0 33 252 mirror 54K 3.97G 0 0 10 84 sdb - - 0 0 536 612 sdc - - 0 0 282 612 mirror 93K 1008M 0 0 23 168 sdd - - 0 0 288 696 sde - - 0 0 294 696 ---------- ----- ----- ----- ----- ----- -----
7. ZFS プールを削除する
プールを破棄するには、以下に示すように zpool destroy コマンドを使用します:
# zpool destroy mypool
8. ZFS プール内の破損したディスクを交換
障害または破損後にディスクを交換するには、次のコマンドを使用します:
# zpool replace mypool sde sdf
9.新しいディスクで ZFS プールを拡張
新しいディスクを追加して zpool を拡張するには、次のように zpool コマンドを使用します:
# zpool add -f mypool sde
10.スペア ディスクを ZFS プールに追加する
以下のコマンドを使用して、zfs プールにスペア デバイスを追加することにより、zfs プールにスペア ディスクを追加することもできます。
故障したディスクは自動的にスペア デバイスに置き換えられ、管理者は後で故障したディスクを交換できます。
複数の ZFS プール間でスペア デバイスを共有することもできることに注意してください。
# zpool add -f mypool spare sde
この記事の次の部分では、ZFS プールを使用して ZFS ファイルシステムを作成し、ZFS ファイルシステムをマウントし、コマンドラインから操作する方法について説明します。