mdadm
を使用して組み立てられた3x5TBディスクで構成されるRAID5アレイがありました。その上に、LUKS/dmcrypt
暗号化レイヤーを作成し、暗号化されたデバイスをext4
でフォーマットしました。非アクティブの場合にディスクをスピンダウンさせたい。
すべてが数か月間正常に機能し、1分間操作がないとディスクがスピンダウンしていました。ここで、同じ種類の4番目の5TBディスクをSudo mdadm --add /dev/md0 /dev/sdb1
でアレイに追加し、次にアレイをそのディスク(mdadm --grow /dev/md0 --raid-devices=4
)に拡張し、最後にSudo fsck -f /dev/mapper/raid5
でファイルシステムを拡張しました。 Sudo resize2fs /dev/mapper/raid5
。
エラーは発生せず、アレイは5TB大きくなりました。しかし、ディスクはもうスピンダウンしていません。マシンは24時間年中無休で稼働し、ディスクを使用していませんが、数日待っても、ディスクは常に稼働しています。
iotop
は、ext4lazyinit
が頻繁に発生することを示しています。これは、数秒ごとに1秒未満ポップアップします。ファイルシステムを拡張する前は気づいていませんでした。それで、おそらくそれはディスクを目覚めさせ続けるタスクですか?しかし、どうすればext4lazyinit
にそのタスクを完了するように強制できますか?
_ext4lazyinit
_は、まさにそれが言っていることを実行しています-それは、ファイルシステムの残りの部分を怠惰な方法で初期化しています。これは、ファイルシステムをすばやく作成する外観を与えるために行われます。お気づきのとおり、システムのパフォーマンスへの影響を最小限に抑えようとします。これは、完了するまでに長い時間がかかることを意味します。
最初のオプションはそれを待つことです-それは最終的に停止し、あなたのディスクはアイドル状態に戻るはずです。
もう1つのオプションは、ファイルシステムをアンマウントし、_-o init_itable=0
_を使用して一時的にマウントし、レイジーinitをよりプロアクティブにすることですが、パフォーマンスが低下します。デフォルト値は10なので、その間にパフォーマンスが重要な場合は、その間の値を試してみてください。 ( ref )
_init_itable=n The lazy itable init code will wait n times the number of milliseconds it took to zero out the previous block group's inode table. This minimizes the impact on the system performance while file system's inode table is being initialized.
_
3番目のオプションは、反復可能な初期化を無効にすることです-私の意見では、これは悪いオプションです。特に、本番環境にあり、おそらく重要なデータが含まれているファイルシステムの場合はそうです(だから、RAIDを使用しているのですよね?)
これは、_noinit_itable
_オプションを使用して実行できます。
_noinit_itable Do not initialize any uninitialized inode table blocks in the background. This feature may be used by installation CD's so that the install process can complete as quickly as possible; the inode table initialization process would then be deferred until the next time the file system is unmounted.
_
編集:期間の見積もり。
ディスクの書き込みパフォーマンスは〜110-120MB/sであることに注意してください...アレイを実行しているため、理想的な世界では、〜330-360MB/sに改善されます(110 * (n - 1)
)。また、RAID5の実行がはるかに遅いことも確認しました(RAIDコントローラーを使用した8ディスクで約40MB /秒-苦痛)。
推定110MB /秒で、完全な1ディスク5TBの初期化で約12時間を見ています。