close

最近的一次 case 中,有客戶的 Linux 發生了怪異現象,就是硬碟似乎變慢並且效能也不如之前,於是在考慮過後,決定更換一顆新的硬碟。

做系統備份的方法其實有很多,像是 tar、cp、cipo ... 等工具都是很好的備份工具,但是這次我選擇了 dd 工具來做兩顆硬碟之間的備份,也就是說把 hda 的資料全都放到 hdb 去,然後再做交換。

在實做的時候,我發現一個很有趣的現象,因為這台主機主要是用來放 source 專用的,雖然有做 RAID 1 mirror,但是整個 hda2 居然吃了 70GB 如此大的空間。後來,推測應該是在建立主機之初沒有把硬碟做適當的分割,所有的資料都放在同一個分割區裡,當然 source 是會長大的東西,所以日子一久就慢慢的吃掉了很多空間 ...

我來說明一下這次的環境吧:

/dev/hda1:150MB,/boot
/dev/hda2:150GB,/
/dev/hda3:其它,swap

嗯 ... 所以說,知道了吧!全部只有兩個分割區,若是使用 dd 來做系統轉移的話,若是有兩顆原本同型號、同容量的硬碟的的話當然是最好的,但是事實總是很殘忍的,要找到一模一模型號的硬碟可不是這麼容易的事,所以我 當時決定使用一顆比目前還大的硬碟來做轉換對像,於是乎客戶就準備了一顆 200G 的硬碟來做轉換了。

我先把第二顆硬碟放上去,裝在 IDE1 的 slave,並且使用 Live CD 做開機,主要的目地就是確保在轉移過程沒有任何的資訊再寫入 /dev/hda 或 /dev/hdb。因為這次並不打算再做任何的其它分割,所以我就把新的 200 GB 硬碟分割為如下情況:

/dev/hdb1:170 MB,/boot
/dev/hdb2:170GB,/
/dev/hdb3:512 MB,swap
其餘空閒

OK,做好了分割之後,再來就是 format 啦!

root # mke2fs -j /dev/hdb1
root # mke2fs -j /dev/hdb2
root # mkswap /dev/hdb3

接下來就是重頭戲了,你可以很清楚的發現,我“故意”把每個分割區都切的比原本的還大,這是怕在 copy 的時候會發生容量不符的情況,所以才如此做,現在就準備來使複製的動作!

root # dd if=/dev/hda1 of=/dev/hdb1
root # dd if=/dev/hda2 of=/dev/hdb2

好了,小弟現在很認真的說,在 copy /dev/hda2 的時候,我一共等了快要四個小時,所以以後千萬要記得做好系統規劃,不然會等到死!

Evernote超效率數位筆記術Linux進化特區:Ubuntu 12.04 從入門到精通【福利品】SAMSUNG SCX-4623F 黑白多功能事務機(平輸)

當完成了複製之後,要記得做系統 scan,而且是必做喔,因為等一下我們要修正磁碟容量:

root # e2ckfs -f /dev/hdb1
root # e2ckfs -f /dev/hdb2

一樣的,在掃描 /dev/hdb2 的時候又是一長串時間 ...

當等待的時間過去之後,我們就可以來做磁碟容量調整了:

root # resize2fs /dev/hdb1
root # resize2fs /dev/hdb2

好了,各位觀眾,這時已經做好系統移轉,但是有一個問題,就是這新的硬碟會無法開機,所以就必需安裝 GRUB Loader 才行。

要重新安裝 GRUB 有很多方法,小弟我是這麼做的:

關掉電腦,把退役的 160 G 硬碟拿下來,並且把新的 200 G 硬碟 jump 調成 master,裝到電腦裡去;使用 RedHat 光碟開機,並以 rescue mode 進入:

boot: linux rescue

進入系統之後,重新 chroot 系統:

root # chroot /mnt/sysimage
root # grub-install /dev/hda

如此就完成安裝 GRUB 的任務,接下來重新開機就大功告成!

文章出自於 http://www.l-penguin.idv.tw/article/dd-sys-backup.htm

 

使用Linux作硬碟複製

 

源盤:IBM 20G 5400RPM FAT16分區1;Linux native分區1;FreeBSD分區1,內又分為一個主Sillice和一個Swap Sillice;擴展分區1,4個邏輯分區,其中最後一個是Linux Swap分區。IDE1 Master
目標盤:西部數據30G 7200RPM,空白盤。IDE2 Master
進入Linux,運行: dd if=/dev/hda of=/dev/hdc
dd就是Linux/Unix下通用的克隆、鏡像程序,if=輸入的文件 of=輸出的文件。由於在Linux下所有的硬件都表示為文件,所以可以進行任何復制、克隆。比如還可以把/dev/hda克隆到MO、磁帶以及映像文件中,當然,目標“文件”必須比原“文件”大,不然就會溢出。
20G的硬盤復制了大約不到2個小時,在整個過程中,使用K6-2 500CPU,UDMA2打開的情況下,CPU佔用率只有18%-19%,從來沒有超過20%。在此期間還可以玩玩掃雷、國際象棋等遊戲,也可以看看文檔、幫助什麼的,但是最好不要作寫操作。當然你可以估計時間,在復制進程還沒有到Linux分區,或者已經過了Linux分區的時候,也可以進行寫操作,但是要當心!
最後,dd會報告一共復制了多少字節,這就是源盤的實際大小。完成以後,30G的西部數據硬盤就跟原來的IBM硬盤“一模一樣”了,只不過是後面有10G的空空間,你可以在份一個分區(我的硬盤不能在分主分區了,因為4個Primray分區已滿,只能在芬邏輯分區),或者用PQ、Fips擴大原有的分區。如果你什麼都不做,那麼從新啟動Win98以後,跟原來是一模一樣的。如果啟動Linux,就有了一些問題,因為對於新硬盤來說,相當於運行完了dd程序就切斷了電源,因此文件系統處於un clean狀態,在啟動的時候會報錯,不要怕,輸入root密碼,然後運行:fsck / 這就啟動了文件系統檢測程序,相當於Windows下的磁盤檢測,對於所有的問題都回答“y”,大部分都是/tmp的問題,無關緊要的。修復完畢,輸入:reboot就可以安全的啟動Linux了!

 

總的來說,Linux下的dd相對於Ghost各有所長。dd的復制是完全基於二進制的物理復制,從硬盤的第一個字節道最後一個字節,完全一樣的克隆了一邊,所以是最保險、最準確的。而且由於dd是物理復制,所以只要是硬盤上存在的分區,無論Linux是否認識,甚至是Linux認不出是什麼的一段數據,都可以原原本本的復制,例如FreeBSD分區、其他操作系統的分區,甚至加密扇區什麼的,就連邏輯壞塊也原樣復制!因此除非出現物理問題,不然dd是絕對不會出錯的!而Ghost則比較“高級”一些,可以在復制的時候改變分區大小(他認識的分區格式),壓縮映像文件(dd本身不具有壓縮功能,但是可以用gzip、bzip2等工具壓縮生成的文件),在Windows下還有explore軟件可以單獨提取文件出來,還有網絡功能,而且速度也要比dd快一些(好像Ghost使用了較大的緩存)。另外一點dd的優勢在於,在克隆的同時還可以幹些別的事情,不像Ghost那樣只能幹等。因此從這方面來看,dd的速度又要比Ghost快,因為它完全佔用系統的時間是零!
其它Unix下的dd操作跟Linux下的雷同,只不過是/dev/hda的稱謂變化一下。我

 

在FreeBSD4.2下試驗過,效果跟Linux下完全相同,時間稍微長一點點,但是在FreeBSD下,dd的CPU佔用率有時會達到30%以上。
如果你的源盤是IDE,而目標盤是SCSI的,這時要注意了,雖然對於硬件來說是沒有什麼問題,因為現在的Linux還是FreeBSD都支持即插即用;但是,/etc/fstab文件需要修改,在dd之前要把所有的hda改成sda,然後再改回來

文章出自於  http://bluenature0904.pixnet.net/blog/post/3971698



arrow
arrow
    全站熱搜

    mobileshop 發表在 痞客邦 留言(0) 人氣()