您知道“fdisk -l”如何列出驱动器分区表并显示每个分区的分区 ID/类型吗?
是否有类似的方法来获取 LVM 逻辑卷的分区 ID?
编辑:我知道“lvs”,这主要是我所寻找的(它为我提供了逻辑卷列表,有点像“fdisk -l”……除了知道逻辑卷的分区类型(我喜欢将其视为“虚拟分区”)也很有用。该信息是“fdisk -l”在右侧最后两列列出的内容。(例如,“8e”表示物理 LVM 分区,“83”表示 Linux ext,等等)。
我正在寻找的工具可能不是 LVM 的一部分;也许只是一些其他可以根据分区打印分区 ID/类型的实用程序?
答案1
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
答案2
逻辑卷没有像旧 DOS 分区那样的“类型”。与 Unix 文件一样,您必须读取它们才能知道它们是什么。类似下面的操作应该可以解决问题:
lvs --all --noheadings | sed 's/-/--/' | while read lv vg rest; do file --dereference --special-files "/dev/mapper/$(echo $vg)-$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)
[...]
答案3
LVM 是物理磁盘之上的抽象。
逻辑卷(您可以格式化并在其上放置文件)是从卷组分配的,卷组可能由一个或多个物理范围(实际的物理磁盘分区)组成。
您的问题有点不清楚。如果您想显示逻辑卷物理上位于哪些磁盘分区上,lvdisplay --maps 可能会有所帮助:
# lvdisplay--maps --- 逻辑卷 --- LV 名称 /dev/VolGroup00/root 卷组名称 VolGroup00 LV UUID xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx LV 写访问 读/写 LV 状态可用 # 打开 1 LV 大小 5.00 GB 当前 LE 160 段 1 分配继承 自动预读扇区 - 目前设置为 256 块设备 253:0 --- 段 --- 逻辑范围 0 至 159: 线性类型 物理卷 /dev/sda2 物理范围 0 至 159
答案4
1) 逻辑卷不是(物理)磁盘分区。它是使用 Device Mapper 在 Linux 内核中创建的虚拟块设备。这项技术可用于使用两个磁盘分区设置单个块设备,以及使用单个磁盘分区设置两个块设备,等等。
# dmsetup targets
如果你想了解更多关于 DM 的信息,请访问主页,检查一下手册页,阅读 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
它是 timberman 提到的 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 是在我的第二个磁盘(使用 Fedora)的 /dev/hda2 分区上创建的 LV。
逻辑设备可以有标签(UUID)。您可以使用上面提到的 lvdisplay 命令检查它们。但它们只是标签,您可以使用(-u)代替主、次编号(-j -m 开关)。