我在 SPARC 上有一个 Solaris 10 系统,托管多个安装在 ZFS zvols 上的 Linux 来宾 LDom。不过,调整 zvol 大小后,Linux 不会“检测”磁盘大小调整,据我所知,这可能是由于磁盘上的 VTOC 仍然指定旧磁盘大小。
这是使用主虚拟磁盘的 ldom 映射:
ldadm@ldom0> ldm list -o disk ldom1
NAME
ldom1
DISK
NAME VOLUME TOUT ID DEVICE SERVER MPGROUP
osdisk0 ldom1osdisk0@p-vds0 0 disk@0 primary
这是调整大小之前相应的 zfs 卷:
root@ldom0> zfs list -t volume
NAME USED AVAIL REFER MOUNTPOINT
ldom0/LDom/ldom1/osdisk0 13.5G 71.3G 3.10G -
然后我调整了音量大小:
root@ldom0> zfs set volsize=40g ldom0/LDom/ldom1/osdisk0
这是之后的 zvol:
root@ldom0> zfs list -t volume
NAME USED AVAIL REFER MOUNTPOINT
ldom0/LDom/ldom1/osdisk0 42.5G 101G 3.10G -
然而,当我启动Linux时:
ldadm@ldom0> telnet localhost 5000
ldom1 login: root
Password:
root@ldom1> fdisk -l
Disk /dev/vdiska: 12 GiB, 12884901888 bytes, 25165824 sectors
Geometry: 255 heads, 63 sectors/track, 1566 cylinders
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 8192 bytes
I/O size (minimum/optimal): 8192 bytes / 8192 bytes
Disklabel type: sun
Device Start End Sectors Size Id Type Flags
/dev/vdiska1 0 192779 192780 94.1M 1 Boot
/dev/vdiska2 192780 8482319 8289540 4G 83 Linux native
/dev/vdiska3 0 25157789 25157790 12G 5 Whole disk
/dev/vdiska4 8482320 12466439 3984120 1.9G 82 Linux swap
/dev/vdiska5 12466440 25157789 12691350 6.1G 83 Linux native
如前所述,我认为这是正常行为,因为 VTOC 标签包含此处所述的大小1。有关于如何在 Solaris 上编辑或打印标签的文档,例如。这里2,但我没有找到任何适用于Linux的东西。
我假设我需要编辑 VTOC 是否正确?如果需要,如何编辑?或者我错过了什么?
答案1
虽然我认为 VTOC 是问题的答案,但真正的答案只是 ldm 没有注意到这些变化。一个简单的删除和读取解决了这个问题,即:
ldadm@ldom0> ldm stop ldom1
ldadm@ldom0> ldm rm-vdisk osdisk0 ldom1
ldadm@ldom0> ldm add-vdisk osdisk0 ldom1osdisk0@p-vds0 ldom1
ldadm@ldom0> ldm start ldom1