"Fdisk -l" come un elenco di partizioni e dei loro tipi per i volumi logici LVM?


22

Sai come "fdisk -l" elenca le tabelle delle partizioni dell'unità e mostra l'ID / i tipi di partizione per ogni partizione?

Esiste un modo simile per ottenere l'id della partizione per i volumi logici LVM?

EDIT: Sono a conoscenza di "lvs", che è principalmente quello che sto cercando (mi dà l'elenco dei volumi logici, un po 'come "fdisk -l" ... tranne che sarebbe utile anche sapere cosa sono i tipi di partizione dei volumi logici (che mi piace pensare come "partizioni virtuali"). Quelle informazioni sono ciò che "fdisk -l" elenca sulle ultime due colonne a destra (come "8e" per un fisico Partizione LVM o "83" per Linux ext, ecc.).

Lo strumento che sto cercando potrebbe non far parte di LVM; forse solo qualche altra utility in grado di stampare ID / tipi di partizione dati una partizione?


1
Prova cat /etc/fstaba visualizzare il tipo di filesystem, anche con lvm ... Sembra ovvio, ma risponde alla domanda ...

Risposte:


16

L'ID della partizione per Linux LVM è 8e, riportato da 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 è uno strato di astrazione nella parte superiore del dispositivo di archiviazione per semplificare la gestione. Non sono sicuro di quali informazioni oltre a ciò che fdisk ti fornisce, perché viene visualizzato l'ID della partizione per LVM. Tuttavia, per ulteriori informazioni sui volumi logici LVM, è possibile utilizzare 'lvscan', 'lvs' e '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

Allo stesso modo, è possibile ottenere informazioni sul gruppo di volumi stesso con 'vgscan', 'vgs' e '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

4
Inoltre: pvs, pvdisplay e pvscan per ottenere dati sui volumi fisici ...
freiheit,

9

I volumi logici non hanno un "tipo" come fanno le vecchie partizioni DOS. Come i file Unix, dovrai leggerli per scoprire cosa sono. Qualcosa del genere dovrebbe fare il trucco:

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

Ecco un esempio per l'output che questo comando darebbe (troncato un po '):

[...]
/dev/mapper/VolGroup00-LogVol00: Linux rev 1.0 ext4 filesystem data, UUID=b000000e-00f0-0cde-b000-fa0d000ddc00 (extents) (64bit) (large files) (huge files)
[...]

2
Bella risposta. Sembra che nessun altro abbia capito cosa chiedesse il PO. Ho dovuto apportare una modifica al tuo script: ho aggiunto l'opzione --dereference al comando file. Ogni LV è collegato a / dm-X dal mapper del dispositivo.
codewaggle

1
@codewaggle Grazie; opzione aggiunta. Quando riscrissi la risposta nel '09, l'opzione non era necessaria, ma i tempi cambiano.
Teddy,

2
Questa dovrebbe essere la risposta accettata!
lanoxx,

1
Non funziona quando quando hai trattini nel tuo nome VG, questi sono raddoppiati, aggiornata la risposta. Probabilmente lo stesso problema si applica ai nomi LV, ma non l'ho provato.
sjas,

6

LVM è un'astrazione sopra i dischi fisici.

I volumi logici (che è possibile formattare e posizionare i file) sono allocati da gruppi di volumi, che possono essere costituiti da una o più estensioni fisiche: le effettive partizioni del disco fisico.

La tua domanda non è chiara. Se si desidera mostrare su quali partizioni del disco risiede fisicamente un volume logico, lvdisplay --maps può aiutare:

# lvdisplay --maps
  --- Volume logico ---
  Nome LV / dev / VolGroup00 / root
  Nome VG VolGroup00
  LV UUID xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx
  Accesso in scrittura LV in lettura / scrittura
  Stato LV disponibile
  # aperto 1
  Dimensione LV 5,00 GB
  Corrente LE 160
  Segmenti 1
  Allocazione ereditaria
  Leggi avanti settori auto
  - attualmente impostato su 256
  Blocca dispositivo 253: 0

  --- Segmenti ---
  Estensione logica da 0 a 159:
    Digita lineare
    Volume fisico / dev / sda2
    Estensioni fisiche da 0 a 159

Non rispondere alla domanda, ma l'unico modo per verificare se il tuo LV è frammentato o meno. Votazione, non l'ho ancora visto da nessun'altra parte.
sjas,

6

I volumi logici non hanno un concetto di "tipo", sono solo dispositivi a blocchi. Se vuoi esaminare il contenuto di un dispositivo a blocchi e determinare cosa c'è dentro, potresti voler guardare lo blkidstrumento, che fa esattamente questo.


5

1) Un volume logico NON è una partizione del disco (fisica). È un dispositivo a blocchi virtuale creato all'interno del kernel Linux con Device Mapper. È una tecnologia che è possibile utilizzare per configurare un dispositivo a blocco singolo utilizzando due partizioni del disco, nonché due dispositivi a blocchi utilizzando una partizione del disco singolo e molto altro.

# dmsetup targets 

Se vuoi sapere di più su DM visita la sua home page , controlla le sue pagine di manuale , leggi il manuale di RedHat o, ad esempio, questo articolo. È una grande tecnologia menzionata solo in Wikipedia.

2) Ad esempio sul mio computer di casa ho partizioni del disco fisico e dispositivi DM (volumi logici).

# cat /proc/partitions

nome minore # blocchi principali

   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

Principalmente non hanno alcun tipo o ID, sono definiti solo con il numero del settore iniziale e la lunghezza.

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

Quindi dm-0 è un frammento costituito da 34865152 settori di alcuni dispositivi fisici.

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

E questo dispositivo è la partizione / 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

Ed è una partizione di tipo LVM (8e), menzionata da timberman.

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

Questa singola partizione del disco (fisica) può contenere volumi logici all'interno di un gruppo. Ho due dischi, quindi ci sono due di questi gruppi e ogni gruppo contiene due dispositivi logici.

# 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 

Quindi dm-0 e dm-1 sono due LV (lvroot e lvswap) creati sulla mia partizione / dev / hdb2 del mio primo disco (con CentOS) mentre dm-2 e dm-3 sono LV creati sulla mia partizione / dev / hda2 del mio secondo disco (con Fedora).

I dispositivi logici possono avere etichette (UUID). Puoi controllarli con il comando lvdisplay, menzionato sopra. Ma sono solo etichette, che puoi usare (-u) invece di numeri maggiori, minori (-j -m switch).


4

Lsblk fornisce le informazioni di cui hai bisogno?

[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 ~]# 

0

I volumi logici non hanno un ID o tipo di partizione. Sono composti da estensioni fisiche (PE) che possono essere distribuite su più volumi fisici (PV), ognuno dei quali potrebbe essere una partizione (ad esempio / dev / sda2) o un disco completo (ad esempio / dev / sdb).



0

L'ID del tipo di partizione viene archiviato solo nella tabella delle partizioni, non nella partizione stessa. D'altra parte, i volumi logici LVM sono normalmente trattati come singole partizioni, non come dischi, quindi non esiste una tabella delle partizioni e quindi nessun ID del tipo di partizione da cercare.

Si noti inoltre che l'id di tipo è solo a scopo informativo in Linux (questo non è vero per Windows). Non ha alcuna influenza sul contenuto e sul filesystem di quella partizione.


0

Penso che questo comando a una riga possa aiutare:

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

L'output è simile a questo:

/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

0

Se guardi il post precedente di "Mark V" vedrai che è stato usato il comando lsblk.

Questa è un'ottima opzione, tuttavia l'OP ha chiesto il tipo che è stato omesso dalla maggior parte delle risposte. Usando lsblk dall'alto e aggiungendo "FSTYPE" ottieni il tipo previsto:

# 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
# 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.