VMware Ubuntu 12.04分區動態調整小記

來源:互聯網
上載者:User

標籤:ubuntu12.04   分區   調整   rsync   

概述

       在WMware中安裝Ubuntu 12.04時,分區大小預設使用了20G,安裝完成後根目錄大小隻有12G。因為一開始打算將源碼放到單獨掛載的分區中,所以覺得12G應該也足夠。但在Android源碼編譯過程中遇到了空間不足的問題,源碼編譯最後會將相關的img檔案壓縮成zip包,這個步驟會暫時利用/tmp這個目錄。因為根目錄只有12G,再加上/home下存放了一點東西,Android源碼編譯最後打包時,提示根目錄空間不足打包操作被終止。

       本文的目的是,動態調整分區大小,擴大根分區容量,避免Android編譯無法打包。

轉載請務必註明出處http://blog.csdn.net/yihongyuelan

步驟分區擴充計劃

       在概述中已提到原有根分區只有12G,本文計劃將其替換為20G。這裡說的是替換,也就是用20G的根分區替換12G的根分區,那麼也就還會剩下12G的容量,計劃將這12G給/home獨立使用。調整之後的硬碟掛載情況1所示:


圖1 調整之後WMware掛載硬碟資訊

       在Ubuntu中使用df -h查看分區情況2所示:


圖2 Ubuntu中查看分區資訊

       從圖2中可以看到,根分區從/dev/sda1變成了/dev/sdc1而大小由12G變成了20G,原來的/dev/sda1則掛載到了/home目錄。

建立虛擬硬碟

       在WMWare->Settings中添加新的硬碟,步驟比較簡單具體不表。在指定磁碟容量的時候,建議勾選上立即分配所有磁碟空間,3:


圖3 勾選"立即分配所有磁碟空間(A)"

根分區遷移

       在完成新硬碟的添加之後,記得在Ubuntu中使用fdisk或者Disk Utility工具對新硬碟進行分區和格式化,之後就需要對原來的根目錄進行備份了。新硬碟格式化和分區完成之後,這裡即/dev/sdc1,其掛載到/new_root,在終端中執行:

sudo mkdir /new_rootsudo mount /dev/sdc1 /new_root
       因為需要對當前的根目錄進行遷移,所以需要建一個備份目錄/old_root,並將當前根目錄掛載到/old_root (當前根目錄即/dev/sda1) ,因此操作如下:
sudo mkdir /old_rootsudo mount /dev/sda1 /old_root
       接著就需要使用rsync指令來完成根目錄的遷移了。

       rsync是類unix系統下的資料鏡像備份工具,即remote sync。rsync是Linux系統下的檔案同步和資料轉送工具,可以在客戶機和遠程檔案伺服器之間進行檔案同步,也可以在本地系統中,將資料從一個分區備份到另一個分區上。如果rsync在備份過程中出現了資料轉送中斷,恢複後可以繼續傳輸不一致的部分,並且rsync可以執行完整備份或增量備份(具體資訊可以man一下,中文翻譯參考這裡)。

使用rsync命令,將/old_root備份到/new_root:

sudo rsync -lva /old_root/. /new_root
參數解釋:

-l表示保持軟連結;

-a表示archive 歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於-rlptgoD;

-v表示操作過程詳細輸出;

       完成之後卸載old_root:

sudo umount /old_root

修改/etc/fstab

       因為/new_root後續就是新的根分區,所以需要修改/new_root下的fstab檔案,即/new_root/etc/fstab,修改如下:

#UUID=46df0a25-8f0f-4ef5-90c0-8a665f4ab82d /               ext4    errors=remount-ro 0       1/dev/sdc1 /               ext4    errors=remount-ro 0       1
       第一行表示注釋掉原來的根目錄掛載,第二行表示新的裝置為/dev/sdc1掛載到根目錄。

       因為要把開機磁碟分割切換到/dev/sdc1,所以要將啟動相關的資訊更新到grub菜單中,繼續在終端中執行:

sudo grub-install /dev/sdc
       在grub啟動菜單中加入/dev/sdc,之後更新grub啟動菜單:
sudo update-grub

更改啟動順序       現在裝置/dev/sda1即原來的根目錄(old_root),新裝置/dev/sdc1即新的根目錄(new_root),都已經加入了grub啟動菜單,需要設定哪個裝置優先載入,即啟動順序。修改啟動順序實際上就是進入BIOS中,設定硬碟的載入順序。

       完成以上操作之後,選擇重啟,並快速短按F2(虛擬機器開機時有提示),進入BIOS操作介面,通過左右方向鍵選擇"Boot"菜單,並通過上下方向鍵選擇Hard Drive子功能表,4所示:


圖4 WMware BIOS介面

       將新添加的硬碟/dev/sdc1通過+/-調節到Bootable Add-in Cards下第一個,這裡即VMware Virtual SCSI Hard Drive (0:2),之後通過F10儲存並退出,重啟即可進入系統。完成以上操作之後,根分區的遷移大致就已完成。

獨立/home分區

       根分區已經從/dev/sda1切換到了/dev/sdc1,因此/dev/sda1已經沒有用了,為了資源極大化利用,我打算將其作為/home獨立分區,而操作步驟和備份根分區時的操作差不多。建立一個/home_new,將/dev/sda1掛載到/home_new,將/dev/sda1中原有的內容刪掉,並通過rsync將/home中的內容同步到/home_new,將/home重新命名為/home_bak,將/home_new重新命名為/home,並修改/etc/fstab如下:

/dev/sda1       /home ext4 defaults,user,exec,dev,suid 0 0

       儲存之後重啟,通過df -h就能看到5中的效果了:


圖5 調整後的分區

遇到的問題

雖然文章中描述的步驟明確,但在實際操作過程中也遇到了很多坑,如:

1. 如果不建立/old_root檔案夾就開始執行

sudo rsync -lva / /new_root
這樣會導致遞迴備份,即/new_root/new_root/new_root/....無限迴圈下去;

2. 如果發現/new_root目錄下./ 和 .. / 的ower和group不對,可執行

sudo chown root:root ./ ../
總結

       因為之前將根分區設定得太小,導致源碼編譯打包時空間不足,從而無法完成打包操作,根分區擴充後問題解決。如果遇到重裝系統的問題,獨立的/home分區可以複用,許多配置不用重新再設定一遍。

VMware Ubuntu 12.04分區動態調整小記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.