Wie werden alle Partitionen in einem baumartigen Format (primär, erweitert und logisch) angezeigt?

11

Ich versuche etwas zu finden, das der Ausgabe von ähnelt, findmntaber stattdessen Volumes mit Mount-Punkten enthält (Beispiel):

TARGET                       TYPE        FSTYPE  
sda 
├─sda1                       Primary     ext4
│ └─/
├─sda2                       Primary     NTFS    
├─sda3                       Primary     ext4 
│ └─/boot
└─sda4                       Extended
  ├─sda5                     Logical     ext4
  │ └─/home
  └─sda6                     Logical     ext4
    └─/var

Die Show von TYPE und FSTYPE ist optional. Was mich mehr interessiert, ist das Baumlayout.

Die Ausgabe von lsblkist etwas unvollständig, da die Unterschiede zwischen primären, erweiterten und logischen Partitionen nicht angezeigt werden. (Ich weiß, dass ich hier wählerisch bin):

lsblk -a
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 186.3G  0 disk 
├─sda1   8:1    0 106.6G  0 part 
├─sda2   8:2    0  52.8G  0 part /media/F66E431C6E42D551
├─sda3   8:3    0  1023M  0 part [SWAP]
├─sda4   8:4    0     1K  0 part 
├─sda5   8:5    0   953M  0 part /boot
├─sda6   8:6    0   487M  0 part [SWAP]
├─sda7   8:7    0    14G  0 part /
└─sda8   8:8    0  10.5G  0 part /home

Ich weiß , dass sda4erweiterte Partition enthält sda5, sda6, sda7, sda8logische Partitionen; aber wenn ich jemand anderen ausgeben würde, würde ich es nicht wissen. Wenn statt partund diskes sagt pri logund exteine gute Alternative wäre, kenne ich zumindest die Beziehung. Aber da alle parts ... nicht gut sind.

sudo fdisk -l Ausgabe:

Disk /dev/sda: 200.0 GB, 200049647616 bytes
255 heads, 63 sectors/track, 24321 cylinders, total 390721968 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1549f232

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63   223629311   111814624+   7  HPFS/NTFS/exFAT
/dev/sda2       225724416   336437306    55356445+   7  HPFS/NTFS/exFAT
/dev/sda3       223629312   225724415     1047552   82  Linux swap / Solaris
/dev/sda4       336439294   390721535    27141121    5  Extended
/dev/sda5       336439296   338391039      975872   83  Linux
/dev/sda6       338393088   339390463      498688   82  Linux swap / Solaris
/dev/sda7       339392512   368687103    14647296   83  Linux
/dev/sda8       368689152   390721535    11016192   83  Linux

Partition table entries are not in disk order
Braiam
quelle

Antworten:

5

Wenn alles, was Sie wollen, eine ist lsblk, die Ihnen primäre / logische Partitionen anzeigt, sollten Sie dies mit einer Kombination aus fdiskund Parsen tun können . fdisk -lWenn als Root ausgeführt, werden alle Partitionen aufgelistet und erweiterte mit Ext'd:

# fdisk -l | grep dev
Disk /dev/sda: 500.1 GB, 500107862016 bytes
/dev/sda1              63       80324       40131   de  Dell Utility
/dev/sda2   *       81920    30801919    15360000    7  HPFS/NTFS/exFAT
/dev/sda3        30801920   194643539    81920810    7  HPFS/NTFS/exFAT
/dev/sda4       194643601   976773119   391064759+   f  W95 Ext'd (LBA)
/dev/sda5       194643603   198836504     2096451    c  W95 FAT32 (LBA)
/dev/sda6       342951936   960387071   308717568   83  Linux
/dev/sda7       198840320   342949887    72054784   83  Linux
/dev/sda8       960389120   976773119     8192000   82  Linux swap / Solaris

Sie können dies dann mit einer kleinen Analyse kombinieren, um die gewünschte Ausgabe zu erhalten:

$ lsblk -a | perl -lpe 'BEGIN{open(A,"sudo fdisk -l |");
                      while(<A>){next unless /Ext/; 
                                 $k{$1}++ if /^.*?(...\d)\s/; }} 
                      @a=split(/\s+/);
                      $a[0]=~s/\W+//;
                      s/$a[5]/Extended/ if defined($k{$a[0]});'
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk 
├─sda1   8:1    0  39.2M  0 part 
├─sda2   8:2    0  14.7G  0 part 
├─sda3   8:3    0  78.1G  0 part /winblows
├─sda4   8:4    0     1K  0 Extended 
├─sda5   8:5    0     2G  0 part 
├─sda6   8:6    0 294.4G  0 part /home
├─sda7   8:7    0  68.7G  0 part /
└─sda8   8:8    0   7.8G  0 part [SWAP]

Ich denke, das ist das Beste, was Sie tun können, da findmntkeine erweiterten Partitionen angezeigt werden, da diese niemals gemountet werden. Andernfalls können Sie es auf die gleiche Weise analysieren.

terdon
quelle
5

blkid

Mit dem Befehl können Sie blkidetwas in diese Richtung anzeigen:

$ blkid
/dev/sda1: LABEL="SYSTEM_DRV" UUID="XXXXXX" TYPE="ntfs" 
/dev/sda2: LABEL="Windows7_OS" UUID="XXXXX" TYPE="ntfs" 
/dev/sda3: LABEL="Lenovo_Recovery" UUID="XXXX" TYPE="ntfs" 
/dev/sda5: UUID="XXXX" TYPE="ext4" 
/dev/sda6: UUID="XXXX" TYPE="LVM2_member" 
/dev/mapper/vg_grinchy-lv_root: UUID="XXXX" TYPE="ext4" 
/dev/mapper/vg_grinchy-lv_swap: UUID="XXXX" TYPE="swap" 
/dev/mapper/vg_grinchy-lv_home: UUID="XXXX" TYPE="ext4" 

Ich habe die UUIDs von oben entfernt und durch X ersetzt. Der Befehl blkidkann auch Argumente annehmen, wenn Sie eine andere Ausgabe wünschen.

Zum Beispiel:

$ blkid -o list
device                         fs_type      label         mount point                        UUID
----------------------------------------------------------------------------------------------------------------------------------
/dev/sda1                      ntfs         SYSTEM_DRV    (not mounted)                      XXXX
/dev/sda2                      ntfs         Windows7_OS   (not mounted)                      XXXX

lsblk

Ein alternatives Werkzeug zu blkidist lsblk. Sie können die folgenden Optionen verwenden, um alle Blockgeräte aufzulisten:

$ lsblk -a
NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0                          7:0    0         0 loop 
loop1                          7:1    0         0 loop 
loop2                          7:2    0         0 loop 
loop3                          7:3    0         0 loop 
loop4                          7:4    0         0 loop 
loop5                          7:5    0         0 loop 
loop6                          7:6    0         0 loop 
loop7                          7:7    0         0 loop 
sda                            8:0    0 465.8G  0 disk 
├─sda1                         8:1    0   500M  0 part /boot
└─sda2                         8:2    0 465.3G  0 part 
  ├─vg_totoro-lv_root (dm-0) 253:0    0 431.5G  0 lvm  /
  ├─vg_totoro-lv_swap (dm-1) 253:1    0  13.8G  0 lvm  [SWAP]
  └─vg_totoro-lv_home (dm-2) 253:2    0    20G  0 lvm  /home
sr0                           11:0    1  1024M  0 rom  

Überprüfen Sie die Verwendung, es werden zusätzliche Optionen benötigt.

slm
quelle
Leider zeigt es mir weder die erweiterten Bände noch die Organisation.
Braiam
@Braiam - Ich sehe, wonach Sie suchen. Sie möchten die Partitionen auch in den erweiterten Partitionen sehen. Hmm ...
slm
@Braiam - hilft das?
slm
Ich habe so früh nachgesehen und nicht die erwarteten Ergebnisse erzielt. Es zeigt mir die Partitionen, aber ich habe keine Möglichkeit, logische Volumes von primären ... mm ... mehr Verdickung zu unterscheiden ...
Braiam
3

Sie können Partitionstypen auflisten mit parted:

$ sudo parted /dev/sda print
Model: ATA ST3320613AS (scsi)
Dysk /dev/sda: 320GB
Rozmiar sektora (logiczny/fizyczny): 512B/512B
Tablica partycji: msdos

Numer  Początek  Koniec  Rozmiar  Typ       System plików   Flaga
 1     1049kB    318GB   318GB    primary   ext4            ładowalna
 2     318GB     320GB   2145MB   extended
 5     318GB     319GB   1074MB   logical   linux-swap(v1)
 6     319GB     320GB   1071MB   logical   ext2

Es gibt keinen Baum, aber es kann helfen, da es, wie Sie sagten, gut wäre, zumindest die Beziehung zu kennen. Wenn Sie die GUI verwenden möchten, können Sie Folgendes versuchen GParted:

Geben Sie hier die Bildbeschreibung ein

Nykakin
quelle
Ich habe so früh nachgesehen und nicht die erwarteten Ergebnisse erzielt. Es zeigt mir die Partitionen, aber ich habe keine Möglichkeit, logische Volumes von primären ... mm ... mehr Verdickung zu unterscheiden ...
Braiam
1
@Braiam, ich habe meine Antwort aktualisiert. Leider habe ich keine Befehlszeilenmethode für die Baumliste gefunden.
Nykakin
Scheint, dass es die einzige Lösung sein wird ... Übrigens, beheben Sie diese NTFS-Partition: P
Braiam
Es ist nur ein Bildschirm aus dem Internet, wie Sie sehen, unterscheidet es sich von der Befehlszeilenausgabe :)
Nykakin