![为什么partx无法读取某些磁盘的分区表](https://linux22.com/image/150270/%E4%B8%BA%E4%BB%80%E4%B9%88partx%E6%97%A0%E6%B3%95%E8%AF%BB%E5%8F%96%E6%9F%90%E4%BA%9B%E7%A3%81%E7%9B%98%E7%9A%84%E5%88%86%E5%8C%BA%E8%A1%A8.png)
部分无法读取/dev/sdb
该系统上的分区表。为什么它返回如下所示的“无法读取分区表”,而不是空/空?这个“失败”结果是否总是意味着设备的分区表已损坏?
注意:这里sdb可以像LVM一样正常工作,无需任何分区!
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 vgroot lvm2 a-- 89.00g 4.00m
/dev/sda4 vgroot lvm2 a-- 746.78g 746.78g
/dev/sdb vgdata lvm2 a-- <836.99g 0
#
#
# sfdisk -l /dev/sdb
Disk /dev/sdb: 109262 cylinders, 255 heads, 63 sectors/track
#
#
# sfdisk -l /dev/sda
Disk /dev/sda: 109262 cylinders, 255 heads, 63 sectors/track
Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sda1 0+ 109262- 109263- 877647871+ ee GPT
sfdisk: start: (c,h,s) expected (0,0,2) found (0,0,1)
/dev/sda2 0 - 0 0 0 Empty
/dev/sda3 0 - 0 0 0 Empty
/dev/sda4 0 - 0 0 0 Empty
#
#
# partx -s /dev/sdb
partx: /dev/sdb: failed to read partition table
#
# partx -s /dev/sda
NR START END SECTORS SIZE NAME UUID
1 2048 411647 409600 200M EFI System Partition 255f05dd-3c30-4eb5-b4ef-e222216eb27e
2 411648 2508799 2097152 1G 0eba1772-1106-4a63-bad6-6d20be988dba
3 2508800 189171711 186662912 89G 39fab8c9-bd96-47a2-b5db-495e43159055
4 189171712 1755295710 1566123999 746.8G 9e3d6237-5c7f-4443-8b60-b258052a8b32
#
#
# pvdisplay /dev/sdb
--- Physical volume ---
PV Name /dev/sdb
VG Name vgdata
PV Size 836.99 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 214269
Free PE 0
Allocated PE 214269
PV UUID IsOr0G-UBTt-Qn1E-bx6R-dzvY-HqSE-bNiCaq
#
#
# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 7.4 (Maipo)
Release: 7.4
Codename: Maipo
#
#
另一个系统场景:
下面的partx可以直接输出null/empty,没有任何分区,为什么?
注:下面的sdb也可以作为没有任何分区的LVM正常工作!
#
#
# partx /dev/sdb
#
#
#
# pvdisplay /dev/sdb
--- Physical volume ---
PV Name /dev/sdb
VG Name vgdoc
PV Size 600.00 GB / not usable 4.00 MB
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 153599
Free PE 0
Allocated PE 153599
PV UUID mMPvrE-NBP5-9n3J-77w5-57p0-1R7E-ggFCEj
#
#
#
# lsb_release -a
LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 5.5 (Tikanga)
Release: 5.5
Codename: Tikanga
#
#
1)我的想法是,如果磁盘确实没有分区,partx不应该以“无法读取...”退出。
注意:如您所见,partx 仅在另一个具有非分区磁盘的系统中输出 null/empty。
2)在磁盘分区上创建并使用PV/LVM是正常的,不是吗?
Device Boot Start End #cyls #blocks Id System
/dev/sda1 * 0+ 25- 26- 204800 83 Linux
/dev/sda2 25+ 36404- 36380- 292215808 8e Linux LVM
答案1
partx
需要一个分区表。发布的结果显示 上没有分区表sdb
。
这与有分区表但没有分区的磁盘不同。在这种情况下,该磁盘上不能有 LVM PV。
比较输出
blkid -o export /dev/sda
blkid -o export /dev/sda3
blkid -o export /dev/sdb
您可能还会发现lsblk
有用。
sdb
不能同时格式化为 LVM PV 和分区表,因为它们会在第一个扇区中包含冲突的结构。要看到它们都包含第一个扇区中的结构,请比较:
wipefs --no-act /dev/sda
wipefs --no-act /dev/sda3
wipefs --no-act /dev/sdb
的“偏移量”列wipefs --no-act
以字节为单位。
如果你跑的话一定要小心wipefs
。它的作用就像听起来的那样。不过,如果你跑的话,那是安全的wipefs --no-act
。