¿"Fdisk -l" como lista de particiones y sus tipos para volúmenes lógicos LVM?

22

¿Sabe cómo "fdisk -l" enumera las tablas de particiones de unidades y muestra los id / tipos de partición para cada partición?

¿Hay una forma similar de obtener la identificación de partición para volúmenes lógicos LVM?

EDITAR: conozco "lvs", que es principalmente lo que estoy buscando (me da la lista de volúmenes lógicos, algo así como "fdisk -l" ... excepto que también sería útil saber qué los tipos de partición de los volúmenes lógicos (que me gusta pensar como "particiones virtuales") son. Esa información es lo que "fdisk -l" enumera en las últimas dos columnas a la derecha (como "8e" para un físico Partición LVM, u "83" para Linux ext, etc.).

La herramienta que estoy buscando puede no ser parte de LVM; ¿quizás solo alguna otra utilidad que pueda imprimir identificadores / tipos de partición dada una partición?


fuente
1
Trate cat /etc/fstabde mostrar el tipo de sistema de archivos, incluso con LVM ... Suena obvio, pero responde a la pregunta ...

Respuestas:

16

El ID de partición para Linux LVM es 8e, reportado por 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 es una capa de abstracción en la parte superior del dispositivo de almacenamiento para que sea más fácil administrarlo. No estoy seguro de qué información más allá de lo que fdisk proporciona, porque se muestra la ID de partición para LVM. Sin embargo, para obtener información adicional sobre los volúmenes lógicos LVM, puede usar 'lvscan', 'lvs' y '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

Del mismo modo, puede obtener información sobre el propio grupo de volúmenes con 'vgscan', 'vgs' y '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
fuente
44
También: PVS, pvdisplay y pvscan para obtener datos sobre los volúmenes físicos ...
Freiheit
9

Los volúmenes lógicos no tienen un "tipo" como las viejas particiones de DOS. Al igual que los archivos Unix, tendrá que leerlos para descubrir cuáles son. Algo como esto debería hacer el truco:

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

Aquí hay un ejemplo para la salida que daría este comando (truncado un poco):

[...]
/dev/mapper/VolGroup00-LogVol00: Linux rev 1.0 ext4 filesystem data, UUID=b000000e-00f0-0cde-b000-fa0d000ddc00 (extents) (64bit) (large files) (huge files)
[...]
Osito de peluche
fuente
2
Gran respuesta. Parece que nadie más entendió lo que estaba pidiendo el OP. Tuve que hacer un cambio en su script: agregué la opción --dereference al comando de archivo. Cada LV está vinculado a / dm-X por el mapeador de dispositivos.
codewaggle
1
@codewaggle Gracias; Opción agregada. Cuando escribí la respuesta en '09, la opción no era necesaria, pero los tiempos cambian.
Teddy
2
¡Esta debería ser la respuesta aceptada!
lanoxx
1
No funciona cuando cuando tienes guiones en tu nombre de VG, estos se duplican y actualizan la respuesta. Posiblemente el mismo problema se aplica a los nombres de LV, pero no lo probé.
sjas
6

LVM es una abstracción sobre discos físicos.

Los volúmenes lógicos (en los que puede formatear y colocar archivos) se asignan desde grupos de volúmenes, que pueden estar formados por una o más extensiones físicas: las particiones del disco físico real.

Tu pregunta no está clara. Si desea mostrar en qué particiones de disco reside físicamente un Volumen lógico, lvdisplay --maps puede ayudar:

# lvdisplay --maps
  --- Volumen lógico ---
  Nombre LV / dev / VolGroup00 / root
  Nombre de VG VolGroup00
  LV UUID xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx
  Acceso de escritura LV lectura / escritura
  Estado LV disponible
  # abierto 1
  LV Tamaño 5.00 GB
  LE 160 actual
  Segmentos 1
  La asignación hereda
  Leer adelante sectores automotriz
  - actualmente configurado en 256
  Bloquear dispositivo 253: 0

  --- Segmentos ---
  Extensión lógica de 0 a 159:
    Tipo lineal
    Volumen físico / dev / sda2
    Extensiones físicas de 0 a 159
tfh1985
fuente
No responde la pregunta, pero es la única forma de verificar si su LV está fragmentado o no. Voto a favor, no he visto esto en ningún otro lugar todavía.
sjas
6

Los volúmenes lógicos no tienen un concepto de "tipo", solo son dispositivos de bloque. Si desea examinar el contenido de un dispositivo de bloque y determinar qué contiene, es posible que desee ver la blkidherramienta, que hace exactamente eso.

womble
fuente
5

1) Un volumen lógico NO es una partición de disco (física). Es un dispositivo de bloque virtual creado dentro del kernel de Linux con Device Mapper. Es una tecnología que se puede usar para configurar un solo dispositivo de bloque usando dos particiones de disco, así como dos dispositivos de bloque usando una sola partición de disco, y mucho más.

# dmsetup targets 

Si desea obtener más información sobre DM, visite su página de inicio , consulte las páginas del manual , lea el manual de RedHat o, por ejemplo, este artículo. Es una gran tecnología que solo se menciona en Wikipedia.

2) Por ejemplo, en la computadora de mi casa tengo particiones de disco físico, así como dispositivos DM (volúmenes lógicos).

# cat /proc/partitions

mayor menor #bloques nombre

   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 no tienen ningún tipo o ID, se definen solo con el número de sector de inicio y la longitud.

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

Entonces dm-0 es un fragmento que consta de 34865152 sectores de algún dispositivo físico.

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

¡Y este dispositivo es la partición / 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

Y es una partición de tipo LVM (8e), mencionada por timberman.

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

Esta única partición de disco (física) puede contener volúmenes lógicos dentro de un grupo. Tengo dos discos, por lo que hay dos de esos grupos y cada grupo tiene dos dispositivos lógicos.

# 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 

Entonces dm-0 y dm-1 son dos LV (lvroot y lvswap) creados en mi partición / dev / hdb2 de mi primer disco (con CentOS) mientras que dm-2 y dm-3 son LV creados en mi partición / dev / hda2 de mi segundo disco (con Fedora).

Los dispositivos lógicos pueden tener etiquetas (UUID). Puede verificarlos con el comando lvdisplay, mencionado anteriormente. Pero son solo etiquetas, que puede usar (-u) en lugar de números mayores y menores (-j -m modificadores).

Wojciech Domalewski
fuente
4

¿Lsblk proporciona la información que necesita?

[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
fuente
0

Los volúmenes lógicos no tienen un ID o tipo de partición. Están compuestos de extensiones físicas (PE) que pueden extenderse en múltiples volúmenes físicos (PV), cada uno de los cuales podría ser una partición (por ejemplo, / dev / sda2) o un disco completo (por ejemplo, / dev / sdb).

pgs
fuente
0

La identificación del tipo de partición se almacena solo en la tabla de partición, no en la partición misma. Por otro lado, los volúmenes lógicos LVM normalmente se tratan como particiones individuales, no como discos, por lo que no hay una tabla de particiones y, por lo tanto, no hay que buscar ningún tipo de identificación de partición.

También tenga en cuenta que la identificación de tipo es solo para fines informativos en Linux (sin embargo, esto no es cierto para Windows). No tiene relación con el contenido y el sistema de archivos de esa partición.

Eduard - Gabriel Munteanu
fuente
0

Creo que este comando de una línea podría ayudar:

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

El resultado es similar a esto:

/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
fuente
0

Si mira la publicación anterior de "Mark V", verá que se utilizó el comando lsblk.

Esta es una gran opción, sin embargo, el OP solicitó el tipo que se omitió en la mayoría de las respuestas. Usando lsblk desde arriba y agregando "FSTYPE" obtienes el tipo esperado:

# 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
fuente