Comment afficher toutes les partitions dans un format arborescent (primaire, étendu et logique)?

11

J'essaie de trouver quelque chose qui ressemble à la sortie de findmntmais avec des volumes à la place des points de montage (exemple):

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

Le show de TYPE et FSTYPE est optionnel, ce qui m'intéresse le plus c'est la disposition des arbres.

La sortie de lsblkest quelque peu incomplète car elle ne montre pas les différences entre les partitions primaires, étendues et logiques. (Je sais que je suis difficile ici):

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

Je sais que sda4partition étendue comprend sda5, sda6, sda7, sda8partitions logiques; mais si je voyais quelqu'un d'autre sortir, je ne le saurais pas. Si au lieu de partet diskcela dit pri loget extserait une bonne alternative, au moins je connais la relation. Mais puisque tous sont parts ... pas bon.

sudo fdisk -l production:

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
la source

Réponses:

5

Si tout ce que vous voulez est un lsblkqui vous montre les partitions primaires / logiques, vous devriez pouvoir le faire avec une combinaison de fdisket l'analyse. fdisk -lsi exécuté en tant que root listera toutes les partitions et marquera celles étendues avec 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

Vous pouvez ensuite combiner cela avec une petite analyse pour obtenir la sortie souhaitée:

$ 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]

Je pense que c'est le mieux que vous puissiez faire car findmntne montrera pas les partitions étendues car elles ne seront jamais montées. Sinon, vous pourriez l'analyser de la même manière.

terdon
la source
5

blkid

Vous pouvez utiliser la commande blkidpour afficher quelque chose dans ce sens:

$ 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" 

J'ai supprimé les UUID d'en haut et les ai remplacés par des X. La commande blkidpeut également prendre des arguments si vous souhaitez une sortie différente.

Par exemple:

$ 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

Un outil alternatif à blkidis lsblk. Vous pouvez utiliser les options suivantes pour répertorier tous les périphériques de bloc:

$ 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  

Vérifiez son utilisation, cela prend des options supplémentaires.

slm
la source
Malheureusement, cela ne me montre ni les volumes étendus ni l'organisation.
Braiam
@Braiam - Je vois ce que vous cherchez, vous voulez aussi voir les partitions dans les partitions étendues. Hmm ...
slm
@Braiam - cela aide-t-il?
slm
J'ai regardé cela tôt, je n'ai pas obtenu les résultats escomptés. Il me montre les partitions mais je n'ai aucun moyen de différencier les volumes logiques des volumes primaires ... mm ... plus d'épaississement ...
Braiam
3

Vous pouvez répertorier les types de partitions avec 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

Il n'y a pas d'arbre mais cela peut aider, car comme vous l'avez dit, il serait bon de connaître au moins la relation. Si vous souhaitez utiliser l'interface graphique, vous pouvez essayer avec GParted:

entrez la description de l'image ici

Nykakin
la source
J'ai regardé cela tôt, je n'ai pas obtenu les résultats escomptés. Il me montre les partitions mais je n'ai aucun moyen de différencier les volumes logiques des volumes primaires ... mm ... plus d'épaississement ...
Braiam
1
@Braiam, j'ai mis à jour ma réponse. Malheureusement, je n'ai trouvé aucun moyen en ligne de commande pour répertorier les arbres.
Nykakin
Semble que ce sera la seule solution ... btw, corrige cette partition NTFS: P
Braiam
Ce n'est qu'un écran du Web, comme vous le voyez, c'est différent de la sortie de la ligne de commande :)
Nykakin