将Linux系统转至LVM卷的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Linux系统转至LVM卷的方法相关的知识,希望对你有一定的参考价值。

朋友今天突然找我,说是要把他的 Linux 系统的根分区磁盘扩大。接到这个问题,我马上开始查看下系统情况。是一台 CentOS 6.6 的系统,有两块磁盘分别是:/dev/vda1  15G 的根卷,/dev/vda2  1G 的交换分区,而整个 /dev/vda 磁盘总大小是 21G 5G   /dev/vda5 空闲空间)。现在要求增大/dev/vda1 分区。

 

有三个解决方案:

 

第一个就是将 /dev/vda 上的空闲分区(/dev/vda5)随意作为 /home/var 之类的挂载;

第二个就是做符号链接到 /dev/vda15G 加上 15G 也勉强扩大了;

最后一种也就是最麻烦的,做一个 LVM,将数据迁移到 LVM、将 /dev/vda1 加入到 LVM,最后实现系统的扩容。

朋友选择了最后一种,后面测试数据备份我用了很多种办法,网上推荐了 dd 以及 tar,最后我还尝试了 cpiobackupdump,然后发现最后一种 dump 的性能远远高于 dd

 

本次教程也是从头再试验一遍,并且记录好便己便人。

 

兄弟连Linux培训

友情提示~本文思路仅供参考!应该根据你的实际情况予以调整。如果在生产服务器上进行,请务必做好整个系统的全盘备份。操作不慎,有可能导致整个系统数据的丢失!本文作者及本站不对任何可能出现的风险承担任何责任。

 

一、预备知识

 

了解什么是 dd 以及什么是 dump

 

dd 命令用于复制一个设备/分区,原样输出到另外一个文件/设备/分区。

 

dump 命令用于备份 ext2 或者 ext3 文件系统。可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。

 

备份好了用什么恢复?

 

restore 命令是 dump 命令的逆过程,用于还原dump 命令生成的备份文件。

 

二、环境模拟

 

首先要求有一个可以正常启动的分区,然后要有剩余空间!(这里有两种情况:一个是某分区,一个是新磁盘。两者类似,为了方便本文使用的是新磁盘的方式。)

 

使用虚拟机模拟了服务器的真实情况:/dev/sda1 是正常系统启动分区、/dev/sdb1 是新的磁盘分区。(必须注意 /dev/sdb1 的容量大于/dev/sda1

 

 

三、实战部分

 

 

1、首先备份 MBR 主引导记录

 

dd if=/dev/sda1 of=/mnt/lvm/mbr.bin bs=512count=1

 

2、创建 LVM 

 

首先卸载 /dev/sdb1,然后在其上用 pvcreate 创建物理卷和 vgcreate 创建卷组 vgtest

 

umount /dev/sdb1

pvcreate /dev/sdb1

vgcreate vgtest /dev/sdb1

 

卷组创建好之后,可以用 vgs 命令查看卷组。

 

 lvs 命令查看逻辑卷,这个时候我们还没有任何逻辑卷。开始创建逻辑卷和文件系统:

 

lvcreate -L 25G -n lvtest vgtest

mkfs.ext4 /dev/mapper/vgtest-lvtest

 

3、备份 / 目录和 /boot 目录

 

首先备份 / 目录。在 dump 命令前后输入的 date 命令是为了查看备份使用的时长。

 

date && dump -0f/mnt/lvm/rootfs-20160824.bak / && date

 

保险起见我们也备份一下/boot 目录:

 

date && dump -0f/mnt/lvm/boot-20160824.bak /boot && date

 

4、尝试恢复

 

restore -rf rootfs-20160828.bakboot-20160824.bak

 

5、修改启动文件

 

注意:这里根分区(启动分区)需要更改成实际要启动的磁盘。否则不更改的话系统会出现应该使用 /dev/sdb1 LVM ,却使用了原来的 /dev/sda1 的情况!

 

首先通过 blkid 查看分区的 UUID

 

blkid

然后修改 /mnt/lvm/etc/fstab 文件(切换了跟分区之后将变成 /etc/fstab)中的根分区指向:

 

vim /mnt/lvm/etc/fstab

 

chroot 到新的分区里面,然后检查相应的分区设置。

 

chroot /mnt/lvm

注意:要 chroot 进入目录查看是否正确!并且确定防火墙 SELinux 等的设置,最最最重要的是 OpenSSH 要打开的! 

 

6、恢复 MBR 主引导记录

 

dd if=./mbr.binof=/dev/mapper/vgtest-lvtest

 

7、修正 GRUB 引导

 

这样可以让新磁盘可以脱离源磁盘的引导。

 

chroot 进入新磁盘。并重建 /boot 目录:

 

chroot /mnt/lvm

ls /boot/

rm -rf /boot/*

yum install grub -y

 

然后输入:

 

root (hd1,0)

setup (hd1)

quit

 

这样就将 GRUB 引导指向了新的磁盘。

 

重启可以看看是否有问题。

 

P.S.参与活动就可以获得包邮的linux光盘教程一份哦:http://www.hdb.com/party/8f84u.htmll

 



以上是关于将Linux系统转至LVM卷的方法的主要内容,如果未能解决你的问题,请参考以下文章

linux lvm 中的lv扩充影响里面的数据吗? 怎么扩充?

逻辑卷管理(LVM)

GNU/Linux下LVM配置管理以及快照卷物理卷卷组逻辑卷的创建和删除

Linux LVM逻辑卷简述

解析Linux中LVM与磁盘配额

linux系统初始化--​-调整linux文件系统