„Fdisk -l” jak lista partycji i ich typów dla woluminów logicznych LVM?

22

Wiesz, jak „fdisk -l” wyświetla tabele partycji dysku i pokazuje identyfikator / typy partycji dla każdej partycji?

Czy istnieje podobny sposób uzyskania identyfikatora partycji dla woluminów logicznych LVM?

EDYCJA: Zdaję sobie sprawę z „lvs”, które jest głównie tym, czego szukam (daje mi listę woluminów logicznych, coś w rodzaju „fdisk -l” ... poza tym przydałoby się również wiedzieć, co są typy partycji woluminów logicznych (które lubię określać jako „partycje wirtualne”). Informacje te są tym, co „fdisk -l” wymienia w dwóch ostatnich kolumnach po prawej stronie (np. „8e” dla fizycznego Partycja LVM lub „83” dla systemu Linux, itp.).

Narzędzie, którego szukam, może nie być częścią LVM; może po prostu jakieś inne narzędzie, które może drukować identyfikatory / typy partycji z danej partycji?


źródło
1
Spróbuj cat /etc/fstabwyświetlić typ systemu plików, nawet z lvm ... Brzmi oczywisto, ale odpowiada na pytanie ...

Odpowiedzi:

16

Identyfikator partycji dla Linux LVM to 8e, zgłaszany przez 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 to warstwa abstrakcji na urządzeniu pamięci masowej, która ułatwia zarządzanie nim. Nie jestem pewien, jakie informacje poza tym, co udostępnia fdisk, ponieważ wyświetlany jest identyfikator partycji dla LVM. Jednak w celu uzyskania dodatkowych informacji o woluminach logicznych LVM można użyć „lvscan”, „lvs” i „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

Podobnie można uzyskać informacje o samej grupie woluminów za pomocą „vgscan”, „vgs” i „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
źródło
4
Ponadto: pvs, pvdisplay i pvscan do pobierania danych o fizycznych woluminach ...
freiheit
9

Woluminy logiczne nie mają takiego „typu” jak stare partycje DOS. Podobnie jak pliki uniksowe, musisz je przeczytać, aby dowiedzieć się, jakie są. Coś takiego powinno załatwić sprawę:

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

Oto przykład danych wyjściowych, które dałoby to polecenie (nieco przycięte):

[...]
/dev/mapper/VolGroup00-LogVol00: Linux rev 1.0 ext4 filesystem data, UUID=b000000e-00f0-0cde-b000-fa0d000ddc00 (extents) (64bit) (large files) (huge files)
[...]
Miś
źródło
2
Świetna odpowiedź. Wygląda na to, że nikt inny nie rozumiał, o co prosił PO. Musiałem dokonać jednej zmiany w skrypcie: dodałem opcję --dereference do polecenia file. Każda LV jest połączona z / dm-X przez urządzenie mapujące urządzenia.
kodewaggle 24.04.13
1
@codewaggle Thanks; opcja dodana. Kiedy w 2009 roku napisałem odpowiedź, opcja nie była potrzebna, ale czasy się zmieniają.
Teddy
2
To powinna być zaakceptowana odpowiedź!
lanoxx,
1
Nie działa, gdy masz myślniki w nazwie VG, są one podwojone, zaktualizowano odpowiedź. Być może ten sam problem dotyczy nazw LV, ale tego nie testowałem.
sjas
6

LVM to abstrakcja ponad dyskami fizycznymi.

Woluminy logiczne (na których można formatować i umieszczać pliki) są przydzielane z grup woluminów, które mogą składać się z jednego lub więcej fizycznych zakresów - rzeczywistych partycji fizycznych.

Twoje pytanie jest trochę niejasne. Jeśli chcesz pokazać, na których partycjach dysku fizycznie znajduje się wolumin logiczny, lvdisplay --maps może pomóc:

# lvdisplay - mapy
  --- Wolumin logiczny ---
  Nazwa LV / dev / VolGroup00 / root
  Nazwa VG VolGroup00
  LV UUID xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx
  Dostęp do zapisu LV do odczytu / zapisu
  Status LV dostępny
  # otwórz 1
  Rozmiar LV 5,00 GB
  Obecny LE 160
  Segmenty 1
  Dziedziczenie przydziału
  Czytaj sektory z wyprzedzeniem automatycznie
  - obecnie ustawiony na 256
  Zablokuj urządzenie 253: 0

  --- Segmenty ---
  Zakres logiczny od 0 do 159:
    Wpisz liniowy
    Objętość fizyczna / dev / sda2
    Zakres fizyczny od 0 do 159
tfh1985
źródło
Brak odpowiedzi na pytanie, ale jedyny sposób, aby sprawdzić, czy LV jest rozdrobniony, czy nie. Upvote, nie widziałem tego nigdzie indziej.
sjas
6

Woluminy logiczne nie mają pojęcia „typu”, są tylko urządzeniami blokowymi. Jeśli chcesz sprawdzić zawartość urządzenia blokowego i ustalić, co w nim jest, możesz przyjrzeć się blkidnarzędziu, które właśnie to robi.

womble
źródło
5

1) Wolumin logiczny NIE jest partycją dyskową (fizyczną). Jest to wirtualne urządzenie blokowe utworzone w jądrze Linuksa za pomocą Device Mapper. Jest to technologia, której można użyć do skonfigurowania pojedynczego urządzenia blokowego za pomocą dwóch partycji dyskowych, a także dwóch urządzeń blokowych korzystających z jednej partycji dyskowej i wiele innych.

# dmsetup targets 

Jeśli chcesz dowiedzieć się więcej o DM, odwiedź stronę główną , sprawdź strony podręcznika , przeczytaj instrukcję RedHat lub na przykład ten artykuł. To świetna technologia wymieniona tylko w Wikipedii.

2) Na przykład na moim komputerze domowym mam fizyczne partycje dysku, a także urządzenia DM (woluminy logiczne).

# cat /proc/partitions

major minor #blocks name

   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

Przede wszystkim nie mają żadnego typu ani identyfikatora, są zdefiniowane tylko za pomocą numeru sektora początkowego i długości.

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

Zatem dm-0 jest fragmentem składającym się z 34865152 sektorów jakiegoś urządzenia fizycznego.

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

A to urządzenie jest partycją / 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

I jest to partycja typu LVM (8e), o której wspominał drwal.

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

Ta pojedyncza (fizyczna) partycja dysku może przechowywać woluminy logiczne w grupie. Mam dwa dyski, więc są dwie takie grupy, a każda grupa zawiera dwa urządzenia logiczne.

# 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 

Więc dm-0 i dm-1 to dwa LV (lvroot i lvswap) utworzone na mojej partycji / dev / hdb2 mojego pierwszego dysku (z CentOS), podczas gdy dm-2 i dm-3 to LV utworzone na mojej partycji / dev / hda2 mojego drugiego dysku (z Fedorą).

Urządzenia logiczne mogą mieć etykiety (UUID). Możesz je sprawdzić poleceniem lvdisplay, o którym mowa powyżej. Są to jednak tylko etykiety, których można użyć (-u) zamiast głównych, mniejszych liczb (przełączniki -j -m).

Wojciech Domalewski
źródło
4

Czy lsblk zapewnia potrzebne informacje?

[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.
źródło
0

Woluminy logiczne nie mają identyfikatora ani typu partycji. Składają się one z fizycznych zakresów (PE), które mogą być rozłożone na wiele woluminów fizycznych (PV), z których każdy może być partycją (np. / Dev / sda2) lub kompletnym dyskiem (np. / Dev / sdb).

pgs
źródło
0

Identyfikator typu partycji jest przechowywany tylko w tablicy partycji, a nie w samej partycji. Z drugiej strony woluminy logiczne LVM są zwykle traktowane jak pojedyncze partycje, a nie jak dyski, więc nie ma tabeli partycji, a zatem nie ma identyfikatora typu partycji, którego należałoby szukać.

Zauważ również, że identyfikator typu służy wyłącznie do celów informacyjnych w Linuksie (nie dotyczy to jednak systemu Windows). Nie ma to wpływu na zawartość i system plików tej partycji.

Eduard - Gabriel Munteanu
źródło
0

Myślę, że to jedno-wierszowe polecenie mogłoby pomóc:

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

Dane wyjściowe są podobne do tego:

/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
źródło
0

Jeśli spojrzysz na poprzedni post z „Mark V”, zobaczysz, że użyto polecenia lsblk.

Jest to świetna opcja, jednak PO poprosił o typ, który został pominięty w większości odpowiedzi. Używając lsblk z góry i dodając „FSTYPE” otrzymujesz oczekiwany typ:

# 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
źródło