為你的Linux系統(tǒng)分區(qū):高級分區(qū)調整
簡單的分區(qū)調整操作通常都能順利完成。但是,有時候您需要做一些不同的事情或者排除故障,本文涵蓋了其中的一些情況。本文第一部分介紹 LVM 配置及其如何與分區(qū)調整相互作用。第二部分介紹故障排除技術。要詳盡地描述調整分區(qū)時可能出現(xiàn)的所有問題,足夠寫本書了,但是幾個基本的原則可以幫助您解決常見問題。最后,本文介紹了幾個調整分區(qū)的備選方案,如果您遇到的問題無法逾越時,可以使用。
調整 LVM 大小
LVM 是一個磁盤分配技術,補充或替換傳統(tǒng)分區(qū)。在 LVM 配置中,一個或多個分區(qū),或者甚至是整個磁盤,被分配為卷組 中的物理卷,卷組轉而分成邏輯卷。然后在邏輯卷上創(chuàng)建文件系統(tǒng),這就像傳統(tǒng)配置中的分區(qū)。這種磁盤分配方法復雜性增加了,但好處是比較靈活。一個 LVM 配置使得將幾個小磁盤的磁盤空間合并成一個大的邏輯磁盤成為可能。對于分區(qū)調整來說,更重要的是邏輯磁盤可以被創(chuàng)建、刪除和重新分配大小,就像文件系統(tǒng)中的文件那樣;您不需要考慮分區(qū)起始點,只需要考慮它們的絕對大小。
注意:本文中我不想介紹如何建立一個 LVM。如果您還沒有使用一個 LVM 配置,您可以將您的系統(tǒng)轉換為使用它的系統(tǒng),但您可以參考其他文檔,比如 Linux LVM HOWTO學習怎樣做。
調整物理卷大小
如過您已經(jīng)調整了非 LVM 分區(qū),如本系列第 1 部分所述,而現(xiàn)在想要向您的 LVM 配置添加空間,您有兩個選擇:
- 您可以在空白空間中創(chuàng)建一個新分區(qū),然后將這個新分區(qū)添加到您的 LVM。
- 如果有一個 LVM 分區(qū)與新空間相鄰,您可以調整這個現(xiàn)有分區(qū)的大小。
不幸的是,GParted(也稱為 Gnome Partition Editor)工具,如本系列第 1 部分所述,不支持調整 LVM 分區(qū)大小。因此向您的卷組添加空間最簡單的方法是在剩余空間中創(chuàng)建一個新分區(qū),并將其作為一個新物理卷添加到現(xiàn)有的卷組中。
盡管 GParted 不能直接創(chuàng)建一個 LVM 分區(qū),但您可以使用以下工具來進行創(chuàng)建:
parted
(文本模式 GNU Parted)fdisk
用于 Master Boot Record (MBR) 磁盤gdisk
用于全局唯一標識符(GUID)Partition Table (GPT) 磁盤
如果您使用 parted
,那么您可以使用 set
命令來打開 lvm
標記,正如在 set 1 lvm on
中標記分區(qū) 1 作為一個 LVM 分區(qū)。如果使用 fdisk
,您可以使用 t
命令來將分區(qū)類型代碼設置為 8e。在 gdisk
中您可以同樣這樣做 ,除非 LVM 分區(qū)的類型為 8e00。
無論是那種情況,您都必須使用 pvcreate
命令來在分區(qū)上設置基本 LVM 數(shù)據(jù)結構,然后使用 vgextend
代碼將分區(qū)添加到卷組。例如,要將 /dev/sda1 添加到現(xiàn)有的 MyGroup 卷組,輸入以下命令:
pvcreate /dev/sda1 vgextend MyGroup /dev/sda1 |
完成這些修改之后,您就可以在您的卷組中擴展邏輯卷了,正如之前描述的。
調整邏輯卷大小
對于文件系統(tǒng),調整邏輯卷大小比調整分區(qū)大小要簡單一些,因為 LVM 以分區(qū)的形式避免了預留相鄰編號扇區(qū)集合。調整邏輯卷本身可以通過 lvresize
方法完成。該命令帶有一些選項(詳情參見其 手冊
頁),最重要的是 -L
,它需要一個新的大小,或者在原大小上進行修改,修改可以通過首位的加號(+)或者減號(-)表示。您必須提供到邏輯卷的路徑。例如,假設您想要在 MyGroup
組中將 usr
邏輯卷的大小增加 5 gibibytes(GIB)。您應該進行如下操作:
lvresize -L +5G /dev/mapper/MyGroup-usr |
該命令調整了特定邏輯卷的大小。記住,這種改變就像對單獨一個分區(qū)進行的。也就是說,包含在邏輯分區(qū)中的文件系統(tǒng)的大小不會改變。為了調整文件系統(tǒng),您必須使用一個特定文件系統(tǒng)工具。比如resize2fs
、resizereiserfs
、xfs_growfs
或者掛載 Journaled File System (JFS) 時的 resize
掛載選項。如果不使用大小選項,所有這些工具將調整文件系統(tǒng)來填滿邏輯卷大小,在增加一個邏輯卷時這是很方便的。
如果您想要縮小一個邏輯卷,任務就有點復雜。首先您必須調整文件系統(tǒng)大小(使用 resize2fs
或者類似工具),然后縮小邏輯卷來匹配新的大小。如果您故意將邏輯卷的大小設置的太小,那么就有潛在的破壞錯誤,因此,我建議您,首先縮小文件系統(tǒng),使其比您的目標大小小很多,接著將邏輯卷調整到合適的大小,然后調整文件系統(tǒng)大小,最后再增加邏輯卷大小,依賴于自動調整特性來使文件系統(tǒng)正好填滿新邏輯卷。
同時也要記住,盡管您可以縮小大多數(shù)本地 linux 文件系統(tǒng),但您不能縮小 XFS 或 JFS。如果您需要縮小一個含有此類文件系統(tǒng)的邏輯卷,您可能必須創(chuàng)建一個新的、更小的邏輯卷,將第一個卷中的內容復制到新卷中,顛倒掛載點,然后刪除原始卷。如果您缺少足夠的可用空間來進行這一操作,您可能會被迫使用一個備份作為中轉。
使用 GUI LVM 工具
盡管之前介紹的文本模式工具可以完成這項工作,但是它們是令人生畏的。如果您喜歡使用圖形化用戶界面(GUI)工具,至少有兩個可用于 LVM 操作:
- kvpm — 這是一個集成了 K Desktop Environment (KDE) 的工具,支持訪問常見 LVM 操作,包括邏輯卷調整選項。
- system-config-lvm — 這個程序源自于 Red Hat,但是也可用于其他版本。它類似于 kvmp,它支持使用點選式訪問方法來訪問 LVM 管理,包括調整大小操作。
二者之中,system-config-lvm 提供一個更為簡單友好的用戶界面;而它們都可以完成工作。圖 1 展示了運轉中的 system-config-lvm。要調整邏輯卷,需要在左面板單擊其名字,然后單擊中間面板的 Edit Properties 按鈕。然后您可以使用一個滑塊來調整卷大小。
圖 1. GUI 工具調整邏輯卷大小相對較為容易
#p#
排除故障
不幸的是,分區(qū)大小調整操作有時候并不能像預期的那樣運行。最常見的是,調整軟件報告的錯誤,通常是一條加密的消息。盡管此類問題有許多原因,但是您可以通過應用一個簡單工作區(qū)來戰(zhàn)勝這些困難,比如修復文件系統(tǒng)問題、將一個復雜的調整操作分成幾個小塊。
修復文件系統(tǒng)問題
調整失敗一個常見的原因是文件系統(tǒng)被損壞。所有生產(chǎn)文件系統(tǒng)包括文件系統(tǒng)恢復工具,使您可以修復此類問題。因此在調整之前就在文件系統(tǒng)上運行這些工具,通常調整操作較為順暢。
在 Linux 中,文件系統(tǒng)檢查工具被稱為 fsck
,您可以通過傳遞想要檢查的文件系統(tǒng)相關的設備文件名來調用它,正如在 fsck /dev/sda1
中檢查 /dev/sda1
。然而,fsck
實用工具大部分是一個特定文件系統(tǒng)工具的前端。比如e2fsck
(針對 ext2fs、ext3fs 和 ext4fs)。 通過直接調用特定文件系統(tǒng)工具,通??梢垣@得更高級選項的訪問權。例如,e2fsck
的 -f
選項強迫它檢查設備,即使文件系統(tǒng)是空的。這些選項對于發(fā)現(xiàn)損壞是必須的,而這些損壞在粗略檢查過程中不易被發(fā)現(xiàn)。檢查特定文件系統(tǒng)的幫助程序的文檔,了解這些選項。
多數(shù)情況下,必須在一個已卸載的文件系統(tǒng)上運行 fsck
或幫助程序。因此,您可能需要從一個緊急引導磁盤來進行這些操作,如本系列第 1 部分所述。
如果您在使用非 Linux 文件系統(tǒng)遇到問題時,您能夠使用 fsck
來查看它;然而您也需要將其引導到文件系統(tǒng)的本地操作系統(tǒng)來做這項工作。特別是,在 Linux 中 Microsoft® Windows® New Technology File System (NTFS) 文件系統(tǒng)有獨一無二的基本維修工具。想要檢查 NTFS 工作是否進展順利,您必須使用 Windows CHKDSK
實用工具。您需要運行這個實用工具幾次,直到它報告磁盤不再有錯誤。Linux ntfsfix
實用工具執(zhí)行 Linux 中很少檢查的文件系統(tǒng),并將它們標記為下次 Windows 引導時自動檢查。
盡管本質上不是一個文件系統(tǒng)集成問題,但磁盤碎片是另一個需要注意的問題。有時候,您可以在調整操作之前,執(zhí)行一個磁盤碎片整理操作來排除問題,對于 Linux 本地文件系統(tǒng)這一任務幾乎不會用到(通常也沒必要);然而,對于 File Allocation Table (FAT) 或者 NTFS 分區(qū),這是很有幫助的。
分解操作
如果您開始進行大量的調整以及將操作移到 GParted 的工作,而操作失敗,那么您可以嘗試一次只輸入一個操作,然后立即單擊 Apply 按鈕。您仍然可能遇到問題,但是至少您可以執(zhí)行其他操作,不再依靠出現(xiàn)問題的那個操作。根據(jù)具體情況,至少可以實現(xiàn)部分總體目標,或者找到解決問題的方法。
在某些情況下,您可能需要跨多個實用工具分解調整操作。例如,您可以使用 Windows 或 Mac OS X 實用程序來調整 FAT、NTFS 或 Hierarchical File System Plus (HFS+) 分區(qū)大小。盡管 GParted 是 Linux 中調整分區(qū)大小最易操作的方法,如果只有一個操作出現(xiàn)問題,使用基礎的文本模式實用工具,比如 resize2fs
,可以給您提供更好的診斷輸出,甚至在 GParted 失敗的地方也會成功。然而,您要記住多數(shù)文本模式工具要么可以調整分區(qū),要么可以調整文件系統(tǒng)大小,但是不能兩個同時調整;您必須將兩種工具合并到一起來調整一個分區(qū)及 其文件系統(tǒng)。GNU Parted 實用工具是一個例外,像它的 GUI “近親” GParted 一樣,同時可以調整分區(qū)及其文件系統(tǒng)的大小。
轉到計劃 B
有時候試圖調整您的分區(qū)行不通?;蛟S是文件系統(tǒng)出了一個不容易解決的錯誤,或許是您想要縮小一個不能縮小的文件系統(tǒng)(例如 XFS 或 JFS),在這些情況下,您必須選擇一個備用方案,比如遷移現(xiàn)有分區(qū)結構的目錄、執(zhí)行備份 - 重新分區(qū) - 恢復(backup-repartition-restore)操作或者添加更多磁盤空間。
遷移目錄不需要重新分區(qū)
有時候,您可以遷移目錄,而實際上不需要對磁盤進行重新分區(qū)。訣竅是使用符號鏈接來從一個位置指向另一個位置,甚至跨分區(qū)。例如,假設您正在使用 Gentoo 系統(tǒng),它可以消耗 /usr/portage 和 /var/tmp/portage 目錄下大量磁盤空間。如果您在建立系統(tǒng)時沒有考慮到這一需要,您可能會耗盡空間。然而,在隔離的 /home 分區(qū)上可能也有可用空間,為了讓 Portage 使用這些空間,您可以在 /home 下創(chuàng)建一個或多個目錄,將 /usr/portage 或 /var/tmp/portage 內容復制到新的目錄,刪除原始目錄,在原始目錄的位置創(chuàng)建符號鏈接,指向新的 /home 子目錄。
這個方法是有效的,且在較小范圍內是方便的;然而,卻創(chuàng)建了一個非標準系統(tǒng)。因此,我建議您少使用此方法,最好只是短期使用 — 例如,作為等待新硬盤到來時的一個權宜之策,或者用于您計劃一到兩個月檢索一次的系統(tǒng)。
備份、重新分區(qū)和恢復
開發(fā)文件系統(tǒng)調整工具之前,要對磁盤重新分區(qū),惟一可行的方法是備份其內容、重新分區(qū)(創(chuàng)建新的空文件系統(tǒng)),然后將備份恢復到重新分區(qū)的磁盤。該方法連續(xù)運行,但對于非破壞性的重新分區(qū),使用 GParted 當然比使用此方法方便多了。換句話說,為了安全起見在調整分區(qū)大小之前最好先創(chuàng)建一個備份。出于安全性的考慮,無論如何您必須做這一半工作。
現(xiàn)在,經(jīng)常使用一個外部硬盤驅動器作為備份介質。購買千兆字節(jié)的外部磁盤超不過 $100,篡改磁盤分區(qū)之后,您就可以使用它們備份您的重要文件,來在系統(tǒng)之間轉移較大的文件,或者以其他方式。此外,您也可以使用可記錄的 DVD、磁帶裝置或網(wǎng)絡服務器作為備份系統(tǒng)。
備份軟件包括 tar
這類舊備用工具,以及 Clonezilla 這類新工具。細節(jié)各不相同,具體根據(jù)軟件和備份介質而定,因此您需要參考備份軟件文檔獲取詳細信息。
如果您想要修改您的 Linux 引導分區(qū)或者任何一個基礎根(超級用戶)訪問必須的分區(qū),您需要從一個緊急引導系統(tǒng)執(zhí)行這些操作,本系列的第 1 部分介紹了這類系統(tǒng)。
添加磁盤空間
添加磁盤是重新分區(qū)一個切實可行的備選方案,有時候,添加磁盤空間可能會更好。磁盤容量持續(xù)增加,比起那些使用了好幾年的磁盤新磁盤可能更可靠。
如果您選擇用一個新磁盤替換一個現(xiàn)有磁盤,您應該將現(xiàn)有系統(tǒng)轉移到新磁盤,用 Clonezilla 這類工具或者使用舊工具,比如 fdisk
和 tar
。您可能需要重新安裝引導加載程序,例如在這項任務中,使用 Super Grub Disk 工具重新安裝引導加載器可能會很有用。您可以使用這個基于 CD 的引導加載器引導您的系統(tǒng),然后使用 grub-install
或者一個類似的工具來將 GRand Unified Bootloader (GRUB) 重新安裝到您的新硬盤上
如果您購買一個新磁盤作為補充,而不替換您的現(xiàn)有磁盤,您需要確定轉移到新磁盤的數(shù)據(jù)(如果有)。您應該使用 fdisk
、GParted 或其他工具對新磁盤進行分區(qū),并將文件轉移到新磁盤,然后通過適當?shù)鼐庉?/etc/fstab,在您的現(xiàn)有目錄樹中永久地掛載新磁盤分區(qū)。如果不這樣做,就算您掛載新磁盤來取代原來的文件目錄,它們也會繼續(xù)消耗舊磁盤的磁盤空間。
結束語
不論您用哪種方式,改變一個正在運行系統(tǒng)的磁盤是一個令人憂心的任務,原因是:很多事情都有可能出錯。如果這種改變是必須的,那么您會發(fā)現(xiàn)您的系統(tǒng)在改變之后變得更可用了。為了降低磁盤已滿錯誤的風險,實際上,您可能要繼續(xù)使用您的系統(tǒng)完成它的既定任務。調整分區(qū)的過程可能會幫助您熟悉 GParted 和其他磁盤實用工具,以及各種分區(qū)的最佳大小。所有這些對您下次安裝 Linux 系統(tǒng)是很有幫助的。
原文:http://www.ibm.com/developerworks/cn/linux/l-resizing-partitions-2/?ca=drs-tp4608
【編輯推薦】