Linux带数据换硬盘扩容

北慕城南 提交于 2020-02-28 14:55:56

之前一台linux云服务器硬盘分配过小,已经影响到使用。因此决定新加一块硬盘,将原有内容放在新硬盘上,实现扩容。因为是云服务器,还算比较简单,下面记录一下过程。虽然是在虚拟机上操作,但对于物理机带数据换硬盘也有参考意义。

 

原有的云服务器硬盘为40G,现在想改成200G。为了操作上简单,直接新增一块200G硬盘,然后把对应的分区都创建出来,只是大小做了调整。最后把对应分区的文件复制过来,把原有硬盘删掉,新硬盘接口编号修改一下,重启即可。整个过程都需要在root下操作,下面介绍详细过程。

 

新增硬盘后,进入系统,利用fdisk查看当前硬盘情况

/sbin/fdisk -l

并用df查看硬盘挂载情况

df -h

可以看到原有的硬盘/dev/sda和新增的硬盘/dev/sdb,但sdb还没分区。因为原有的sda分为4个区,sda1(挂载到boot), sda2(挂载到root), sda3(挂载到home)和sda4,其中前三个是主分区,sda4是扩展分区,扩展分区上又有逻辑分区sda5(swap分区),因此新硬盘也按此分区,只是各个分区大小不同。

 

运行fdisk对sdb进行分区

/sbin/fdisk /dev/sdb

类似再创建两个分区,然后再如下创建扩展分区和逻辑分区,并把分区格式改为82。

最后保存修改并退出。

分区修改写入后,再执行mkfs进行格式化

/sbin/mkfs -t ext3 /dev/sdb1
/sbin/mkfs -t ext3 /dev/sdb2
/sbin/mkfs -t ext3 /dev/sdb3

查看/etc/fstab文件,并将新创建的磁盘分区label修改为和fstab文件中一致

/sbin/e2label /dev/sdb1 /boot
/sbin/e2label /dev/sdb2 /
/sbin/e2label /dev/sdb3 /home

命令e2label除用于修改分区label,也可用于查看分区label

/sbin/e2label /dev/sda1
/sbin/e2label /dev/sdb1

 

同样地,利用如下命令格式化swap分区sdb5,

/sbin/mkswap -L SWAP-sda5 -v1 /dev/sdb5

其中SWAP-sda5是fstab文件中对应的label,-v1代表新版本的swap格式(老版本不支持label挂载)。

 

创建临时文件夹,此处为/home/tmpdisk,在其中创建boot, home, root三个文件夹,并分别挂载sdb1, sdb2, sdb3。

mkdir /home/tmpdisk
mkdir /home/tmpdisk/boot
mkdir /home/tmpdisk/root
mkdir /home/tmpdisk/home
mount -t ext3 /dev/sdb1 /home/tmpdisk/boot
mount -t ext3 /dev/sdb2 /home/tmpdisk/root
mount -t ext3 /dev/sdb3 /home/tmpdisk/home

利用如下命令将/boot, /, /home三个目录下的内容打包压缩到对应的/home/tmpdisk/boot, /home/tmpdisk/root, /home/tmpdisk/home下。

tar zcpvf /home/tmpdisk/boot/boot.tar.gz --exclude=/lost+found /boot
tar zcpvf /home/tmpdisk/home/home.tar.gz --exclude=/lost+found --exclude=/home/tmpdisk /home
tar zcpvf /home/tmpdisk/root/root.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/home --exclude=/mnt --exclude=/sys --exclude=/boot /

完成之后进入相应的文件夹,用下面的命令分别解压。

cd /home/tmpdisk/boot
tar zxpvf boot.tar.gz
mv boot/* boot/.* .
rmdir boot

cd /home/tmpdisk/home
tar zxpvf home.tar.gz
mv home/* home/.* .
rmdir home

cd /home/tmpdisk/root
tar zxpvf root.tar.gz
mkdir home
mkdir boot
mkdir mnt
mkdir sys
mkdir proc

解压后,执行如下指令,生成新的grub。

mount -t ext3 /dev/sdb1 /home/tmpdisk/root/boot
mv /home/tmpdisk/root/boot/grub /home/tmpdisk/root/boot/grub_back
/sbin/grub-install --root-directory=/home/tmpdisk/root /dev/sdb
rm -Rf /home/tmpdisk/root/boot/grub
mv /home/tmpdisk/root/boot/grub_back /home/tmpdisk/root/boot/grub

实际上上面最重要的是第三句,只是为了在sdb上生成新的引导扇区。新生成的grub文件夹又被删掉,最终还是使用老版本的grub。

 

关闭系统,把老硬盘删除,把新硬盘的编号变为0:0,重启虚拟机。

可以看到,新硬盘已经成功挂载了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!