2010/5

迁移 home 分区

之前装系统时用的是默认安装,结果/home没有单独分出。现在想装新的系统,所以备份/home里面的东西就成为一个问题了。后悔啊!还好,幸亏当时我用的是LVM,所以我可以动态调整分区。

我天真地以为直接用lvm调整即可,事实不是这样的,直接操作你会发现没有足够的PE,换句话说,我的lvm已经被占满了,需要先腾出一些空间来。

因为根分区是一个整体,所以必须得从别的系统进来然后进行操作。于是,我找了一个Fedora的LiveCD。首先检查已有的根分区:

e2fsck -f /dev/VolGroup00/LogVol00

然后缩小根分区的大小到120G:

resize2fs -f /dev/VolGroup00/LogVol00 120G

用LVM缩小根分区的逻辑卷大小到120G,这样就剩下100G给后面的/home:

lvm lvreduce -L120G /dev/VolGroup00/LogVol00

添加新的卷:

lvm lvcreate -L100G -nLogVol01 VolGroup00

好了,任务完成了一半,继续备份:

mount /dev/VolGroup00/LogVol00 /mnt/root

mount /dev/VolGroup00/LogVol01 /mnt/home

cp -R /mnt/root/home/wangcong /mnt/home

经过了漫长的等待之后终于完成,然后就可以安装新的系统了,要把新的LogVol01选为/home,而且不格式化。安装完毕后:

chown wangcong -R /home/wangcong

结束。

几个有用的 malloc 环境变量

或许除了LDDEBUG等少数几个环境变量,你对glibc的其它环境变量并不熟悉,比如 MALLOC_PERTURB

MALLOCPERTURB 很有用,它的作用是指定用来填充 malloc(3) 所分配的内存的内容,单位是字节。我们知道,malloc(3) 并不会对其所分配的内容进行初始化,所以如果直接使用这部分内存会出错。而 MALLOCPERTURB 就是用来解决这个问题的,你可以用它来填充这些内存,然后一旦使用了未初始化的内存,这部分内存就很容易被识别出来。所以它在某种程度上可以帮助我们检测未初始化的 malloc(3) 内存。

需要注意的是,用来初始化 malloc(3) 内存的值是 MALLOCPERTURB 的二进制取反(也就是~MALLOCPERTURB),但是 0 会取消掉这个功能。通常我们可以这样来设置:

export MALLOCPERTURB=$(($RANDOM % 255 + 1))

另一个是MALLOCCHECK,当设置了它时 glibc 就会使用另外一个 malloc(3) 的实现来检查一些简单的内存错误,比如多次 free(3) 同一个地址,off-by-one 错误等。它有三个值:0表示忽视检测到的错误,1表示打印错误到标准错误输出,2表示检测到错误就马上中止程序。更详细的描述可以参考手册

还有几个和 malloc 内存分配策略相关的环境变量是:

MALLOCMMAP_MAX
MALLOCMMAP_THRESHOLD
MALLOCTOP_PAD
MALLOCTRIM_THRESHOLD

它们分别等价于 mallopt() 的对应参数,可以参考 mallopt() 的手册。更详细的介绍见这里

母亲给我的最重要的东西

今天是母亲节,我不想仅仅表达我对母亲的感谢,因为母亲给我的东西是我这辈子都报答不完的,更别说只有每年的这一天了。

母亲究竟给了我什么?显而易见的是,她给了我生命,给了我一个完整的家,把我抚养长大。除了这些,她还给过我什么?哪些才是最重要的?我常常在想这些问题。

我的母亲是一个很普通的妇女,只上过小学和初中,当了一辈子的工人,她给不了我太多的财富,也给不了我太多的知识。她给我的全部东西中,我认为最重要的有两个:一个是从小就教育我的多读书,另一个是要有爱心。

小时候家里穷,搬过好多次家,但家里像样的家具就一直是那么陈旧的几件,一直舍不得扔。更别提衣服了,印象中她买新衣服的次数屈指可数。可就是这样,她还是鼓励我读书,小时候给我买各种童话书,每次进城都要带我逛新华书店。长大了,每次我想买参考书时她也都毫不犹豫,哪怕是我看了十几页就不再看了。她口口声声说家里没钱,不要浪费,可是在买书这件事上她从来没抱怨过。就是她,才让我养成了一辈子都受用的爱读书的好习惯。

上学时学校没少组织学生捐款,不管在几年级,我所在的班都算是比较好的那种,所以班里不乏一些家境很好的同学。每次捐款都是回去找她要钱,只要一说哪里出事儿了,捐什么款,她从来都不含糊的。记得有一次我竟然还捐得最多,和另外一个有钱同学一样。正是因为她我才懂得了为什么要去帮助别人。

现在她老了,更爱唠叨了,每次打电话都唠叨个没完,有时候我也觉得烦,可是一挂电话我就后悔不该嫌她唠叨,冲她生气。她也真是的,老是说养儿子不好,以后不孝顺、不会养她。其实她完全可以放心,只要是想起我小时候她为我做的那一点一滴,我觉得这一辈子都报答不完!