Project

General

Profile

Actions

Feature #1347

open

Feature #1344: Hardware/Inventarisierung: Masterplan

Festplattenpartitionierung als JSON

Added by Simon Rettberg about 4 years ago. Updated almost 3 years ago.

Status:
Feedback
Priority:
Normal
Start date:
03/19/2020
Due date:
% Done:

90%

Estimated time:

Description

Gleiches gilt für Platten. Wie definiert man eine echte Platte, wie erkennt man die, wie liest man die Partitionierung aus?
(Nein "/dev/sd*" ist leider falsch!)

Reicht der Output von sfdisk oder sgdisk, kann man den gut in JSON umwandeln?

Actions #1

Updated by Jannik Schönartz about 4 years ago

Also mit sfdisk --json kann man sich die Partitionstabelle direkt als JSON ausgeben. (zeft9003)

$ sfdisk --json /dev/nvme0n1

{
   "partitiontable": {
      "label": "gpt",
      "id": "FE386A51-70EB-4886-977F-8AC98D6CD70F",
      "device": "/dev/nvme0n1",
      "unit": "sectors",
      "firstlba": 34,
      "lastlba": 500118158,
      "partitions": [
         {"node": "/dev/nvme0n1p1", "start": 2048, "size": 2099200, "type": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B", "uuid": "28DB187C-07A3-4287-ABEF-595C262284F8", "n
ame": "COB", "attrs": "RequiredPartition GUID:63"},
         {"node": "/dev/nvme0n1p2", "start": 2101248, "size": 262144, "type": "E3C9E316-0B5C-4DB8-817D-F92DF00215AE", "uuid": "457B64C2-4327-4EBA-B6E3-4A10DE800391",
"name": "MSR", "attrs": "GUID:63"},
         {"node": "/dev/nvme0n1p3", "start": 2363392, "size": 125829120, "type": "EBD0A0A2-B9E5-4433-87C0-68B6B72699C7", "uuid": "FADCBBB0-DCDB-44A2-A1F9-A263BDE2C222
", "name": "OS"},
         {"node": "/dev/nvme0n1p4", "start": 495919792, "size": 4196352, "type": "DE94BBA4-06D1-4D40-A16A-BFD50179D6AC", "uuid": "A340E79C-7F62-4F4D-8618-057436616205
", "name": "RBP", "attrs": "RequiredPartition GUID:63"},
         {"node": "/dev/nvme0n1p5", "start": 128192512, "size": 104857600, "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", "uuid": "9461344C-FC3D-4651-8263-B012A8D828
5D", "name": "OpenSLX-ID44"}
      ]
   }
}
Actions #2

Updated by Dirk von Suchodoletz about 4 years ago

Das sieht doch schonmal gut aus ...

Actions #3

Updated by Simon Rettberg about 4 years ago

Sieht doch gut aus. MBR sieht so aus:

# sfdisk --json /dev/sda
{
   "partitiontable": {
      "label": "dos",
      "id": "0x3ae2a574",
      "device": "/dev/sda",
      "unit": "sectors",
      "partitions": [
         {"node": "/dev/sda1", "start": 2048, "size": 83886080, "type": "44"}
      ]
   }
}

Die zu klärende Frage wär jetzt noch, wie groß ein Sektor ist. Weil die Entwickler des Tools besonders schlau waren, haben sie davon abgehesen, da noch ein Feld "sectorsize" rein zu pappen. Richtet sich das also nach der physikalischen Größe der HDD (512/4K) oder immer fix nach der logischen Sektorgröße des Kernels (512)?

Actions #4

Updated by Simon Rettberg about 4 years ago

  • Tracker changed from Bug to Feature
Actions #5

Updated by Simon Rettberg about 4 years ago

  • Assignee set to BAS-Crew
Actions #6

Updated by Michael Janczyk almost 4 years ago

CentOS7 hat noch sfdisk, das json nicht unterstützt: sfdisk from util-linux 2.23.2
Wenn man nur Partitionen braucht, könnte man auch blkid -o export oder lsblk --output verwenden.

Actions #7

Updated by Simon Rettberg almost 3 years ago

Was ist jetzt hier der Stand? Sollte ja kein Hexenwerk sein.

Actions #8

Updated by Jannik Schönartz almost 3 years ago

  • Status changed from New to Feedback
  • Assignee changed from BAS-Crew to Simon Rettberg
  • % Done changed from 0 to 90

Also ich hab wie heute besprochen jetzt mal lsblk und sfdisk hizugefügt und nach platten gruppiert. commit

Folgende parameter werden dabei aufgerufen:

$ sfdisk --json /dev/disk/by-path/<disk>

$ lsblk --json -b --output-all /dev/disk/by-path/<disk>

Das neue Schema sieht so aus:

{
    ...,
    "drives": {
        "<disk_by-path_identifier>": {
            "readlink": "/dev/sr0",
            "smartctl": {...},
            "sfdisk": {...},
            "lsblk": {...}
        }
    }
    ...,
}

Der disk_by-path_identifier ist dann halt was unter /dev/disk/by-path/<identifiert> gefunden wird. Z.B.
pci-0000:00:17.0-ata-1

Beispiel mit Daten...

Bei lsblk gibts halt weder den Sektorstart noch die Anzahl der Sektoren.
Aber sollte so erstmal passen oder?

Actions #9

Updated by Jannik Schönartz almost 3 years ago

Beim schreiben vom Ticketupdate ist mir aufgefallen, dass lsblk auch vermutlich erst ab version 2.27.rc1 den parameter --json hat.

CentOS7 hat noch sfdisk, das json nicht unterstützt: sfdisk from util-linux 2.23.2

Also ist hier die Frage ob wir bei den Servern dann die Partitionstabellen weglassen oder das irgendwie selber von hand parsen?

Actions

Also available in: Atom PDF