web-dev-qa-db-ja.com

2デバイスのストライプミラーをプールに取り付ける方法は?

2TBのHDDで構成されるシングルドライブプールがあります。ミラーで使用できる1TBドライブが2つあります。プールに冗長性を追加したいと思います。

これらの2つのドライブを単一のデバイスとして接続して、ストライプミラーとして使用できるようにするにはどうすればよいですか?

私の2TBドライブをsda、空の1TBドライブをsdbsdcと呼びましょう。

私は試した: zfs attach tank sda sdb sdcしかし、それはtoo many arguments

私は試した: zfs attach tank sda sdbしかし、それはdevice is too small

私は試した: zfs attach tank sda sdb+sdcしかし、それはno such device in /dev

私は試した: zfs attach tank sda sdb,sdcしかし、それはno such device in /dev

マニュアルを読んでウェブを検索しましたが、アイデアがありません。

これら2つの1TBドライブから新しいストライププールを作成し、内部にzvolを作成して、それをプライマリプールのミラーとして使用することもできると思いますが、とにかくミラー用の十分な容量がないことに加えて、不必要なオーバーヘッドがたくさん。

これどうやってするの?

1
unfa

これは、ZFSを介して直接実行することはできません。 manページ から:

仮想デバイスはネストできないため、ミラーまたはraidz仮想デバイスに含めることができるのはファイルまたはディスクのみです。ミラーのミラー(または他の組み合わせ)は許可されていません。

私の提案は、2つの1 TBディスクで構成される新しいプールを作成し、 syncoid として何かを使用して、最初のプールのコンテンツを新しいプールに頻繁に送信することです。

---警告:以下の不格好な回避策!本当に確信が持てない場合は使用しないでください!!! ---

とにかく、本当に2つの1 TBディスクを最初の2のミラーとして追加したい場合TBディスク、回避策を試すことができます。device-mapper(LVM形式)を使用して2つのディスクを連結し、結果のボリュームを2 TBデバイス。例:

pvcreate /dev/sdb
pvcreate /dev/sdc
vgcreate zvg /dev/sdb
vgextend zvg /dev/sdc
lvcreate zvg --name zdev -l +100%FREE
zpool attach tank /dev/sda /dev/zvg/zdev
zpool status

Mdadmを使用して、RAID0デバイスを作成し、それをzpoolに接続することで、同様の(さらに良い)結果を得ることができます。

mdadm --create md127 --level=0 --raid-devices=2 /dev/sdb /dev/sdc
zpool attach tank /dev/sda /dev/md127
zpool status

このアプローチは推奨されません。ご自身の責任で使用してください。

4
shodanshok

2つの新しいディスクをプールに追加するには、zpool add tank mirror sdb sdcを使用できますが、これにより、新しいペアがミラーとして追加され、既存のディスクとストライプ化されます。 (これは冗長性を追加しません)。

zpool attachコマンドを使用してディスクを既存のvdevに追加する必要がありますが、ミラーリングされたペアを使用して単一のディスクをバックアップすることはできません。新しい2TBディスクを追加してディスクを作成する必要があります。ミラーリングされたペア。

1
Andrew