"fdisk -l" как список разделов и их типы для логических томов lvm?

<p>вы знаете, как "fdisk -l" перечисляет таблицы разделов диска и показывает идентификаторы/типы разделов для каждого раздела?</p><p>есть ли аналогичный способ получения идентификатора раздела для логических томов lvm?</p><p>правка: я знаю о "lvs", который в основном то, что я ищу (он дает мне список логических томов, вроде как "fdisk -l" ... кроме того, было бы также полезно знать, что типы разделов логических томов (которые я люблю называть "виртуальными разделами"). эта информация - то, что "fdisk -l" перечисляет в последних двух столбцах справа (например, "8e" для физического раздел lvm или "83" для linux ext и т.д.).</p><p>инструмент, который я ищу, может не быть частью lvm; может быть, просто какая-то другая утилита, которая может печатать идентификаторы/типы разделов для данного раздела?</p>

<p>идентификатор раздела для linux lvm - 8e, сообщает fdisk.</p><pre><code>$ 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 </code></pre><p>точно так же вы можете узнать информацию о самой группе томов с помощью "vgscan", "vgs" и "vgdisplay".</p><pre><code>$ 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 </code></pre><p>вот пример вывода, который выдаст эта команда (немного усечено):</p><pre><code>[...] /dev/mapper/volgroup00-logvol00: linux rev 1.0 ext4 filesystem data, uuid=b000000e-00f0-0cde-b000-fa0d000ddc00 (extents) (64bit) (large files) (huge files) [...] </code></pre>

<p>lvm - это абстракция над физическими дисками.</p><p>логические тома (которые можно форматировать и размещать файлы) выделяются из групп томов, которые могут состоять из одного или нескольких физических экстентов - реальных разделов физического диска.</p><p>ваш вопрос немного неясен. если вы хотите показать, на каких разделах диска физически находится логический том, lvdisplay --maps может помочь:</p><pre> # 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 </pre>

<p>логические тома не имеют понятия "тип", они просто блочные устройства. если вы хотите проверить содержимое блочного устройства и определить, что в нем находится, вы можете обратиться к инструменту <code>blkid</code>, который именно это и делает.</p>

<p>1) логический том не является (физическим) разделом диска. это виртуальное блочное устройство, созданное в ядре linux с помощью device mapper. это технология, которую можно использовать для настройки одного блочного устройства с использованием двух разделов диска, а также двух блочных устройств с использованием одного раздела диска и многого другого.</p><pre><code># dmsetup targets </code></pre><p>если вы хотите узнать больше о dm посетите его <a href="http://sources.redhat.com/dm/">домашняя страница</a> , проверьте его <a href="http://www.cse.yorku.ca/tdb/\_doc.php/userg/man/name/dmsetup.8/section/8">страницы руководства</a> , прочитайте redhat <a href="http://www.redhat.com/docs/en-us/red\_hat\_enterprise\_linux/5/html/cluster\_logical\_volume\_manager/device\_mapper.html">руководство</a> = или например <a href="http://linuxgazette.net/114/kapil.html">эта</a> статья. это отличная технология только <a href="http://en.wikipedia.org/wiki/device\_mapper">упоминается</a> в википедии.</p><p>2) например, на моем домашнем компьютере у меня есть разделы физического диска, а также устройства dm (логические тома)).</p><pre><code># cat /proc/partitions </code></pre><p><strong> старшее второстепенное имя #блоков </strong></p><pre><code> 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 </code></pre><p>прежде всего, они не имеют какого-либо типа или идентификатора, они определяются только числовым начальным сектором и длиной.</p><pre><code># dmsetup status -j 253 -m 0 0 34865152 linear </code></pre><p>итак, dm-0 - это фрагмент, состоящий из 34865152 секторов какого-то физического устройства.</p><pre><code># dmsetup deps -j 253 -m 0 1 dependencies : (3, 66) </code></pre><p>и это устройство/dev/hdb2 раздел!</p><pre><code># 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 </code></pre><p>и это перегородка типа lvm (8e), упомянутая лесорубом.</p><pre><code># pvs pv vg fmt attr psize pfree /dev/hda2 volgroup lvm2 a- 76,13g 0 /dev/hdb2 volgroup00 lvm2 a- 18,56g 0 </code></pre><p>этот единственный (физический) раздел диска может содержать логические тома в группе. у меня есть два диска, поэтому есть две такие группы, и каждая группа содержит два логических устройства.</p><pre><code># 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 </code></pre><p>таким образом, dm-0 и dm-1 - это два lv (lvroot и lvswap), созданные в моем разделе/dev/hdb2 моего первого диска (с centos), в то время как dm-2 и dm-3 - lv, созданные в моем разделе/dev/hda2 моего второго диска (с fedora).</p><p>логические устройства могут иметь метки (uuid). вы можете проверить их с помощью команды lvdisplay, упомянутой выше. но это всего лишь метки, которые вы можете использовать (-u) вместо больших младших чисел (-j -m переключатели).</p>

<p>предоставляет ли lsblk необходимую вам информацию?</p><pre><code>[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 ~]# </code></pre>

<p>логические тома не имеют идентификатора или типа раздела. они состоят из <em>физических экстентов</em> (pe), которые могут быть распределены по нескольким <em>физическим томам</em> (pv), каждый из которых может быть разделом (например,/dev/sda2) или полный диск (например,/dev/sdb).</p>

<p>вероятно, не нужно, но я сам немного научился здесь <a href="http://www.linuxconfig.org/linux\_lvm\_-\_logical\_volume\_manager">http://www.linuxconfig.org/linux\_lvm\_-\_logical\_volume\_manager</a> </p>

<p>идентификатор типа раздела хранится только в таблице разделов, а не в самом разделе. с другой стороны, логические тома lvm обычно обрабатываются как отдельные разделы, а не как диски, поэтому нет таблицы разделов и, следовательно, нет идентификатора типа раздела для поиска.</p><p>также обратите внимание, что идентификатор типа используется только в информативных целях в linux (однако это не так для windows). это не имеет никакого отношения к содержимому и файловой системе этого раздела.</p>

<p>если вы посмотрите на предыдущий пост из "mark v", то увидите, что была использована команда lsblk.</p><p>это отличный вариант, однако оп попросил указать тип, который был опущен в большинстве ответов. используя lsblk сверху и добавив "fstype", вы получите ожидаемый тип:</p><pre><code># 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 # </code></pre>

<p>я думаю, что эта однострочная команда может помочь:</p><pre><code>for i in $(df -h | grep mapper | cut -d" " -f1); do echo $i; lvdisplay --maps $i | grep "physical volume"; done </code></pre><p>выход похож на это:</p><pre><code>/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 </code></pre>