GNU/Linux >> Linux の 問題 >  >> Linux

zfsでデータを「再調整」する方法は? (データがすべてのストライプ化されたミラーに分散されていることを確認してください)

新しく書き込まれた (追加された) データのみが、現在アクティブなすべての vdev 間で分割されます。ZFS には明示的なリバランス操作はありません。

考えられる 2 つの解決策:

<オール>
  • すべての古いデータが再度書き込まれるまで待ちます (CoW ​​のため、これには非常に長い時間がかかる場合があり、最悪の場合、ディスクを完全に書き込むのにかかる時間の 2 倍になります)。
  • すべてのデータを削除し、新たに書き込みます (zfs send/recv は、プールからすべてのデータを取得して、何も失うことなく元に戻すのに役立ちます)。これは一度に行う必要はなく、同じプールで行うことができます。
  • より正確には、2 番目のソリューションを選択し、システムの負荷が低い時間帯 (夜間など) に各ファイル システムを個別に転送します。

    • スナップショットを撮る (zfs snapshot -r ) 適切なサイズのファイル システム (および派生ファイル システムは再帰的に)
    • zfs send | zfs recv を使用 新しく作成された一時ファイル システムにスナップショットを送信するための適切なオプションを使用します (スペースが許せば、同じプール上に配置できます)。このファイル システムは、階層内で古いファイル システムと同じ場所にある必要があります
    • コピーが完了したら (ディスクの読み取りと書き込みが必要なため、時間がかかる場合があります)、zfs destroy 古いスナップショットと古いファイル システム
    • zfs rename 一時的なシステムを古い名前に
    • zfs mount でマウント ポイントを確認して変更します 、置き換えられたファイル システムの以前の状況を再調整します
    • すべてのファイル システムが移動されるまで繰り返します

    考えられる 3 番目の解決策 (この FreeNAS フォーラムの投稿で SirMaster が述べているように) :

    • 新しいディスクを zpool に追加
    • 多くのファイルを別の新しい /mnt/pool/temp/ ディレクトリにコピー
    • 元のファイルを削除:rm -rf original/
    • ディレクトリの名前を元に戻す:mv temp/ original/

    これが機能するのは、ZFS が空き容量が最も多い vdev (この場合は空だった新しいドライブ) に比例して書き込みを行うためです。 (0.7 の時点で、zfs は書き込み用により高速なドライブを優先しますが、2 つの新しいドライブが元のドライブと同じかそれ以上のパフォーマンスであると仮定します)

    おそらく zfs send | zfs recv よりも遅いです ですが、スナップショットを作成/破棄する必要がないため、より簡単です。

    zpool list -v を実行できます 各 vdev 使用率を確認する前と後。

    また、ファイルごとにコピー/削除/名前変更の手順を実行するphpスクリプトを見つけました。これは、数年前の同様の(しかしzvol)質問からの回答にリンクされていました。 (このスクリプトを個人的にテストしていません)


    Linux
    1. CD / DVDのファイルシステムを見つけて自動的にマウントする方法:[Linux]

    2. Iconvに入力ファイルを変換された出力に置き換える方法は?

    3. ディレクトリまたはファイルが実際に削除されていることを確認するにはどうすればよいですか?

    1. Linux – LinuxでProcファイルシステムはどのくらいの頻度で更新されますか?

    2. Gnome Shellアクティビティバーを常に小さくするにはどうすればよいですか?

    3. フォルダー階層内の個別のファイル拡張子をすべて見つけるにはどうすればよいですか?

    1. ファイルをスパースにする方法は?

    2. rm はどのように機能しますか? rm は何をしますか?

    3. Linuxのviでfindによって返されたすべてのファイルを編集するにはどうすればよいですか?