«Fdisk -l» comme une liste de partitions et leurs types pour les volumes logiques LVM?

22

Vous savez comment "fdisk -l" répertorie les tables de partitions de lecteur et affiche l'ID / types de partition pour chaque partition?

Existe-t-il un moyen similaire d'obtenir l'ID de partition pour les volumes logiques LVM?

EDIT: Je connais "lvs", qui est surtout ce que je recherche (il me donne la liste des volumes logiques, un peu comme "fdisk -l" ... sauf qu'il serait également utile de savoir ce que les types de partition des volumes logiques (que j'aime à considérer comme des "partitions virtuelles"). Cette info est ce que "fdisk -l" répertorie dans les deux dernières colonnes à droite. (Comme "8e" pour un physique Partition LVM, ou "83" pour Linux ext, etc.).

L'outil que je recherche peut ne pas faire partie de LVM; peut-être juste un autre utilitaire qui peut imprimer les identifiants / types de partition en fonction d'une partition?


la source
1
Essayez cat /etc/fstabd'afficher le type du système de fichiers, même avec lvm ... Cela semble évident, mais cela répond à la question ...

Réponses:

16

L'ID de partition pour Linux LVM est 8e, rapporté par fdisk.

$ sudo fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00008ec7

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1013     8136891   8e  Linux LVM
/dev/sda2            1014        1044      249007+   5  Extended
/dev/sda5            1014        1044      248976   83  Linux

LVM est une couche d'abstraction au-dessus du périphérique de stockage pour vous faciliter la gestion. Je ne sais pas quelles informations au-delà de ce que fdisk vous fournit, car l'ID de partition pour LVM est affiché. Cependant, pour plus d'informations sur les volumes logiques LVM, vous pouvez utiliser «lvscan», «lvs» et «lvdisplay».

$ sudo lvscan 
  ACTIVE            '/dev/ops1test/root' [7.35 GB] inherit
  ACTIVE            '/dev/ops1test/swap_1' [388.00 MB] inherit

$ sudo lvs 
  LV     VG       Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  root   ops1test -wi-ao   7.35G                                      
  swap_1 ops1test -wi-ao 388.00M                                      

$ sudo lvdisplay
  --- Logical volume ---
  LV Name                /dev/ops1test/root
  VG Name                ops1test
  LV UUID                BfKOpy-L7Ql-905o-7tFk-nnsV-0c7I-w4g9y6
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                7.35 GB
  Current LE             1881
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Name                /dev/ops1test/swap_1
  VG Name                ops1test
  LV UUID                8SNfQ9-Hlfk-Edsb-vmL1-DeE3-nBRR-YAM1dV
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                388.00 MB
  Current LE             97
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

De même, vous pouvez apprendre des informations sur le groupe de volumes lui-même avec 'vgscan', 'vgs' et 'vgdisplay'.

$ sudo vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "ops1test" using metadata type lvm2

$ sudo vgs
  VG       #PV #LV #SN Attr   VSize VFree 
  ops1test   1   2   0 wz--n- 7.76G 32.00M

$ sudo vgdisplay
  --- Volume group ---
  VG Name               ops1test
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               7.76 GB
  PE Size               4.00 MB
  Total PE              1986
  Alloc PE / Size       1978 / 7.73 GB
  Free  PE / Size       8 / 32.00 MB
  VG UUID               ofpvks-2EDZ-limu-0wAh-tYUN-ISG3-mSS65O
jtimberman
la source
4
Aussi: pvs, pvdisplay et pvscan pour obtenir des données sur les volumes physiques ...
freiheit
9

Les volumes logiques n'ont pas de "type" comme les anciennes partitions DOS. Comme les fichiers Unix, vous devrez les lire pour savoir de quoi il s'agit. Quelque chose comme ça devrait faire l'affaire:

lvs --all --noheadings | while read lv vg rest; do file --dereference --special-files "/dev/mapper/$(echo $vg | sed 's/-/--/')-$lv"; done

Voici un exemple de sortie que cette commande donnerait (un peu tronquée):

[...]
/dev/mapper/VolGroup00-LogVol00: Linux rev 1.0 ext4 filesystem data, UUID=b000000e-00f0-0cde-b000-fa0d000ddc00 (extents) (64bit) (large files) (huge files)
[...]
Teddy
la source
2
Très bonne réponse. Il semble que personne d'autre n'ait compris ce que le PO demandait. J'ai dû apporter une modification à votre script: j'ai ajouté l'option --dereference à la commande file. Chaque LV est lié à / dm-X par le mappeur de périphériques.
codewaggle
1
@codewaggle Merci; option ajoutée. Quand j'ai écrit la réponse en '09, l'option n'était pas nécessaire, mais les temps changent.
Teddy
2
Cela devrait être la réponse acceptée!
lanoxx
1
Ne fonctionne pas lorsque lorsque vous avez des tirets dans votre nom VG, ceux-ci sont doublés, a mis à jour la réponse. Peut-être que le même problème s'applique aux noms LV, mais je n'ai pas testé cela.
sjas
6

LVM est une abstraction au-dessus des disques physiques.

Les volumes logiques (sur lesquels vous pouvez formater et placer des fichiers) sont alloués à partir de groupes de volumes, qui peuvent être constitués d'une ou de plusieurs extensions physiques - les partitions de disque physiques réelles.

Votre question n'est pas claire. Si vous souhaitez afficher sur quelles partitions de disque un volume logique réside physiquement, lvdisplay --maps peut vous aider:

# lvdisplay --maps
  --- Volume logique ---
  Nom LV / dev / VolGroup00 / root
  VG Name VolGroup00
  UUID LV xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx
  Accès en écriture LV en lecture / écriture
  Statut LV disponible
  # ouvert 1
  Taille LV 5,00 Go
  Entreprise actuelle LE 160
  Segments 1
  Héritage d'allocation
  Lire à l'avance secteurs auto
  - actuellement fixé à 256
  Bloquer le périphérique 253: 0

  --- Segments ---
  Étendue logique 0 à 159:
    Type linéaire
    Volume physique / dev / sda2
    Étendues physiques 0 à 159
tfh1985
la source
Ne répondant pas à la question, mais la seule façon de vérifier si votre LV est fragmenté ou non. Upvote, je n'ai encore vu ça nulle part ailleurs.
sjas
6

Les volumes logiques n'ont pas de concept de "type", ce ne sont que des périphériques blocs. Si vous souhaitez examiner le contenu d'un périphérique de bloc et déterminer ce qu'il contient, vous pouvez regarder l' blkidoutil, qui fait exactement cela.

womble
la source
5

1) Un volume logique n'est PAS une partition de disque (physique). Il s'agit d'un périphérique de bloc virtuel créé à l'intérieur du noyau Linux avec Device Mapper. C'est une technologie que l'on peut utiliser pour configurer un périphérique à bloc unique en utilisant deux partitions de disque ainsi que deux périphériques de bloc en utilisant une seule partition de disque, et bien plus encore.

# dmsetup targets 

Si vous voulez en savoir plus sur DM, visitez sa page d'accueil , consultez ses pages de manuel , lisez le manuel RedHat ou par exemple cet article. C'est une excellente technologie qui n'est mentionnée que sur Wikipedia.

2) Par exemple, sur mon ordinateur personnel, j'ai des partitions de disques physiques ainsi que des périphériques DM (volumes logiques).

# cat /proc/partitions

nom mineur majeur #blocs

   3     0   80043264 hda
   3     1     204800 hda1
   3     2   79831029 hda2
   3    64   19589976 hdb
   3    65     104391 hdb1
   3    66   19478812 hdb2
 253     0   17432576 dm-0
 253     1    2031616 dm-1
 253     2   77762560 dm-2
 253     3    2064384 dm-3

Principalement, ils n'ont pas de type ou d'ID, ils sont définis avec juste le numéro du secteur de départ et la longueur.

# dmsetup status -j 253 -m 0
0 34865152 linear

Donc, dm-0 est un fragment composé de 34865152 secteurs d'un périphérique physique.

# dmsetup deps -j 253 -m 0
1 dependencies  : (3, 66)

Et cet appareil est la partition / dev / hdb2!

# fdisk /dev/hdb
Command (m for help): p
   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1   *           1          13      104391   83  Linux
/dev/hdb2              14        2438    19478812+  8e  Linux LVM

Et c'est une partition de type LVM (8e), mentionnée par timberman.

# pvs
  PV         VG         Fmt  Attr PSize  PFree
  /dev/hda2  VolGroup   lvm2 a-   76,13G    0 
  /dev/hdb2  VolGroup00 lvm2 a-   18,56G    0 

Cette partition de disque unique (physique) peut contenir des volumes logiques au sein d'un groupe. J'ai deux disques, il y a donc deux de ces groupes et chaque groupe contient deux périphériques logiques.

# lvs
  LV       VG         Attr   LSize  Origin Snap%  Move Log Copy%  Convert
  lv_root  VolGroup   -wi-a- 74,16G                                      
  lv_swap  VolGroup   -wi-a-  1,97G                                      
  LogVol00 VolGroup00 -wi-ao 16,62G
  LogVol01 VolGroup00 -wi-ao  1,94G 

Donc dm-0 et dm-1 sont deux LVs (lvroot et lvswap) créés sur ma partition / dev / hdb2 de mon premier disque (avec CentOS) tandis que dm-2 et dm-3 sont des LVs créés sur ma partition / dev / hda2 de mon deuxième disque (avec Fedora).

Les périphériques logiques peuvent avoir des étiquettes (UUID). Vous pouvez les vérifier avec la commande lvdisplay, mentionnée ci-dessus. Mais ce ne sont que des étiquettes, que vous pouvez utiliser (-u) au lieu de nombres majeurs et mineurs (commutateurs -j -m).

Wojciech Domalewski
la source
4

Lsblk fournit-il les informations dont vous avez besoin?

[root@localhost ~]# lsblk -o TYPE,NAME,KNAME,UUID,MOUNTPOINT,SIZE                                                                                                                                                                        
TYPE NAME                KNAME UUID                                   MOUNTPOINT  SIZE
rom  sr0                 sr0   2014-07-04-15-59-23-00                             362M
disk vda                 vda                                                        1G
part └─vda1              vda1  7eadd712-6571-4722-8a5e-5d419176f6dc   /boot      1023M
disk vdb                 vdb   eVbl9d-dxf0-yqiV-evZC-FHPB-RrZb-eb1897              20G
lvm  ├─vg_system-lv_swap dm-0  44bb22f8-d8c6-482c-8763-36ee58c2528e   [SWAP]        1G
lvm  ├─vg_system-lv_usr  dm-1  c1f9ac62-17a3-4dfa-88b6-6a26394dd270   /usr          2G
lvm  ├─vg_system-lv_root dm-2  6724461a-2401-42ec-8180-fb7582040b68   /            10G
lvm  ├─vg_system-lv_var  dm-3  f2044fb7-5a64-4ae3-8407-891f75aba534   /var          2G
lvm  └─vg_system-lv_home dm-4  8ad80cce-bdf4-43e9-b755-b987169ed062   /home         2G
[root@localhost ~]# 
Mark V
la source
0

Les volumes logiques n'ont pas d'ID ou de type de partition. Ils sont composés d' extensions physiques (PE) qui peuvent être réparties sur plusieurs volumes physiques (PV), chacun pouvant être une partition (par exemple / dev / sda2) ou un disque complet (par exemple / dev / sdb).

pgs
la source
0

L'identifiant du type de partition est stocké uniquement dans la table de partition, pas sur la partition elle-même. D'un autre côté, les volumes logiques LVM sont normalement traités comme des partitions individuelles, pas comme des disques, il n'y a donc pas de table de partition et donc pas d'ID de type de partition à rechercher.

Notez également que l'ID de type est uniquement à des fins informatives sous Linux (ce n'est pas vrai pour Windows, cependant). Il n'a aucune incidence sur le contenu et le système de fichiers de cette partition.

Eduard - Gabriel Munteanu
la source
0

Je pense que cette commande en ligne pourrait aider:

for i in $(df -h | grep mapper | cut -d" " -f1); do echo $i; lvdisplay --maps $i | grep "Physical volume"; done

La sortie est similaire à ceci:

/dev/mapper/myserver-root
    Physical volume /dev/sda5
/dev/mapper/SambaShares
    Physical volume /dev/sdb1
    Physical volume /dev/sdo1
    Physical volume /dev/sdp
/dev/mapper/Test--Disc
    Physical volume /dev/sdf1
    Physical volume /dev/sdg1
    Physical volume /dev/sdh1
    Physical volume /dev/sdi1
/dev/mapper/Clonezilla-partimag
    Physical volume /dev/sdk1
    Physical volume /dev/sdj1
    Physical volume /dev/sdl1
    Physical volume /dev/sdm1
    Physical volume /dev/sdn1
    Physical volume /dev/sdq1
bLuEdDy
la source
0

Si vous regardez le post précédent de "Mark V", vous verrez que la commande lsblk a été utilisée.

C'est une excellente option, mais le PO a demandé le type qui a été omis de la plupart des réponses. En utilisant lsblk ci-dessus et en ajoutant "FSTYPE", vous obtenez le type attendu:

# lsblk -o TYPE,NAME,KNAME,UUID,MOUNTPOINT,SIZE,FSTYPE
TYPE NAME               KNAME UUID                                   MOUNTPOINT  SIZE FSTYPE
disk fd0                fd0                                                        4K
disk sda                sda                                                      100G
part ├─sda1             sda1  a6f1731f-e2bf-4dae-a443-269b079388a6   /boot         1G xfs
part ├─sda2             sda2  6CCtv5-HHYq-aXDm-m4jj-IpD3-rfv7-AI57D9              49G 
LVM2_member
lvm  │ ├─cl_hadron-root dm-0  0c8bfb8b-ec32-4152-9abd-b6bc5c475b00   /            97G xfs
lvm  │ └─cl_hadron-swap dm-1  8aeeadab-69da-49ff-991d-dad8857fb82b   [SWAP]        2G 
swap
# 
Ed Davison
la source