您的位置:首页 > 运维架构 > Linux

迁移Linux系统

2007-03-22 18:31 363 查看
我现在的电脑上有两块硬盘,一块80G的装着原先的Windows,已经基本上没有用了。另一块160G的装着现在正在用的Ubuntu Linux。
因为打算搭建一个个人的服务器,我决定将原先电脑上的两个硬盘拆出一个160G的给服务器用,自己的PC上只留一块80G的就可以了。
但是因为系统装载160G硬盘上,所以需要迁移一下系统。还好,在Linux世界里,这个事情并不困难。

第一步当然是备份80G硬盘上的一些数据,这一步就不详细说了,准备工作做完之后,就要把硬盘干掉,重新分区和格式化。
首先使用Ubuntu的LiveCD──里面有Gnome Partition Editor程序──启动,然后使用Gnome Partition Editor工具,将hda1(我的80G硬盘)所有的分区全部删除,然后重新格式化。这一次,我选用了reiserfs文件系统,而不是默认的ext3。据说前者速度更快,安全性更好──因此说,对Linux世界的东西需要一点一点慢慢熟悉,我刚开始装Ubuntu的时候根本没有听说过什么reiserfs,甚至我都以为ext3是Linux下的唯一文件格式,就像Windows下的NTFS一样。事实当然不是这样。Linux使用的是虚拟文件格式,可以同时支持多种不同的文件格式,包括Windows的NTFS。
这次我重新考虑了一下分区的问题。刚开始装Ubuntu的时候我其实是考虑过这个问题的,当时将/home和/usr单独分离了出来,做成两个独立的分区,另外为电影和照片各准备了一个分区。这次因为打算将电影都放到个人服务器上去,因此就不考虑电影的问题了。然后我将/var也单独分了出来──因为这个目录读写次数很频繁,我觉得还是隔离开比较好。另外,我还重新分配了各个分区的大小──原先因为对Linux不熟悉,而且硬盘比较大,分区的时候使用了非常保守的估计,每个区都分到10G以上。根据我实际使用的情况,这是不必要的。
这次我的分区情况如下:
hda1 -> / 根目录及其它没有单独分区的目录(2G)
hda2 -> swap (1G)
hda5 -> /var (1G)
hda6 -> /usr (10G)
hda7 -> /home (20G)
hda8 -> 照片专用分区,挂载到/home/<我的个人目录>/Photo 下面,剩下的所有40多G
除swap外全部使用reiserfs格式

接下来的事情其实很简单,简单到没有什么可说的:复制文件。将文件和目录逐个复制到对应的盘上就可以了。不过还是有一点需要提醒的,就是权限问题,cp有一个选项-p,可以复制权限。所以,我用的命令是类似这样的:
cd /usr
cp -R -p * /media/hda6 (带权限,递归复制,当然,事先需要mount好/dev/hda6)

接下来就要准备用新盘启动了。由于之前的硬盘已经被格式化过,所以需要重新安装grub。
用LiveCD启动,然后在终端输入sudo grub
在grub的提示符下面输入 setup (hd0) 就可以将grub安装到第一个硬盘(也就是我的80G硬盘上)。
quit退出
然后编辑 /boot/grub/menu.lst
将原先的root (hd1,0) 都改成 root (hd0,0),并且将下面kernel行的root也换成/dev/hda1。

然后重新编辑/etc/fstab文件,将分区重新挂载到正确的位置。

再然后重启就可以了。

我自己碰到的一个弱智问题:
在根目录下没有建立 usr、 var、 home等几个目录,结果在启动时自动挂载分区的时候,不能正确挂载。而且因为我启动时使用了splash,看不到实际的情况,没有发现原因。
解决方法是,在grub启动的时候,选择完启动项目后按e,然后移到kernel那一行上再按e,将后面的quiet splash参数删除,回车之后按b启动,这样就不会出现splash屏幕,而是出现所有的启动输出,这样就可以清楚的看到在挂载分区的时候出错了。
但是这时是可以启动tty的,也就是你可以正常的登录系统,然后可以用su命令进入超级用户,再在根目录下建立几个空目录就可以了: /proc、/usr、/var、/home。简单的方法是当时复制文件的时候,就按照根目录下建好所有的空目录,然后一个一个的复制文件,就不容易犯错误(要保证所有的目录都存在)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: