zpool device-Namen ändern?

pit234a

Well-Known Member
Ich habe genau gar kein Problem!
Das mal vorab.
Also zumindest keines mit meinen Z-pools.

Aber mein PC präsentiert sich seit einiger Zeit neu gestartet, anstatt durchgelaufen. Nach einigen Tests habe ich heute das Netzteil getauscht und dabei sauber gemacht und auch die Sata-Kabel erneuert, wie man das so macht. Dabei habe ich aber offenbar (und teilweise ganz bewusst) die Reihenfolge der Platten verändert.

Am SATA-3 hängt nun auch ada3 und die hing zB zuvor irgendwo anders.
ZFS ist cool und erkennt die Platten des Pools trotzdem, das habe ich schon zuvor gelernt und so ist es nun auch wieder gewesen.
Aber:
Code:
    NAME                               STATE     READ WRITE CKSUM
    aussenlager-2                      ONLINE       0     0     0
      mirror-0                         ONLINE       0     0     0
        diskid/DISK-S5SVNG0NA70056Fp1  ONLINE       0     0     0
        ada4p1                         ONLINE       0     0     0
Alles gut, alles funktioniert, alles vollkommen korrekt.
Nur dass ich die UUID meiner Platten nicht so leicht im Kopf habe, als den SATA-Port und der passt ja nun zu meinen adax-Einträgen.
Folglich hätte ich gerne
diskid/DISK-S5SVNG0NA70056Fp1 umgewandelt zu ada3p1

Einen scrub habe ich erfolglos probiert.
Nun käme ein replace des device, aber davor frage ich lieber nochmal, denn zumindest bei dem Pool mit nur einfacher Redundanz würde mich das zu weiteren temporären Backups ermuntern, bevor ich es durchführe.
Und vielleicht ist es ja auch einfacher.
 
Code:
zpool offline aussenlager-2 diskid/DISK-S5SVNG0NA70056Fp1
zpool replace aussenlager-2 diskid/DISK-S5SVNG0NA70056Fp1 ada3p1

Würde ich zunächst versuchen. Der resilver sollte ratzfatz damit durch sein.

Es könnte aber sein, dass man das vdev ganz rauswerfen muss, weil etwas mit sich selbst ersetzen schlecht geht. Bin mir gerade nicht sicher, aber probier mal sorum. Backups schaden nie. ;)

Edit:
Falls oberes fehlschlägt, versuch jenes:
Code:
zpool detach aussenlager-2 diskid/DISK-S5SVNG0NA70056Fp1
zpool attach aussenlager-2 ada4p1 ada3p1 #Reihenfolge beachten, zuerst kommt die verbleibende Platte *mit* Daten.
 
Code:
zpool offline aussenlager-2 diskid/DISK-S5SVNG0NA70056Fp1
zpool replace aussenlager-2 diskid/DISK-S5SVNG0NA70056Fp1 ada3p1

Würde ich zunächst versuchen. Der resilver sollte ratzfatz damit durch sein.

Es könnte aber sein, dass man das vdev ganz rauswerfen muss, weil etwas mit sich selbst ersetzen schlecht geht. Bin mir gerade nicht sicher, aber probier mal sorum. Backups schaden nie. ;)

Edit:
Falls oberes fehlschlägt, versuch jenes:
Code:
zpool detach aussenlager-2 diskid/DISK-S5SVNG0NA70056Fp1
zpool attach aussenlager-2 ada4p1 ada3p1 #Reihenfolge beachten, zuerst kommt die verbleibende Platte *mit* Daten.
ja. so hatte ich mir das auch gedacht.

Aber irgendwo hatte ich die Hoffnung, dass es auch mit weniger Aufwand geht.
Alle Daten sind ja da und am rechten Platz, mich stört ja (nur ein wenig) der komische Name.
 
Aber irgendwo hatte ich die Hoffnung, dass es auch mit weniger Aufwand geht.
In beiden Fällen sollte das ratzfatz durch sein und keine Kopierorgie werden. Der letztere Befehl mit detach und attach funktioniert auch nur für mirrors. Im Prinzip ist das einen single-pool in einen mirror-pool umwandeln, aber da die beiden Platten bereits gefüllt sind, sollte das schnell durchlaufen.
 
Eigentlich müssten die langen Dinger von selber wieder verschwinden. Bei mir taucht sowas nur dann auf, wenn eine Platte sich verdünnisiert (das sind dann aber etwas andere).
Bei mir kennt aber auch gpart keine solchen langen Namen - was damit zusammenhängen kann, dass ich die im loader.conf unterbinde:
kern.geom.label.disk_ident.enable=0
kern.geom.label.gptid.enable=0

Ich möchte mal vermuten dass diese diskid irgendwo im gpart bekannt ist, und ZFS sie von da übernimmt. Wenn Du die nicht brauchst und nicht willst, und sie mit obiger Option abstellst, dann müsste ZFS die Platte beim nächsten Boot wieder mit ihrem ada Namen finden.
 
Das ist bereits default seit öhm...länger :)

Das kann ich nicht nachvollziehen:

Code:
# uname -a
... 13.1-STABLE FreeBSD 13.1-STABLE #0 stable/13-n253099-5971781ee78b ...
# cat /boot/loader.conf
cat: /boot/loader.conf: No such file or directory
# sysctl kern.geom.label.disk_ident.enable
kern.geom.label.disk_ident.enable: 1
# sysctl kern.geom.label.gptid.enable
kern.geom.label.gptid.enable: 1
 
Um mal ein bisschen herumzuspekulieren:
Möglicherweise erfolgt der automatische Eintrag in die /etc/loader.conf nur, wenn man FreeBSD mit "Auto (ZFS)" installiert.
 
Au, ganz andere Baustelle.
Ich hätte das jetzt so verstanden, dass der defaultwert im Kernel geändert wurde.

Aber ja doch, da ist irgendwas:

Soetwas geht an mir komplett vorbei - das greift ja offenbar nur wenn man
  • den Installer verwendet (und nicht "make installworld DESTDIR=..."),
  • die root auf ZFS hat und nicht nur die Applications, und
  • das system erst nach dem Dezember 2013 basisinstalliert hat.
Nichts davon trifft bei mir zu.
 
der replace gelingt gar nicht, denn es gibt die geoms nicht mehr:
Code:
pit@Celsius /home/pit:-# gpart show ada2
gpart: No such geom: ada2
pit@Celsius /home/pit:-# gpart show ada3
gpart: No such geom: ada3

pit@Celsius /home/pit:-# ls /dev/ | grep ada
ada0
ada0p1
ada0p2
ada1
ada1p1
ada1p2
ada2
ada3
ada4
ada4p1
ada2 und ada3 sind die beiden betroffenen Platten.
Code:
pit@Celsius /home/pit:-# sysctl kern.geom.label.disk_ident.enable
kern.geom.label.disk_ident.enable: 1
pit@Celsius /home/pit:-# sysctl kern.geom.label.gptid.enable
kern.geom.label.gptid.enable: 0
letzteres habe ich in der loader.conf gesetzt, erinnere mich nun aber nicht mehr, was der Grund gewesen sein könnte.

hmmh. Ist das nun nicht heiß, wenn ich daran drehe und meine disks nachher gar nicht mehr erkannt werden?
Gut, beide laufen als Teil eines mirror. Trotzdem etwas ängstlich.
 
Dem pool passiert nichts, wenn sich rein nur die Bezeichnungen ändern.
meine Befürchtung ist, dass ich diese langen UUID-Labels abschalte und dann weder sie noch die kurzen ada2p1 Dinger auftauchen und damit auch gar keine Platte (Partition) mehr da ist, die der Pool nehmen kann.
Mal sehen.
 
Das wird nicht passieren. Solange FreeBSD die Partitionen lesen kann, werden sie auch auftauchen. Und lesen kann er sie, sonst würde es gar nicht funktionieren. :) Wenn alle Stricke reißen - das wird hier aber nicht notwendig sein, weil die Partitionen ja erkannt werden - kann man kern.geom.part.check_integrity auf 0 setzen. Das schaltet die Konsistenzcheckmagie ab, FreeBSD nimmt die Partitionen mit dem Wissen, dass irgendwas Kacke ist.
 
Zurück
Oben