在使用linux的過程中, 有時會出現因為安裝系統時分區不當導致有的分區空間不足,而有的分區空間過剩的情況.
比如: 我在安裝系統時給/usr/local分配器了5G的空間,但使用一段過程后發現, /usr/local最多只用到了1G.這樣可以將
/usr/local大小調整為1G. 空出4G留作他用.
本文歸納了在不破快文件系統數據的前提下對文件系統大小進行調整的方法.這里采用的是"拆東墻, 補西墻"的方法. 當然, 如果你的
磁盤中有未分區的空閑空間, 你就不用減小某個分區的空間了. 這實際上是一個特例.
減小一個分區的大小:
[???????? partition????????? ]
[?? partition?? | free space ]
增加一個分區的大小:
[?? partition a1? |?? partition b? |?? free space?? ]
[?? partition a2? |??????????????? |? partition a2? ]
準備工作
(一) 備份
首先組好備份要更改的分區中的文件. 對磁盤的操作也許會導致數據的丟失. 開始工作之前最好將重要的數據保存到別的分區.
(二) 獲取相關信息.
1, 運行 $ df , 查看文件系統信息. 記下你想要調整的分區對應的掛載點和設備文件.
這一步是為了查看/usr/local對應/dev/中的哪個設備文件. 本文以/dev/hda7為例.
2, 運行 # sudo fdisk /dev/sda . 進入fdisk , 按下p, 查看磁盤分區信息. 記下/dev/sda8的起始柱面號, 終止柱面號. 設他們分別為start, end. 并記下一個"Unit"包含多少字節.
注意, 文件系統大小和磁盤分區大小是不能等同的: 起碼他們的計量單位不同. 在文件系統中, 一般用KB, MB, GB為單位. 但在fdisk中, 是以磁盤的"unit"值(即一個柱面中包含的字節數)來計算的. 我們運行 # fdisk /dev/sda后, fdisk顯示如下信息:
Disk /dev/sda: 163.9 GB, 163928604672 bytes
255 heads, 63 sectors/track, 19929 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
(三)計算終止柱面號
e.g: 原先/usr/local的大小為5000 MB, 起始柱面號為2550, 終止柱面號為3157. 那么我現在要將它的大小改為1000MB, 應該這樣計算終止柱面號( [3.2] = 4 ):
終止柱面號 = 2550 + [(1000 * 1024 * 1024 ) / 8225280] = 2678
使用fdisk刪除原來的分區(以前分區的數據不會丟失!). 然后新建一個分區, 新分區于舊分區唯一的區別就在于分區大小不一樣, 這表現在他們終止柱面號不同.
增加分區大小: 終止柱面號設置為空閑空間的最后一個柱面號.
減小分區大小: 終止柱面號由計算得出.
開始調整
在開始調整之前, 最好拿一張紙記下要調整的分區的下列信息:
調整前大小, 調整后大小. 它掛載在哪個目錄, 對應于/dev/中的哪個設備. 起始, 終止柱面.
e.g: 調整前: 5G, 調整后: 1G, 掛載點: /usr/local, 對應于/dev/hda7. 起始,終止柱面分別為2550, 3157.
1, 卸載分區
最好在runlevel = 1的情況下卸載.
# umount /dev/<partition to resize>
2, 檢查文件系統的一致性
# fsck -n /dev/<partition to resize>
3, 如夠是ext3系統, 還要去除日志
# tune2fs -O ^has_journal /dev/<partition to resize>
注意: 取出日志后的ext3系統是無法掛載的, 使用
# tune2fs -j /dev/<resized partition>重建日志.
4, 調整文件系統大小
# resize_reiserfs -s 1000M /dev/hda7
調整完文件系統的大小以后,再使用以下命令以文件系統進行全面的檢查:
# reiserfsck --check --fix-fixable /dev/hda7
5, 進入fdisk, 調整分區大小.
# fdisk /dev/hda
由于內核仍然使用舊的分區表, 重啟之后再進行后面的步驟.
通過以上步驟,我們已經完成了硬盤分區大小調整的操作,接下來回到重新調整文件系統大小的問題上來。 由于硬盤分區是按照柱面來計劃的,我們要在 resize_reiserfs步驟上就一步到位調整文件系統大小與硬盤分區大小正好相等是比較困難的事情。所以一般是調硬盤分區比文件系統要大一點點,然后再通過以下命令進行同步(當然如果你不在意硬盤分區里面存在部分空間的話也可以忽略以下步驟):
# umount /home/
# resize_reiserfs /dev/hda6
這樣, 就將/usr/local的大小調整為1G, 留下了4G的空閑磁盤空間.
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
