朋友今天突然找我,說(shuō)是要把系統(tǒng)的根分區(qū)磁盤擴(kuò)大。接到這個(gè)問(wèn)題,我馬上開始查看下系統(tǒng)情況。是一臺(tái) CentOS 6.6 的系統(tǒng),有倆塊磁盤分別 vda1 是 15G 根,vda2 的 1G swap ,總大小是 21G 的一塊 vda !現(xiàn)在要求去增大 vda1 分區(qū)。
后面我給朋友三個(gè)方案:
第一個(gè)就是將 vda5 隨意作為 home、var 之類的掛載;
第二個(gè)就是做快捷方式 ln鏈接到vda1 ,5G 加上 15G 也勉強(qiáng)擴(kuò)大了;
最后一種也就是最麻煩的,加大 vda、做一個(gè)LVM,將數(shù)據(jù)遷移到LVM、將vda1加入到LVM,最后實(shí)現(xiàn)系統(tǒng)的擴(kuò)容。
朋友選擇了最后一種,我用了很多種辦法。網(wǎng)上說(shuō)推薦是dd再是tar最后嘗試cpio、backup、dump,然后我沒辦法用了最后一種發(fā)現(xiàn)效果遠(yuǎn)遠(yuǎn)高于dd。
本次教程也是從頭再試驗(yàn)一遍,并且記錄好便己便人。
一、預(yù)備知識(shí):
1、了解,什么是dd以及什么是dump?
dd命令用于復(fù)制文件并對(duì)原文件的內(nèi)容進(jìn)行轉(zhuǎn)換和格式化處理。
--對(duì)于dd命令,僅僅只是介紹。dd命令比 Windows 的下 ghost 更好,Linux下也是極棒的。
dump命令用于備份ext2或者ext3文件系統(tǒng)??蓪⒛夸浕蛘麄€(gè)文件系統(tǒng)備份至指定的設(shè)備,或備份成一個(gè)大文件。
--對(duì)于dump命令,備份用到。dump可以幫助我們將分區(qū)進(jìn)行打包成一個(gè)文件。
2、嘗試,備份的需要如何恢復(fù)?
restore 命令是 dump 命令的逆過(guò)程,用于還原 dump 命令生成的備份文件。
--這也是很重要的恢復(fù)命令??梢詫⑽覀兊?dump 文件進(jìn)行恢復(fù)。
/etc/fstab 文件描述系統(tǒng)中各種文件系統(tǒng)的信息,一般而言,應(yīng)用程序僅讀取這個(gè)文件,而不對(duì)它進(jìn)行寫操作。
--這個(gè)文件需要系統(tǒng)管理員進(jìn)行更新,確保系統(tǒng)讀取時(shí)正確執(zhí)行。
/boot/grub/grub.conf 文件是 grub 配置文件, grub 才能找到 kernel,系統(tǒng)才能正常啟動(dòng)。
--這個(gè)文件也是需要我們更改的,制定grub讀取新分區(qū)。
首先要求有一個(gè)可以正常啟動(dòng)的分區(qū),然后要有剩余空間?。ū仨氉⒁?code>/dev/sdb1 的容量大于 /dev/sda1,且/dev/sdb1應(yīng)為L(zhǎng)VM卷)
我用虛擬機(jī)模擬了服務(wù)器的真實(shí)情況:/dev/sda1 是正常系統(tǒng)啟動(dòng)分區(qū)、/dev/sdb1 是新的磁盤分區(qū)。
步驟一、用dump備份整個(gè)根分區(qū),使用restore恢復(fù)。
步驟二、更改備份好的系統(tǒng)fstab文件以及更改boot下引導(dǎo)文件。
小竅門:Linux自帶的光盤一般都會(huì)急救的功能,善于利用!
二、環(huán)境模擬:
虛擬機(jī)設(shè)置及分區(qū)情況:

這里有兩種情況:一個(gè)是某分區(qū),一個(gè)是新磁盤。兩者類似,為了方便本文使用的是新磁盤的方式。


三、實(shí)戰(zhàn)部分:


注意:我使用的是一個(gè)sdb1作為lvm磁盤,sdb2作為boot磁盤(為了方便后面的引導(dǎo),因?yàn)間rub不支持lvm磁盤引導(dǎo)boot)
I、創(chuàng)建LVM卷
1、首先要確保系統(tǒng)是安裝lvm組件的,可以使用rpm -qa查詢信息

2、然后卸載 /dev/sdb1,然后在其上用 pvcreate 創(chuàng)建物理卷和 vgcreate 創(chuàng)建卷組 vgtest
pvcreate /dev/sdb1
vgcreate vgtest /dev/sdb1

lvcreate -L 25G -n lvtest vgtest
mkfs.ext4 /dev/mapper/vgtest-lvtest

II、備份MBR引導(dǎo)文件。
dd if=/dev/sda1 of=/mnt/grub/mbr.bin bs=512 count=1

III、備份 / 目錄和 /boot 目錄
1、備份 / 目錄。在 dump 命令前后輸入的 date 命令是為了查看備份使用的時(shí)長(zhǎng)。
date && dump -0f /mnt/lvm/rootfs-20160824.bak / && date

2、為了安全引導(dǎo)我們也備份一下 /boot 目錄:
date && dump -0f /mnt/grub/boot-20160824.bak /boot && date

IV、嘗試恢復(fù)
1、還原 dump 的備份文件(/boot分區(qū)默認(rèn)已包括在/分區(qū))
date && restore -rf rootfs-20160824.bak && date

注意:這里boot文件需要更改成實(shí)際要啟動(dòng)的磁盤。
2、還原 MBR 的備份文件
dd if=/mnt/grub/mbr.bin of=/dev/sdb2

注意:這里使用dd命令恢復(fù)了之前備份的MBR文件。
VI、啟動(dòng)文件

注意:這里為了體現(xiàn)是chroot的,將主機(jī)名改成了NEW。一定要chroot進(jìn)入目錄查看是否能啟動(dòng)!并且確定防火墻SELinux的設(shè)置,最最最重要的OPENSSH要打開的!
1、首先通過(guò) blkid 查看分區(qū)的 UUID:

2、然后同步修改 /etc/fstab 文件以及切換了跟分區(qū)之后將變成的 /etc/fstab中的根分區(qū)指向:

3、重啟生效
注意:這里我重啟了一下,同時(shí)可以看出我的fstab是ok的并且都生效了。
VII、至此:
到這里為止,我們已經(jīng)完成了數(shù)據(jù)的轉(zhuǎn)移:在我們嘗試chroot進(jìn)入系統(tǒng)時(shí)就可以查看數(shù)據(jù)信息是否完整是否有丟失。
而下面更為重要的就是如何去恢復(fù)GRUB引導(dǎo):讓新磁盤可以脫離源磁盤的引導(dǎo)。
chroot進(jìn)入新磁盤:

輸入:root (hd1,0)
輸入:setup (hd1)
再次輸入:quit

備注:如果通過(guò)上面的操作還是無(wú)法正常進(jìn)入系統(tǒng),可以嘗試進(jìn)入DVD急救模式嘗試其他。

tip:這里僅僅只是小建議,可以嘗試使用CentOS自帶的急救模式。也可以選擇CLI完成操作!

tip:同上。僅僅為了向大家說(shuō)明最后最后還需要更改啟動(dòng)項(xiàng)選項(xiàng)!
注意:Virtualbox使用F12選擇新磁盤就好、VMware需要按F2進(jìn)入BIOS并使用“+-”完成啟動(dòng)項(xiàng)的調(diào)試。
如果引導(dǎo)還有問(wèn)題推薦看這篇文章**** http://os.51cto.com/art/201003/185574.htm
VIII、總結(jié):
所以說(shuō)裝系統(tǒng)的時(shí)候就使用LVM就很好,不然又是一頓折騰。
何必呢?但是技多不壓身,會(huì)些更裝逼嘛~
VVI、其他:
當(dāng)時(shí)我寫這篇文章時(shí)候犯了幾個(gè)錯(cuò)誤,比較重要的記下來(lái)。
第一個(gè):是當(dāng)時(shí)沒有先百度,查看GRUB對(duì)LVM的問(wèn)題(雖然現(xiàn)在的我知道怎么GRUB啟動(dòng)LVM,但是當(dāng)時(shí)是不知道)
第二個(gè): 居然不知道boot要單獨(dú)分區(qū)
第三個(gè):改了這個(gè)文件,忘了那個(gè)文件
第四個(gè):為了圖方便使用了/dev/sdx這樣形式,應(yīng)該用UUID
第五個(gè):疲勞寫作,第二天我就突然寫完這篇文章了...
最最后,系統(tǒng)移動(dòng)至LVM磁盤一定是可以得。改日我用服務(wù)器現(xiàn)場(chǎng)移動(dòng),到時(shí)候再給新文章!