Aktuelle Version |
Dein Text |
Zeile 411: |
Zeile 411: |
| runCommand=newaliases | | runCommand=newaliases |
| </pre> | | </pre> |
|
| |
| == mirroring ==
| |
|
| |
| ; Das Szenario: Es wird bei einer Maschine ein Spiegel vom Massenspeicher verwendet. Bei der Installation von [[TrueOS]] ist das ganz einfach auswählbar. [[TrueOS]] richtet das auch alles ein. (Aber was passiert da eigentlich?) Ferner geht es um das Nachvollziehen der durch <code>[[man:pc-sysinstall|pc-sysinstall]]</code> durchgeführten Abläufe. Aber auch notwendige Wartungsarbeiten - etwa das [[#Ersetzen von einem Massenspeicher als Teil von einem mirror]], sollen so "sauber" erledigt werden können.
| |
|
| |
| ==== Ersetzen von einem Massenspeicher als Teil von einem mirror ====
| |
|
| |
| ; Szenario:
| |
| * Eines der Geräte für Massenspeicher ist ausgefallen und muss ersetzt werden.
| |
| *: Zum Testen dieses Szenario wurde TrueOS mit einem Spiegel für den Massenspeicher installiert.
| |
| *:: Theoretisch (und praktisch) funktioniert das auch bei einer standardmäßigen Installation von FreeBSD mit einem Spiegel für den Massenspeicher.
| |
| *: Zum Testen wurde eines der Geräte für Massenspeicher einfach entfernt. (Es soll praktisch dargestellt werden, dass das Gerät für Massenspeicher "kaputt" wäre.)
| |
| *: Zum Testen gibt es gleichwertiges Gerät für Massenspeicher, dass als Ersatz dienten soll.
| |
|
| |
| ; Siehe auch:
| |
| * https://www.freebsd.org/doc/handbook/zfs-zpool.html
| |
| ** https://www.freebsd.org/doc/de/books/handbook/zfs-zpool.html
| |
| * https://forums.pcbsd.org/thread-20757.html
| |
|
| |
| ----
| |
|
| |
| : <code>zpool status</code>
| |
| <pre>
| |
| pool: vzfspool
| |
| state: DEGRADED
| |
| status: One or more devices could not be opened. Sufficient replicas exist for
| |
| the pool to continue functioning in a degraded state.
| |
| action: Attach the missing device and online it using 'zpool online'.
| |
| see: http://illumos.org/msg/ZFS-8000-2Q
| |
| scan: scrub repaired 0 in 0h1m with 0 errors on Sun mm dd HH:MM:SS yyyy
| |
| config:
| |
|
| |
| NAME STATE READ WRITE CKSUM
| |
| vzfspool DEGRADED 0 0 0
| |
| mirror-0 DEGRADED 0 0 0
| |
| 4561791786978147166 UNAVAIL 0 0 0 was /dev/ada0p2.eli
| |
| ada1p2.eli ONLINE 0 0 0
| |
|
| |
| errors: No known data errors
| |
| </pre>
| |
| : <code>sudo zpool online vzfspool 4561791786978147166</code>
| |
| <pre>
| |
| warning: device '4561791786978147166' onlined, but remains in faulted state
| |
| use 'zpool replace' to replace devices that are no longer present
| |
| </pre>
| |
| : <code>zpool replace vzfspool 4561791786978147166</code>
| |
| <pre>
| |
| cannot open '4561791786978147166': no such GEOM provider
| |
| must be a full path or shorthand device name
| |
| </pre>
| |
| : <code>zpool replace vzfspool /dev/ada0p2.eli</code>
| |
| <pre>
| |
| cannot open '/dev/ada0p2.eli': No such file or directory
| |
| </pre>
| |
| : <code>sudo zpool detach vzfspool /dev/ada0p2.eli</code>
| |
| <pre></pre>
| |
| : <code>zpool status</code>
| |
| <pre>
| |
| pool: vzfspool
| |
| state: DEGRADED
| |
| status: One or more devices could not be opened. Sufficient replicas exist for
| |
| the pool to continue functioning in a degraded state.
| |
| action: Attach the missing device and online it using 'zpool online'.
| |
| see: http://illumos.org/msg/ZFS-8000-2Q
| |
| scan: scrub repaired 0 in 0h1m with 0 errors on Sun mm dd HH:MM:SS yyyy
| |
| config:
| |
|
| |
| NAME STATE READ WRITE CKSUM
| |
| vzfspool DEGRADED 0 0 0
| |
| mirror-0 DEGRADED 0 0 0
| |
| 4561791786978147166 UNAVAIL 0 0 0 was /dev/ada0p2.eli
| |
| ada1p2.eli ONLINE 0 0 0
| |
|
| |
| errors: No known data errors
| |
| </pre>
| |
| : <code>sudo zpool detach vzfspool /dev/ada0p2.eli</code>
| |
| <pre></pre>
| |
| : <code>zpool status</code>
| |
| <pre>
| |
| pool: vzfspool
| |
| state: ONLINE
| |
| scan: scrub repaired 0 in 0h1m with 0 errors on Sun mm dd HH:MM:SS yyyy
| |
| config:
| |
|
| |
| NAME STATE READ WRITE CKSUM
| |
| vzfspool ONLINE 0 0 0
| |
| ada1p2.eli ONLINE 0 0 0
| |
|
| |
| errors: No known data errors
| |
| </pre>
| |
| : <code>gpart show</code>
| |
| <pre>
| |
| => 34 976773101 ada0 GPT (466G)
| |
| 34 2014 - free - (1.0M)
| |
| 2048 976771072 1 linux-data (466G)
| |
| 976773120 15 - free - (7.5K)
| |
|
| |
| => 40 976773088 ada1 GPT (466G)
| |
| 40 512 1 freebsd-boot (256K)
| |
| 552 934799360 2 freebsd-zfs (446G)
| |
| 934799912 41943040 3 freebsd-swap (20G)
| |
| 976742952 30176 - free - (15M)
| |
| </pre>
| |
| : <code>gpart backup ada1</code>
| |
| <pre>
| |
| GPT 152
| |
| 1 freebsd-boot 40 512
| |
| 2 freebsd-zfs 552 934799360
| |
| 3 freebsd-swap 934799912 41943040
| |
| </pre>
| |
| : <code>gpart backup ada1 | gpart restore -F ada0</code>
| |
| <pre>
| |
| gpart backup ada1 | gpart restore -F ada0
| |
| </pre>
| |
| : <code>gpart show</code>
| |
| <pre>
| |
| => 40 976773088 ada0 GPT (466G)
| |
| 40 512 1 freebsd-boot (256K)
| |
| 552 934799360 2 freebsd-zfs (446G)
| |
| 934799912 41943040 3 freebsd-swap (20G)
| |
| 976742952 30176 - free - (15M)
| |
|
| |
| => 40 976773088 ada1 GPT (466G)
| |
| 40 512 1 freebsd-boot (256K)
| |
| 552 934799360 2 freebsd-zfs (446G)
| |
| 934799912 41943040 3 freebsd-swap (20G)
| |
| 976742952 30176 - free - (15M)
| |
| </pre>
| |
| : <code>zpool status</code>
| |
| <pre>
| |
| pool: vzfspool
| |
| state: ONLINE
| |
| scan: scrub repaired 0 in 0h1m with 0 errors on Sun mm dd HH:MM:SS yyyy
| |
| config:
| |
|
| |
| NAME STATE READ WRITE CKSUM
| |
| vzfspool ONLINE 0 0 0
| |
| ada1p2.eli ONLINE 0 0 0
| |
|
| |
| errors: No known data errors
| |
| </pre>
| |
| : <code>ls /dev/ | grep ada</code>
| |
| <pre>
| |
| </pre>
| |
| : <code>zpool attach vzfspool /dev/ada1 /dev/ada0</code>
| |
| <pre>
| |
| cannot attach /dev/ada0 to /dev/ada1: no such device in pool
| |
| </pre>
| |
| : <code>geli backup /dev/ada1p2 ~/geli.backup</code>
| |
| <pre></pre>
| |
| : <code>sudo geli restore ~/geli.backup /dev/ada0p2</code>
| |
| <pre></pre>
| |
| : <code>ls /dev | grep ada</code>
| |
| <pre>
| |
| ada0
| |
| ada0p1
| |
| ada0p2
| |
| ada0p3
| |
| ada1
| |
| ada1p1
| |
| ada1p2
| |
| ada1p2.eli
| |
| ada1p3
| |
| </pre>
| |
| : <code>geli attach /dev/ada0p2</code>
| |
| <pre>
| |
| Enter passphrase:
| |
| </pre>
| |
| : <code>geli status</code>
| |
| <pre>
| |
| Name Status Components
| |
| ada1p2.eli ACTIVE ada1p2
| |
| label/swap0.eli ACTIVE label/swap0
| |
| ada0p2.eli ACTIVE ada0p2
| |
| </pre>
| |
| : <code>ls /dev | grep ada</code>
| |
| <pre>
| |
| ada0
| |
| ada0p1
| |
| ada0p2
| |
| ada0p2.eli
| |
| ada0p3
| |
| ada1
| |
| ada1p1
| |
| ada1p2
| |
| ada1p2.eli
| |
| ada1p3
| |
| </pre>
| |
| {|
| |
| |-
| |
| | Hinzufügen
| |
| | Ersetzen
| |
| |-
| |
| |
| |
| : <code>sudo zpool attach vzfspool /dev/ada0p2.eli /dev/ada1p2.eli</code>
| |
| <pre>
| |
| Make sure to wait until resilver is done before rebooting.
| |
|
| |
| If you boot from pool 'vzfspool', you may need to update
| |
| boot code on newly attached disk '/dev/ada1p2.eli'.
| |
|
| |
| Assuming you use GPT partitioning and 'da0' is your new boot disk
| |
| you may use the following command:
| |
|
| |
| gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
| |
|
| |
| </pre>
| |
| : <code>gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0p1</code>
| |
| <pre>
| |
| gpart: No such geom: ada0p1.
| |
| </pre>
| |
| : <code>sudo gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 /dev/ada0</code>
| |
| <pre>
| |
| partcode written to ada0p1
| |
| bootcode written to ada0
| |
| </pre>
| |
| : <code>sudo zpool attach vzfspool /dev/ada1p2.eli /dev/ada0p2.eli</code>
| |
| <pre>
| |
| invalid vdev specification
| |
| use '-f' to override the following errors:
| |
| /dev/ada0p2.eli is part of active pool 'vzfspool'
| |
| </pre>
| |
| : <code>sudo zpool attach vzfspool /dev/ada0p2.eli /dev/ada1p2.eli</code>
| |
| <pre>
| |
| invalid vdev specification
| |
| use '-f' to override the following errors:
| |
| /dev/ada0p2.eli is part of active pool 'vzfspool'
| |
| </pre>
| |
| : <code>zpool status</code>
| |
| <pre>
| |
| pool: vzfspool
| |
| state: ONLINE
| |
| scan: resilvered 12.3G in 0h1m with 0 errors on Sun mm dd HH:MM:SS yyyy
| |
| config:
| |
|
| |
| NAME STATE READ WRITE CKSUM
| |
| vzfspool ONLINE 0 0 0
| |
| mirror-0 ONLINE 0 0 0
| |
| ada1p2.eli ONLINE 0 0 0
| |
| ada0p2.eli ONLINE 0 0 0
| |
|
| |
| errors: No known data errors
| |
| </pre>
| |
| |
| |
| : <code>sudo zpool replace zopt 4561791786978147166 /dev/ada0p2.eli</code>
| |
| <pre>
| |
| Make sure to wait until resilver is done before rebooting.
| |
|
| |
| If you boot from pool 'vzfspool', you may need to update
| |
| boot code on newly attached disk '/dev/ada0p2.eli'.
| |
|
| |
| Assuming you use GPT partitioning and 'da0' is your new boot disk
| |
| you may use the following command:
| |
|
| |
| gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
| |
| </pre>
| |
| : <code>sudo gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0</code>
| |
| <pre>
| |
| partcode written to ada0p1
| |
| bootcode written to ada0
| |
| </pre>
| |
| : <code>zpool status</code>
| |
| <pre>
| |
| pool: vzfspool
| |
| state: DEGRADED
| |
| status: One or more devices is currently being resilvered. The pool will
| |
| continue to function, possibly in a degraded state.
| |
| action: Wait for the resilver to complete.
| |
| scan: resilver in progress since Sun mm dd HH:MM:SS yyyy
| |
| 6.15G scanned out of 12.3G at 32.1M/s, 0h1m to go
| |
| 6.15G resilvered, 50.00% done
| |
| config:
| |
|
| |
| NAME STATE READ WRITE CKSUM
| |
| zopt DEGRADED 0 0 0
| |
| mirror-0 DEGRADED 0 0 0
| |
| replacing-0 OFFLINE 0 0 0
| |
| 4561791786978147166 OFFLINE 0 0 0 was /dev/ada0
| |
| ada0p2.eli ONLINE 0 0 0
| |
| ada1p2.eli ONLINE 0 0 0
| |
|
| |
| errors: No known data errors
| |
| </pre>
| |
| : <code>zpool status</code>
| |
| <pre>
| |
| pool: vzfspool
| |
| state: ONLINE
| |
| scan: resilvered 12.3G in 0h2m with 0 errors on Sun mm dd HH:MM:SS yyyy
| |
| config:
| |
|
| |
| NAME STATE READ WRITE CKSUM
| |
| vzfspool ONLINE 0 0 0
| |
| mirror-0 ONLINE 0 0 0
| |
| ada1p2.eli ONLINE 0 0 0
| |
| ada0p2.eli ONLINE 0 0 0
| |
|
| |
| errors: No known data errors
| |
| </pre>
| |
| |-
| |
| |}
| |
|
| |
|
| |
| ; Notizen:
| |
|
| |
| dd if=/dev/ada1p1 of=/dev/ada0p1
| |
|
| |
| ==== Ersetzen von einem Massenspeicher als Teil von einem mirror "pc-sysinstall stlyle" ====
| |
|
| |
| {|
| |
| |-
| |
| ! pc-sysinstall
| |
| !
| |
| |-
| |
| ! create
| |
| ! replace
| |
| |-
| |
| ! cospan="2" |
| |
| Zerstören aller möglichen Einträge zur Partitionierung
| |
| |-
| |
| |
| |
| <pre>
| |
| Running: gpart destroy -F /dev/ada0
| |
| gpart: arg0 'ada0': Invalid argument
| |
| Running: zpool labelclear -f /dev/ada0
| |
| failed to read label from /dev/ada0
| |
| Running: gpart create -s gpt /dev/ada0
| |
| ada0 created
| |
| Running: gpart destroy -F /dev/ada0
| |
| ada0 destroyed
| |
| Clearing gpt backup table location on disk
| |
| Running: dd if=/dev/zero of=/dev/ada0 bs=1m count=1
| |
| 1+0 records in
| |
| 1+0 records out
| |
| 1048576 bytes transferred in 0.046040 secs (22775338 bytes/sec)
| |
| Running: dd if=/dev/zero of=/dev/ada0 bs=1m oseek=305241
| |
| dd: /dev/ada0: short write on character device
| |
| dd: /dev/ada0: end of device
| |
| 5+0 records in
| |
| 4+1 records out
| |
| 4546560 bytes transferred in 0.082831 secs (54889445 bytes/sec)
| |
| </pre>
| |
| |
| |
| <pre>
| |
| </pre>
| |
| |-
| |
| ! cospan="2" |
| |
| (neue) Partitionstabelle erstellen
| |
| |-
| |
| |
| |
| <pre>
| |
| Running gpart on /dev/ada0
| |
| Running: gpart create -s GPT -f active /dev/ada0
| |
| ada0 created
| |
| </pre>
| |
| |
| |
| <pre>
| |
| </pre>
| |
| |-
| |
| ! cospan="2" |
| |
| Tätigkeit
| |
| |-
| |
| |
| |
| <pre>
| |
| Running: gpart add -s 512 -t freebsd-boot /dev/ada0
| |
| ada0p1 added
| |
| Stamping boot sector on /dev/ada0
| |
| Running: gpart bootcode -b /boot/pmbr /dev/ada0
| |
| bootcode written to ada0
| |
| </pre>
| |
| |
| |
| <pre>
| |
| </pre>
| |
| |-
| |
| ! cospan="2" |
| |
| ???
| |
| |-
| |
| |
| |
| <pre>
| |
| Looping through _zvars: /dev/ada0p2
| |
| Looping through _zvars: /dev/ada2
| |
| </pre>
| |
| |
| |
| <pre>
| |
| </pre>
| |
| |-
| |
| ! cospan="2" |
| |
| weiteren Massenspeicher für den Spiegel gleichermaßen behandeln
| |
| |-
| |
| |
| |
| <pre>
| |
| Setting up ZFS disk /dev/ada2
| |
| kern.geom.debugflags: 16 -> 16
| |
| kern.geom.label.disk_ident.enable: 0 -> 0
| |
| Deleting all gparts
| |
| Running: gpart destroy -F /dev/ada2
| |
| gpart: arg0 'ada2': Invalid argument
| |
| Running: zpool labelclear -f /dev/ada2
| |
| failed to read label from /dev/ada2
| |
| Running: gpart create -s gpt /dev/ada2
| |
| ada2 created
| |
| Running: gpart destroy -F /dev/ada2
| |
| ada2 destroyed
| |
| Clearing gpt backup table location on disk
| |
| Running: dd if=/dev/zero of=/dev/ada2 bs=1m count=1
| |
| 1+0 records in
| |
| 1+0 records out
| |
| 1048576 bytes transferred in 0.046489 secs (22555159 bytes/sec)
| |
| Running: dd if=/dev/zero of=/dev/ada2 bs=1m oseek=305241
| |
| dd: /dev/ada2: short write on character device
| |
| dd: /dev/ada2: end of device
| |
| 5+0 records in
| |
| 4+1 records out
| |
| 4546560 bytes transferred in 0.075279 secs (60396406 bytes/sec)
| |
| Running gpart on /dev/ada2
| |
| Running: gpart create -s GPT -f active /dev/ada2
| |
| ada2 created
| |
| Running: gpart add -s 512 -t freebsd-boot /dev/ada2
| |
| ada2p1 added
| |
| Stamping boot sector on /dev/ada2
| |
| Running: gpart bootcode -b /boot/pmbr /dev/ada2
| |
| bootcode written to ada2
| |
| Running: gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 /dev/ada2
| |
| partcode written to ada2p1
| |
| bootcode written to ada2
| |
| Running: gpart add -a 4k -s 305230M -t freebsd-zfs /dev/ada0
| |
| ada0p2 added
| |
| </pre>
| |
| |
| |
| <pre>
| |
| </pre>
| |
| |-
| |
| ! cospan="2" |
| |
| Übernehmen von den Eingenschaften für ZFS für die Partition vom weiteren Massenspeicher für den Spiegel
| |
| |-
| |
| |
| |
| <pre>
| |
| Cloning disk layout to ZFS disk /dev/ada2
| |
| Running: gpart add -a 4k -s 305230M -t freebsd-zfs /dev/ada2
| |
| ada2p2 added
| |
| </pre>
| |
| |
| |
| <pre>
| |
| </pre>
| |
| |-
| |
| ! cospan="2" |
| |
| ???
| |
| |-
| |
| |
| |
| <pre>
| |
| Running: gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 /dev/ada0
| |
| partcode written to ada0p1
| |
| bootcode written to ada0
| |
| </pre>
| |
| |
| |
| <pre>
| |
| </pre>
| |
| |-
| |
| ! cospan="2" |
| |
| Verschlüsseln vom ersten Massenspeicher
| |
| |-
| |
| |
| |
| <pre>
| |
| Creating geli provider for /dev/ada0p2
| |
| Running: geli init -g -b -J /tmp/.pc-sysinstall/part-info-enc/-dev-ada0p2-encpass /dev/ada0p2
| |
|
| |
| Metadata backup can be found in /var/backups/ada0p2.eli and
| |
| can be restored with the following command:
| |
|
| |
| # geli restore /var/backups/ada0p2.eli /dev/ada0p2
| |
|
| |
| Running: geli attach -j /tmp/.pc-sysinstall/part-info-enc/-dev-ada0p2-encpass /dev/ada0p2
| |
| </pre>
| |
| |
| |
| <pre>
| |
| </pre>
| |
| |-
| |
| ! cospan="2" |
| |
| Verschlüsseln vom weiteren Massenspeicher
| |
| |-
| |
| |
| |
| <pre>
| |
| Setting up GELI on mirrored disks: /dev/ada2p2
| |
| Running: geli init -g -b -J /tmp/.pc-sysinstall/part-info-enc/-dev-ada0p2-encpass /dev/ada2p2
| |
|
| |
| Metadata backup can be found in /var/backups/ada2p2.eli and
| |
| can be restored with the following command:
| |
|
| |
| # geli restore /var/backups/ada2p2.eli /dev/ada2p2
| |
|
| |
| Running: geli attach -j /tmp/.pc-sysinstall/part-info-enc/-dev-ada0p2-encpass /dev/ada2p2
| |
| </pre>
| |
| |
| |
| <pre>
| |
| </pre>
| |
| |-
| |
| ! cospan="2" |
| |
| ???
| |
| |-
| |
| |
| |
| <pre>
| |
| NEWFS: /dev/ada0p2 - ZFS
| |
| </pre>
| |
| |
| |
| <pre>
| |
| </pre>
| |
| |-
| |
| ! cospan="2" |
| |
| Erstellen vom Pool
| |
| |-
| |
| |
| |
| <pre>
| |
| Creating storage pool vzfspool with mirror /dev/ada0p2.eli /dev/ada2p2.eli
| |
| Running: zpool create -m none -f vzfspool mirror /dev/ada0p2.eli /dev/ada2p2.eli
| |
| </pre>
| |
| |
| |
| <pre>
| |
| </pre>
| |
| |-
| |
| <!--
| |
| |-
| |
| ! cospan="2" |
| |
| Tätigkeit
| |
| |-
| |
| |
| |
| <pre>
| |
| </pre>
| |
| |
| |
| <pre>
| |
| </pre>
| |
| !-->
| |
| |-
| |
| |}
| |