私は2セットのディスクを持つデスクトップを持っています。高速で必要な作業のための小型SSDと大きな作業のための大型HDDです。
私は小さなSSDを「rpool」というプールに設定し、指示に従ってUbuntuのルートファイルシステムとして使用しました。でもブートもしました。 https://github.com/zfsonlinux/zfs/wiki/Ubuntu-16.04-Root-on-ZFS
ZFSでは、ルートディレクトリを使用して2番目のプール(HDD "hpool")を作成することはできません/
。この問題を解決するために、/hdd
hpoolのルートディレクトリを使用しました。
これは、すべてのハードドライブデータセットがマウントしたい場所以外の/hdd
場所にマウントされることを意味します(たとえば、/ tmpの代わりに/ hdd / tmp)。/
この問題をどのように解決できますか? (任意のシンボリックリンクを除いて。)
答え1
新しいプールを作成するときは、この-R
オプションを使用して代替ルートを指定できます。-O canmount=off
プールが最初にインストールされるのを防ぎ、新しいプールにサブファイルシステムを作成するときに次のエラーメッセージが表示されないように、ZFSオプションが追加されました。
zfs create tpool/tst
cannot mount 'tpool' on '/': directory is not empty
cannot mount 'tpool/tst' on '/tst': failure mounting parent dataset
次のように2番目のプールを作成します。
zpool create -N -R / -O canmount=off tpool device
次のコマンドを使用して新しいプールにファイルシステムを作成する場合:
zfs create tpool/tst
次のように表示されます。
NAME USED AVAIL REFER MOUNTPOINT
rpool 15.7G 15.3G 34K /rpool
.
tpool 146K 984M 31K /
tpool/tst 31K 984M 31K /tst
ls -l /tst/
total 0
答え2
「この問題をどのように解決しますか?」という質問に答えるには、次の手順を実行します。
すべてのデータセットにはmountpoint属性があります。任意のディレクトリに設定できます。お客様の場合、/hdd
設定しないとデフォルト値になります。たとえば、
zfs set mountpoint=/foo hdd/foo
これまでの他の回答のいくつかは良いことを示していますが、「これが起こらないようにするにはどうすればよいですか?」という疑問に答えます。
答え3
/hdd
これはマウントされたプールのデフォルトのマウントポイントであり、ZFSは継承を使用して特定のプロパティを伝播するため、構成で選択されます。
mountpointプロパティを設定して、各ZFSデータセットを任意の場所にマウントできます。
zfs set mointpoint=/tmp pool2/tmp
各データセットを変更しない限り、子データセットはpool2/tmp
親データセットの結合点を継承します。
システムディレクトリを再マウントするときも注意してください。ここでは簡単なミスから回復するのが難しいです。
答え4
あなたがやっていることは間違っています。
ZFSは単一のプールで混合回転とシリコンリポジトリをサポートしていますが、試しているのと同じ方法ではありません。 ZFSは、データが移動する場所を手動で管理したくありません。ZILおよびL2ARCキャッシュ。
このように設定すると、ZFSは使用パターンに応じて何が必要かを判断します。
どこに行くかを手動で管理する必要がある場合は、単に3つのプールを作成することをお勧めします。各SSDごとに1つずつ、ミラーまたはRAID-Zハードドライブの場合。ルートファイルシステム用のSSDプール1個、/home
大量データ用のSSDプール1個、低速HDDプール1個を使用します。すべてを一つに圧縮しながらも手動で管理するのがハイブリッドコンセプトです。 ZFSがデータを含むディスクを管理したくない、または望ましくありません。