折腾手机

September 14th, 2010

G1(HTC Dream)买了也有1年了,这期间除了开始那两个月拼命刷rom之外,后面就没有怎么动过了。这期间手机跟着我去过很多地方,包括泰国和澳洲,出色完成了任务(主要是作地图gps)。不过手机也积累了很多问题,比如系统变得缓慢,比如短信的对话框总是会自己出现回车,让我很懊恼,应该是重装的时候了。

于是到论坛找rom(hiapk和gfan),最新的2.2的andriod是不敢想的了,作为第一台andriod手机,内存和电池太少是G1最大的缺点。那么就试试2.1,或许过了这么久新的技术会让G1也能用新的ROM吧? 可是现实总是残酷的,刷了几个2.1的rom,G1的启动时间都是非常长,反应也很缓慢,只能放弃2.1.

那么试试sense吧?lp的htc magic(真G2要出来了,伪G2就叫回真名吧)从一开始就刷了hero的sense,效果到现在都还是非常不错的。于是找了个1.5的sense rom(sunny sense),然后还打了个10M的内存补丁(听说是将显存里面的内存搞到系统内存上面,linux的系统总爱这样干,参照ps3)。内存的确从90多M变到100多M了,不过用了几天,速度还是上不去,从软件出主屏的时候主屏总是要reload,切换屏幕也很多时候没有反应。

为了避免被手机玩,我最终还是刷了个普通的1.6 ROM(阿兴版),现在终于有点爽的感觉了。G1的配置相对于现在的系统来说还是有点力不从心了。

改来又改去

July 29th, 2010

google同天朝闹翻了以后,feedburner又被墙了。

测试了一下,用feedburner的mybrand功能,设置了feeds.joecen.com子域名作为我的feed的域名。结果是cname过去的ip也已经被封掉了。

无招,只好用回自己的feed:

如果你是使用google reader的话,也可以继续用feedburner的域名:
Add to Google

折腾呀,BS gfw again~

类似文章:修改了feed的地址

记录一个svn诡异的错误

July 22nd, 2010

我的laptop使用ubuntu,另外上面原来自带的win7也没有删除,两个系统共享着一个fat32的分区,popo呀什么需要共享的东西都放在里面。

今天在ubutu下svn update的时候出现下面的诡异错误:

中文:
svn: 无法创建符号连接 “script/xxxx/xxxx.tmp”: 不允许的操作

英文:
svn: Can't create symbolic link 'script/xxxx/xxxx.tmp': Operation not permitted

查找了很久,才恍然大悟:我是在fat32的分区下面进行svn操作的,而svn上面的symbolic link是在ext3分区下面创建的,fat32是不可能支持这种符号链接的。
遂改在ext3分区下面重新checkout,顺利完成。

使用lvm备份快照mysql数据库

June 25th, 2010
  • 环境

    Debian lenny 32位
    Dell 1950 Raid 1
    LVM2
  • 安装LVM

    恢常简单,内核原生支持,只需要用apt安装即可:

    apt-get install lvm2
  • 使用LVM

    基本的使用方法:

      建立PV

      为把一个磁盘或分区作为PV,首先应使用 pvcreate 对其初始化,如对IDE硬盘/dev/hdb, “使用整个磁盘,

      # pvcreate /dev/sda

      这会删除sda上所有的数据,并初始化为lvm的格式

      建立vg(卷组)

      vgcreate test_vg /dev/sda

      然后可用vgdisplay 查看/验证卷组的信息:

      # vgdisplay
      创建lv(逻辑卷)

      lvcreate -L100G –niotest test_vg

      该命令就在卷组test_vg上创建名字为iotest,大小为100G的逻辑卷,并且设备入口为/dev/test_vg /iotest(test_vg 为卷组名,iotest为逻辑卷名)。

      然后就可以像普通的分区一样,对iotest进行初始化和挂载:

      mkfs.ext3 /dev/test_vg/iotest
      mount /dev/test_vg/iotest /home/mysql
      建立mysql

      直接将mysql的数据目录设置为/home/mysql即可。

      snapshot的原理

      我们知道,LVM snapshot的原理是当一个snapshot创建的时候,仅拷贝原始卷里数据的元数据(meta-data)。
      创建的时候,并不会有数据的物理拷贝,因此snapshot的创建几乎是实时的,当原始卷上有写操作执行时,
      snapshot跟踪原始卷块的改变,这个时候原始卷上将要改变的数据在改变之前被拷贝到snapshot预留的空间里,
      因此这个原理的实现叫做写时复制(copy-on-write)。
      在写操作写入块之前,CoW讲原始数据移动到 snapshot空间里,这样就保证了所有的数据在snapshot创建时保持一致。
      而对于snapshot的读操作,如果是读取数据块是没有修改过的,那么会将读操作直接重定向到原始卷上,
      如果是要读取已经修改过的块,那么就读取拷贝到snapshot中的块。

      这样,通常的文件I/0流程有一个改变,那就是在文件系统和设备驱动之间增加了一个cow层,变成了下面这个样子:

      file I/0 —> filesystem — >CoW –> block I /O

      (上述文字引自 http://blog.wgzhao.com/2008/06/20/LVM-snapshot-on.html)

      创建snapshot的命令

      lvcreate --size 20G --snapshot --name snap /dev/newvg/iotest

      上述命令为iotest创建了一个名为snap的,大小为20G的快照。

      使用lvm snapshot备份mysql数据库的过程

      FLUSH TABLES
      FLUSH TABLES WITH READ LOCK
      Create the snapshop (lvcreate -s)
      (SHOW MASTER/SLAVE STATUS)
      UNLOCK TABLES
      Mount snapshot, perform backup
      Unmount and discard the snapshot (lvremove)

      简单的说,就是先把所有表锁了,然后对逻辑卷建立一个快照(1 秒左右),必要的话show master/slave status把当前的posision记录下来,然后就可以unlock 表,恢复服务了。用脚本来进行上述操作的话,只需要2、3秒即可完成。恢复服务后,可以把snapshot挂载到某个目录下,然后对其进行备份(tar+zip之类)。

      与ibbackup相比,使用LVM备份的灵活性更高,比如可以自己选择备份的工具(gzip、7zip甚至不进行压缩直接进行远程拷贝);做了 snapshot之后也可以不开始进行备份,比如对数据库进行了不确定的操作,这时候就可以先做个snapshot,然后进行观察,如果没有问题的话直接把snapshot删除就可以了,无需要备份。

  • MYLVMBACKUP

    已经有开源的工具实现LVM备份的功能,那就是MyLVMBackup 项目地址是: http://lenzg.net/mylvmbackup/

      安装

      debian需要提前安装的包 包括

      libconfig-inifiles-perl, libtimedate-perl, libdbi-perl, libdbd-mysql-perl

      解压 mylvmbackup包,进入其目录,运行:

      make install

      即可完成安装其实安装的只是一个 perl写的脚本和配置文件;

      配置

      配置文件在

      /etc/mylvmbackup.conf

      在里面配置好mysql和LVM的基本信息,比如mysql的用户、密码、端口等,LVM的vgname、lvname等;然后是备份的信息,mount在哪里、备份目录等;

      最后是gzip 参数–best修改为–fast,当然你也可以用–best,但是备份时间会增加几倍。另外也可以选择其他的压缩工具和参数,具体查看该配置文件。

      测试结果

      测试数据大小:26G
      存储引擎:innodb
      备份时间:

      ibbackup      16分钟
      mylvmbackup (gzip –fast) 12分钟

      (ibbackup使用默认参数)

  • MYLVMBACKUP的问题

    从结果上看,mylvmbackup的效果比较好。
    不过我们不能用它来进行数据库备份,因为它却有其他的问题:

    在我的测试环境中(Dell 1950 RAID1)LVM做了snapshot之后的写入性能非常差,甚至比没有做snapshot之前要慢5-10倍。测试数据如下:

      postmark

      未做snapshot前的测试:

      PostMark v1.51 : 8/14/01
      pm>set number 10000
      pm>set size 300000
      pm>set transactions 10000
      pm>run
      Creating files...Done
      Performing transactions..........Done
      Deleting files...Done
      Time:
          157 seconds total
          67 seconds of transactions (149 per second)

      Files:
          14866 created (94 per second)
              Creation alone: 10000 files (113 per second)
              Mixed with transactions: 4866 files (72 per second)
          4991 read (74 per second)
          0 appended (0 per second)
          14866 deleted (94 per second)
              Deletion alone: 9732 files (4866 per second)
              Mixed with transactions: 5134 files (76 per second)

      Data:
          1428.03 megabytes read (9.10 megabytes per second)
          4253.60 megabytes written (27.09 megabytes per second)

      做了snapshot之后的结果

      pm>set number 10000
      pm>set size 300000
      pm>set transactions 10000
      pm>run
      Creating files...
      Done
      Performing transactions..........Done
      Deleting files...Done
      Time:
          725 seconds total
          145 seconds of transactions (68 per second)

      Files:
          14866 created (20 per second)
              Creation alone: 10000 files (17 per second)
              Mixed with transactions: 4866 files (33 per second)
          4991 read (34 per second)
          0 appended (0 per second)
          14866 deleted (20 per second)
              Deletion alone: 9732 files (9732 per second)
              Mixed with transactions: 5134 files (35 per second)

      Data:
          1428.03 megabytes read (1.97 megabytes per second)
          4253.60 megabytes written (5.87 megabytes per second)
      dd顺序写

      未做snapshot前的测试结果:

      time dd if=/dev/zero of=file.l bs=4k count=1000000
      1000000+0 records in
      1000000+0 records out
      4096000000 bytes (4.1 GB) copied, 47.5652 s, 86.1 MB/s

      real    0m47.567s
      user    0m0.308s
      sys    0m12.073s

      做了snapshot之后的测试结果:

      time dd if=/dev/zero of=file.l bs=4k count=1000000
      1000000+0 records in
      1000000+0 records out
      4096000000 bytes (4.1 GB) copied, 722.703 s, 5.7 MB/s

      real    12m2.705s
      user    0m0.252s
      sys    0m14.653s

    按理说,建立snapshot之后,中间是多了一层,但是也没有双重写入,为什么性能会相差几倍甚至十几倍呢?这是我百思不得其解的。询问了一些朋友,也没有发现有这样的情况,不过其他人却是没有使用RAID1这种IO性能比较低的架构。另外在我使用EMC的存储作为磁盘来做LVM的情况下,有无 snapshot的IO性能只相差了20%左右。所以我断定,可能是因为磁盘和RAID1的性能太差导致做了LVM snapshot之后,在低性能的情况下过早出现IO的瓶颈导致的。

  • firefox下使用ssl访问google的设置

    May 31st, 2010

    自从google匿了之后,search的时候经常被reset,知道google实验室推出了ssl search,不过因为懒的关系,一直都没有怎么去试用过。

    今天看到张宴的blog上面的文章快速跳转到Google SSL 中文版的网址:ggssl.com,勾起了我的兴趣。

    下面是引用:

    国内用户访问 https://www.google.com 默认情况下会跳转到谷歌香港 http://www.google.com.hk,解决方法为先点击“Google.com in English“访问 http://www.google.com/ncr (仅需要点击一次),该网址会种一个Cookie,防止跳转,再设置搜索语言为中文,再输入 https://www.google.com 即可。

    的确是很不错的方法,不过我希望在firefox的搜索也默认使用ssl怎么办?
    我们需要修改一些地方:

    第一是firefox 导航工具栏右侧的搜索引擎的修改

    ubuntu下请找到

    /usr/lib/firefox-3.6.3/searchplugins/zh-CN/google.xml

    版本不同可能位置不一样,比较简单的方法是可以

    locate searchplugins

    搜索一下。

    windows下面应该是这个文件(未验证):

    C:\Program Files\firefox\searchplugins/google.xml

    然后修改里面的两段文字:

    <Url type="text/html" method="GET" template="http://www.google.com/search">

    修改为:

    <Url type="text/html" method="GET" template="https://www.google.com/search">

    <SearchForm>http://www.google.com/firefox</SearchForm>

    修改为

    <SearchForm>https://www.google.com/</SearchForm>

    第二,修改默认的搜索引擎(在URL输入框中输入文字进行搜索的引擎),在URL输入框中输入about:config,找到 keyword.URL,修改为:

    https://www.google.com/search?q=

    重启firefox即可畅快访问google了。^O^

    被跨国罚款

    April 22nd, 2010

    近日收到一封澳洲来信,居然是交通罚款通知单千里迢迢的追来了。
    原来我在刚到Hobart的那天晚上,通过哪条Tasman Hwy的跨海桥的时候被拍照了。罚款单上写着限速是70km/H,我的速度是82km/H。
    查了一下,澳洲的交通罚款一向是很严厉的,我的罚款金额是$110澳元,对比网上的某些人600多澳元的罚款额,感觉已经是有点幸运。
    另外我在澳洲的时候,由于时间很紧,所以在高速公路和某些无车的乡村公路也经常超速,不过没有被发现,现在想起来实在是有点后怕。
    罚款是在网上交的,澳洲这方面弄得比较人性化,不过交了钱以后就没有什么反馈,这个比较恶心。

    发烧

    April 8th, 2010

    昨天下午就觉得很不舒服,像是有点发烧的样子。由于快要羽毛球比赛了,晚上还是去与队友合练了一下,回到家就觉得不行了。一量体温,居然发烧到了39.2度! 吃了些家里的退烧药,睡了两个小时,发现体温升到39.5度了。赶快让lp带去看以医生。打了支针,吃了药,今天才好了点,不过也不能上班了。
    记忆中已经没有试过发这么高的烧了,可能是在北京的时候比较辛苦,回来也没有好好休息导致 的不吧。
    越来越老咯,今后要注意自己的身体。