我正在开发一个分区工具,出于测试目的,我必须在环回设备上重复运行分区和 LVM 配置
- 分区
/dev/loop0
有3个分区/dev/loop0p1 /dev/loop0p2 /dev/loop0p3
- 创建LVM
pvcreate /dev/loop0p2 /dev/loop0p3
vgcreate test_vg /dev/loop0p2 /dev/loop0p3
lvcreate -L 1GB test_vg -n vol1 --wipesignature y --zero y
lvcreate -L 1GB test_vg -n vol2 --wipesignature y --zero y
partprobe /dev/loop0
经过这样的运行后,我想在同一设备上再次返回所有内容,但是,在运行分区时我收到错误
Partition(s) 2, 3 on /dev/loop0 have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
现在我知道解决方案是重新启动,但在开发过程中持续这样做是不合理的。有没有办法解决这个问题而不必一直重新启动?
答案1
此错误似乎是在您尝试修改或创建分区 /dev/loopxp2 和 /dev/loopxp3 时引起的,尽管它们仍用作 LVM 的物理卷。
从这个意义上来说,LVM 与分区不同。即使没有安装文件系统,物理卷仍由 LVM 本身使用。
在你的问题中你没有提到创建。一个卷组。这里的原则是,您需要一起对整个卷组进行操作(全部可用或全部不可用)。
vgexport
要分离它并拆除卷组所需的环回设备;这将停止 LVM 使用物理卷。然后您将能够毫无错误地操作分区表。