无法单独打开/ dev / xxx。 挂载的文件系统。 如何在安装的磁盘上创build卷组和lvm?

我有3个分区sdb1 sdb2和sdb3。 我想在sdb3中创build一个卷组和lvms,这是安装的Linux分区,位于我的根文件夹中。

我正在input:

pvcreate /dev/sdb3 

但我得到:

 Can't open /dev/sdb3 exclusively. Mounted filesystem. 

好吧,我知道我的分区是挂载的,实际上我正在处理它。 有没有办法创build卷组而不要求我的提供者重新格式化我的分区。 我的意思是通过SSH?

你可以做到这一点,但很难。

步骤基本如下:

  1. 克隆或创build一个ramfs救援系统,并启动它。 如果你忘记了一些东西,它必须足够大才能获得新的包装。
  2. 在chrooted环境中启动它。
  3. 启动他自己的ssh守护进程(当然,它将运行在不同于22的端口上)。 当然,你应该testing你是否可以login到这个SSH守护进程。
  4. 这是关键。 它只在linux上工作,它被命名为pivot_root 。 此系统调用/工具可以更改当前正在运行的系统的根分区。
  5. pivot_root /mnt/rescuesys ,你的pivot_root /mnt/rescuesys ramfs救援系统正在运行。 如果它成功了,那么你的原始系统将以chroot运行,并且你的救援系统将作为真正的根系统运行。
  6. 使用telinit q命令重新启动init(进程1),以便从真实(现在是ramfs)系统运行,而不是从基于sdb3的系统运行。 也许telinit Qtelinit utelinit U也可能是需要的,它也取决于你的init系统。
  7. 使用lsof -n|grep /mnt/<oldsysroot>命令,您可以检查旧系统是否有任何已打开的fiedescriptor。 如果是,杀,一个一个地阻止他们。
  8. 卸下,换掉,直到旧系统没有任何东西遗留下来。 如果你做的一切正常,现在你可以卸载你的旧的sdb3。 如果没有,转到7(甚至6)。
  9. 备份你的sdb3的内容。 你可以做到这一点,即使有一点点的文件系统resize,重新分区,复制,因为你有地方。
  10. 使用pvcreate等命令创buildlvm卷,创buildlvs,装载它们,然后复制根系统。
  11. 再次做1-9点,包括pivot_root 。 从这一点来说,你的真正的根系很快就是你原本想要的逻辑卷。
  12. 销毁你的救援系统(如6-8点),以释放记忆。 不要忘记启用交换。 在理想的,安全优化的情况下,它也应该存在于encryption的逻辑卷上,尽pipe它会严重降低速度。
  13. 修复/etc/fstab ,重新configuration/重新安装grub,以及任何类似的。
  14. 因为你不能确定你的系统是否真的可以启动,直到你没有启动它,尽可能地做所有的事情,但是如果你的服务器在物理上(或者至less有足够的空间远程pipe理function,可以是您的托pipe服务提供商的远程pipe理服务)。

你的build议不应该在线完成,因为它很容易出错而且可能很危险。 你需要调整分区的大小来做到这一点,当你试图混淆你系统的根文件系统所在的分区时,你可能会丢失数据。 这是检查的目的。

使用gparted的livecd来调整分区大小,然后在释放的空间中设置一个encryption的文件系统。