FreeBSDマシンでzpoolsを作成しています。 zpoolを作成しているときに、次の2つのケースを観察します。
raw disks
を取得してzpool
を作成すると、zpoolを形成でき、それらは完全に機能します。
freebsd-zfs
形式のgpart
を使用してディスクをフォーマットしてからzpoolを作成すると、ディスクも完全に機能します。
私は混乱していますが、zpoolの作成にはどちらのアプローチが適していますか?
可能であれば、ZFSでディスク全体を使用することをお勧めします。
ユースケースでパーティションを設定する必要はありません。
物理ディスクごとにZFS専用のスライス/パーティションを1つ使用し、一部のスペースをパーティション化しないで残します。そうすれば、ドライブを交換する必要があり、交換が10セクター小さい場合でも、それを行うことができます( http://www.freebsddiary.org/zfs-with-gpart.php )。
これは、Solarisが自動的に行うこと、FreeNASが行うこと( https://forums.freenas.org/index.php?threads/zfs-on-partitioned-disks.37079/ )であり、ZoLが行うことあなたはそれにディスク全体を与えます-それはそれを分割します...
パーティション上の位置を実際のデバイス上の位置に変換するオーバーヘッドは無視できます。したがって、パーティションが物理セクター境界に正しく配置されると、ブロックデバイス全体とは異なる動作をする理由がなくなります。
ZoLの場合、私が知っている唯一の違いは、ディスク全体がvdevに渡されたときにZoLがディスクスケジューラをnoop
に切り替えることです。手動で設定することを妨げるものは何もありません。
ただし、いくつかの必要なものがあります...ディスクごとにZFSのパーティションをこれ以上作成しないでください。上記のアドバイスを無視する場合は、同じzpoolでそれらからvdevをビルドしないでください。 ZFSがvdev間でデータをスライスし、シーケンシャルiopsがシーク悪夢に変わるため、これは基本的にパフォーマンスを殺します...
私の頭の中でこの質問は、後でディスクが何であるかを指定できるかどうか疑わしいために発生します...ドライブ全体にプールを作成すると(そう、必要に応じて-fオプションを使用)、zpoolは実質的にgptパーティションテーブルを作成し、次のようなSolarisのパーティション:
(fdisk -l ...)
...
Disklabel type: gpt
Disk identifier: 4CBE587E-23AF-8E4B-A7F0-B44AD6083171
Device Start End Sectors Size Type
/dev/sdd1 2048 3907010559 3907008512 1,8T Solaris /usr & Apple ZFS
/dev/sdd9 3907010560 3907026943 16384 8M Solaris reserved 1
したがって、実際にパーティションを手動で作成する必要はありません...