Beliebt

Kann ein ZFS-Spiegel kombinierte Festplatten enthalten? - zfs

Kann ich einen einzelnen ZFS-Spiegel erstellen, indem ich Festplatten kombiniere?

mypool
mirror1
disk1 (2TB)
disk2 (2TB)
combined
disk3 (1TB)
disk4 (1TB)

Mit anderen Worten, Disk3 und Disk4 sollten die gleichen Daten enthalten wie Disk3 + Disk4 zusammen.

Ist das möglich? Oder ist so etwas möglich? Wenn ja, mit welchen Befehlen erhalte ich meine aktuelle Konfiguration:

mypool
mirror1
disk1 (2TB)
disk2 (2TB)

zur obigen Konfiguration?

Antworten:

2 fĂŒr Antwort № 1

Entschuldigung, aber nein, ich glaube nicht, dass Sie das können.

Aber wenn Sie experimentieren möchten, mĂŒssen Sie zuerst

SICHERN SIE IHREN POOL!

Dieser Beitrag ist eine akademische Übung fĂŒrGeben Sie Ideen und geben Sie keine Zusicherung, dass dies in der realen Welt funktioniert, und Sie werden ausdrĂŒcklich vor Datenverlusten gewarnt, die durch Maßnahmen verursacht werden, die Sie auf der Grundlage dieser VorschlĂ€ge ergreifen.

Das weiß ich mit Sicherheit zpool warnt Sie vor dem Mischen von gespiegelten und raidz vdevs. Siehe die -f Flagge von zpool add beispielsweise. Dein vorgeschlagener vdev combined ist im Wesentlichen ein "raidz-0"oder verkettet vdev, wĂ€hrend mirror1 ist offensichtlich ein Spiegel.

Mit allem, was gesagt wurde, Nachdem Sie Ihren Pool gesichert haben, Lesen Sie die Manpage genau durch und beachten Sie die -n Flags bei einigen Befehlen. Auf diese Weise können Sie sehen, wie sich ein Befehl auswirkt, ohne dass Sie Ihrem Pool etwas antun mĂŒssen.

Weitere Beweise in der Sache gegen Ihre Lösung wie vorgeschlagen befindet sich in der zpool Manpage:

Virtuelle GerÀte können nicht verschachtelt werden, sodass ein virtuelles Spiegel- oder RAIDZ-GerÀt Kann nur Dateien oder DatentrÀger enthalten. Spiegel von Spiegeln (oder anderen Kombinationen) sind nicht erlaubt.

jedoch, wenn Sie auf FreeBSD sind, können Sie verwenden gstripe verketten disk3 und disk4 um das zu schaffen combined GerĂ€t. Sie können dieses GerĂ€t dann zum Spiegel hinzufĂŒgen, da ZFS es nur als eine andere Festplatte ansieht.

Hier ist ein Vorschlag, wie Sie damit experimentieren können, vorausgesetzt, Sie fĂŒhren ZFS unter FreeBSD aus. Wir werden simulierte Laufwerke mit 2 GB anstelle von TB verwenden, aber anders als das ....

# mkdir zfs-test; cd zfs-test
# truncate -s 2G drive1; truncate -s 2G drive2
# truncate -s 1G drive3; truncate -s 1G drive4

Erstellen Sie die Pseudo-GerÀte md1 bis md4, die den Laufwerksdateien [1-4] entsprechen:

# for N in $(jot 4); do mdconfig -u $N -t vnode -f drive$N; done
# mdconfig -lv
md1     vnode    2048M  /home/jim/zfs-test/drive1
md2     vnode    2048M  /home/jim/zfs-test/drive2
md3     vnode    1024M  /home/jim/zfs-test/drive3
md4     vnode    1024M  /home/jim/zfs-test/drive4

Ihr vorhandener Spiegel ist einfach zu erstellen:

# zpool create mypool mirror md1 md2
# zpool status mypool
pool: mypool
state: ONLINE
scan: none requested
config:

NAME        STATE     READ WRITE CKSUM
mypool      ONLINE       0     0     0
mirror-0  ONLINE       0     0     0
md1     ONLINE       0     0     0
md2     ONLINE       0     0     0

errors: No known data errors

Hier stecken Sie gerade fest. Mit dieser Sandbox können Sie nun mit verschiedenen Befehlen experimentieren zpool"s -n flag, aber ich glaube nicht, dass irgendetwas funktionieren wird, außer dies:

# gstripe label -h combined md3 md4
# gstripe status
Name  Status  Components
stripe/combined      UP  md3
md4
# zpool attach mypool md2 stripe/combined
cannot attach stripe/combined to md2: device is too small

Das passiert Ihnen wahrscheinlich auch, wenn Ihre 2-TB-Laufwerke es sind genau Verdoppeln Sie die GrĂ¶ĂŸe der 1-TB-Laufwerke. Der geringe Platzverlust bei der Verkettung der beiden 1-TB-Laufwerke fĂŒhrt zu einem combined Laufwerk etwas kleiner als eines der beiden nativen 2-TB-Laufwerke. diskinfo(8) bestĂ€tigt das md1 und md2 jeweils 4194304 Sektoren, aber stripe/combined ist 256 Sektoren kleiner, bei nur 4194048:

# diskinfo -v md1 md2 stripe/combined
md1
512             # sectorsize
2147483648      # mediasize in bytes (2.0G)
4194304         # mediasize in sectors
0               # stripesize
0               # stripeoffset
MD-DEV5473951480393710199-INO24 # Disk ident.
Yes             # TRIM/UNMAP support
Unknown         # Rotation rate in RPM

md2
512             # sectorsize
2147483648      # mediasize in bytes (2.0G)
4194304         # mediasize in sectors
0               # stripesize
0               # stripeoffset
MD-DEV5473951480393710199-INO24 # Disk ident.
Yes             # TRIM/UNMAP support
Unknown         # Rotation rate in RPM

stripe/combined
512             # sectorsize
2147352576      # mediasize in bytes (2.0G)
4194048         # mediasize in sectors
65536           # stripesize
0               # stripeoffset
No              # TRIM/UNMAP support
Unknown         # Rotation rate in RPM

Aber in meiner Spielsandbox kann ich dieses Problem beheben.

Zuerst werde ich das wegblasen combined Stripe und seine Komponente psuedo-devices / dev / md3 und / dev / md4:

# gstripe destroy combined
# mdconfig -d -u3; mdconfig -d -u4
# mdconfig -lv
md1     vnode    2048M  /home/jim/zfs-test/drive1
md2     vnode    2048M  /home/jim/zfs-test/drive2

Jetzt kann ich Disk3 und Disk4 neu erstellen, um sie zu erstellenErstellen Sie die GerĂ€te / dev / md3 und md4 neu, streifen Sie sie zusammen, um das GerĂ€t / dev / stripe / combined zu erstellen, und schließen Sie das GerĂ€t an den Spiegel an:

# truncate -s 1025M drive3
# truncate -s 1025M drive4
# mdconfig -u3 -t vnode -f drive3
# mdconfig -u4 -t vnode -f drive4
# gstripe label -h combined md3 md4
# zpool attach mypool md2 stripe/combined
# zpool status mypool
pool: mypool
state: ONLINE
scan: resilvered 81.5K in 0 days 00:00:04 with 0 errors on Thu May 23 15:27:26 2019
config:

NAME                 STATE     READ WRITE CKSUM
mypool               ONLINE       0     0     0
mirror-0           ONLINE       0     0     0
md1              ONLINE       0     0     0
md2              ONLINE       0     0     0
stripe/combined  ONLINE       0     0     0

errors: No known data errors