Blog

  • python打乱列表顺序

    主要用到了 random 的 shuffle 方法

    一个 resolv 的列表,每一次执行都输出不同的顺序

    #!/usr/bin/env python
    import random
    
    resolv_servers = ['192.168.1.1', '192.168.1.2', '192.168.1.3']
    random.shuffle(resolv_servers)
    print resolv_servers
    

    同样,ansible 的 jinja2 模板里,定义了 resolv_servers,在不同机器下发时输出不同的顺序,使多台服务器均衡。

    {% for server in resolv_servers|shuffle %}
     nameserver {{ server }}
     {% endfor %}
    
  • kvm 静态及动态调整内存

    关机升级内存

    关机

    virsh shutdown dim12zv4

    编辑配置文件

    virsh edit dim12zv4

    找到

      4194304
      4194304
    

    都要调整到 8GB
    开机

    virsh start dim12zv4

    开机状态升级内存
    只能提升 currentMemory,天花板是 memory 值

    查看当前情况

    virsh dominfo dim12zv4
    
    Max memory:     8388608 KiB
    Used memory:    4194304 KiB

    调成 8G

    virsh setmem dim12zv4 8388608

    如果设置的值超过 max memory 会报错
    error: invalid argument: cannot set memory higher than max memory

    调整后及时生效。

  • tmpwatch清理 n 天之前的文件

    实际测试,今天是 21 号,向前推 6 天是 20,19,18,17,16,15,再之前的文件将会被删除

    进入到要清理的目录

    cd /data/log
    tmpwatch 6d ./

    也可以理解为只保留今天及 n 天内的文件。
    最旧的文件看到的文件都应该是 15 日的

    ls -lt tmp | tail
  • 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