“ fdisk -l”,例如LVM逻辑卷的分区列表及其类型?


22

您知道“ fdisk -l”如何列出驱动器分区表并显示每个分区的分区ID /类型吗?

是否有类似的方法来获取LVM逻辑卷的分区ID?

编辑:我知道“ lvs”,这主要是我正在寻找(它给了我逻辑卷的列表,有点像“ fdisk -l” ...,除了知道什么也很有用逻辑卷的分区类型(我想将其称为“虚拟分区”)。该信息就是“ fdisk -l”在右侧最后两列中列出的内容(例如,物理磁盘的“ 8e” LVM分区,对于Linux ext等则为“ 83”)。

我要寻找的工具可能不是LVM的一部分;也许只是一些可以打印给定分区的分区ID /类型的其他实用程序?


1
尝试cat /etc/fstab显示文件系统的类型,即使使用lvm也是如此...听起来很明显,但是它回答了这个问题...

Answers:


16

fdisk报告,Linux LVM的分区ID为8e。

$ 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的分区ID。但是,有关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用于获取有关物理卷的数据...
弗赖海特

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
好答案。似乎没有其他人了解OP的要求。我必须对您的脚本进行更改:我在文件命令中添加了--dereference选项。每个LV通过设备映射器链接到/ dm-X。
codewaggle

1
@codewaggle谢谢;选项已添加。当我在09年写出答案时,不需要该选项,但是时间在变化。
Teddy

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 Access读/写
  LV状态可用
  #打开1
  LV大小5.00 GB
  当前LE 160
  细分1
  分配继承
  自动阅读行业
  -当前设置为256
  块设备253:0

  -细分-
  逻辑范围0到159:
    线性型
    物理卷/ dev / sda2
    物理范围0到159

不回答问题,而是检查LV是否已碎片化的唯一方法。Upvote,在其他任何地方都没有看到。
sjas

6

逻辑卷没有“类型”的概念,它们只是块设备。如果要检查块设备的内容并确定其中的内容,则可能需要查看blkid工具,它确实可以完成该工作。


5

1)逻辑卷不是(物理)磁盘分区。它是在Linux内核中使用Device Mapper创建的虚拟块设备。这是一项技术,可以用来设置使用两个磁盘分区的单个块设备以及使用单个磁盘分区的两个块设备等等。

# dmsetup targets 

如果您想了解更多关于糖尿病的访问它的主页,检查它的手册页,阅读RedHat的手册或例如文章。这是维基百科中仅提及的一项伟大技术。

2)例如,在我的家用计算机上,我具有物理磁盘分区以及DM设备(逻辑卷)。

# cat /proc/partitions

主要次要#blocks名称

   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

首先,它们没有任何类型或ID,它们仅由起始扇区编号和长度定义。

# 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

是woodman提到的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是在我的第一个磁盘(使用CentOS)的/ dev / hdb2分区上创建的两个LV(lvroot和lvswap),而dm-2和dm-3是在我的/ dev / hda2分区上创建的LV第二张磁盘(使用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

逻辑卷没有分区ID或类型。它们由物理盘区(PE)组成,它们可以分布在多个物理卷(PV)上,每个物理卷可以是一个分区(例如/ dev / sda2)或完整的磁盘(例如/ dev / sdb)。



0

分区类型ID仅存储在分区表中,而不存储在分区本身上。另一方面,LVM逻辑卷通常被视为单个分区,而不是磁盘,因此没有分区表,因此也没有要查找的分区类型ID。

还要注意,类型ID仅在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命令。

这是一个不错的选择,但是OP要求提供大多数答案中都省略的类型。从上面使用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
# 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.