作者 主題: [轉貼][教學]linux的partition重新分割以解決空間不足的問題  (閱讀 16798 次)

0 會員 與 1 訪客 正在閱讀本文。

mandel

  • 活潑的大學生
  • ***
  • 文章數: 211
  • 性別: 男
    • 檢視個人資料
原文來源:www.twoceanview.idv.tw
作者:eden

linux 下 partition 重新分割,系統轉換至另外一顆硬碟以解決空間不足的問題:
一、源起:
一開始玩linux時,並未預留很大的空間給linux,而且筆者採用的是多重開機,將
XP與linux 裝在同一顆硬碟上,隨著linux的深入了解,漸漸覺得當初 partition
的劃分並不恰當(太小了),於是就起了重新畫分partition與轉移系統的想法

二、簡述:
1.原本的硬碟(hda),分為
1.hda1:Xp 約六GB
2.hda2:/boot 53MB
3.hda3:延伸磁區(約3.5GB給linux用)
4.hda4:FAT32 約18G
5.hda5:邏輯磁區: swap 256MB
6.hda6:邏輯磁區: / 約 3GB
7.hda7:邏輯磁區: /backup 約235MB

2.另外有一顆硬碟(hdc),分為
1.hdc1:FAT32 約5GB 存放一些備份資料
2.hdc2:FAT32 約33GB 平時存放一些備份資料

意欲將第一顆硬碟(hda)延伸磁區內的linux系統(包含/,swap及/backup)的資料轉移到 hdc1
然後hda5,hda6,hda7部分的partition就可清空,若hda4再配合作資料整理後清空,則可將
hda4~hda7,重新規畫。

目前先將 /hda4,hda5,hda7 三個partition的資料,先轉移至 /hdc1

三、實作記錄:

1.備份整理hac1的資料空出hdc1
2.預作開機磁片,以免萬一出狀況,可從軟碟機開機(可參考linux心得:如何製作開機片)
fdformat /dev/fd0H1440
mkbootdisk 2.4.18-19.8.0
3.分割partition
fdisk /dev/hdc
將第二顆硬碟重新分割如下
Device Boot Start End Blocks Id System
/dev/hdc1 1 33 265072 82 Linux swap --->swap 256MB
/dev/hdc2 766 4865 32933250 c Win95 FAT32 (LBA)--->原本備分資料的磁區(33GB)
/dev/hdc3 34 765 5879790 5 Extended --->延伸磁區
/dev/hdc5 34 110 618502 83 Linux --->邏輯磁區 (預計放/backup) 600MB
/dev/hdc6 111 765 5261287 83 Linux --->邏輯磁區 (預計放/) 3GB

fdisk的用法在此不詳述:可參考netman 及 鳥哥的文章
m:顯示help
p:顯示partition
d:刪除partition
n:加入新的partition
w:存檔

新增一個partition時,預設都是linux native的,新增完後,
如要改成其他格式,如swap 時,要輸入t,再輸入linux swap的編號 82

4.格式化新的partition
mke2fs -j /dev/hdc5(格式化為ext3)
mke2fs -j /dev/hdc6(格式化為ext3)
mkswap /dev/hdc1(格式化為 swap)

5.進入單人模式
init 1

6.mount 新的partition
cd /mnt
mkdir hdc5
mkdir hdc6
mount /dev/hdc5 /mnt/hdc5 (-t ext3可省略)
mount /dev/hdc6 /mnt/hdc6
cp -Rp /backup/* /mnt/hdc5
cp -ax / /mnt/hdc6

-a:相當於 -dpR 保留原有的結構
-x:指定不要把和現在所在位置不同分割區也包括進來。(於此是不包含 /backup)

修改
/mnt/hdc6/etc/fstab (未來的/etc/fstab)為

/dev/hdc6 / ext3 defaults 1
/dev/hdc5 /backup ext3 defaults 1 2
LABEL=/boot /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hdc1 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 iocharset=cp950,noauto,owner,kudzu,ro 0 0
/dev/cdrom1 /mnt/cdrom1 iso9660 iocharset=cp950,noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto iocharset=cp950,noauto,owner,kudzu 0 0
/dev/hdc2 /mnt/hdc2 vfat iocharset=cp950,user,noauto,umask=0 0 0

修改 /boot/grub/menu.lst

kernel /vmlinuz-2.4.18-19.8.0 ro root=LABEL=/ hdd=ide-scsi
改成下面這樣--->
kernel /vmlinuz-2.4.18-19.8.0 ro root=/dev/hdc6 hdd=ide-scsi

重新開機
init 6

可用
mount檢查系統是否轉移成功
swapon -s 檢查swap是否使用hdc1
[eden@justdoit www]$ swapon -s
Filename Type Size Used Priority
/dev/hdc1 partition 265064 22832 -1

本文參考下列文章:
1.http://www.siliconvalleyccie.com/disk-space.htm
2.http://www.linuxfocus.org/ChineseBig5/July1999/article101.html
3.http://zope.slat.org/Members/Keanu/docs/grub/view

後記:
成功的將第一顆硬碟的資料轉移到第二顆之後,直接將第一顆空出來的partition刪除(原本的hda4裏的資料也整理好),
所以我便將第一顆硬碟重新分割,僅保留hda1(Xp)及hda2(/boot)

目前我的硬碟配置如下:
Device Boot Start End Blocks Id System
/dev/hda1 * 1 765 6144831 7 HPFS/NTFS -----> Xp 約6GB
/dev/hda2 766 772 56227+ 83 Linux -----> /boot 約50MB
/dev/hda3 773 1282 4096575 c Win95 FAT32 (LBA)->FAT32 4GB
/dev/hda4 1283 3720 19583235 5 Extended -----> 延伸磁區
/dev/hda5 1283 1792 4096543+ 83 Linux -----> / 約4GB
/dev/hda6 1793 1825 265041 82 Linux swap -----> swap 256MB
/dev/hda7 1826 2463 5124703+ 83 Linux -----> /home 約5GB
/dev/hda8 2464 3228 6144831 83 Linux -----> /usr 約6GB
/dev/hda9 3229 3720 3951958+ 83 Linux -----> /backup 約4GB

轉移的步驟,差不多如第一次轉移至第二顆硬碟的步驟

唯在單人模式下的複製的指令要如下

cp -Rp /usr/* /mnt/hda8

不要使用 cp -a /usr /mnt/hda8
上述兩個參數,差在下面 -a 會連usr的目錄也建好,放在/mnt/hda8/下
而 -Rp 則不會在/mnt/hda8下建一個 usr的目錄(這才是我們所要的)

筆者就是因為複製時,使用下面的參數,造成 mount 不到 /usr目錄 (因為多一層)

這是目前硬碟的使用率
檔案系統 1K-區段 已用 可用 已用% 掛載點
/dev/hda5 4032092 270588 3556680 8% /
/dev/hda7 5044156 221752 4566172 5% /home
/dev/hda8 6048320 1864120 3876960 33% /usr
/dev/hda9 3889892 223532 3468764 7% /backup
/dev/hda2 54447 14206 37430 28% /boot
none 127704 0 127704 0% /dev/shm