man pvcreate
说
pvcreate 初始化PV,使其被识别为属于LVM,并允许PV 在VG 中使用。 PV 可以是磁盘分区、整个磁盘、元设备或环回文件。
对于 DOS 磁盘分区,应使用 fdisk(8)、cfdisk(8) 或等效函数将分区 ID 设置为 0x8e。对于 GUID 分区表 (GPT),ID 为 E6D6D379-F507-44C2-A23C-238F2A3DF928。对于整个磁盘设备只需擦除分区表,这将有效地破坏该磁盘上的所有数据。这可以通过将第一个扇区归零来完成:
dd if=/dev/zero of=PhysicalVolume bs=512 计数=1
如果我使用pvcreate
标记一个磁盘作为PV,是否意味着pvcreate
会破坏磁盘上的所有数据?
如果我使用pvcreate
标记一个分区其中包含一个文件系统作为PV作为PV,它会破坏文件系统中的所有数据吗?如果是,是否意味着我无法将文件系统从分区移动到 LV,将pvcreate
分区作为 PV(然后是lvcreate
LV)?
谢谢。
答案1
是不是说pvcreate会破坏磁盘上的所有数据,
虽然您可能会丢失数据(就像您可能在沙发后面丢失一只袜子一样)。
不,如果不会破坏您的所有数据,甚至大部分数据。而且,您问题中的引号,不要说这会破坏您的数据。
pvcreate
、 或 都不会mkfs
安全地删除分区。它们不会写入分区的大部分内容。他们只写他们需要的内容,其余的被忽略。
当操作系统读取此分区时,它将查看它是什么类型,并且仅跟踪初始化数据的链接,其余旧内容将被忽略。但是,如果您选择以不同的方式阅读它(取证分析),那么您可以看到以前的大部分内容)。
然而
虽然我们不能相信他们会删除数据,但我们也不能相信他们不会覆盖数据。他们写入需要的内容,这可能会覆盖重要数据。
有没有办法从一种文件系统/PV 转换为另一种文件系统/PV?
我不知道。这取决于你要转换成什么。
答案2
如果您有一个包含文件系统和数据的分区,并且希望更改为 LVM,则如果不将现有数据移至其他位置然后进行恢复,则无法执行此操作。如果您pvcreate
在包含文件系统的分区上发出命令,文件系统超级块将被覆盖。磁盘上的所有数据都将变得无法访问。 (虽然从技术上讲,数据是可恢复的,因为位仍然存在,但文件名不存在)出于您的目的,一旦您在磁盘上创建 pvcreate,以前存在的数据就会消失。
在这种情况下,pvcreate
会看到文件系统存在并弹出警告,例如
"Filesystem detected, overwrite? (y/n)"
似乎没有办法 pvcreate 并保留现有的文件系统。如果可以的话确实很方便,但似乎不可能。问题似乎是 LVM 占用磁盘的第一部分,该部分与文件系统占用的磁盘部分相同。如果您在设置 LVM 后创建文件系统,则该文件系统将写入 LVM 信息之后的磁盘的第一部分。为什么我们不能简单地移动文件系统超级块?因为所需的空间已经被数据占用了。为什么我们不能转移这些数据?因为这种转变需要在超级块中得到体现。
“为什么我们不能移动数据、更新超级块、移动超级块、在磁盘上创建 pvcreate,从而保留数据?”
这是一个很好的问题。如果有人知道可以执行此操作的工具,请在此处发布,因为这似乎是原始问题的关键。