原文来源:http://www.twoceanview.idv.tw/modules/newbb/viewtopic.php?topic_id=66&forum=10&0
作者: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.siliconvalleycc...-space.htm 2.
http://www.linuxfocus.org/Chinese...rticle101.html 3.
http://zope.slat.org/Member...s/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