このページについて
- 前提条件:
ZFSは、ファイルシステムと論理ボリュームマネージャーを組み合わせたものです。 ZFSの機能には、データ破損に対する保護、大容量のストレージのサポート、効率的なデータ圧縮、ファイルシステムとボリューム管理の概念の統合、スナップショットとコピーオンライトクローン、継続的な整合性チェックと自動修復、RAID-Zとネイティブが含まれます。 NFSv4ACL。
ZFSは元々、Common Development and Distribution License(CDDL)の下でライセンスされたオープンソースソフトウェアとして実装されていました。
ZFSファイルシステムについて話すとき、次の重要な概念を強調することができます。
- データの整合性。
- zfsとzpoolの2つのコマンドのみを使用した単純なストレージ管理。
- ファイルシステムがオンラインのときにすべてを実行できます。
利用可能なすべての機能の完全な概要と説明については、この詳細なウィキペディアの記事を参照してください。
このチュートリアルでは、Debian 8.1(Jessie)へのZFSファイルシステムのインストールを段階的に説明します。 RAID0(ストライプ)、RAID1(ミラー)、およびRAID-Z(パリティ付きRAID)を使用してプールを作成および構成する方法と、ZFSを使用してファイルシステムを構成する方法を説明します。
ウェブサイトwww.zfsonlinux.orgの情報に基づくと、ZFSはAMD64およびIntel 64ビットアーキテクチャ(amd64)でのみサポートされています。セットアップを始めましょう。
前提条件:
- 64ビットカーネルを搭載したDebian8。
- root権限。
zfsonlinuxリポジトリをシステムに追加するには、以下に示すようにzfsonlinuxパッケージをダウンロードしてインストールします。これにより、ファイル/etc/apt/sources.list.d/zfsonlinux.listと/etc/apt/trusted.gpg.d/zfsonlinux.gpgがコンピューターに追加されます。その後、apt-getコマンドを使用して、他のDebianパッケージと同じようにzfsをインストールできます。 zfsonlinuxリポジトリを使用するもう1つの利点は、「apt-get update&&apt-getupgrade」を実行することで自動的に更新を取得できることです。
SSHアクセスでDebianサーバーにログインし、rootユーザーになってから、次のコマンドを実行します。
#uname -a
Linux debian-zfs 3.16.0-4-amd64#1 SMP Debian 3.16.7-ckt11-1(2015-05-24)x86_64 GNU / Linux
#wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_6_all.deb
#dpkg -i zfsonlinux_6_all.deb
#apt-get update
Zfsonlinuxには、aptによって自動的にインストールされる多くのソフトウェア依存関係があります。このプロセスにはしばらく時間がかかります。インストールが完了したら、サーバーを再起動します。
#apt-get install lsb-release
#apt-get install debian-zfs
#shutdown -r now
サーバーを再起動したら、zfsonlinuxがインストールされ、正常に実行されていることを確認します。
#dpkg -l | Debianのためのgrep ZFS
IIのdebian-ZFS 7〜ジェシー・AMD64ネイティブZFSファイルシステムのメタパッケージ。Linuxの
II ZFS-DKMS用
II libzfs2 0.6.5.2-2 AMD64ネイティブZFSファイルシステムライブラリ0.6.5.2 -2のLinux
II zfsonlinux 6のためのすべてのネイティブZFSファイルシステムのカーネルモジュール全てarchive.zfsonlinux.org信託パッケージII zfsutils />
管理します上記の結果は、Linux上のzfsがすでにインストールされていることを示しているため、最初のプールの作成を続行できます。
このサーバーに、それぞれ2GBのサイズのディスクを5つ追加しました。次のコマンドで使用可能なディスクを確認できます:
#ls / dev / sd *
/ dev / sda / dev / sda1 / dev / sda2 / dev / sda5 / dev / sdb / dev / sdc / dev / sdd / dev / sde / dev / sdf / dev / sdgオペレーティングシステムDebianLinuxJessie8.1に/dev/ sdg、/ dev / sdaが使用されるまで、/ dev/sdaがあることがわかります。 ZFSファイルシステムには/dev/sdgまで/dev/sdbを使用します。
これで、プールの作成を開始できます。最初のプールでは、raid0(ストライプ)の作成方法を説明します。
#zpoolリスト
利用可能なプールはありません#zpool create -f pool0 / dev / sdb
#zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
pool0 1.98G 64K 1.98G 0%-0 xオンライン-コマンド「zpoollist」は、1つのraid0 zfsプールが正常に作成され、プールの名前がpool0で、サイズが2GBであることを示しています。
次に、他のディスクを使用してraid1(ミラー)を作成します。
#zpool create -f pool1 mirror / dev / sdc / dev / sdd
#zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
pool0 1.98G 64K 1.98G 0%0%1.00xオンライン-
pool1 1.98G 64K 1.98G-0%0%1.00xオンライン-現在、RAID0用のpool0とRAID1用のpool1の2つのプールがあることがわかります。
プールのステータスを確認するには、次のコマンドを使用できます。
#zpool status
pool:pool0
state:ONLINE
scan:none requested
config:
STATE READ WRITE CKSUM
pool0 ONLINE 0 0 0
sdb ONLINE 0 0 0
エラー:ON
エラー:既知のデータエラーはありません
スキャン:リクエストなし
config:
STATE READ WRITE CKSUM
pool1 ONLINE 0 ON 0 /> 0
0 0 0
sddオンライン000
エラー:既知のデータエラーはありません「zpoolstatus」コマンドでプールの状態を確認できます。 pool0とpool1の違いがわかります。pool0にはディスクが1つだけあり、pool1には2つのディスクがあり、ディスクのステータスはミラー(mirror-0)です。
次に、RAID-Zを使用してプールを作成します。RAID-ZはRAID-5のようなデータ/パリティ分散スキームですが、動的なストライプ幅を使用します。ブロックサイズに関係なく、すべてのブロックに独自のRAIDストライプがあります。その結果、すべてのRAID-Z書き込みがフルストライプ書き込みになります。
RAID-Zには少なくとも3台のハードドライブが必要であり、RAID0とRAID1の間の妥協点のようなものです。RAID-Zプールの場合:プール内の1台のディスクが故障した場合は、そのディスクを交換するだけで、ZFSがデータを自動的に再構築します。他のディスクからのパリティ情報に基づきます。ストレージプール内のすべての情報を失うには、2つのディスクが停止する必要があります。ドライブのセットアップをさらに冗長にするために、RAID 6(ZFSの場合はRAID-Z2)を使用してダブルパリティを取得できます。
最初に1つのパリティを持つRAID-Zプールを作成しましょう。
#zpool create -f poolz1 raidz sde sdf sdg
#zpool list poolz1
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
poolz1 5.94G 0%0 1.00xオンライン-#zpool status poolz1
pool:poolz1
state:ONLINE
scan:none requested
config:
STATE READ WRITE CKSUM
poolz1 ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
SDE ONLINE 0 0 0
SDF ONLINE 0 0 0
SDG ONLINE 0 0 0
エラー:既知のデータエラーはありません#df -h / poolz1
ファイルシステム使用済みアベイルズ使用率%マウント済み
poolz1 3.9G 0 3.9G 0%/ poolz1ご覧のとおり、df -hは、6GBのプールが4GBに削減され、パリティ情報を保持するために2GBが使用されていることを示しています。 zpool statusコマンドを使用すると、プールが現在RAID-Zを使用していることがわかります。
次に、RAID-Z2(RAID 6)を作成します。この目的のために、使用可能なディスクがなくなったため、既存のプールを削除する必要があります。プールの削除は非常に簡単です。そのためにzpooldestroyコマンドを使用できます。
#zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
pool0 1.98G 64K 1.98G -プール-0%-98 G 1. 0%1.00x 0%0%1.00xオンライン-
poolz1 5.94G 117K 5.94G-0%0%1.00xオンライン-#zpool destroy pool0
#zpool destroy pool1
#zpool destroy poolz1
#zpoollist
利用可能なプールがありませんこれですべてのzpoolがなくなったので、RAID-Z2プールを作成できます。
#zpool create poolz2 raidz2 sdb sdc sdd sde
#zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
poolz2 7.94G 135K 7.94Gオンライン-#df -h / poolz2
ファイルシステム使用済みアベイルズ使用率%マウント済み
poolz2 3.9G 0 3.9G 0%/ poolz2#zpool status poolz2
pool:poolz2
state:ONLINE
scan:none requested
config:
STATE READ WRITE CKSUM
poolz2 ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
SDB ONLINE 0 0 0
SDC ONLINE 0 0 0
SDD ONLINE 0 0 0
SDEオンライン000
エラー:既知のデータエラーはありませんご覧のとおり、df -hは、パリティ情報を2回保持するために4GBが使用されているため、8GBプールが4GBに削減されたことを示しています。 「zpoolstatus」コマンドを使用すると、プールでRAID-Z2が使用されていることがわかります。
ステップ4-ディスク障害をシミュレートする
このステップでは、壊滅的なディスク障害をシミュレートします(つまり、zpool内のHDDの1つが機能を停止します)。
poolz2にファイルを作成し、アクセスできることを確認します。
#echo"テストのみ">/poolz2/test.txt
#cat/poolz2/test.txt
テストのみ障害をシミュレートする前に:poolz2のステータスを確認し、ステータスがオンラインであり、すべてのディスクのステータスがオンラインであることを確認します。
失敗は、ddコマンドを使用してランダムデータを / dev / sdbに書き込むことでシミュレートされます。 。
#dd if =/ dev / urandom of =/ dev / sdb bs =1024 count =20480
#zpool scrub poolz2
#zpool status
pool:poolz2
state :オンライン
ステータス:1つ以上のデバイスで回復不能なエラーが発生しました。
エラーを修正しようとしました。アプリケーションは影響を受けません。
アクション:デバイスを交換する必要があるかどうかを判断し、エラーをクリアします
「zpoolclear」を使用するか、デバイスを「zpoolreplace」に置き換えます。
参照:http: //zfsonlinux.org/msg/ZFS-8000-9P
スキャン:スクラブは0h0mで17Kを修復し、2015年12月8日火曜日22:37:49
config:
NAME STATEリードライトCKSUM
poolz2 ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
SDB ONLINE 0 0 25
SDC ONLINE 0 0 0
SDD ONLINE 0 0 0
sdeオンライン000
エラー:既知のデータエラーはありませんこれで、1つ以上のディスクで回復不能なエラーが発生したことがわかります。そのため、ディスクを交換する必要があります。この場合、/ dev/sdbディスクを/dev/sdfに置き換えます。
#zpool replace poolz2 sdb sdf
#zpool status
pool:poolz2
state:ONLINE
scan:resilvered 49.5K in 0h0m with 0 errors on Tue Dec 8 22: 43:35 2015
設定:
NAME STATEリードライトCKSUM
poolz2 ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
SDF ONLINE 0 0 0
sdc 0 0
sdd sdd ONLINE br 0 de 0 /> 0
0
/ dev/sdbを/dev/ sdfに置き換えた後も、エラーはなくなり、以前に作成したテストファイルに引き続きアクセスできます。
#cat/poolz2/test.txt
テストのみこの手順までは、zpoolを作成して構成する方法を知っています。
ステップ5-ZFSファイルシステムを作成および構成します 次のステップでは、ZFSファイルシステムを作成および構成する方法を学習します。
#zfs list
NAME USED AVAIL REFER MOUNTPOINT
poolz2 105K 3.83G 26.1K / poolz2すでに1つのZFSファイルシステムがあります。これは、zpoolを作成するときに自動的に追加されます。次に、別のZFSファイルシステムを作成します。
#zfs create poolz2 / tank
#zfs list
NAME USED AVAIL REFER MOUNTPOINT
poolz2 132K 3.83G 26.1K / poolz2
poolz2 / tank 25.4K 3.83G 25.4K / poolz2 / tank#df -h | grep poolz2
poolz2 3.9G 128K 3.9G 1%/ poolz2
poolz2 / tank 3.9G 128K 3.9G 1%/ poolz2 / tankとても簡単ですよね?タンクと呼ばれる新しいZFSファイルシステムを作成し、/ poolz2/tankとして自動的にマウントしました。
ZFSファイルシステムのカスタムマウントポイントを作成するにはどうすればよいですか?以下のコマンドを使用してください:
#zfs create poolz2 / data -o mountpoint =/ data
#df -h | grep poolz2
poolz2 3.9G 0 3.9G 0%/ poolz2
poolz2 / tank 3.9G 0 3.9G 0%/ poolz2 / tank
poolz2 / data 3.9G 0%既存のマウントポイントを変更するにはどうすればよいですか?以下のコマンドでそれを行うことができます:
#zfs set mountpoint =/ tank poolz2 / tank
#df -h | grep poolz2
poolz2 3.9G 0 3.9G 0%/ poolz2
poolz2 / data 3.9G 0 3.9G 0%/ data
poolz2 / tank 3.9G / tan 0 3.9G pre>ファイルシステムをマウントおよびアンマウントするには、次のコマンドを使用します。
#zfs unmount / data
#df -h | grep poolz2
poolz2 3.9G 0 3.9G 0%/ poolz2
poolz2 / tank 3.9G 0 3.9G 0%/ tank#zfsマウントpoolz2 / data
#df -h | grep poolz2
poolz2 3.9G 0 3.9G 0%/ poolz2
poolz2 / token 3.9G 0 3.9G 0%/ tank
poolz2 / datazfsファイルシステムの削除は非常に簡単です。そのためにコマンドzfsdestroyを使用できます。
#zfs destroy poolz2 / data
#zfs list
NAME USED AVAIL REFER MOUNTPOINT
poolz2 152K 3.83G 26.1K / poolz2
poolz2 / tank 25.4K 3.83G 25.4K /タンクファイルシステム/dataはなくなりました。
結論 ZFSファイルシステムは、Unixライクなオペレーティングシステムでのファイルシステムの管理方法を根本的に変える革新的な新しいファイルシステムです。 ZFSは、現在利用可能な他のファイルシステムにはない機能と利点を提供します。 ZFSは堅牢でスケーラブルであり、管理が簡単です。
Debian