Proxmox 4.0:ZFS RAID1のルートパーティション、またはサーバーにディスクが2つしかない場合のフォールトトレランスを高める方法

タスクは、2台のディスクしか持たないサーバー上でProxmoxといくつかの仮想マシンを起動することでした。 同時に、少なくとも1つのディスクの障害に関連する問題の少なくともある程度の信頼性と修正の容易性を確保する必要がありました。 注には、スタンドでのソリューションのテストの詳細な説明があります。



入門



この記事の読者は、Proxmoxをノードに個別にインストールでき、ハイパーバイザー自体のインストールと構成は考慮しないと思います。 ZFS RAID1に関する設定と、ドライブの1つの障害のテストのみを考慮してください。

プロジェクトを展開するハードウェアはSupermicroノードであり、ProxmoxではサポートされていないIntelチップセットに統合された擬似RAIDを備えた1Uの2ノードで実行されたようです。 この点で、バージョン4.0で「すぐに使える」ソリューションをテストしようとします。 少なくとも私を殺してください-Proxmox 3.6にそのようなインストールオプションがあったかどうかは覚えていませんが、そうだったかもしれませんが、そのような構成に対する需要がないため、メモリに保存されませんでした。 テストラックで同様のサーバーを見つけ、Proxmox Server Solutionsの担当者から提供されたソリューションを確認することにしました。



設置



私が警告したように、私はインストールを完全には表示せず、重要な点にのみ焦点を合わせます。



zfs RAID1を選択します。



画像



サーバーはテストであり、商用リポジトリへのサブスクリプションはありません。 /etc/apt/sources.listで、無料のものを接続します。



deb http://download.proxmox.com/debian jessie pve-no-subscription
      
      





/etc/apt/sources.list.d/pve-enterprise.listでは、商用のものについてコメントしています。



さて、突然忘れます:



 root@pve1:~# apt-get update && apt-get upgrade
      
      





ディスク上のインストーラーが何をカットするかを確認します(出力の一部のみを示します)。



 root@pve1:~# fdisk -l /dev/sd* Disk /dev/sda: 149.1 GiB, 160041885696 bytes, 312581808 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 758FA29C-4F49-4315-BA0C-F3CCC921FA01 Device Start End Sectors Size Type /dev/sda1 34 2047 2014 1007K BIOS boot /dev/sda2 2048 312565389 312563342 149G Solaris /usr & Apple ZFS /dev/sda9 312565390 312581774 16385 8M Solaris reserved 1 Disk /dev/sdb: 149.1 GiB, 160041885696 bytes, 312581808 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 3CD4B489-A51D-4354-8018-B1391F52B08D Device Start End Sectors Size Type /dev/sdb1 34 2047 2014 1007K BIOS boot /dev/sdb2 2048 312565389 312563342 149G Solaris /usr & Apple ZFS /dev/sdb9 312565390 312581774 16385 8M Solaris reserved 1
      
      





配列を見てください。



 root@pve1:~# zpool status rpool pool: rpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sda2 ONLINE 0 0 0 sdb2 ONLINE 0 0 0 errors: No known data errors
      
      





デフォルトでは、Proxmoxインストーラーは両方のパーティションにブートローダーをインストールしました-すばらしい!



テスト中



次のように、ハードドライブの障害をシミュレートします。

-サーバーの電源を切ります。

-バスケットの1つを引き出します。

-サーバーの電源を入れます。



サーバーは残りのディスクのいずれかに完全にロードされ、アレイはDEGRADEDモードで動作し、どのディスクを変更する必要があるかとその方法を親切に伝えます。



 root@pve1:~# zpool status rpool pool: rpool state: DEGRADED status: One or more devices could not be used because the label is missing or invalid. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Replace the device using 'zpool replace'. see: http://zfsonlinux.org/msg/ZFS-8000-4J scan: none requested config: NAME STATE READ WRITE CKSUM rpool DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 14981255989033513363 FAULTED 0 0 0 was /dev/sda2 sda2 ONLINE 0 0 0 errors: No known data errors
      
      





取り出したディスクを元の場所に戻すと、ミラーに完全に「戻り」ます。



 root@pve1:~# zpool status rpool pool: rpool state: ONLINE status: One or more devices has experienced an unrecoverable error. An attempt was made to correct the error. Applications are unaffected. action: Determine if the device needs to be replaced, and clear the errors using 'zpool clear' or replace the device with 'zpool replace'. see: http://zfsonlinux.org/msg/ZFS-8000-9P scan: resilvered 1.29M in 0h0m with 0 errors on Wed Dec 2 08:37:46 2015 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sda2 ONLINE 0 0 3 sdb2 ONLINE 0 0 0 errors: No known data errors
      
      





ディスクを新しいものに交換します。 古いサーバーから同じドライブの別のバスケットを取りました。 信頼性を高めるために、バスケットを熱いものに置きます。



 root@pve1:~# fdisk -l /dev/sdb Disk /dev/sdb: 149.1 GiB, 160041885696 bytes, 312581808 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 38BE38AC-00D9-4680-88FC-0876378526BC Device Start End Sectors Size Type /dev/sdb1 40 409639 409600 200M EFI System /dev/sdb2 411648 312580095 312168448 148.9G Microsoft basic data
      
      





条件付きで障害のあるドライブ/ dev / sdbがあり、同じ容量とジオメトリを使用して、動作中のドライブ/ dev / sdaから1:1パーティションテーブルをコピーします



 root@pve1:~# sgdisk -R /dev/sdb /dev/sda The operation has completed successfully.
      
      





/ dev / sdbの一意のUUIDを生成します

 root@pve1:~# sgdisk -G /dev/sdb The operation has completed successfully.
      
      





交換したディスクにブートローダーを配置し、GRUBを更新します。



 root@pve1:~# grub-install --recheck /dev/sdb Installing for i386-pc platform. Installation finished. No error reported. root@pve1:~# update-grub Generating grub configuration file ... Found linux image: /boot/vmlinuz-4.2.3-2-pve Found initrd image: /boot/initrd.img-4.2.3-2-pve Found linux image: /boot/vmlinuz-4.2.2-1-pve Found initrd image: /boot/initrd.img-4.2.2-1-pve Found memtest86+ image: /ROOT/pve-1@/boot/memtest86+.bin Found memtest86+ multiboot image: /ROOT/pve-1@/boot/memtest86+_multiboot.bin done root@pve1:~# update-initramfs -u update-initramfs: Generating /boot/initrd.img-4.2.3-2-pve
      
      





アレイ内の障害のあるディスクを新しくインストールしたディスクと交換するだけですが、ここでは、インストーラーで使用されているアレイ内のディスクのアドレス指定方法によって生成された1つの問題がポップアップします。 つまり、ディスクは物理アドレスのアレイに含まれており、 zpool replace rpool / dev / sdb2コマンドは次のような図を表示します。



 root@pve1:~# zpool replace rpool /dev/sdb2 cannot replace /dev/sdb2 with /dev/sdb2: /dev/sdb2 is busy
      
      





これは完全に論理的であり、不良ディスクは/ dev / sdb2であるため、 障害のあるディスクを/ dev / sdb2に変更することはできません。なぜインストーラーの欠陥を繰り返す必要があるのですか? ディスクをUUIDでバインドします。通常、ディスクが/ dev / sdXXという形式の釘で釘付けされていた時間を忘れていました。UUIDがすべてです。



 root@pve1:~# zpool replace rpool /dev/disk/by-partuuid/cf590df4-72b7-4cfc-a965-001ffe56d0c9 Make sure to wait until resilver is done before rebooting.
      
      





再起動する前に同期の終了を待つ必要があると警告されました。 アレイのステータスを確認します。



 root@pve1:~# zpool status rpool pool: rpool state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Wed Dec 2 18:07:01 2015 92.8M scanned out of 920M at 8.44M/s, 0h1m to go 92.5M resilvered, 10.09% done config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sda2 ONLINE 0 0 0 cf590df4-72b7-4cfc-a965-001ffe56d0c9 ONLINE 0 0 0 (resilvering) errors: No known data errors
      
      





一般的な目的のために、UUIDを使用して配列にsda2を含めます。



 root@pve1:~# zpool detach rpool /dev/sda2 root@pve1:~# zpool attach rpool /dev/disk/by-partuuid/cf590df4-72b7-4cfc-a965-001ffe56d0c9 /dev/disk/by-partuuid/8263d908-e9a8-4ace-b01e-0044fa519037 Make sure to wait until resilver is done before rebooting.
      
      





前の2つのコマンドをコンソールからエディターにコピーしましたが、アレイは既に同期されていました。



 root@pve1:~# zpool status rpool pool: rpool state: ONLINE scan: resilvered 920M in 0h1m with 0 errors on Wed Dec 2 18:36:37 2015 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 cf590df4-72b7-4cfc-a965-001ffe56d0c9 ONLINE 0 0 0 8263d908-e9a8-4ace-b01e-0044fa519037 ONLINE 0 0 0 errors: No known data errors
      
      





おわりに



ハードウェアRAIDコントローラーがない場合、Proxmox 4.0で利用可能なzfs RAID1にルートパーティションの配置を「そのまま」適用すると非常に便利です。 もちろん、mdadmツールによって作成されたミラーに/ブートとルートを転送するオプションは常に残ります。これも私が何度も使用しており、いくつかのサーバーではまだ機能しませんが、考慮されたオプションはよりシンプルで、製品の開発者によって提供されています



追加



いくつかの質問がありましたが、これまでのところ、ハンドは自動拡張のパフォーマンスチェックにのみ到達していました。 160Gbテストドライブは500Gbに置き換えられました。



最初のディスクを交換した後:

 root@testve1:~# zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT rpool 149G 69.3G 79.7G 317G 28% 46% 1.00x ONLINE -
      
      







2番目を交換した後:

 root@testve1:~# zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT rpool 465G 69.3G 396G - 9% 14% 1.00x ONLINE -
      
      







すべての操作は、サーバーを再起動して仮想マシンを停止することなく、オンラインで行われます。



ソフトraid1にProxmoxをクラシックにインストールする手順を説明しましたが、そのような手順は多数ありますが、4番目のバージョンには独自の詳細があります。 誰も気にしない- 読む



All Articles