LVM device ignorieren

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
djtobyy
Beiträge: 4
Registriert: 16.04.2020 00:01:17

LVM device ignorieren

Beitrag von djtobyy » 16.04.2020 00:16:12

Servus zusammen,


es geht darum, LVM so zu konfigurieren, dass es 3 Festplatten ignoriert. Die Filterung muss allerdings auf UUID Basis sein.

Zur Erklärung:
Ich habe ein Linux Software Raid (Raid 5) gebaut welches unter /dev/md126 nutzbar ist. Auf diesem Device habe ich dann (für spätere Vergrößerung etc.) ein LVM gebaut.
Dies funktioniert auch wunderbar.

Nachdem das System allerdings eine Weile läuft, kommt beim Aufruf von pvs/lvs/vgs immer folgende Fehlermeldung:

Code: Alles auswählen

  /dev/sdb: Checksum error at offset 64512
  Couldn't read volume group metadata from /dev/sdb.
  Metadata location on /dev/sdb at 64512 has invalid summary for VG.
  Failed to read metadata summary from /dev/sdb
  Failed to scan VG from /dev/sdb
Das ist natürlich klar weil LVM die Festplatten vom SW Raid sieht, die PV/VG aber auf dem Raid Device erstellt wurde.

Nun meine Überlegung:
Den Fehler bekomme ich nur weg, indem ich in der LVM Konfig einen Filter hierfür setze.
Mit diesem hier funktioniert die ganze Geschichte auch.

Code: Alles auswählen

 global_filter = [ "r|/dev/zd.*|", "r|/dev/mapper/pve-.*|" "r|/dev/mapper/.*-(vm|base)--[0-9]+--disk--[0-9]+|" "r|/dev/sdb|" "r|/dev/sdc|" "r|/dev/sdd|"]
Nachdem sich der Device Name auch mal ändern kann (nach HotSwap der Platte), bin ich auf der Suche nach einem Filter auf die UUID der Festplatte.

Gibt es eine Möglichkeit eine Filterung auf die UUID anstatt auf den /dev/DEVICEXXX Pfad zu machen?

Freue mich auf eure Nachrichten!

LG
Tobi

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: LVM device ignorieren

Beitrag von heisenberg » 16.04.2020 00:30:08

Die Vorgabe von global_filter ist es alle passenden Geräte zu akzeptieren ( [" a|.*|"]).

Eine Möglichkeit ist es jetzt nicht unerwünschte, dynamisch benannte Festplatten auszuschließen, sondern statt dessen Geräte mit festen Plattenbezeichnungen/Mustern zu erlauben und den Rest auszuschließen.

Beispiel

Code: Alles auswählen

# cd /dev/disk/by-id

#  ls -l | grep 'sd[a-f]$'

lrwxrwxrwx 1 root root  9 Apr  7 22:15 ata-HGST_HUS724040ALE640_PK2381PAJR4GWT -> ../../sde
lrwxrwxrwx 1 root root  9 Apr  7 22:15 ata-HGST_HUS724040ALE640_PK2381PAJSH6VT -> ../../sdd
lrwxrwxrwx 1 root root  9 Apr  7 22:15 ata-HGST_HUS724040ALE640_PK2381PAJSH6ZT -> ../../sdf
lrwxrwxrwx 1 root root  9 Apr  7 22:15 ata-HGST_HUS724040ALE640_PK2381PAJSU69T -> ../../sdc
lrwxrwxrwx 1 root root  9 Apr  7 22:15 ata-WDC_WD5002ABYS-02B1B0_WD-WCASYD628476 -> ../../sda
lrwxrwxrwx 1 root root  9 Apr  7 22:15 ata-WDC_WD5003ABYX-01WERA1_WD-WMAYP5110794 -> ../../sdb

Von obigen Platten möchte ich jetzt die Platten mit den Endbezeichnungen ...9T und ...ZT einbinden, den Rest nicht. Also ist mein Filter:

Code: Alles auswählen

global_filter = ["a|HUS724040ALE640_PK2381PAJSU69T|,a|HUS724040ALE640_PK2381PAJSH6ZT|,r|.*|"]
Evtl. muss man noch weitere Muster einbinden.

Für Deinen Fall brauchst Du das ja eigentlich nicht. Dein PV liegt ja auf dem Software-RAID, was wahrscheinlich immer als /dev/md126 benannt sein wird.

Code: Alles auswählen

global_filter = [ "a|/dev/md.*|, r|.*|" ]
Anmerkung zu RAID-5

Regelmässige RAID-Überprüfung durchführen! Wenn erst mehr als eine Platte defekte Sektoren hat, dann ist es mit einer normalen Wiederherstellung schon vorbei! (Siehe hier(englisch): https://raid.wiki.kernel.org/index.php/ ... the_drives)
Zuletzt geändert von heisenberg am 16.04.2020 00:57:49, insgesamt 1-mal geändert.

djtobyy
Beiträge: 4
Registriert: 16.04.2020 00:01:17

Re: LVM device ignorieren

Beitrag von djtobyy » 16.04.2020 00:57:30

heisenberg hat geschrieben: ↑ zum Beitrag ↑
16.04.2020 00:30:08
Die Vorgabe von global_filter ist es alle passenden Geräte zu akzeptieren ( [" a|.*|"]).

Eine Möglichkeit ist es jetzt nicht unerwünschte, dynamisch benannte Festplatten auszuschließen, sondern statt dessen Geräte mit festen Plattenbezeichnungen/Mustern zu erlauben und den Rest auszuschließen.

[...] Also ist mein Filter:

Code: Alles auswählen

global_filter = ["a|HUS724040ALE640_PK2381PAJSU69T|,a|HUS724040ALE640_PK2381PAJSH6ZT|,r|.*|"]
Evtl. musst Du noch weitere Muster einbinden.

Für Deinen Fall brauchst Du das ja eigentlich nicht. Dein PV liegt ja auf dem Software-RAID, was wahrscheinlich immer als /dev/md126 benannt sein wird.

Code: Alles auswählen

global_filter = [ "a|/dev/md.*|, r|.*|" ]
Danke für's schnelle Antworten, geht ja schneller als 'ne Rakete - hätte ich nicht erwartet :)

Prinzipiell stimme ich dir bei deinen Aussagen voll zu.
Kann denn LVM mit solch ID's umgehen wie du sie bspw. nutzt? Das würde mir ja auch schon helfen. Wenn ja - wo in der Konfig setze den discovery auf ID's statt auf Device Names?

Bezüglich nur Devices zu akzeptieren welche genutzt werden sollen:
Gebe ich dir auch voll recht, mein Problem ist es allerdings dass ich eine Proxmox Virtualisierung hierauf betreibe und diese mehreer LVM benutzt. Ich habe aktuell 3 VG's zu unterschiedlichen Disks. Da ich hier dynamisch bleiben möchte (ohne Anpassungen vor zu nehmen bei neuen Disk's), würde ich lieber die Variante mit dem exclude wählen. Prinzipiell bin ich aber bei dir - ist nur meine bevorzugte Variante.

LG
Tobi

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: LVM device ignorieren

Beitrag von heisenberg » 16.04.2020 01:07:06

Da ich hier dynamisch bleiben möchte (ohne Anpassungen vor zu nehmen bei neuen Disk's), würde ich lieber die Variante mit dem exclude wählen. Prinzipiell bin ich aber bei dir - ist nur meine bevorzugte Variante.
Kann ich mir nicht vorstellen, wie das gehen sollte. Ich gehe mal davon aus, dass LVM ungefähr so arbeitet.
  1. Erstelle eine Liste mit potentiellen Geräten

    Code: Alles auswählen

    pvscan -vvv 2>&1  | grep -i "found dev"
            Found dev 202:16 /dev/xvdb - new.
            Found dev 202:17 /dev/xvdb1 - new.
            Found dev 202:17 /dev/disk/by-partuuid/0000e64c-01 - new alias.
            Found dev 202:17 /dev/disk/by-uuid/c854c02f-3bb8-4ae5-8c17-ac44f1ecfd59 - new alias.
            Found dev 202:18 /dev/xvdb2 - new.
            Found dev 202:18 /dev/disk/by-id/lvm-pv-uuid-1NjCmw-GfpB-vCJo-qQeE-L2uB-6M6e-7fKA8q - new alias.
            Found dev 202:18 /dev/disk/by-partuuid/0000e64c-02 - new alias.
            Found dev 254:0 /dev/dm-0 - new.
            Found dev 254:0 /dev/disk/by-id/dm-name-vg_sys-root - new alias.
            Found dev 254:0 /dev/disk/by-id/dm-uuid-LVM-CeDDq8yqpN4oZ5D5phxyq7B4pcDqXpBeoCWwWm3Lno4ccLTHAWjZdi2oxfsZtTPG - new alias.
            Found dev 254:0 /dev/disk/by-uuid/38441949-6795-45bb-8e28-9b10aa5f6128 - new alias.
            Found dev 254:0 /dev/mapper/vg_sys-root - new alias.
            Found dev 254:0 /dev/vg_sys/root - new alias.
            Found dev 254:1 /dev/dm-1 - new.
            Found dev 254:1 /dev/disk/by-id/dm-name-vg_sys-swap - new alias.
            Found dev 254:1 /dev/disk/by-id/dm-uuid-LVM-CeDDq8yqpN4oZ5D5phxyq7B4pcDqXpBe0HV74OBNJXlGTOozjbK2FnKQxRlhpxi7 - new alias.
            Found dev 254:1 /dev/disk/by-uuid/bd446c13-f691-40d1-bf52-2ec7462dc5c9 - new alias.
            Found dev 254:1 /dev/mapper/vg_sys-swap - new alias.
            Found dev 254:1 /dev/vg_sys/swap - new alias.
    
  2. Wende die Filter darauf an
Das bedeutet, dass die gleichen Festplatten mehrfach in dieser Liste auftauchen. Wenn Du mittels selektivem Ausschluß arbeiten möchtest, dann bekommst Du den Ausschluß für bestimmte Geräte aber nur dann vollständig, wenn Du alle Einträge der gleichen Festplatte mit einem reject-Filter entfernst. D. h. Du musst alle Bezeichnungen der Festplatte im Voraus wissen. Das ist aber nicht der Fall, da ja einige Bezeichnungen dynamisch sind. Also ich sehe nur den von mir beschriebenen Weg. Man mag mich korrigieren, wenn's auch anders gehen sollte.

Mehr Informationen findest Du in den Man-pages zu lvm, pvscan und in der gut dokumentieren Konfigurationsdatei /etc/lvm/lvm.conf

Nachtrag

Ich habe mir die lvm.conf mal durchgelesen. Da steht drin, wie's geht. Auch mit Deiner Wunschvorstellung. Aber das überlasse ich mal Dir - als Ermunterung dazu, sich selbst ein Erfolgserlebnis zu schaffen. Das, was ich oben in diesem Beitrag geschrieben habe, stimmt also nicht.

Ansonsten: Danke für die interessante Frage und den gut lesbaren Anfangsbeitrag!

djtobyy
Beiträge: 4
Registriert: 16.04.2020 00:01:17

Re: LVM device ignorieren

Beitrag von djtobyy » 16.04.2020 08:29:56

heisenberg hat geschrieben: ↑ zum Beitrag ↑
16.04.2020 01:07:06
[...]

Nachtrag

Ich habe mir die lvm.conf mal durchgelesen. Da steht drin, wie's geht. Auch mit Deiner Wunschvorstellung. Aber das überlasse ich mal Dir - als Ermunterung dazu, sich selbst ein Erfolgserlebnis zu schaffen. Das, was ich oben in diesem Beitrag geschrieben habe, stimmt also nicht.

Ansonsten: Danke für die interessante Frage und den gut lesbaren Anfangsbeitrag!
Danke für deine Mühe!

Leider sehe ich den Wald vor lauter Bäumen nicht mehr.
Ich habe mir die lvm.conf nochmals durchgelesen und finde leider genau diese Option nicht.
Kannst du mir evtl. doch auf die Sprünge helfen?

PS: Ein guter Anfangsbeitrag, trägt zur Lösungsfindung bei :THX: :wink:
Ich will ja das man mein Problem auch versteht :)

LG
Tobi

djtobyy
Beiträge: 4
Registriert: 16.04.2020 00:01:17

Re: LVM device ignorieren

Beitrag von djtobyy » 16.04.2020 12:03:23

Nachtrag:

Gibt es die Möglichkeit evtl. sogar nach "TYPE" zu filtern?

Code: Alles auswählen

root@proxmox:~#  blkid
/dev/sdb: TYPE="isw_raid_member"
/dev/sdc: TYPE="isw_raid_member"
/dev/sdd: TYPE="isw_raid_member"
/dev/md126: UUID="XYZ1" TYPE="LVM2_member"
/dev/mapper/raid-vm--116--disk--1: UUID="XYZ" TYPE="xfs"

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: LVM device ignorieren

Beitrag von heisenberg » 16.04.2020 13:11:39

Tip

Code: Alles auswählen

        # Configuration option devices/preferred_names.
        # Select which path name to display for a block device.
        # If multiple path names exist for a block device, and LVM needs to
        # display a name for the device, the path names are matched against
        # each item in this list of regular expressions. The first match is
        # used. Try to avoid using undescriptive /dev/dm-N names, if present.
        # If no preferred name matches, or if preferred_names are not defined,
        # the following built-in preferences are applied in order until one
        # produces a preferred name:
        # Prefer names with path prefixes in the order of:
        # /dev/mapper, /dev/disk, /dev/dm-*, /dev/block.
        # Prefer the name with the least number of slashes.
        # Prefer a name that is a symlink.
        # Prefer the path with least value in lexicographical order.
        # 
        # Example
        preferred_names = [ "^/dev/mpath/", "^/dev/mapper/mpath", "^/dev/[hs]d" ]

Antworten