«Fdisk -l», как список разделов и их типы для логических томов LVM?


22

Вы знаете, как "fdisk -l" перечисляет таблицы разделов диска и показывает идентификаторы / типы разделов для каждого раздела?

Есть ли аналогичный способ получения идентификатора раздела для логических томов LVM?

РЕДАКТИРОВАТЬ: я знаю о "lvs", который в основном то, что я ищу (он дает мне список логических томов, вроде как "fdisk -l" ... кроме того, было бы также полезно знать, что Типы разделов логических томов (которые я люблю называть «виртуальными разделами»). Эта информация - то, что «fdisk -l» перечисляет в последних двух столбцах справа (например, «8e» для физического Раздел LVM или «83» для Linux ext и т. Д.).

Инструмент, который я ищу, может не быть частью LVM; может быть, просто какая-то другая утилита, которая может печатать идентификаторы / типы разделов для данного раздела?


1
Попробуйте cat /etc/fstabотобразить тип файловой системы, даже с lvm ... Звучит очевидно, но это отвечает на вопрос ...

Ответы:


16

Идентификатор раздела для Linux LVM - 8e, сообщает 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 - это уровень абстракции поверх устройства хранения данных, облегчающий управление им. Я не уверен, какую информацию помимо того, что предоставляет fdisk, вы хотите, потому что отображается идентификатор раздела для LVM. Однако для получения дополнительной информации о логических томах LVM вы можете использовать 'lvscan', 'lvs' и '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

Точно так же вы можете узнать информацию о самой группе томов с помощью vgscan, vgs и 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
Также: pvs, pvdisplay и pvscan для получения данных о физических томах ...
freiheit

9

У логических томов нет «типа», как у старых разделов DOS. Как и файлы Unix, вам придется прочитать их, чтобы узнать, что они из себя представляют. Нечто подобное должно сделать свое дело:

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

Вот пример вывода, который выдаст эта команда (немного усечено):

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

2
Отличный ответ. Кажется, никто больше не понимал, о чем просил ОП. Мне пришлось внести одно изменение в ваш скрипт: я добавил опцию --dereference к команде file. Каждый LV связан с / dm-X устройством отображения.
Codewaggle

1
@codewaggle Спасибо; опция добавлена. Когда я написал ответ еще в '09, опция была не нужна, но времена менялись.
Тедди

2
Это должен быть принятый ответ!
Lanoxx

1
Не работает, когда, когда у вас есть тире в имени VG, они удваиваются, обновляется ответ. Возможно, та же проблема применима к именам LV, но я не проверял это.
sjas

6

LVM - это абстракция над физическими дисками.

Логические тома (которые можно форматировать и размещать файлы) выделяются из групп томов, которые могут состоять из одного или нескольких физических экстентов - реальных разделов физического диска.

Ваш вопрос немного неясен. Если вы хотите показать, на каких разделах диска физически находится логический том, lvdisplay --maps может помочь:

# lvdisplay --maps
  --- логический том ---
  Имя LV / dev / VolGroup00 / root
  Название VG VolGroup00
  LV UUID xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx
  LV Write Доступ для чтения / записи
  Доступен статус LV
  # открыть 1
  Размер LV 5,00 ГБ
  Текущий LE 160
  Сегменты 1
  Распределение наследовать
  Читать впереди секторов авто
  - в настоящее время установлено 256
  Блок устройства 253: 0

  --- Сегменты ---
  Логическая степень от 0 до 159:
    Тип линейный
    Физический объем / dev / sda2
    Физические степени от 0 до 159

Не отвечая на вопрос, но единственный способ проверить, фрагментирован ли ваш LV или нет. Upvote, еще нигде не видел этого.
sjas

6

Логические тома не имеют понятия «тип», они просто блочные устройства. Если вы хотите проверить содержимое блочного устройства и определить, что в нем находится, вы можете посмотреть на blkidинструмент, который делает именно это.


5

1) Логический том НЕ является (физическим) разделом диска. Это виртуальное блочное устройство, созданное в ядре Linux с помощью Device Mapper. Это технология, которую можно использовать для настройки одного блочного устройства с использованием двух разделов диска, а также двух блочных устройств с использованием одного раздела диска и многого другого.

# dmsetup targets 

Если вы хотите узнать больше о DM, посетите его домашнюю страницу , проверьте его справочные страницы , прочитайте руководство RedHat или, например, эту статью. Это отличная технология, упоминаемая только в Википедии.

2) Например, на моем домашнем компьютере у меня есть разделы физического диска, а также устройства DM (логические тома).

# cat /proc/partitions

имя младшего # блока

   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

Прежде всего, они не имеют какого-либо типа или идентификатора, они определяются только числовым начальным сектором и длиной.

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

Итак, dm-0 - это фрагмент, состоящий из 34865152 секторов какого-то физического устройства.

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

И это устройство / 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

И это перегородка типа LVM (8e), упомянутая лесорубом.

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

Этот единственный (физический) раздел диска может содержать логические тома в группе. У меня есть два диска, поэтому есть две такие группы, и каждая группа содержит два логических устройства.

# 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 

Таким образом, dm-0 и dm-1 - это два LV (lvroot и lvswap), созданные в моем разделе / ​​dev / hdb2 моего первого диска (с CentOS), в то время как dm-2 и dm-3 - LV, созданные в моем разделе / ​​dev / hda2 моего второго диска (с Fedora).

Логические устройства могут иметь метки (UUID). Вы можете проверить их с помощью команды lvdisplay, упомянутой выше. Но это всего лишь метки, которые вы можете использовать (-u) вместо больших младших чисел (-j -m переключатели).


4

Предоставляет ли lsblk необходимую вам информацию?

[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

Логические тома не имеют идентификатора или типа раздела. Они состоят из физических экстентов (PE), которые могут быть распределены по нескольким физическим томам (PV), каждый из которых может быть разделом (например, / dev / sda2) или полным диском (например, / dev / sdb).



0

Идентификатор типа раздела хранится только в таблице разделов, а не в самом разделе. С другой стороны, логические тома LVM обычно обрабатываются как отдельные разделы, а не как диски, поэтому нет таблицы разделов и, следовательно, нет идентификатора типа раздела для поиска.

Также обратите внимание, что идентификатор типа только для информативных целей в Linux (однако это не так для Windows). Это не имеет никакого отношения к содержимому и файловой системе этого раздела.


0

Я думаю, что эта однострочная команда может помочь:

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

Выход похож на это:

/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

Если вы посмотрите на предыдущий пост из «Mark V», то увидите, что была использована команда lsblk.

Это отличный вариант, однако ОП попросил указать тип, который был опущен в большинстве ответов. Используя lsblk сверху и добавив «FSTYPE», вы получите ожидаемый тип:

# 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
# 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.