Вы знаете, как "fdisk -l" перечисляет таблицы разделов диска и показывает идентификаторы/типы разделов для каждого раздела?
Есть ли аналогичный способ получения идентификатора раздела для логических томов LVM?
Правка: я знаю о "lvs", который в основном то, что я ищу (он дает мне список логических томов, вроде как "fdisk -l" ... кроме того, было бы также полезно знать, что Типы разделов логических томов (которые я люблю называть "виртуальными разделами"). Эта информация - то, что "fdisk -l" перечисляет в последних двух столбцах справа (например, "8e" для физического Раздел LVM или "83" для Linux ext и т.д.).
Инструмент, который я ищу, может не быть частью LVM; может быть, просто какая-то другая утилита, которая может печатать идентификаторы/типы разделов для данного раздела?
Идентификатор раздела для 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
У логических томов нет "типа", как у старых разделов 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)
[...]
LVM - это абстракция над физическими дисками.
Логические тома (которые можно форматировать и размещать файлы) выделяются из групп томов, которые могут состоять из одного или нескольких физических экстентов - реальных разделов физического диска.
Ваш вопрос немного неясен. Если вы хотите показать, на каких разделах диска физически находится логический том, lvdisplay --maps может помочь:
# lvdisplay --maps --- Логический том --- LV Name /dev/VolGroup00/root VG Имя VolGroup00 LV UUID xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx LV Доступ на запись для чтения/записи LV Статус доступен # Открыт 1 LV Размер 5,00 ГБ Текущий LE 160 Сегменты 1 Распределение наследует Считывание впереди секторов автоматически - в настоящее время установлено 256 Блочное устройство 253: 0 --- Сегменты --- Логический экстент от 0 до 159: Тип линейный Физический том /dev/sda2 Физические степени от 0 до 159
Логические тома не имеют понятия "тип", они просто блочные устройства. Если вы хотите проверить содержимое блочного устройства и определить, что в нем находится, вы можете обратиться к инструменту blkid
, который именно это и делает.
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 переключатели).
Предоставляет ли lsblk необходимую вам информацию?
[[email protected] ~]# 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
[[email protected] ~]#
Логические тома не имеют идентификатора или типа раздела. Они состоят из физических экстентов (PE), которые могут быть распределены по нескольким физическим томам (PV), каждый из которых может быть разделом (например,/dev/sda2) или полный диск (например,/dev/sdb).
вероятно, не нужно, но я сам немного научился здесь http://www.linuxconfig.org/Linux_lvm_-_Logical_Volume_Manager
Идентификатор типа раздела хранится только в таблице разделов, а не в самом разделе. С другой стороны, логические тома LVM обычно обрабатываются как отдельные разделы, а не как диски, поэтому нет таблицы разделов и, следовательно, нет идентификатора типа раздела для поиска.
Также обратите внимание, что идентификатор типа используется только в информативных целях в Linux (однако это не так для Windows). Это не имеет никакого отношения к содержимому и файловой системе этого раздела.
Если вы посмотрите на предыдущий пост из "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
#
Я думаю, что эта однострочная команда может помочь:
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