如何将物理分区系统更改为 LVM?

Dan*_*dez 11 linux lvm

我有一台带有 Debian 的服务器,它有 3 个物理分区,覆盖了所有磁盘:boot、root y swap。现在我想用 LVM 分区替换该分区。我知道如何在开始时使用 LVM 安装 Debian,但在这种情况下,我无法一开始就安装系统,因为提供商为我提供了一台可以远程访问的服务器,并且系统以这种方式安装。

如何仅使用 ssh 连接和可能的其他远程服务器来更改该分区,以放置一些临时数据?

小智 22

我这边的快速更新。上下文:今天我上线了一个安装了物理分区方案而不是 LVM 的专用服务器。有3个分区:

/boot (ext4) - 512M / (ext4) - 730G 交换 - 8G

由于没有控制台访问的性质,最终目标是将现有的根分区转换为 LVM。

考虑到 ext4 不可收缩,唯一的方法是将交换分区重用为临时根。我还决定使用 LVM 设置临时根目录,以确保该过程能够以正确的方式工作。

首先是交换:

swapoff -a
Run Code Online (Sandbox Code Playgroud)

然后通过 parted 调整分区大小(最初是从 742 开始到 750):

parted
resize 3 742 744
Run Code Online (Sandbox Code Playgroud)

并为 LVM 创建了一个分区:

mkpart primary ext2 744 750
set 4 lvm on
Run Code Online (Sandbox Code Playgroud)

临时根目录的 PV/VG/LV/文件系统创建:

pvcreate /dev/sda4
vgcreate VolGroup00 /dev/sda4
lvcreate -L 5.73G -n tmproot VolGroup00
mkfs.ext4 /dev/VolGroup00/tmproot
Run Code Online (Sandbox Code Playgroud)

下一步是将根复制到临时位置:

mount /dev/VolGroup00/tmproot /media
rsync -ravzxq / /media/
Run Code Online (Sandbox Code Playgroud)

一切就绪后,还必须更改 /media/etc/fstab 中根文件系统的条目:

/dev/VolGroup00/tmproot /                       ext4    defaults        1 1
Run Code Online (Sandbox Code Playgroud)

差不多到了,最后一个可以说是没有控制台访问权限的最不需要的部分是修改 /boot/grub/grub.conf:

原始条目:

title CentOS (2.6.32-279.22.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro root=UUID=e769af21-d9e1-455f-a6a7-7a9c84d8cbea rd_NO_LUKS LANG=en_US.UTF-8  KEYBOARDTYPE=pc KEYTABLE=hu rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img
Run Code Online (Sandbox Code Playgroud)

修改条目:

title CentOS (2.6.32-279.22.1.el6.x86_64) LVM
insmod lvm
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro LANG=en_US.UTF-8  KEYBOARDTYPE=pc KEYTABLE=hu SYSFONT=latarcyrheb-sun16 crashkernel=auto dolvm root=/dev/mapper/VolGroup00-tmproot panic=10 
#rd_NO_DM rd_NO_MD rd_NO_LUKS
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img
Run Code Online (Sandbox Code Playgroud)

为了安全起见:insmod lvm 与内核的 dolvm 参数一起添加,根路径也更改为 root=/dev/mapper/VolGroup00-tmproot。此时使用 /dev/mapper/ 路径很重要。作为安全存款,我还添加了 panic=10 参数并且没有更改标头中的默认引导条目。相反,我尝试告诉 grub 只使用新设置启动一次,如果失败,原始条目可以工作:

grub
savedefault --default=1 --once
Run Code Online (Sandbox Code Playgroud)

最后:

reboot
Run Code Online (Sandbox Code Playgroud)

第一次对我来说没问题,所以我重复了整个过程,在原始根分区的顶部创建了一个新的卷组,最后我使用 LVM 在正确的位置获得了根。

希望这可以帮助。


mri*_*con 1

您不可能在仅具有 /、/boot 和 <swap> 分区的正在运行的服务器上替换它们。唯一的方法是卸载 / 分区,缩小它并在最后创建一个新的 LVM 分区,但由于您只有远程 ssh 访问权限,因此不可能在不损坏数据的情况下缩小活动的已安装分区。

  • 永不说永不... (8认同)
  • 可以在安装 ext3 文件系统时调整其大小:http://linux.die.net/man/8/ext2online。 (3认同)