Linux系统自动配置
上周在做测试的时候,我的VirtualBox的磁盘文件不幸损坏,不能打开了,又没有做备份,所以只好放弃VB。改用以前用的VMware,结果用了两天除了意想不到的问题,VMware产生的文件居然占据了整个分区,每次都提示系统没有足够的空间,VMware不能启动,分区有40+G,被占满主要是做了多次快照(后来删除了快照,相关的文件没有清理掉,VMware一直卡在那里),额外建立了几个磁盘(配置MD时新建的,并且所有的磁盘的空间都是创建时分配的,而不是动态增长)。
在解决问题时误删了一些文件,系统提示找不到启动必须的文件xxx,其实应该删除后来新建的磁盘的,可惜当时有点急,那是已经是周三了,周四有事,周五就要开会,所以直接把CJ的虚拟机拷过来,但用着很慢,无奈之下,只能重装,装好后重新配置一些环境。
上面的整个过程,折腾了几个小时,问题产生的原因主要是磁盘空间的使用没有规划好,当时创建虚拟机的时候就直接分了20G左右的空间,其实完全没有必要一次性分配这么大,或者是选择动态分配,但这样对数据密集型的性能测试来说,如果测试过程中磁盘空间需要增长的话,会影响到测试的结果的。另外在解决问题的时候,思路不清晰,在没有认真分析问题的情况下,做出了错误的选择。
另外在配置网络,防火墙等一些服务时,觉得每次这样配置很是麻烦,能不能有一个自动配置的工具,能记住当前系统服务的配置,并能在一个新的系统上直接部署呢,当然给系统做快照能实现这一目标,但随着系统配置不断的变化,不可能每次变化都对虚拟机做快照,况且直接在实机上安装的系统时不支持快照的。另外一种实现方式是使用一个daemon监控一些服务对应的配置文件,记录每次的变化(或者周期性的检查相应的配置文件),或是直接保留最新的配置文件(配置文件通常不会很大),在新系统上直接使用daemon产生的配置文件,重启服务,但要注意不同的Linux发行版的配置文件,已经服务对应的脚本文件可能不同;要注意的问题是,daemon收集的配置文件应该备份到网络上其他的地方,否则如果系统启动不了,这些文件也没什么意义了。不知道还有没有更好的方法,或是专门的工具能完成这个任务,个人感觉这个需求还是比较大的。
2012年1月4日补充:
最近看到网上很多人因为rm -rf * 引发悲剧,于是想写一个python脚本,运行脚本就可以部署一个回收站,主要步骤参考:http://www.itxbo.com/linux/369.html
要想写一个用户体验好的脚本:
(1) 要检查回收站对应的目录是否存在,并进行相应的处理。
(2) 写脚本,如果不给用户造成负担,应该只用一个脚本,并在脚本中写文件(把内容做成一个字符串),如果允许用户指定回收站路径,这个将变得更加复杂。
(3) 可能是普通用户在创建回收站,没有/usr/bin/的写权限,于是要考虑把脚本放到一个合适的目录。
.... 考虑这些问题,这个脚本写出来有多糟糕可想而知,而且应该很容易出问题。
但仔细想想,用户真的需要“这么好的用户体验”么?
linux的开源使得linux的用户都有刨根问底的特点,一个神奇的脚本他们仍然会探究这个脚本如何工作,而面对糟糕的脚本,反而会影响他们理解脚本的难度,作用适得其反,相反,如果你直接告诉大家原理,即使没有这个神奇的脚本,linuxer也会自己完成这个脚本实现的功能。
到底什么是好的用户体验,这个问题值得深思,千万不要将自己的想法强加到假想的用户身上。