[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Linux] Abhaengigkeiten von Blockdevices visualisieren
[Thread Prev] | [Thread Next]
[Date Prev] | [Date Next]
- Subject: [Linux] Abhaengigkeiten von Blockdevices visualisieren
- From: Raphael Eiselstein <rabe@xxxxxxxxx>
- Date: Sun, 1 Dec 2013 03:40:20 +0100
- To: uugrn@xxxxxxxxxxxxxxx
Hallo, jeder der ein etwas komplexeres Setup hat als ein Rechner mit einer Festplatte mit ein paar Partitionen kennt vielleicht irgendwann das Problem, dass die Schichten zwischen realer Storage-Hardware (Festplatten, Blockdevices, ...) und Dateisystemen beliebig komplex sein koennen. Gibt es ein Tool, mit dem man den kompletten Abhaengigkeitsbaum zwischen konkreter Hardware und einem Filesystem analysieren und ggf. darstellen kann? Beispiel fuer eine komplexe Struktur die ich meine (ASCII-Art, ggf Darstellung auf monospaced font aendern): Linux-1 +--SATA-1 | +--/dev/sda | | +--/dev/sda1 -----. | | `--/dev/sda2 --. | | | | | | +--/dev/sdb | | | | +--/dev/sdb1 --|--+ | | | | | | | | | /dev/md0 | | | | `-- /boot [ext2] | | +--/dev/sdb2 --+ | | | | | /dev/md1 | | `--- /dev/dm0 [alias md1_crypt] | | `-- lvm2 [pv] | | `--/dev/vg01 | | +-- lvroot | | | `-- / [xfs] | | +-- lvswap | | | `-- [swap] | | +-- lvhome | | | `-- /home [xfs] | | [... ... ...] | `--/dev/sdc | +--/dev/sdc1 | | `-- /foo | `--/dev/sdc2 | `-- /dev/dm9 [sdc2_crypt] | `-- lvm2 [pv] | `-- /dev/vg02 | +-- lvbackup | | `-- /backup | `-- lvarchive | `-- /archive +--SATA-2 | +--/dev/sdd [GPT] | | `--/dev/sdd1 | | `-----------. | | | | `--/dev/sde [GPT] | | `--/dev/sde1 | | `-----------+ | | | mirror-0 [vdev: mirror sdd1 sde1] | `-- tank [zpool] | +-- /tank [zfs, mountpoint] | +-- tank/foo | | `-- /some/where [zfs, mountpoint] | +-- tank/bar | | `-- /tank/bar [zfs, mountpoint] | +-- tank/baz | | `-- /baz [zfs, mountpoint] | +-- tank/foo [zvol, blockdevice] | | `-- /dev/zvol/tank/foo [aka zd0] | | `-- /foo [xfs auf /dev/zd0] | `-- tank/test [zvol, blockdevice] | `-- /dev/zvol/tank/test [aka zd16] | `-- /test [vfat auf /dev/zd16] | `-- SATA-3 `--/dev/sdf [GPT] `-- /dev/sdf1 `-- /dev/drbd0 (primary) <~~~~~~~~ drbd ~~~~~~~~~~> Linux-2 (secondary) `-- /ha [xfs, mountpoint] * Ja, das ist nicht vollstaendig konsistent, denn Hardware-zentrisch muesste es ausgehend vom Mainboard ueber die PCI-Busse zu den Controllern zu den Platten hin aufgebaut sein. Dabei muesste die konkrete Hardware und deren "device-node" aus Sicht vom Betriebssystem getrennt dargetellt werden. * Es gibt lokale Blockdevices, die ohne (lokalen) physikalischen Storage auskommen, etwa RAM-Disks, iSCSI (da ist die Hardware *anderswo*) oder weitaus komplexere Szenarien, bei denen zB Dateien im Dateisystem auf dem lokalen Host als Festplatten innerhalb von VirtualMachines (Xen, VirtualBox, quemu, ... ) abgebildet werden koennen. * Manche Blockdevices sind zwar in Hardware immer Verfuegbar aber nur zeitweise lokal sichtbar, zB auf einem drbd-secondary. * Bind-Mounts sind beliebt, um einen Teil des Filesystems lokal anderswohin zu mounten, etwa /ha/www nach /var/www. Ausgehend von /var/www ist dann /ha/www Provider das wiederum auf drbd aufsetzt, welches vielleicht noch ein lvm unten drunter hat bevor es ganz unten auf realer Hardware landet. * Was sicherlich eine Herausforderung darstellt ist, dass es unter Linux durchaus ueblich und verbreitet ist, bestimmte Devices via Symlinks in /dev/ als Alias anzulegen und dass die aufeinander aufbauenden Layer jeweils verschiedene Devices nutzen, zB /dev/sde1: | /dev/disk/by-path/pci-0000:02:00.0-scsi-3:0:0:0-part1 -> ../../sde1 | /dev/disk/by-id/wwn-0x5***********-part1 -> ../../sde1 | /dev/disk/by-id/scsi-SATA_XXXX_YYYYY###########-part1 -> ../../sde1 | /dev/disk/by-id/ata-XXXXXXX_YYYYYYY_ZZZZZZZZZZZ-part1 -> ../../sde1 | /dev/block/8:65 -> ../sde1 | /dev/sde1 Das kann schon beim manuellen Zusammensuchen der Abhaengigkeiten zu Konfusionen fuehren, zB wenn ein zpool aus einem mirror aus 2 devices besteht, die jeweils als /dev/disk/by-id/XYZ-*-part1 verwendet werden, und man zB beim Ausfall einer Platte nicht mehr auf direktem Weg nachvollziehen kann, an welchem Controller und Port die konkrete defekte Platte denn nun eigentlich haengt (oder vor dem Reset hing). Schon allein um hier eine *sinnvolle* Dokumentation zu ermoeglichen waere ein Visualisierungstool echt nuetzlich. Sowas muss es doch schon fertig geben? Viele Gruesse Raphael -- Raphael Eiselstein <rabe@xxxxxxxxx> http://rabe.uugrn.org/ xmpp:freibyter@xxxxxx | https://www.xing.com/profile/Raphael_Eiselstein PGP (alt): E7B2 1D66 3AF2 EDC7 9828 6D7A 9CDA 3E7B 10CA 9F2D PGP (neu): 4E63 5307 6F6A 036D 518D 3C4F 75EE EA14 F625 DB4E .........|.........|.........|.........|.........|.........|.........|.. -- UUGRN e.V. http://www.uugrn.org/ http://mailman.uugrn.org/mailman/listinfo/uugrn Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste Archiv: http://lists.uugrn.org/