/home 分區(qū)是最常移動的分區(qū)之一。某些時候,/home中的全部空間都用完了,而且需要增加一個硬盤驅(qū)動器。另一些時候,/home被設(shè)置為根分區(qū)的一部分,為了提高性能或便于備份,可能需要將它移動到別的地方。我會針對每種情況說明如何安全有效地移動/home。
警告
下面的技術(shù)說明如何移動一個或多個分區(qū)。盡管這項技術(shù)的設(shè)計使您能夠“撤銷”失敗的分區(qū)移動,但它并不防止用戶的錯誤。換言之,只要進行格式化分區(qū)或復制大量文件的操作,就存在因輸入錯誤而導致大量數(shù)據(jù)被破壞的可能性。因此,強烈建議您 在行動之前采取適當?shù)拇胧﹣韨浞菟械闹匾募?/em>。
現(xiàn)在您已作好準備,我們就可以開始移動 /home了。您要完成的確切步驟取決于 /home當前是駐留在它自己單獨的分區(qū)上,還是位于根分區(qū)上。在我們完成下面的步驟時,要緊記這一點(必要時我將提醒您)。如果您正在將/home移動到一個新的硬盤驅(qū)動器上,則這個驅(qū)動器現(xiàn)在應(yīng)該物理上安裝在您的系統(tǒng)中。
如果您正在將 /home 移動到一個現(xiàn)有的分區(qū)(沒有必要一定是 ext2文件系統(tǒng),只要目標主分區(qū)或擴展分區(qū)存在即可)上,則您可以直接轉(zhuǎn)到 步驟 2。
如果新分區(qū)還不存在,則需要用 cfdisk(首選)或 fdisk來創(chuàng)建一個新分區(qū)。如果這個分區(qū)不在第一個驅(qū)動器上,則別忘了將這個設(shè)備的名稱指定為cfdisk 或 fdisk的第一個參數(shù)。在創(chuàng)建了適當?shù)闹鞣謪^(qū)或擴展分區(qū)以后,應(yīng)重新啟動系統(tǒng)以便正確地重新讀取分區(qū)表。這是唯一需要重啟系統(tǒng)的時候。
2. 在新分區(qū)上創(chuàng)建文件系統(tǒng)
要在新分區(qū)上創(chuàng)建文件系統(tǒng),首先要知道這個新分區(qū)的準確設(shè)備名(例如,/dev/sda5)。如果您不能確定準確的設(shè)備名,請立即停下來,仔細核對設(shè)備名。然后以root 身份鍵入以下命令:
# mkfs.ext2 /dev/--? |
在上面和以后的代碼樣例中,應(yīng)該用目標分區(qū)名替換--?。在執(zhí)行此命令以后,目標分區(qū)將包含一個空的 ext2 文件系統(tǒng)。
創(chuàng)建一個名為 /mnt/newpart的目錄,然后將新分區(qū)掛載到這個目錄上:
# mount /dev/--? /mnt/newpart |
為了使系統(tǒng)的可用性達到最大限度,我盡量推遲這一步,但現(xiàn)在我們必須進入單用戶模式,然后將/home 中的文件復制到 /mnt/newpart 中。您不應(yīng)該讓 /home中的任何文件處于打開狀態(tài),而進入單用戶模式消除了這種可能性:
# init 1 |
如果出現(xiàn)提示,請輸入 root 口令來執(zhí)行系統(tǒng)維護任務(wù)。您現(xiàn)在應(yīng)該在root shell 中。
鍵入以下命令:
# cd /home# cp -ax * /mnt/newpart |
cp -ax 命令循環(huán)地將 /home 中的內(nèi)容復制到 /mnt/newpart中,并保留全部文件屬性,也不會交叉任何掛載點。該命令執(zhí)行完以后,/mnt/newpart中將包括 /home 中當前包含的全部文件和目錄的精確副本。如果原來的/home 在它自己單獨的分區(qū)上(在 /etc/fstab中用單獨一行列出),請轉(zhuǎn)到 步驟 6a。否則,請轉(zhuǎn)到 步驟 6b。
6a. 使用新分區(qū)(當原來的 /home是一個分區(qū)時)
下面的說明適用于原來的 /home已經(jīng)在它自己的專用分區(qū)上的系統(tǒng)。如果不是這種情況,請參閱 步驟 6b。
鍵入以下命令卸載原來的分區(qū):
# cd /# umount /home |
然后,卸載并重新掛載新分區(qū):
# umount /mnt/newpart# mount /dev/--? /home |
現(xiàn)在就可以通過 /home訪問新分區(qū)了,并可立即投入使用。我們可以在多用戶模式下執(zhí)行最后幾個步驟。請按CTRL-D 退出單用戶模式,這樣系統(tǒng)就會回到啟動運行狀態(tài)。
重要步驟: 在系統(tǒng)正常啟動以后,以 root 身份登錄,然后編輯/etc/fstab,以便將 /dev/--? 自動掛載到 /home上,而不是仍然在這個掛載點掛載原來的分區(qū)。例如,將下面這一行:
/dev/hda3 /home ext2 defaults 1 2 |
更改為:
/dev/--? /home ext2 defaults 1 2 |
6b. 使用新分區(qū)(當原來的 /home不是一個分區(qū)時)
如果 /home 以前不在它自己單獨的分區(qū)上(例如,如果 /home只是根分區(qū)上的一個目錄),請按下面的說明操作。執(zhí)行以下命令:
# cd /# mv /home /home.old# mkdir /home # mount /dev/--? /home |
現(xiàn)在,請按 CTRL-D離開單用戶模式。當系統(tǒng)回到啟動運行狀態(tài)以后,編輯 /etc/fstab文件,在其中添加類似這樣一行:
/dev/--? /home ext2 defaults 1 2 |
這樣,當下次重新啟動系統(tǒng)時,您的新分區(qū)將被正確掛載。
我們特意將原來的 /home目錄/分區(qū)保留下來,以防復制文件時出現(xiàn)問題。在證實系統(tǒng)穩(wěn)定運行以后,您就可以將原來的/home 分區(qū)用于其他目的,或者刪除原來的 /home 目錄。
恭喜您,您已經(jīng)移動了/home!在下一篇技巧中,我們將重新配置一個系統(tǒng),以使 /tmp 和 /var使用它們自己的共享分區(qū)。下篇再見。
Daniel Robbins 住在新墨西哥州 Albuquerque 市,他是 Gentoo Project的首席體系結(jié)構(gòu)設(shè)計師,Gentoo Technologies 公司的首席執(zhí)行官,LinuxAdvanced Multimedia Project (LAMP) 的顧問,他還是 Macmillan公司出版的 Caldera OpenLinux Unleashed、 SuSE LinuxUnleashed和 Samba Unleashed幾本書的重要作者之一。由于深受 Pac Man 的影響,Daniel在讀二年級時第一次接觸到 Logo編程語言后即執(zhí)迷于計算機。這可能是他后來作為 SONY ElectronicPublishing/ Psygnosis的首席圖形藝術(shù)家的原因。Daniel 喜歡與他的妻子 Mary共度美好時光,Mary 今年春天已經(jīng)懷孕??梢酝ㄟ^ drobbins@gentoo.org 與 Daniel聯(lián)系。