"Fdisk -l" como lista de partições e seus tipos para volumes lógicos LVM?


22

Você sabe como "fdisk -l" lista as tabelas de partição da unidade e mostra os tipos / ID da partição para cada partição?

Existe uma maneira semelhante de obter o ID da partição para volumes lógicos do LVM?

EDIT: Estou ciente de "lvs", que é principalmente o que estou procurando (isso me dá a lista de volumes lógicos, como "fdisk -l" ... exceto que também seria útil saber o que são os tipos de partição dos volumes lógicos (que eu gosto de considerar "partições virtuais"). Essas informações são o que "fdisk -l" lista nas duas últimas colunas à direita (como "8e" para um físico Partição LVM, ou "83" para Linux ext, etc.).

A ferramenta que estou procurando pode não fazer parte do LVM; talvez apenas algum outro utilitário que possa imprimir IDs / tipos de partição, dada uma partição?


1
Tente cat /etc/fstabpara exibir o tipo de sistema de arquivos, mesmo com LVM ... Parece óbvio, mas responde à pergunta ...

Respostas:


16

O ID da partição para Linux LVM é 8e, relatado pelo 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

O LVM é uma camada de abstração na parte superior do dispositivo de armazenamento para facilitar o gerenciamento. Não tenho certeza de quais informações estão além do que o fdisk fornece, porque o ID da partição para LVM é exibido. No entanto, para obter informações adicionais sobre volumes lógicos do LVM, você pode usar '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

Da mesma forma, você pode aprender informações sobre o próprio grupo de volumes com '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
Também: pvs, pvdisplay e pvscan para a obtenção de dados sobre os volumes físicos ...
Freiheit

9

Os volumes lógicos não têm um "tipo", como as antigas partições DOS. Como os arquivos Unix, você terá que lê-los para descobrir o que são. Algo assim deve fazer o truque:

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

Aqui está um exemplo para a saída que esse comando daria (um pouco truncado):

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

2
Ótima resposta. Parece que ninguém mais entendeu o que o OP estava pedindo. Eu tive que fazer uma alteração no seu script: eu adicionei a opção --dereference ao comando file. Cada LV está vinculado ao / dm-X pelo mapeador de dispositivo.
Codewaggle

1
@codewaggle Obrigado; opção adicionada. Quando escrevi a resposta em '09, a opção não era necessária, mas os tempos mudam.
Teddy

2
Esta deve ser a resposta aceita!
Lanoxx #

1
Não funciona quando, quando você tem hífens no nome do seu VG, estes são duplicados, atualizou a resposta. Possivelmente o mesmo problema se aplica aos nomes LV, mas não testei isso.
S28

6

LVM é uma abstração acima de discos físicos.

Os volumes lógicos (nos quais você pode formatar e colocar arquivos) são alocados a partir de grupos de volumes, que podem ser compostos de uma ou mais extensões físicas - as partições físicas reais do disco.

Sua pergunta não é clara. Se você deseja mostrar em quais partições de disco um Volume Lógico reside fisicamente, lvdisplay --maps pode ajudar:

# lvdisplay --maps
  --- Volume lógico ---
  Nome do LV / dev / VolGroup00 / root
  Nome do grupo VolGroup00
  LV UUID xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx
  Acesso de gravação LV leitura / gravação
  Status LV disponível
  # open 1
  Tamanho LV 5,00 GB
  Atual LE 160
  Segmentos 1
  Herança de alocação
  Leia com antecedência os setores automáticos
  - atualmente definido como 256
  Dispositivo de bloco 253: 0

  --- Segmentos ---
  Extensão lógica de 0 a 159:
    Tipo linear
    Volume físico / dev / sda2
    Extensão física de 0 a 159

Não estou respondendo à pergunta, mas a única maneira de verificar se o seu VE está fragmentado ou não. Voto a favor, ainda não vi isso em nenhum outro lugar.
S28

6

Os volumes lógicos não têm o conceito de "tipo", são apenas dispositivos de bloco. Se você deseja examinar o conteúdo de um dispositivo de bloco e determinar o que está nele, consulte a blkidferramenta, que faz exatamente isso.


5

1) Um volume lógico NÃO é uma partição de disco (física). É um dispositivo de bloco virtual criado dentro do kernel Linux com o Device Mapper. É uma tecnologia que se pode usar para configurar um dispositivo de bloco único usando duas partições de disco, bem como dois dispositivos de bloco usando uma partição de disco único e muito mais.

# dmsetup targets 

Se você quiser saber mais sobre o DM, visite sua página inicial , verifique suas páginas de manual , leia o manual do RedHat ou, por exemplo, este artigo. É uma ótima tecnologia mencionada apenas na Wikipedia.

2) Por exemplo, no meu computador doméstico, tenho partições físicas de disco e dispositivos DM (volumes lógicos).

# cat /proc/partitions

nome principal #blocks menor

   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, eles não têm nenhum tipo ou ID; são definidos apenas com o número do setor inicial e o comprimento.

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

Então dm-0 é um fragmento que consiste em 34865152 setores de algum dispositivo físico.

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

E este dispositivo é a partição / 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

E é uma partição do 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 

Essa única partição de disco (física) pode conter volumes lógicos dentro de um grupo. Eu tenho dois discos, então existem dois desses grupos e cada grupo possui dois 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 

Portanto, dm-0 e dm-1 são dois LVs (lvroot e lvswap) criados na minha partição / dev / hdb2 do meu primeiro disco (com CentOS) enquanto dm-2 e dm-3 são LVs criados na minha partição / dev / hda2 do meu segundo disco (com o Fedora).

Os dispositivos lógicos podem ter etiquetas (UUIDs). Você pode verificá-los com o comando lvdisplay, mencionado acima. Mas eles são apenas rótulos, que você pode usar (-u) em vez de números maiores e menores (opções -j -m).


4

O lsblk fornece as informações necessárias?

[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

Os volumes lógicos não possuem um ID ou tipo de partição. Eles são compostos de extensões físicas (PE) que podem se espalhar por vários volumes físicos (PV), cada um dos quais pode ser uma partição (por exemplo, / dev / sda2) ou um disco completo (por exemplo, / dev / sdb).



0

O ID do tipo de partição é armazenado apenas na tabela de partições, não na própria partição. Por outro lado, os volumes lógicos do LVM são normalmente tratados como partições individuais, não como discos, portanto, não há tabela de partições e, portanto, nenhum ID de tipo de partição a ser procurado.

Observe também que o ID do tipo é apenas para fins informativos no Linux (embora isso não ocorra no Windows). Não tem influência no conteúdo e no sistema de arquivos dessa partição.


0

Eu acho que esse comando de uma linha pode ajudar:

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

A saída é semelhante a esta:

/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 você olhar a postagem anterior de "Mark V", verá que o comando lsblk foi usado.

Essa é uma ótima opção, no entanto, o OP solicitou o tipo que foi omitido na maioria das respostas. Usando lsblk de cima e adicionando "FSTYPE", você obtém o 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
# 
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.