因raid1根分区容量不足,调整根分区容量(mdadm管理)

 

 

原因:

以前做的net-server硬盘更换,在分区的时候,boot分区过小。当时查到的资料都说,根分区是静态数据,不需要分过多的数据,128MB足够,为了保险,还搞了256MB的容量。

    但在后来ubuntu升级过程中,出现分区不足的情况。原因是 /lib 分区占用过多的硬盘空间。

    2.6.22 .14升级到2.6.22.15的过程中,如果没有超过300MB空间,就有可能无法将内核升到2.6.22.15,原因是升级文件无足够空间写入。这种时候就是升级不彻底,容易造成系统不稳定。

 

 

发现这个问题以后,做了如下处理:

1、试图将 /lib 复制到新分区。

    * 在原始硬盘的自由空间新建分区, 1G 大小,并修改 /etc/fstab 文件,将/lib加载到新分区;

    —— 该操作成功,系统可以启动到新分区;

 

2、将根分区下的 /lib 改名:

    * 前一步已将所有的 /lib下的文件copy到新分区(md9),现在就将 /lib 改为  /lib.old,并新建一个目录 /lib

    * 重启动后系统失败;理由是找不到 /sbin 下的文件;

 

后来查资料,说是:

raid的模块在/lib/modules,但是lib需要这些模块才能驱动. 一个怪圈.

 

一种解决办法如下:

raid的驱动放进initrd里面, initrd是内核启动时的小的ram文件系统,主要进行一些模块加载,初始化等.

只要initrd所在的分区是ext3这类能够被grub获取到的文件系统, 其他杂七杂八的文件系统,就由initrd来获取了

 

 

3、在前述2个操作不成功的情况下,试图强行删除旧版本: 2.6.22 .14,删除过程中系统挂掉,执行任何命令都会提示 /sbin 下的某文件找不到。

    * 处理办法:

利用第一步copy出去的 /lib 文件,复制回根分区。重启动系统后恢复“正常”。但同样因为空间不足无法完成升级,也不能安装别的软件;

    * 现在系统的运行条件回到了发现问题的状态。

 

————————————————————————————————

有人提示说,可以完整移动根分区。看起来是有道理的,但我没有进一步尝试。(此项待试验。)

 

 

4、利用mdadm扩容

    * 参考文件:扩容.Resizing a RAID1 system partition.

 

    * 新购两块 500G 硬盘。按新方式格式化。不同之处是:

a.             根分区扩为 20G

b.             Boot分区 1G 位于第五区(扩展分区。原来是第二主分区)

c.              /usr分区扩展为 20G

d.             其他不做改变;

 

分区注意事项

a.           注意:分区的时候要注意容量。先使用fdisk获取原来分区的容量,这是准确数据。新建分区的时候要按原来硬盘的分区数据来分。如 10G 容量,实际应该为 10010.17 MB

b.           分区类型为 0xfd linux raid

c.           分区完成后,不需要格式化,暂不需要建立grub;根分区要设置为bootable

 

过程

a.           参考文档:.Resizing a RAID1 system partition.

b.           在第一个新硬盘同步结束的时候,使用 grub 工具为新硬盘创建启动grub

c.           关机,强行取下所有老硬盘,将第二个新硬盘挂上;

d.           这时候重启动,会进入 initramfs 维护界面。一般在启动期间发现缺少硬盘,会导致故障 3分钟内可进入。

e.           同步,同步完成后,同样为第二个硬盘创建 grub

f.           使用 resize 更改 根分区,/boot 分区 /usr分区的容量;

g.           完成后调整 /boot/grub/menu.lst文件,设置boot hd(0,4) 以前是 hd(0,1) 因为boot挂载分区已由第二主分区调到第一扩展分区了。

h.           重启动系统,所有功能恢复正常。

i.           使用aptitude ,按g键继续前述的第3项过程。会正确删除 2.6.22 .14 内核,升级到 2.6.22.15内核。

j.           *** 有问题的是,此过程结束后,我发现menu.lst的启动根被恢复为 hd(0,1) 编辑后进入系统正常。

k.           重新修改 menu.lst,多次重启动系统都无问题。

l.           运行 apt-get upgrade 进一步升级系统。正常。

 

 

余留问题:

a.             /grub/boot/menu.lst为什么为恢复到旧系统的配置内容?是否因为前次升级没结束,但升级中的系统配置保留了相关数据?

b.             若我只是将 根移到md9,修改/boot/grub/menu.lst,是否可以正确移动根分区?

c.              怎么做,才可以避免长时间超时才能进入到 initramfs

d.             如何做到真正的备份服务器?即做一台新服务器,但定时更新新服务器数据。在主服务器挂掉以后,简单配置备份服务器即可顶上用?

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值