Amazon EC2上で実行されているLinuxシステムでストレージスペースを動的に拡張する必要がある状況に直面して、ZFSについて考えました。私の記憶が正しい場合、ZFSは冗長でないJBOD様配列を動的に拡張する方法をサポートします。
進行中のプロジェクトにはいくつかの要件があります。
- 必要に応じて、アレイを別のEC2インスタンスに移動できる必要があります。
- ダウンタイムなしでZFSボリュームに新しい「ドライブ」を追加して、ZFSアレイを動的に拡張できる必要があります。
可能ですか? ZFSがアレイを動的に拡張する機能を提供している場合は、スクリプトを実行して新しいEBSボリュームを動的に作成し、それをEC2インスタンスに接続し、ZFSにプールに追加できるようにする必要があります。これはすべてダウンタイムなしで動的に実行する必要があります。
答え1
LinuxのZFSでは、フォロワーの数がどれだけ多くても十分ではありません。 ZFSは効果的にユーザーをロックします。デフォルトフォーマットはリカバリディスクと互換性がなく、ZFSディストリビューションはほとんどありません。
私はZFSに対する偏見のため、これらの制限を無視する傾向があります。 SmartOS / ZFSベースのクラウドホスティングを提供するサービスプロバイダを検索できます。
Linuxファイルシステムext3 / ext4および他のさまざまなファイルシステムは動的成長を可能にします。 Linuxに組み込まれているボリュームマネージャであるLVMを使用すると、ボリュームを新しいディスクに動的に拡張できます。実験以外の場合、これは現在最高のLinux推奨事項である必要がありますが、ZFSがLinuxで十分に大きいフォロワーを取得すると変更される可能性があります。
Linux + LVM + ext3のプロセスは次のとおりです。
例: LVM ボリュームグループ myvg、マウントされたボリューム名は uservol1、Linux のディスクデバイスは /dev/sdf です。
- 仮想マシンにディスクを割り当てます。 (Amazon Management Console で EBS ボリュームを作成し、その ID を記録してインスタンスに割り当てます.)
- EC2インスタンスには、デバイスノードを作成するためのいくつかのudevルールが必要です。したがって、/ dev / sd *に新しいディスクを表示する必要があります...インスタンスにログインして、EBSボリュームが表示されていることを確認します(例:fdisk -l /dev/sdf、cat /proc/partitions、blkidの実行)。
- パーティションテーブルを作成する必要がある場合:
fdisk / sfdisk
- LVMで使用するように初期化されました。
pvcreate /dev/sdf
- LVMボリュームグループにディスク(物理ボリューム)を追加する
vgextend myvg /dev/sdf
- ボリュームサイズを増やす:
lvextend -L +1024G /dev/myvg/uservol1
- ext3/ext4 ファイルシステムを拡張します。
resize2fs /dev/myvg/uservol1
- (
df -h
)を選択すると、マウントされたファイルシステムにさらにスペースがあることがわかります。
量子電子デバイス。
答え2
はい。 ZFSを使用してアレイを自動的に拡張できます。次の属性を設定するだけです。
# zpool set autoexpand=on pool
# zpool set expandsize=on pool
これらのプロパティには2つの利点があります。
- プールに VDEV を追加すると自動的に拡張されます。
- 1TBドライブを2TBドライブに交換すると、すべてのドライブが交換され、新しいドライブサイズに合わせてプールサイズが自動的に調整されます。
いくつかの考慮事項があります。
- ドライブを削除できず、プールからVDEVを削除することもできません。したがって、プールを拡張できますが、縮小することはできません。ただし、ミラーからのみドライブを取り外すことができます。
- すべてのドライブは同じサイズ、同じ速度などの仕様を持っている必要があります。同じメーカーとモデルは必要ありません。
- すべてのVDEVは同じVDEVでなければなりません。プールにRAIDZがある場合、すべてのVDEVはRAIDZでなければなりません。
- すべてのVDEVのサイズは同じでなければなりません。 VDEVが2TBの場合。すべてのVDEVは2TBでなければなりません。