Zwei verschränkte ZFS-Pools?

1

Ich versuche, ein Durcheinander auf einem Ubuntu 12.04 LTS-Serversystem mithilfe von ZFS zu beseitigen. Folgendes zeigt der zpool-Status:

  pool: TB2
 state: UNAVAIL
status: One or more devices could not be used because the label is missing
        or invalid.  There are insufficient replicas for the pool to continue
        functioning.
action: Destroy and re-create the pool from
        a backup source.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    TB2         UNAVAIL      0     0     0  insufficient replicas
      sdd       ONLINE       0     0     0
      sde       ONLINE       0     0     0
      sdf       ONLINE       0     0     0
      sdg       ONLINE       0     0     0
      sdh       ONLINE       0     0     0
      sdi       ONLINE       0     0     0
      sdj       ONLINE       0     0     0
      sds       ONLINE       0     0     0
      sdt       UNAVAIL      0     0     0

  pool: TB4
 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 2.52T in 16h41m with 0 errors on Tue Feb  6 09:27:46 2018
config:

    NAME                                              STATE     READ WRITE CKSUM
    TB4                                               DEGRADED     0     0     0
      raidz2-0                                        DEGRADED     0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAG9MBVS    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2311PAG8G71M    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAGH0LHV    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2331PAG8MV3T    ONLINE       0     0     0
        spare-4                                       DEGRADED     0     0     0
          ata-Hitachi_HDS724040ALE640_PK2311PAG614MM  UNAVAIL      0     0     0
          ata-Hitachi_HDS724040ALE640_PK1331PAGH0EAV  ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2331PAGH2XRW    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAG7TGDS    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAGG3K0V    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2311PAG59PYM    ONLINE       0     0     0
    spares
      ata-Hitachi_HDS724040ALE640_PK1331PAGH0EAV      INUSE     currently in use

errors: No known data errors

Ich möchte zwei Dinge tun: 1. Ersetzen Sie das fehlerhafte Laufwerk in Pool TB4. Das weiß ich zu tun. 2. Zerstören Sie den Pool TB2 vollständig und erstellen Sie ihn erneut.

Normalerweise zerstöre ich TB2 mit einem Zpool und beginne von vorne. Der vorherige Administrator verwendete jedoch sd * -Namen für TB2 und Platten-IDs für TB4. Bei einem Blick auf / dev / disk / by-id stellte ich fest, dass zwei der TB4-Laufwerke (... 71M und ... EAV) mit / dev / sdj bzw. / dev / sds verknüpft sind. Diese sdj und sds sind jedoch beide als Teil des TB2-Pools aufgeführt. Ich befürchte, dass durch die Zerstörung von TB2 durch zpool die Laufwerke im TB4-Pool beschädigt werden, da laut Dokumentation Schreibvorgänge auf die Mitgliederdatenträger zerstört werden. Gibt es eine Möglichkeit, ZFS dazu zu bringen, TB2 einfach zu vergessen, ohne tatsächlich zu schreiben?

Ich habe den vorherigen Administrator gefragt, warum er zwei verschiedene Methoden verwendet hat (/ dev / sd * und by-id). Er sagte, dass die Zuweisung von Laufwerksbuchstaben zu bestimmten Festplatten von Start zu Start nicht wiederholbar zu sein schien. Als er TB4 erstellte, verwendete er die By-ID. Ich vermute, diese Verstrickung von TB2 und TB4 ist eine Folge davon.

Mein aktueller Gedanke ist, dies zu tun:

  1. Maschine ausschalten
  2. ziehen Sie alle Laufwerke.
  3. Starten Sie neu.
  4. zpool destroy -f TB2
  5. Fahren Sie die TB4-Laufwerke herunter und installieren Sie sie erneut
  6. Formatieren Sie die TB2-Laufwerke auf einem anderen Computer neu
  7. Installieren Sie die TB2-Laufwerke neu und erstellen Sie einen neuen Pool mithilfe der Festplatten-IDs (nicht SD *).

Scheint das vernünftig? Gibt es einen einfacheren Weg?

Vielen Dank an alle, die mir aus diesem Schlamassel helfen können.

Michael

Michael
quelle
Warum nicht einfach exportTB2 und dann richtig erstellen? Pools werden beim Herunterfahren ohnehin exportiert. In einem Pool, der derzeit nicht verfügbar ist, sollte dies keine Datenträgeränderungen verursachen.
Daniel B

Antworten:

0

Ihre vorgeschlagene Methode scheint zu funktionieren. Es ist jedoch auch unnötig komplex. Stattdessen würde ich vorschlagen:

  1. zpool export TB2. Dadurch wird die Bereitstellung aller Ressourcen aufgehoben, die dem Pool zugeordnet sind, und Ihr System versucht nicht, sie erneut bereitzustellen (und möglicherweise in sie zu schreiben), es sei denn, Sie führen sie zpool importzuerst aus.
  2. Reparieren Sie TB4. (Oder Sie können dies später tun.)
  3. zpool create <new pool> ...(Referenzieren der Festplatten nach ID, um erneutes Überlappen zu vermeiden). Möglicherweise müssen Sie die Erstellung erzwingen, da möglicherweise festgestellt wird, dass diese Datenträger von einem nicht importierten Pool verwendet wurden.

Wenn Sie einen Probelauf der Prozedur durchführen möchten, können Sie meiner Meinung nach einige Volumes auf TB4 ( zfs create -V 5gb TB4/volume1) erstellen und aus diesen ( zpool create testpool1 ...) zwei "verschachtelte Pools" mit einem überlappenden Volume erstellen . Alles andere sollte genauso funktionieren wie oben.

Dan
quelle