硬盘损坏+高可用性有感

最近一直觉得笔记本的硬盘有些问题,因为有时候系统会莫名奇妙地停止响应,硬盘灯则长亮,只听见硬盘在有规律的间隔发出声音。果然,先是本周周一的时候,我的个人用户配置文件损坏,导致无法登录Windows,接下来就是前天windows\system32\config\system系统配置文件损坏,导致无法启动系统。

估计是硬盘出现了坏道。为什么会这样,我本身在使用上也有很大责任,估计是这些原因:

  • 一直只有一个分区:因为笔记本硬盘本来就小,如果分成若干区,虽然划分地清楚,但难免有某个区总是闲置,另一个区却被塞满了,只有用一个分区才能最大化利用硬盘容量
  • 硬盘一直很满:硬盘上总是塞了很多乱七八糟的文档,以及一些电影、游戏等。比如WoW就占了7G
  • 从不检查清理:因为NTFS号称可以不用整理磁盘、又是日志文件系统,又号称可以自动修复,所以我也从来没有整理过,也没有检查过磁盘,甚至包括各种临时文档,也很少去清理
  • 从不备份:因为备份很消耗时间和空间,虽然IBM提供了Thinkadvantage全套的工具,但是我很少用,因为本身硬盘空间就不足。另外也就是根本不知道Windows里面哪些东西是关键,比如system32\config\system文件,如果这次没有出现这个事情,我估计这辈子不会了解Windows还用了这个文件存放系统配置
  • 长时间连续运行:我经常拿笔记本当服务器,会连续几天不关,用来下东西或者是挂机

幸好只是出现了坏道,我找了个移动硬盘盒就把东西备份出来了。那么接下来是恢复单个文件还是全部恢复整个硬盘的,但这都不是我想搞的,因为仅仅恢复单个文件,我不知道其他文件还有没有问题,还有没有可能出现其他坏道,而且很可能硬盘需要低级格式化。恢复整个硬盘也是很麻烦的,因为我需要重装很多东西。

最后我的选择是换一块硬盘,装个Ubuntu,虽然还是放不下预装Windows XP,因为那毕竟是唯一一份正版,而且Linux毕竟在桌面系统的硬件支持上还是较为落后的,比如不支持指纹识别等等。不过所幸现在Ubuntu做得已经够好了,而且我更相信Linux的文件系统。

高可用性

公司正好也要搞高可用性,因为公司网站需要对客户提供24小时不间断的服务。高可用性就是让系统在出现问题(宕机、维护等)的时候不至于全部瘫痪,用户依然可以使用系统。高可用性的特点是事先进行可以控制的投入,来防止出现事后不可控制的损失。高可用性的核心是冗余,也就是什么东西都有备份,多出来一个以备不测。这就意味着必须要付出很多成本来维持高可用性。

比如我这次的事故,如果我没有能成功备份出硬盘上的数据,那么我记录的一些关键信息、银行证书、过去搜集的很多资料和在做的一些东西都付诸东流,对我个人的损失不可估计。

但我可以有很多方案达到备份的目的:

  • Windows自带的系统还原,从来没用这个功能
  • IBM ThinkVantage 的快速备份和恢复(RRU)软件,功能十分强大,可以放在隐藏分区中,也可以放在单独的移动硬盘中,问题是备份消耗很多空间以及时间,这都是针对个人用户而言。可以完整备份、增量备份,但消耗巨大空间,以前我有一台IBM R50,硬盘只有30G,隐藏空间5G,如果备份一下就只有20G了,出厂设置的Windows基本上需要10G,所以对于硬盘的消耗是惊人的。如果要选择性备份,则无法了解Windows需要备份什么——看来移动硬盘非买不可了
  • 使用Norton的Ghost,以及世面上流行的一键恢复加上单独备份数据——还是要移动硬盘吧?
  • 另外买台机器……,可以做到使用上连续,如果数据不重要的——你得有钱买另外一台机器

基本上可以发现,要想冗余,想备份,必须有实打实的投入,物质上的人力上的。如果仅仅是物质上的投入,还能令人接受,但目前功能还都十分繁琐,备份过程相当长,而且备份介质的安全性也不是十分可靠。服务器的高可用性是需要大量人力物力投入的、做集群、做双机热备份等等。

无论是个人电脑,还是公司服务器,越是偷懒,就越可能出现大问题,这印证了墨菲定律

“如果一件事情有可能向坏的方向发展,就一定会向最坏的方向发展”。

只有把工作做在前面,才能防止事后的损失,这其实是一个管理层面上的问题了。

总结

其实我总期待更好的备份方案,我希望等将来网络速度更快、存储器更廉价的时候,可以适当推出网络备份,那时候应该我们基本上每人有一台电脑,甚至多数白领会有多台机器(自己的、公司的)。这种网络备份其实就是类似于如今Google Browser Sync的功能,结合另一种版本控制软件类似于Subversion,无须消耗本地的存储器容量,本地崩溃了还有主机上的备份,那么我们重装系统或者迁移到另一台机器,或者几台机器之间同步,就会变得非常方便。

VirtualBox + gOS

不知多久之前听说了gOS,当时隐约记得有人误传说他是Google推出的操作系统,而且也看到了这个操作系统界面上有相当多的Google应用,后来澄清了其实gOS代表的是green OS的意思,和Google毫无关系(看他的主页底部的声明),主要的目的是为了一个廉价PC而设计的操作系统,所以整合了很多Web应用的快捷方式。

其实这些我都不关心,我最关心gOS的地方,其实是他使用了Enlightenment DR17(简称e17)作为他的窗口管理器和桌面环境(也就是把Gnome给替换掉了,其实早在GNOME 1.0的时候,它也整合了Enlightenment作为其窗口管理器,只是后来改成了Metacity),而且是一个非常轻量级的桌面环境。早在3年前,e17便有了一些测试版本,我当时在Fedora Core 3上安装了测试版,完全被其华丽的界面给震撼了,看过了e17的界面,我觉得完全不输给MacOS的任何版本。时隔三年,终于e17顺利发布,而且能够有一个Linux发行版预设了e17,尤其gOS又是基于现在我最喜欢的一个Linux发行版Ubuntu,实在是太完美了!

gOS with e17gOS为e17做了一套自己的最简化的主题。如果有哪位朋友装了gOS,一定要尝试一下e17默认的主题 “bling”。

唯一的遗憾是,gOS和e17在默认情况下对国际化的支持并不是太好,默认的桌面字体非常小 ,虽然很适合西方字幕,但对于中文字就不行了,默认的终端窗口也显示中文字体都是方块,不过经过适当的调整,还是可以正常显示的。

Ubuntu硬盘ISO安装一法

我在公司的机器没有光驱,有Ubuntu的Desktop安装盘也没有用,捣鼓了很久的硬盘安装也没有成功,因为Ubuntu Dapper使用了Live CD的启动方式。而我尝试过唯一能从硬盘ISO安装成功的就是Fedora Core 5了。
在研究了数周毫无结果就要放弃的时候,我突然灵机一动,觉得既然Ubuntu Dapper的CD就是一个完整的Linux系统,那何不直接拿来用呢?在经过了一整夜的研究之后,我终于用这种丑陋的方法,将Ubuntu Dapper装在了没有光驱的机器上。
具体步骤如下:

  1. 进入原有的Linux系统,先对系统进行分区,将目标系统的root分区准备好,并挂载在某个目录比如/target下,然后将其他分区准备好,相应挂载在/target下(比如/usr, /var, /home等)。在此不赘述,可以参考Gentoo磁盘准备的教程
  2. 使用

    mount -o loop -t iso9660 [ISO文件路径] [挂载路径A]

    将镜像挂载到某个目录下A,这里我使用的镜像是Ubuntu Dapper的desktop安装镜像。

  3. 然后再用

    mount -o loop -t squashfs A/casper/filesystem.squashfs [挂载目录B]

    ,因为Ubuntu Dapper的Live CD的文件系统内容都是以squashfs形式压缩在光盘的casper/filesystem.squashfs文件中的。

  4. 在刚刚挂载好的Live CD的目录B中,复制所有文件到/target下,

    cp -p -r B/* -t /target

    其中-p表示保留所有的文件权限信息,-r表示递归复制。这时候基本的系统内容就有了

  5. 如果有chroot,也可以调用:

    chroot /target /bin/bash

    (以下假设运行了这条指令,根目录转到了/target中)

  6. 准备/etc/fstab,起初的内容都是空的,根据自己分区的情况酌情编写,以下是一个参考例子:

  7. 准备引导文件,如果已经装了Grub或者Lilo,只需要修改一下相应的配置文件,比如,在grub的menu.lst中加入:

    title Load Ubuntu Dapper
    root (hd0,5) #假设是这里的安装根目录
    kernel /vmlinuz root=/dev/hda6 quite splash –
    initrd /initrd.img

  8. 如果是自己用无所谓建立新用户的话,将来可以直接使用root(初始密码为空),但必须在/etc/X11/gdm中,将gdm.conf和factory-gdm.conf中的AllowRoot设置为true。如果需要更加安全,则请建立相应的用户,但必须在/etc/sudoers中添加相应的用户,使用visudo来进行编辑。
  9. 编辑/etc/apt/source.list,添加一些ubuntu的apt源,具体就不列出来了。
  10. 调用dpkg-reconfigure -a对所有安装了的Debian包进行重新配置,尤其重要的是xserver-xorg和语言等等
  11. 之后重启,便可选择进入我们克隆出来的Live CD的系统了。这时候应该对系统进行一些设置,比如在系统中选择自己的语言,并使用新立得来更新系统,同时也可以将Ubuntu Live CD相关的一些包删除。
  12. 这时候,终于可以在机器上使用Ubuntu Dapper了。

唉……瞎折腾啊。