Blog

  • centos6 python升级2.6.6至2.7.3

    操作步骤

    yum install gcc openssl openssl-devel -y
    curl -O https://www.python.org/ftp/python/2.7/Python-2.7.tgz
    tar xzf Python-2.7.tgz
    cd Python-2.7
    ./configure
    make &&  make install
    

    修改 /usr/bin/yum 第一行为 #!/usr/bin/python2.6

    安装对应的 easy_install

    curl -O https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
    python ez_setup.py
    
  • 使用 dd 测试 I/O 性能

    使用 dd 并结合不同的参数测试 I/O 性能

    不要在生产环境下用 dd 进行操作,准备一些测试环境进行如下操作。

    dd 参数:

    bs=BYTES 同时读取和写入的字节

    写性能测试,可以有如下 oflag 的值可以选择

    直接写 ( direct )
    同步写 ( dsync, synchronize )
    同步写 ( sync, 包含 metadata )

    对于 dd ,输入可以是 /dev/zero ,输出可以是 空 raid , 磁盘或分区, 也可以是一个文件。当使用文件方式时会比其他方式慢,因为 metadata 也要写入。

    当使用 if=/dev/zero bs=1G 的时候,需要内存有 1G 空余空间。
    要多次进行测试,并模拟日常服务器的异常情况,可以设置一些 cron 任务等,如 updatedb 。

    写 512MB 文件,只写一次,使用 oflag=direct,启用硬盘 cache ( hdparm -W1 /dev/vda )

    dd if=/dev/zero of=/root/testfile bs=512MB count=1 oflag=direct

    关闭磁盘 cache ( hdparm -W0 /dev/vda ),再测一次

    会发现开 cache 比不开 cache 快很多

    再做实验,使用 bs=512 bytes,count=1000 来写文件,总大小 512 KB。这样就模拟了频繁写磁盘的场景,同时根据显示的时间就能知道小文件每次写访问用时。

    参考:https://www.thomas-krenn.com/en/wiki/Linux_I/O_Performance_Tests_using_dd

    补充,使用 dd 测试读性能,首先清空 cache 的数据,然后读文件丢到 /dev/null

    echo 3 > /proc/sys/vm/drop_caches
    dd if=./testfile of=/dev/null bs=8k
    
  • git patch 的应用

    根据提交来创建 patch,并把创建的 patch 应用到其他 repo 上

    当要修补一个 bug 或开发新特性,新创建一个分支

    git checkout -b fix

    在做了一些提交之后,基于 master 输出一个 patch

    git format-patch master --stdout > fix.patch

    接下来把 patch 文件搞到其他 repo 中

    查看此 patch 有哪些改变

    git apply --stat fix.patch

    测试是不是可以应用 patch 上去

    git apply --check  fix.patch

    如果没有报错,可以进行下一步,应用 patch

    git am --signoff < fix.patch
  • 做一次 git 完美提交

    分离主题和内容
    主题控制在 50 个字符
    主题第一个字母大写
    主题行不要用句号结束
    主题行使用祈使语气
    内容每 72 个字符换行
    在内容里解释改变的大致内容 what 和原因 why (改变的方式 how 在 git diff 里可以看到,不用说)

    http://chris.beams.io/posts/git-commit/

  • ansible批量添加用户

    有用的 snippet

    ansible all  -l 'web' -m user -a "name=www shell=/bin/bash createhome=yes"
  • 局域网内一台机器用做网关

    虚拟机:192.168.1.111

    安装 pptp-setup

    yum install pptp-setup

    创建 pptp

    pptpsetup --create p1_jp1 --server p1.jp1.jpuyy.com --username user --password pass --start

    这之后会有文件 /etc/ppp/peers/p1_jp1

    # written by pptpsetup
    pty "pptp p1.jp1.jpuyy.com --nolaunchpppd"
    lock
    noauth
    nobsdcomp
    nodeflate
    name user
    remotename p1_jp1
    ipparam p1_jp1
    require-mppe
    

    对应的密码文件记录在 /etc/ppp/chap-secrets

    之后要想连接或断开 pptp,可以使用,做两个软链

    ln -s /usr/share/doc/ppp-2.4.5/scripts/pon /usr/local/bin/
    ln -s /usr/share/doc/ppp-2.4.5/scripts/poff /usr/local/bin/
    

    之后运行

    pon p1_jp1

    如果发现连不上,还需要启用 ip_gre 模块。参见这里

    打开 ip 转发

    更改 /etc/sysctl.conf

    net.ipv4.ip_forward = 1

    sysctl -p 生效

    设置 nat

    -A POSTROUTING -o ppp0 -j MASQUERADE

    替换默认网关

    ip route replace default dev ppp0

    至此,局域网中的其他机器可以设置把 192.168.1.111 做为网关了。