Wie soll man ZFS vdev nennen, das sich nicht ändert?

7

Ich habe einen Ubuntu (13.04) Desktop mit ZFS-Unterstützung dank der PPA zfs-native/stable.

Alles hat sehr gut funktioniert. Ich habe einen RAID-Z1-Pool erstellt, der ingroundmit dem folgenden Befehl aufgerufen wird :

zpool create inground raidz1 sdb sdc sdd sde sdf

Später, nachdem ich nicht auf den von mir erstellten Montagepunkt zugreifen konnte, rannte ich zpool statusund fiel fast von meinem Stuhl, als ich 1 unavailableund 2 corruptVDEVs im Pool sah. Nach ein paar tiefen Atemzügen bemerkte ich, dass ich beim Neustart des Systems einen USD-USB-Stick in einem der vorderen Ports meines Turms hatte. Dies führte dazu, dass sich alle /dev/sd*Zuordnungen änderten und alles Sinn machte. Ich habe das USB-Laufwerk entfernt, neu gestartet und alles war gut.

Meine Frage ist, wie ich dies in Zukunft verhindern kann. Gibt es eine andere kanonische Kennung, mit der ich auf die physischen Laufwerke verweisen kann, wenn ich sie als vdevs zum zpool hinzufüge?

Chris Tonkinson
quelle

Antworten:

5

Sie sollten keine / dev / sdX-Namen für ZFS-Pools verwenden, wenn sich die SCSI-Gerätenamen ändern können. Siehe die Optionen unter / dev / disk ...

[root@Davalan /dev/disk]# cd by-
by-id/   by-path/ by-uuid/ 

Normalerweise verwende ich die /dev/disk/by-idEinträge für meine Linux-Zpools ...

# zpool status
  pool: vol1
 state: ONLINE
  scan: scrub repaired 0 in 1h44m with 0 errors on Sat Jul  6 13:12:06 2013
config:

        NAME                               STATE     READ WRITE CKSUM
        vol1                               ONLINE       0     0     0
          mirror-0                         ONLINE       0     0     0
            scsi-35000c5003af99fa7         ONLINE       0     0     0
            scsi-35000cca0153ec2d0         ONLINE       0     0     0
          mirror-1                         ONLINE       0     0     0
            scsi-35000cca01540e340         ONLINE       0     0     0
            scsi-35000cca01540e298         ONLINE       0     0     0
        cache
          ata-STEC_M8IOPS-50_STM000136649  ONLINE       0     0     0

und...

[root@Davalan /dev/disk/by-id]# ls -1
ata-STEC_M8IOPS-50_STM000136649
ata-STEC_M8IOPS-50_STM000136649-part1
ata-STEC_M8IOPS-50_STM000136649-part9
scsi-35000c5003af99fa7
scsi-35000c5003af99fa7-part1
scsi-35000c5003af99fa7-part9
scsi-35000cca0153ec2d0
scsi-35000cca0153ec2d0-part1
scsi-35000cca0153ec2d0-part9
scsi-35000cca01540e298
scsi-35000cca01540e298-part1
scsi-35000cca01540e298-part9
scsi-35000cca01540e340
scsi-35000cca01540e340-part1
scsi-35000cca01540e340-part9
scsi-SATA_STEC_M8IOPS-50_STM000136649
scsi-SATA_STEC_M8IOPS-50_STM000136649-part1
scsi-SATA_STEC_M8IOPS-50_STM000136649-part9
wwn-0x5000a720300411f7
wwn-0x5000a720300411f7-part1
wwn-0x5000a720300411f7-part9
wwn-0x5000c5003af99fa7
wwn-0x5000c5003af99fa7-part1
wwn-0x5000c5003af99fa7-part9
wwn-0x5000cca0153ec2d0
wwn-0x5000cca0153ec2d0-part1
wwn-0x5000cca0153ec2d0-part9
wwn-0x5000cca01540e298
wwn-0x5000cca01540e298-part1
wwn-0x5000cca01540e298-part9
wwn-0x5000cca01540e340
wwn-0x5000cca01540e340-part1
wwn-0x5000cca01540e340-part9
ewwhite
quelle
Beeindruckend. Ich benutze Linux-Systeme schon seit einiger Zeit ... wusste noch nie davon /dev/disk. Vielen Dank!
Chris Tonkinson
3
Es ist zu beachten, dass die Implementierung von ZFS unter Linux nicht so intelligent ist wie der native Solaris-Code. Unter Solaris können Sie davon ausgehen, dass eine geänderte Datenträgernummerierung keine Probleme verursacht, während ZFS unter Linux diesen Fall anscheinend nicht so gut behandelt. Wenn Sie Pools von iSCSI-Geräten erstellen, die längere Namen haben, wird dies mühsam.
The-Wabbit
9

Eine gute Nachricht ist, dass Sie das vdev-Konfigurationsschema ändern können, indem Sie Ihren Pool exportieren und erneut importieren. (von ZFS unter Linux-Dokumenten )

admin@Test-ZFS:~$ sudo zpool status tankz
  pool: tankz
 state: ONLINE
  scan: resilvered 15K in 0h0m with 0 errors on Tue Feb 25 16:36:18 2014
config:

        NAME        STATE     READ WRITE CKSUM
        tankz       ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sde     ONLINE       0     0     0
            sdd     ONLINE       0     0     0

errors: No known data errors

admin@Test-ZFS:~$ sudo zpool export tankz
admin@Test-ZFS:~$ sudo zpool import -d /dev/disk/by-id tankz
admin@Test-ZFS:~$ sudo zpool status tankz
  pool: tankz
 state: ONLINE
  scan: resilvered 15K in 0h0m with 0 errors on Tue Feb 25 16:36:18 2014
config:

        NAME                                       STATE     READ WRITE CKSUM
        tankz                                      ONLINE       0     0     0
          raidz1-0                                 ONLINE       0     0     0
            ata-VBOX_HARDDISK_VB3b2901c3-c7700ec9  ONLINE       0     0     0
            ata-VBOX_HARDDISK_VB4ad696a7-d3e6b542  ONLINE       0     0     0
            ata-VBOX_HARDDISK_VBbed2a908-5ddcaedb  ONLINE       0     0     0

errors: No known data errors
user210848
quelle
Guter Trick! Dies wäre sicherlich einfacher gewesen, als den Pool zu zerstören und neu zu erstellen.
Chris Tonkinson
Was ist, wenn Sie nur den Entwicklungspfad für ein bestimmtes Gerät ändern möchten? Und will es nicht automatisch machen. Im Moment ist mein Cache-Gerät als Pfad A angegeben, und ich möchte, dass es Pfad B ist.
CMCDragonkai