Answers:
您不能在仅具有/,/ boot和<swap>分区的运行服务器上替换它们。唯一的方法是卸载/分区,缩小它并在最后创建一个新的LVM分区,但是由于您只有远程ssh访问权限,因此您不可能在没有数据损坏的情况下缩小一个已安装的活动分区。
我这边的快速更新。上下文:今天,我上线了一个装有物理分区方案而不是LVM的专用服务器。有3个分区:
/ boot(ext4)-512M /(ext4)-730G交换-8G
由于没有控制台访问权的性质,最终目标是将现有的根分区转换为LVM。
考虑到ext4不可收缩,唯一的方法是将交换分区重新用作临时根。我还决定使用LVM设置临时根目录,以确保该过程可以正确的方式工作。
首先是掉期:
swapoff -a
然后通过parted调整分区的大小(最初从742开始到750):
parted
resize 3 742 744
并为LVM创建了一个分区:
mkpart primary ext2 744 750
set 4 lvm on
为临时根目录创建PV / VG / LV /文件系统:
pvcreate /dev/sda4
vgcreate VolGroup00 /dev/sda4
lvcreate -L 5.73G -n tmproot VolGroup00
mkfs.ext4 /dev/VolGroup00/tmproot
下一步是将根复制到临时位置:
mount /dev/VolGroup00/tmproot /media
rsync -ravzxq / /media/
一旦一切就绪,则还必须更改/ media / etc / fstab中的根文件系统条目:
/dev/VolGroup00/tmproot / ext4 defaults 1 1
在没有控制台访问权限的情况下,几乎可以说,最令人讨厌的部分是修改/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
修改后的条目:
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
出于安全考虑:在内核中添加了insmod lvm以及dolvm参数,并且根路径也更改为root = / dev / mapper / VolGroup00-tmproot。务必在此时使用/ dev / mapper /路径。为了安全起见,我还添加了panic = 10参数,并且未更改标题中的默认启动项。取而代之的是,我尝试一次告诉grub使用新设置启动,并且在失败的情况下,原始条目可以工作:
grub
savedefault --default=1 --once
最后:
reboot
第一次对我来说还可以,所以我重复了整个过程,在原始根分区的顶部创建了一个新的卷组,最后我使用LVM将根目录放在正确的位置。
希望这可以帮助。
update-grub
。然后,您运行grub-reboot #
以设置菜单项以仅用于下一次重新引导。然后,您可以重新启动。
在Linux中,没有什么是不可能的,但是您必须坚定并疯狂地尝试您描述的内容。请记住,如果您仅具有SSH访问权限,则很可能会因错误而失去对服务器的访问权限。如果您有远程“串行”控制台和虚拟电源开关,那可能会有所帮助。就是说,如果您安装的是全新的安装而不会丢失任何数据,那么为什么不尝试呢?我找到了将Linux系统远程转换为RAID1的教程。您尝试使用LVM的步骤类似。
首先,让我们考虑临时存储空间的必要性。假设服务器上没有第二个磁盘,则可以使用parted
来缩小现有分区。当然,这需要引导分区和根分区使用少于一半的磁盘,并且它们必须使用可收缩的文件系统。(例如,XFS和JFS不可收缩。)
缩小现有分区后,可以在释放空间,其中的卷组和逻辑卷中创建LVM物理卷。复制您的文件系统。(复制根文件系统时,您应该杀死除以外的所有内容sshd
,并且最好处于单用户模式。您可能必须使用rsync
而不是dd
因为要复制已挂载的文件系统。)
然后,按照Warren Togami的教程中所述,准备一个具有LVM支持的initrd并告诉GRUB引导到新系统中。完成此操作后,使用parted
LVM卷并增加LVM卷即可删除旧文件系统,这很简单。
祝好运!让我们知道它是否有效!
之前,我已将我的根分区“ /”(其指向在centos 6上具有10G的磁盘分区“ / dev / sda2”)迁移到LV分区,执行的步骤如下:
ls / sys / class / scsi_host / | 同时读x; 做echo“---”> / sys / class / scsi_host / $ {x} / scan; 做完了
fdisk / dev / sdb
零件探头/ dev / sdb
pvcreate / dev / sdb1 vgcreate vg_root / dev / sdb1 lvcreate -v -n lv_root vg_root -L 9G
mkfs -t ext4 / dev / vg_root / lv_root mkdir / mnt / new_root / 挂载-t ext4 / dev / vg_root / lv_root / mnt / new_root /
df -lhT 猫/ etc / fstab 笨蛋
查找/ -xdev | cpio -pmvd / mnt / new_root /
cd / mnt / new_root / 挂载-t proc / proc proc 挂载-t sysfs / sys sys / 挂载--rbind / dev dev /
chroot / mnt / new_root /
vi / etc / fstab
#UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa / ext4默认值1 1 / dev / mapper / vg_root-lv_root / ext4默认值1 1
触摸./autorelabel
出口
#之前 标题CentOS 6(2.6.32-573.el6.x86_64) 根(hd0,0) 内核/vmlinuz-2.6.32-573.el6.x86_64 ro root = UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa rd_NO_LUKS LANG = zh_CN.UTF-8 rd_NO_MD SYSFONT = latarcyrheb-sun16 crashkernel = auto KEYBOARDTYPE = pc rd_NO_DM rhgb安静 的initrd /initramfs-2.6.32-573.el6.x86_64.img
#现在 标题CentOS 6(2.6.32-573.el6.x86_64) 根(hd0,0) 内核/vmlinuz-2.6.32-573.el6.x86_64 ro root = UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa rd_NO_LUKS LANG = zh_CN.UTF-8 rd_NO_MD SYSFONT = latarcyrheb-sun16 crashkernel = auto KEYBOARDTYPE = pc rd_NO_DM rhgb安静 的initrd /initramfs-2.6.32-573.el6.x86_64.img 标题CentOS 6(2.6.32-573.el6.x86_64-lvroot) 根(hd0,0) Insmod LVM 内核/vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root = / dev / mapper / vg_root-lv_root rd.lvm.lv = vg_root / lv_root LANG = zh_CN.UTF-8 SYSFONT = latarcyrheb-sun16 crashkernel = auto键盘类型= pc KEYTABLE =我们rhgb安静 的initrd /initramfs-2.6.32-573.el6.x86_64.img
#添加的行是 标题CentOS 6(2.6.32-573.el6.x86_64-lvroot) 根(hd0,0) Insmod LVM 内核/vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root = / dev / mapper / vg_root-lv_root rd.lvm.lv = vg_root / lv_root LANG = zh_CN.UTF-8 SYSFONT = latarcyrheb-sun16 crashkernel = auto键盘类型= pc KEYTABLE =我们rhgb安静 的initrd /initramfs-2.6.32-573.el6.x86_64.img
cd /启动 cp -av initramfs-$(uname -r).img initramfs-$(uname -r).img.old dracut -f
初始化6 # 要么 重启
dd if = / dev / zero of = / dev / sda bs = 1
#default = 0 默认值= 1
希望以前提供的信息对某人有所帮助。
提前致谢,
曼努埃尔·拉佐(Manuel Lazo)
他可以在(先前禁用的)交换分区中设置一个中间救援系统(如果您的计算机中没有RAC,则需要进行神经破坏工作),然后从那里进行工作。同样,对于某些文件系统,存在在线调整大小工具,然后缩小分区并重新启动是KWYD的一种情况,但可能。