Grub2 & ZFS, grub-install auf zwei HDD's

BerndKleinert

Active Member
Feb 14, 2020
50
4
28
43
Hallo,

ich habe 2x 3TB Festplatten als Mirror / Raid1 mit ZFS eingerichtet. Die Installation wurde mit dem Proxmox Installer vorgenommen. Jetzt wollte ich mal den Ernstfall proben und habe einmal die eine Platte gelöscht und ein Resilver durchgeführt und danach die andere Platte gelöscht. Leider bootet er bei einer der Platten nicht mehr. Jetzt habe ich probiert, grub2 wie damals bei mdadm auf der zweiten HDD zu installieren, damit der Server garantiert wieder hochfahren kann, egal welche Platte ausfällt:

Code:
root@rigel-4:~# grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
root@rigel-4:~# grub-install /dev/sdb
Installing for i386-pc platform.
Installation finished. No error reported.
root@rigel-4:~#

Wenn ich das teste ohne eine HDD platt zu machen klappt es, dh. ich kann vom BIOS-Bootmenü aus von beiden Platten booten. Wenn ich aber die falsche HDD platt mache, bootet nichts mehr obwohl ich grub installiert habe. Ich verstehe nicht, warum?

Wenn ich dpkg-reconfigure grub-pc mache wird dort auch angezeigt, dass grub auf beiden HDD's installiert ist.


Hier noch Infos:

Code:
root@rigel-4:~# zpool status
  pool: rpool
state: ONLINE
  scan: none requested
config:

        NAME                                        STATE     READ WRITE CKSUM
        rpool                                       ONLINE       0     0     0
          mirror-0                                  ONLINE       0     0     0
            ata-TOSHIBA_DT01ACA300_Z7I5YJPAS-part3  ONLINE       0     0     0
            ata-TOSHIBA_DT01ACA300_53PWP3VYS-part3  ONLINE       0     0     0

errors: No known data errors
root@rigel-4:~#

Code:
root@rigel-4:~# fdisk -l /dev/sda
Disk /dev/sda: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Disk model: TOSHIBA DT01ACA3
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 63C5E4F1-1B09-E148-A37D-7EB5DE9D75D7
Device          Start        End    Sectors  Size Type
/dev/sda1        2048 5860515839 5860513792  2.7T Solaris /usr & Apple ZFS
/dev/sda9  5860515840 5860532223      16384    8M Solaris reserved 1


root@rigel-4:~# fdisk -l /dev/sdb
Disk /dev/sdb: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Disk model: TOSHIBA DT01ACA3
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 5F1481E3-197C-418D-A41B-5A523F1D7CC3
Device       Start        End    Sectors  Size Type
/dev/sdb1       34       2047       2014 1007K BIOS boot
/dev/sdb2     2048    1050623    1048576  512M EFI System
/dev/sdb3  1050624 5860533134 5859482511  2.7T Solaris /usr & Apple ZFS

Partition 1 does not start on physical sector boundary.
root@rigel-4:~#

Ach, jetzt fällt es mir auf, sda hat keine /boot Partition. Hm, ist das wirklich so gewollt? Wie gesagt, das Sysem wurde mit dem Proxmox Installer proxmox-ve_6.2-1.iso installiert. Wäre es nicht sinnvoller, auf beide Festplatten eine boot-Partition zu installieren?

Edit: Ich habe es probiert indem ich mit dd sdb auf sda kopiere. Danach wie erwartet:

Code:
root@rigel-4:~# zpool status
  pool: rpool
state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
  scan: resilvered 982M in 0 days 00:00:16 with 0 errors on Tue May 26 13:53:51 2020
config:

        NAME                                        STATE     READ WRITE CKSUM
        rpool                                       DEGRADED     0     0     0
          mirror-0                                  DEGRADED     0     0     0
            7786499231289695815                     UNAVAIL      0     0     0  was /dev/disk/by-id/ata-TOSHIBA_DT01ACA300_Z7I5YJPAS-part1
            ata-TOSHIBA_DT01ACA300_53PWP3VYS-part3  ONLINE       0     0     0

errors: No known data errors
root@rigel-4:~#

Code:
root@rigel-4:~# ls -1 /dev/disk/by-id/ | grep ata
ata-TOSHIBA_DT01ACA300_53PWP3VYS
ata-TOSHIBA_DT01ACA300_53PWP3VYS-part1
ata-TOSHIBA_DT01ACA300_53PWP3VYS-part2
ata-TOSHIBA_DT01ACA300_53PWP3VYS-part3
ata-TOSHIBA_DT01ACA300_Z7I5YJPAS
ata-TOSHIBA_DT01ACA300_Z7I5YJPAS-part1
ata-TOSHIBA_DT01ACA300_Z7I5YJPAS-part2
ata-TOSHIBA_DT01ACA300_Z7I5YJPAS-part3
root@rigel-4:~#
 
Last edited:
Hi,

ZFS ist nur auf Partition sd<x>3.

Das heißt, wenn du ein resilver mit einer neuen Disk anfängst, werden Partitionen 1 und 2 nicht erstellte.

Du musst bei einem Ausfall die Partitionierung selber vornehmen und dann ZFS nur die dritte Partition zum resilvern geben.

Part 1 und 2 kannst du mit dd kopieren aber den Bootloader musst du dann Trotzdem noch manuell installieren.
 
Hallo Wolfgang,

vielen Dank für deine Hinweise. Ich habe die Partitionstabelle kopiert:

sgdisk --replicate=/dev/sdb /dev/sda

jetzt wollte ich wieder einen resilver anstoßen, aber:

Code:
root@rigel-4:~# zpool replace -f rpool 7786499231289695815 /dev/disk/by-id/ata-TOSHIBA_DT01ACA300_Z7I5YJPAS
invalid vdev specification
the following errors must be manually repaired:
/dev/disk/by-id/ata-TOSHIBA_DT01ACA300_Z7I5YJPAS-part3 is part of active pool 'rpool'
root@rigel-4:~# zpool replace -f rpool 7786499231289695815 /dev/disk/by-id/ata-TOSHIBA_DT01ACA300_Z7I5YJPAS-part3
invalid vdev specification
the following errors must be manually repaired:
/dev/disk/by-id/ata-TOSHIBA_DT01ACA300_Z7I5YJPAS-part3 is part of active pool 'rpool'
root@rigel-4:~#

Aber wie geht es nun weiter?

Code:
root@rigel-4:~# zpool status
  pool: rpool
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
  scan: resilvered 982M in 0 days 00:00:16 with 0 errors on Tue May 26 13:53:51 2020
config:

        NAME                                        STATE     READ WRITE CKSUM
        rpool                                       DEGRADED     0     0     0
          mirror-0                                  DEGRADED     0     0     0
            7786499231289695815                     UNAVAIL      0     0     0  was /dev/disk/by-id/ata-TOSHIBA_DT01ACA300_Z7I5YJPAS-part1
            ata-TOSHIBA_DT01ACA300_53PWP3VYS-part3  ONLINE       0     0     0

errors: No known data errors
root@rigel-4:~#
 
Du kannst nicht einfach die Partitionstable clonen, da dann zwei identische Partitionen(Partitions metadaten) im ZFS vorhanden sind.
Erstell neue Partitionen.
 
Noch besser sda nur für ProxMox und sdb und sdc als Mirror. Dann kann man ProxMox jederzeit neu installieren, ohne das Raid zu löschen.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!