朋友今天突然找我嫌拣,說是要把系統(tǒng)的根分區(qū)磁盤擴大柔袁。接到這個問題,我馬上開始查看下系統(tǒng)情況异逐。是一臺 CentOS 6.6 的系統(tǒng)捶索,有倆塊磁盤分別 vda1 是 15G 根,vda2 的 1G swap 灰瞻,總大小是 21G 的一塊 vda 腥例!現(xiàn)在要求去增大 vda1 分區(qū)。
后面我給朋友三個方案:
第一個就是將 vda5 隨意作為 home酝润、var 之類的掛載燎竖;
第二個就是做快捷方式 ln鏈接到vda1 ,5G 加上 15G 也勉強擴大了要销;
最后一種也就是最麻煩的震糖,加大 vda仁讨、做一個LVM,將數(shù)據(jù)遷移到LVM一屋、將vda1加入到LVM养涮,最后實現(xiàn)系統(tǒng)的擴容趣钱。
朋友選擇了最后一種语婴,我用了很多種辦法孕惜。網(wǎng)上說推薦是dd再是tar最后嘗試cpio、backup酌壕、dump掏愁,然后我沒辦法用了最后一種發(fā)現(xiàn)效果遠(yuǎn)遠(yuǎn)高于dd歇由。
本次教程也是從頭再試驗一遍,并且記錄好便己便人托猩。
一印蓖、預(yù)備知識:
1辽慕、了解京腥,什么是dd以及什么是dump?
dd命令用于復(fù)制文件并對原文件的內(nèi)容進(jìn)行轉(zhuǎn)換和格式化處理溅蛉。
--對于dd命令公浪,僅僅只是介紹。dd命令比 Windows 的下 ghost 更好船侧,Linux下也是極棒的欠气。
dump命令用于備份ext2或者ext3文件系統(tǒng)【盗茫可將目錄或整個文件系統(tǒng)備份至指定的設(shè)備预柒,或備份成一個大文件。
--對于dump命令袁梗,備份用到宜鸯。dump可以幫助我們將分區(qū)進(jìn)行打包成一個文件。
2遮怜、嘗試淋袖,備份的需要如何恢復(fù)?
restore 命令是 dump 命令的逆過程锯梁,用于還原 dump 命令生成的備份文件即碗。
--這也是很重要的恢復(fù)命令∧暗剩可以將我們的 dump 文件進(jìn)行恢復(fù)剥懒。
/etc/fstab 文件描述系統(tǒng)中各種文件系統(tǒng)的信息,一般而言合敦,應(yīng)用程序僅讀取這個文件初橘,而不對它進(jìn)行寫操作。
--這個文件需要系統(tǒng)管理員進(jìn)行更新蛤肌,確保系統(tǒng)讀取時正確執(zhí)行壁却。
/boot/grub/grub.conf 文件是 grub 配置文件, grub 才能找到 kernel裸准,系統(tǒng)才能正常啟動展东。
--這個文件也是需要我們更改的,制定grub讀取新分區(qū)炒俱。
首先要求有一個可以正常啟動的分區(qū)盐肃,然后要有剩余空間WΣ病(必須注意/dev/sdb1
的容量大于 /dev/sda1,且/dev/sdb1應(yīng)為LVM卷
)
我用虛擬機模擬了服務(wù)器的真實情況:/dev/sda1
是正常系統(tǒng)啟動分區(qū)砸王、/dev/sdb1
是新的磁盤分區(qū)推盛。
步驟一、用dump備份整個根分區(qū)谦铃,使用restore恢復(fù)耘成。
步驟二、更改備份好的系統(tǒng)fstab文件以及更改boot下引導(dǎo)文件驹闰。
小竅門:Linux自帶的光盤一般都會急救的功能瘪菌,善于利用!
二嘹朗、環(huán)境模擬:
虛擬機設(shè)置及分區(qū)情況:
這里有兩種情況:一個是某分區(qū)师妙,一個是新磁盤。兩者類似屹培,為了方便本文使用的是新磁盤的方式默穴。
三、實戰(zhàn)部分:
注意:我使用的是一個sdb1作為lvm磁盤褪秀,sdb2作為boot磁盤(為了方便后面的引導(dǎo)蓄诽,因為grub不支持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
命令是為了查看備份使用的時長沛豌。
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文件需要更改成實際要啟動的磁盤叫确。
2、還原 MBR 的備份文件
dd if=/mnt/grub/mbr.bin of=/dev/sdb2
注意:這里使用dd命令恢復(fù)了之前備份的MBR文件芍锦。
VI竹勉、啟動文件
注意:這里為了體現(xiàn)是chroot的,將主機名改成了NEW娄琉。一定要chroot進(jìn)入目錄查看是否能啟動次乓!并且確定防火墻SELinux的設(shè)置吓歇,最最最重要的OPENSSH要打開的!
1票腰、首先通過 blkid
查看分區(qū)的 UUID:
2城看、然后同步修改 /etc/fstab
文件以及切換了跟分區(qū)之后將變成的 /etc/fstab
中的根分區(qū)指向:
3、重啟生效
注意:這里我重啟了一下杏慰,同時可以看出我的fstab是ok的并且都生效了测柠。
VII、至此:
到這里為止逃默,我們已經(jīng)完成了數(shù)據(jù)的轉(zhuǎn)移:在我們嘗試chroot進(jìn)入系統(tǒng)時就可以查看數(shù)據(jù)信息是否完整是否有丟失鹃愤。
而下面更為重要的就是如何去恢復(fù)GRUB引導(dǎo):讓新磁盤可以脫離源磁盤的引導(dǎo)。
chroot進(jìn)入新磁盤:
輸入:root (hd1,0)
輸入:setup (hd1)
再次輸入:quit
備注:如果通過上面的操作還是無法正常進(jìn)入系統(tǒng)完域,可以嘗試進(jìn)入DVD急救模式嘗試其他。
tip:這里僅僅只是小建議瘩将,可以嘗試使用CentOS自帶的急救模式吟税。也可以選擇CLI完成操作!
tip:同上姿现。僅僅為了向大家說明最后最后還需要更改啟動項選項肠仪!
注意:Virtualbox使用F12選擇新磁盤就好、VMware需要按F2進(jìn)入BIOS并使用“+-”完成啟動項的調(diào)試备典。
如果引導(dǎo)還有問題推薦看這篇文章**** http://os.51cto.com/art/201003/185574.htm
VIII异旧、總結(jié):
所以說裝系統(tǒng)的時候就使用LVM就很好,不然又是一頓折騰提佣。
何必呢吮蛹?但是技多不壓身,會些更裝逼嘛~
VVI拌屏、其他:
當(dāng)時我寫這篇文章時候犯了幾個錯誤潮针,比較重要的記下來。
第一個:是當(dāng)時沒有先百度倚喂,查看GRUB對LVM的問題(雖然現(xiàn)在的我知道怎么GRUB啟動LVM每篷,但是當(dāng)時是不知道)
第二個: 居然不知道boot要單獨分區(qū)
第三個:改了這個文件,忘了那個文件
第四個:為了圖方便使用了/dev/sdx這樣形式端圈,應(yīng)該用UUID
第五個:疲勞寫作焦读,第二天我就突然寫完這篇文章了...
最最后,系統(tǒng)移動至LVM磁盤一定是可以得舱权。改日我用服務(wù)器現(xiàn)場移動矗晃,到時候再給新文章!