前言
本文主要介紹了關于動態在線擴容root根分區大小的相關內容,分享出來供大家參考學習,下面話不都說了,來一起看看詳細的介紹吧。
qemu-img resize yourname.img +10G
首先要用命令增加分區大小,針對qemu-kvm使用以上命令
LVM
情境描述:虛擬機用的磁盤 image 已經擴容,或對應于物理機的話,就是磁盤的容量已經增加了。 然后我們希望把擴大的容量用起來,而且不影響現有的文件系統(不格盤)。
實際使用過程中,我們有時候需要對虛擬機鏡像的硬盤擴容,比如,一開始我們創建虛擬機的時候,以為 20G 的磁盤空間就夠了,可某一次我們可能一次性就要拷貝一個 10G+ 的文件進虛擬機,這時候我們就傻了。
我們通過 VMware 或者 VirtualBox 的圖形界面或者一些命令,我們可以很輕松地擴大虛擬機的磁盤大小,但是,磁盤變大后,系統并不會把它們利用起來。所以這時候,我們就要考慮怎么才能讓這些多出來的空間能夠被虛擬機里的 Linux 系統用起來。
在此之前,先補充一個“磁盤 MBR”的知識:
1個硬盤分為兩個區域,一個是 MBR(主引導分區),一個是數據區域。
MBR 里記錄了兩個重要信息:引導程序與磁盤分區表。
分區表定義了“第 n 個磁盤塊是從第 x 個柱面到第 y 個柱面”,所以,系統每次都取 n 號磁盤塊時,就只會讀取第 x 到第 y 個扇區之間數據。
由于 MBR 容量有限,設計的時候,只設計成4個分區記錄。用起來,可以作4個主分區,或者3個主分區和一個擴展分區。
如果超過四個分區,系統允許在額外的硬盤空間放另一份磁盤分區信息,那就是擴展分區,當硬盤被分出一個擴展分區的時候,實際上擴展分區在 MBR 磁盤分區表中的信息為另外那份分區表的位置。所以,在 擴展分區 里面還要劃分 邏輯分區 才能使用。
每個硬盤最多只允許4個主分區,其他的分區只能放在擴展分區中。
這樣就明白了,因為主分區的個數有限,而且我們希望增加的容量也只是作為存儲使用,所以加在拓展分區 (extended) 就可以了。(而如果你是土豪,總共4個主分區,你還打算這次再用一個主分區的名額,那你可以跳過 Part1,直接看下面的 Part2 了。)
PART1
我們要把增加的容量加在拓展分區(extended)里。要對 extended 分區進行擴容,這個 fdisk 就做不了,需要用 parted 命令(如果系統不自帶 parted,那就從源上裝一個):
parted /dev/xxx
進入交互模式,用 help 查看幫助命令。
一些值得特別說明的命令:
更多命令詳情請參考: http://www.gnu.org/software/parted/manual/html_chapter/parted_toc.html
實戰:
操作前,print 結果如下?,F有磁盤62.3G,只分給 extended 8G,還有50多G根本沒分配。
Number Start End Size Type File system Flags1 1049kB 256MB 255MB primary ext2 boot2 257MB 8589MB 8332MB extended5 257MB 8589MB 8332MB logical lvm
我希望把這50多G全部用于擴大extended。
用命令:
resize 2 257MB -0
其實,只需輸入 resize 2 ,回車,剩下的兩個參數,parted 會通過交互的方式讓你填寫的。-0 表示到那個分區的磁盤末尾。
現在再 print 看一下,
Number Start End Size Type File system Flags1 1049kB 256MB 255MB primary ext2 boot2 257MB 62.3GB 62.0GB extended5 257MB 8589MB 8332MB logical lvm
extended 區已經擴大成功了。
extended 區只是相當于“一塊物理硬盤”,想把增加出來的空間用上,還要把 Number 為 5 的 lv 擴大。
而 logic volumn 的擴大依賴于它所在的 volumn group 的大小。因為 logic volumn 是從 volumn group 里分出來的,如果 volumn group 不變大,那么 logic volumn 是無法超過 volumn group 的。所以 真正是應該把空間加到 volumn group 上去 。
PART2
要增加 volumn group 的大小,先用 fdisk 在 extended 上,利用剛才增加但還未分配出去的磁盤空間創建出一個新分區。通過 fdisk <disk_dev_name>
進入交互模式,可以通過命令 m 查看幫助。首先,輸入 n 創建新分區,然后選擇 l 設置新分區為邏輯分區,接下來依次設置分區的起始、終止位置(默認即完全利用這塊磁盤上剩余的所有空間,所以默認即可)。創建出的分區,編號為 6??梢杂妹?p 看一下。
Device Boot Start End Blocks Id System/dev/vda1 * 2048 499711 248832 83 Linux/dev/vda2 501758 121634815 60566529 5 Extended/dev/vda5 501760 16775167 8136704 8e Linux LVM/dev/vda6 16777216 121634815 52428800 83 Linux
接下來,由于我們要用 LVM 來管理這個新分區,我們需要把新分區的管理系統從 Linux 改為 Linux LVM。在交互模式下,輸入命令 t,然后選擇剛才創建的 6,輸入 8e (Linux LVM 的代號)。最后,我們要把剛才的這些操作真正寫入硬盤,輸入命令 w。
至此,我們通過 fdisk -l
已經可以看到 /dev/vda6 被創建出來了。
再執行
vgextend <your_vg_name> /dev/vda6
把新分區加進 volumn group (VG Name 可通過 vgdisplay 查到)。
現在用 vgs 查看 volumn group 的狀態,發現 volumn group 已經變大。
VG #PV #LV #SN Attr VSize VFree jiang51-vg 2 2 0 wz--n- 57.75g 50.03g
然后把這個 volumn group 里面的 logic volumn 變大。
命令(最后那個'Logic Volumn name'可通過 lvdisplay 查到):
lvresize -l +100%FREE <Logic Volumn name>
警告: 如果操作時出現下面這樣的 warning,就說明現在 logic volumn 的總大小還不對,resize 不但不增加空間,反而在縮小空間,如果繼續操作下去,必將丟失數據。應立即停止!按 n 取消。
WARNING: Reducing active and open logical volume to 32.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce root? [y/n]
最后,要更新 logic volumn 上的文件系統,不然從 df 看出文件系統是不知道 logic volumn 變大的。
用命令(其中的 file_system_name 通過 df 找到):
resize2fs -p <file_system_name>
這樣,磁盤 extended 分區的擴容終于完成了。
非LVM
fdisk /dev/sdadnp1wresize2fs /dev/sda1df -h
最重要的一步:“刪除現在的分區,重新分區” 按d刪除現在的分區1,注意:刪除后千萬不要按w保存!直接按n創建新的分區,然后從原有的柱面開始,一直分到最后的尺寸(默認值兩次回車即可,如果之前的分區不是從第一柱面開始,則需要記錄之前分區的起始柱面),新的分區操作完畢后,按w保存。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。
新聞熱點
疑難解答
圖片精選