灌溉梦想,记录脚步

GNU Cfengine 配置文件

# cfservd.conf
control:
domain = ( haoyuan-inc.com )
AllowUsers = ( root )
cfrunCommand = ( "/usr/sbin/cfagent" )
any::
IfElapsed = ( 1 )
ExpireAfter = ( 5 )
MaxConnections = ( 50 )
MultipleConnections = ( true )
grant:
/var/cfengine/inputs *.haoyuan-inc.com

#update.conf
control:
actionsequence = ( copy tidy )
domain = ( haoyuan-inc.com )
policyhost = ( cfg.haoyuan-inc.com )
work_dir = ( /var/cfengine )
cf_install_dir = ( /usr/local/sbin )
SplayTime = ( 0 )

copy:
$(work_dir)/inputs/cfagent.conf dest=$(work_dir)/inputs/cfagent.conf
server=$(policyhost)
mode=644

tidy:

#cfagent.conf

control:
actionsequence = ( shellcommands )

shellcommands:
/bin/echo "fuck you !"

Ubuntu Linux系统下Gnome桌面快捷键配置

作为Ubuntu默认的桌面环境,GNOME 是一种支持多种平台的开发&桌面环境,并且 GNOME 拥有很多强大的特性,如高质量的平滑文本渲染,首个国际化和可用性支持等。好了,以下是我使用 Ubuntu 时发现的一些有用的技巧,这里分享给大家。
  1、用快捷键启动程序
  为您指定的程序添加一个键盘快捷键,只需按相应快捷键便能启动程序等,就像我们使用 XP 时为快捷方式添加热键一样,GNOME 也有这些功能,而且设置并不难。首先打开终端输入:
  gconf-editor
   依次打开“Apps->Metacity->keybinding Commands”,这里一共能定义12条命令,如下图所示,我设置了 command_1 打开 Rhythmbox 播放器,command_2 打开 Swiftfox 浏览器,command_3 打开终端,您可以把您需要的命令添加进去。
  添加完成后,去到 “Apps->Metacity->Global keybingdings”,添加上您想要的快捷键。例如我上面一共填写了3条命令,分别填写在 command_1、command_2、command_3,那么我要在run_command_1,run_command_2, run_command_3 上填写快捷键组合,快捷键可以是 、、、F1 到 F12 和字母的组合,F1 表示同时按着 Ctrl+Alt+F1 键,如此类推。
  现在只要按刚刚设置好的快捷键便能运行命令了。
  2、把“桌面”文件夹设为自己的主目录
  即使用家目录做为桌面上显示默认目录,打开配置编辑器,在终端运行
  gconf-editor
  去到 “Apps->nautilus->preferences” 下,启用 desktop_is_home_dir ,重启 X 即可。
  3、在鼠标右键菜单中的“创建文档” 增加新项目
   默认的只有一个空文件,其实很简单便能添加自己喜欢的模板。对于最新的 Ubuntu 7.10,在您主目录下有一个“模板”的文件夹,对,就是他了,在里面新建您需要的模板,例如新建一个 “文本文件.txt”,在鼠标右键菜单便会出现“文本文件”这个选项。如此类推,您可以新建 OpenOffice.org 文档、GIMP 文件等。
  4、调整图标的大小
  GNOME 默认的图标大小对于1024×768分辨率来说有点偏大,要改变大小,打开文件浏览器,例如从 “位置” 里打开 “主文件夹”,点 “编辑” –> “首选项”,把 “图标视图默认值” 下的 “默认缩放级别” 改为 75%。现在图标大小跟 WinXP 下的差不多。
  如果您看过 Suse 发行版的截图,会发现他的 KDE 桌面上有一个很大的主目录图标,其实 GNOME 也能实现,打开配置编辑器。
  gconf-editor
  去到 “Apps->nautilus->desktop” 下,启用 “home_icon_visible” ,桌面会显示自己的主目录的图标,对着他点鼠标右键,选择“伸展图标”,拖动到自己想要的大小便可。
  5、隐藏桌面的挂载卷
  同样是打开配置管理器
  gconf-editor
  去到 “Apps->nautilus->desktop” 下,去掉 volumes_visible 前面的复选框即可。

 

使用ESXi 4.0的几点小结

1) ESXi 4.0只能安装在64位处理器+2G内存的机器上。

2) 在BIOS里启用处理器的 ‘Virtualization Technology’功能,可以提供性能。

3) 下载安装ESXi4.0并输入免费序列号后,可以支持256 GB的内存和四路虚拟CPU(四核)。

4) ESXi 4.0安装完成后,服务器的硬盘被格式化成vmfs3的格式,并命名为datastoreX(X代表硬盘号,从1开始)。所有的虚拟机文件都只能在/vmfs/volumes/datastoreX/ 或 /vmfs/volumes/[网络存储]下。

5) 控制台管理很简单,可以设置root密码,IP地址已经网络测试等等。

6) 按Alt+F1,然后输入‘unsupported’ (屏幕上不显示输入),回车就可以进入命令行模式。

7) ESXi是个高度自定义的Linux的系统,只保留了一些常用的linux命令。VMware加入了很多管理ESXi的命令,很实用。比如esxcfg- nas(用来配置NAS的),esxcfg-vswitch (用来配置虚拟交换机的),vmkfstools(用来管理虚拟磁盘的,比如克隆,扩展等)。

8) 可以在命令行下启用SSH (默认是关闭的)- 在/etc/inetd.conf文件中,取消’ssh stream tcp …’这行的注释,然后重启ESXi.

9) 两种远程管理ESXi服务的方法:第一,Vsphere Client。第二,Vsphere CLI。两者各有千秋,可以结合起来使用。Vsphere Client是图形管理工具,在管理虚拟机和监测性能方面很不错。Vsphere CLI是命令行管理工具,主要用在配置主机方面,比如vicifg-snmp.pl可以用来配置主机的SNMP。

10) 虚拟机文件可以以.ovf格式被导出或部署。

11) ESXi支持虚拟交换机功能,并且可以和真实物理交换机中的VLAN ID做匹配。连接ESXi主机的交换机端口做成trunk口,再启用dot1Q就可以了,很简单。

12) VMware converter standalone client 4.0.1 支持很多格式的P2V, V2V转换.

13) 还有一些免费的管理工具可以参考使用: 比如VM Explorer, Veeam Backup and FastSCP

LVM术语与命令详解

Linux对逻辑卷的创建与管理
LVM(Logicl Volume Manager),逻辑卷管理器,通过使用逻辑卷管理器对硬盘存储设备进行管理,可以实现硬盘空间的动态划分和调整。

一、 基本概念

1、 物理卷—–PV(Physical Volume)
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘。

2、 卷组——–VG(Volumne Group)
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。

3、 逻辑卷—–LV(Logical Volume)
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷要以属于同一个卷组,也可以属于不同的多个卷组。

4、 物理区域–PE(Physical Extent)
物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小可根据实际情况在建立物理卷时指定。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致。

5、 逻辑区域—LE(Logical Extent)
逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。

6、 卷组描述区域—–(Volume Group Descriptor Area)
卷组描述区域存在于每个物理卷中,用于描述物理卷本身、物理卷所属卷组、卷组中的逻辑卷及逻辑卷中物理区域的分配等所有信息,卷组描述区域是在使用pvcreate建立物理卷时建立的。

二、 LVM的一般操作过程

1、 在磁盘分区上建立物理卷
#fdisk /dev/hdb
#pvdisplay /dev/hdb1 //在已经建立好的分区或硬盘上建立物理卷
#pvcreate /dev/hdb1

2、 使用物理卷建立卷组
#vgcreate myVG /dev/hdb1 //建立卷组,日后可以根据需要添加新的物理卷到已有卷组中

3、 在卷组中建立逻辑卷
#lvcreate –L 10M –n myLV1 myVG //从已有卷组建立逻辑卷,通常只分配部分空间给该逻//辑卷

4、 在逻辑卷上建立文件系统
5、 将文件系统挂载到Linux系统的目录树中
6、 在卷组中添加新的物理卷
当卷组中没有足够的空间分配给逻辑卷时,可以使用vgextend命令添加新的物理卷到该卷组中,来扩充卷组容量。在一引起特殊的情况下也可以把卷组中现有的物理卷移出卷组。
#vgextend myVG /dev/hdb2

7、 扩充逻辑卷的容量
当逻辑卷的空间不能满足需要时,可以使用lvextend命令把卷组中的空闲空间分配到该逻辑卷以扩展逻辑卷的容量。在逻辑卷的空闲空间过大时,也可以使用lvreduce命令缩减逻辑卷的容量。这样就实现了逻辑卷容量的动态调整。
#lvextend –L +4M /dev/myVG/myLV

8、 调整逻辑卷中文件系统的大小

三、 常用命令

1、 物理卷命令
一般维护命令:
#pvscan //在系统的所有磁盘中搜索已存在的物理卷
#pvdisplay 物理卷全路径名称 //用于显示指定物理卷的属性。
#pvdata 物理卷全路径名称 //用于显示物理卷的卷组描述区域信息,用于调试目的。
#pvchange –x|–allocation {y|n} 物理卷全路径名 //用于改变物理卷的分配许可设置

物理卷的创建与删除命令
#pvcreate 设备全路径名 //用于在磁盘或磁盘分区上创建物理卷初始化信息,以便对
//该物理卷进行逻辑卷管理。
#pvmove 源物理卷全路径我[目的物理卷全路径名] //用于把某物理卷中的数据转
//移到同卷组中其他的特刊卷中。

2、 卷组命令
一般维护命令
#vgscan //检测系统中所有磁盘
#vgck [卷组名] //用于检查卷组中卷组描述区域信息的一致性。
#vgdisplay [卷组名] //显示卷组的属性信息
#vgrename 原卷组名 新卷组名
#vgchange -a y|n [卷组名] //改变卷组的相应属性。是否可分配
#vgchange -l 最大逻辑卷数 //卷组可容纳最大逻辑卷数
#vgchange -x y|n [卷组名] //卷是否有效
#vgmknodes [卷组名|卷组路径] //用于建立(重新建立)已有卷组目录和其中的设备文
//件

卷组配置的备份与恢复命令
#vgcfgbackup [卷组名] //把卷组中的VGDA信息备份到“/etc/lvmconf”目录中的文件
#vgcfgrestore -n 卷组名 物理卷全路命名 //从备份文件中必得指定物理卷的信息

卷组的建立与删除命令
#vgcreate 卷组名 物理卷全路径名[物理卷全路径名]
#vgmove 卷组名

卷组的扩充与缩小命令
#vgextend 卷组名 物理卷全路径名[物理卷全路径名]
#vgreduce 卷组名 物理卷全路径名[物理卷全路径名]

卷组的合并与拆分
#vgmerge 目的卷组名 源卷组名 //合并两个已经存在的卷组,要求两个卷组的物理
//区域大小相等且源卷组是非活动的。
#vgsplit 现有卷组 新卷组 物理卷全路径名[物理卷全路径名]

卷组的输入与输出命令
#vgexport 卷组名
#vgimport 卷组名 卷组中的物理卷[卷组中的物理卷]

3、 逻辑卷命令
一般命令
#lvscan
#lvdisplay 逻辑卷全路径名[逻辑卷全路径名]
#lvrename 旧逻辑卷全路径名 新逻辑卷全路径名
#lvrename 卷组名 旧逻辑卷名 新逻辑卷名
#lvchange
#e2fsadm -L +|- 逻辑卷增减量 逻辑卷全路径名

逻辑卷的创建与删除命令
#lvcreate
#lvremove

逻辑卷的扩充与缩小命令
#lvextend -L|–size +逻辑卷大小增量 逻辑卷全路径名
#lvreduce q -L|–size +逻辑卷减小量 逻辑卷全路径名

4、 逻辑卷管理命令
#lvmdiskscan //检测所有的SCSI、IDE等存储设备
#lvmchange -R|–reset //复位逻辑卷管理器
#lvmsadc [日志文件全路径名] //收信逻辑卷管理器读写统计信息,保存到日志文
//件中。
#lvmsar 日志文件全路径名 //从lvmsadc命令生成的日志文件中读取并报告逻辑卷
//管理器的读写统计信息。

Windows 7 下支付宝控件和证书安装

对于在 Windows 7 上密码输入控件的安装,需要修改以下设置:

  • 1、先设置 IE8 浏览器。在 Tools – Internet Options – Advanced 里面,取消
    enable memory protection to help mitigate online attacks 前面的勾(这步对于解决无法输入密码很关键)。
  • 2、Tools – Internet Options – Security 里面,去掉 enable protected mod 前面的勾。
  • 3、帐户控制里面,设置提示等级为最低,控制面板里面的 user accounts, turn user account control on or off ,进去后设置 never notify。
  • 4、重启计算机,或者注销。
  • 5、登录支付宝网站,会提示安装证书。到这步,密码问题应该可以解决了

或者采用如下方式

直接关掉 DEP 数据保护,以管理员方式打开 CMD(命令提示符)并输入:

bcdedit.exe /set {current} nx Alwaysoff 

重启才会生效,注销不行。用过支付宝,如果想恢复原样,把 Alwaysoff 改为 OptIn (系统默认值)就可以了。之后你就可以进入支付宝账户了。

安装证书遇到的问题

Windows 7 上安装支付宝证书,一般会遇到 2 个错误提示。

错误一:800A138F 错误

这个错误是因为禁用 Microsoft Certificate Enrollment CAB 引起的,取消禁用即可。

解决方法:如果出现 “错误代码800A138F” 的错误,只需要安装上某些第三方工具,然后在插件管理里面把对 Microsoft Certificate Enrollment CAB的 屏蔽解除。当然过后就可以把第三方工具删除掉。

错误二: 80070057 错误

这个错误是由于 xenroll.dll 控件没有注册引起的。

解决方法:自己搜索下这个文件(文件名即为关键字)。 下载这个dll 文件后, 放到 C 盘 Windows/system32 目录下,然后点击”开始”菜单,“运行”,输入 regsvr32 xenroll.dll 即可解决。

注意

  • 1、取消禁用的 Microsoft Certificate Enrollment CAB 时候,也可以通过修改注册表解决,参见后面的附录。
  • 2、对于 xenroll.dll 这个 DLL 文件,版本有很多。下载的时候注意文件版本号 “5.131.3686.0″ ,其他版本不适用 Windows 7。

附录

Microsoft Certificate Enrollment CAB禁用.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{127698e4-e730-4e5c-a2b1-21490a70c8a1}]

“Compatibility Flags”=dword:00000400

“IeaDo”=-

Microsoft Certificate Enrollment CAB开锁 .reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{127698e4-e730-4e5c-a2b1-21490a70c8a1}]

“Compatibility Flags”=dword:00000000

“IeaDo”=dword:00000001

文件 xenroll.dll 下载:xenroll

通过PXE网络安装OpenBSD 4.2

1. 准备PXE服务

我的PXE服务安装在Ubuntu 7.10 Desktop环境,配置过程如下:

1.1 配置tftp

确保安装了xinetd,因为tftp是借助xinetd监听端口的,/etc/xinetd.d/tftp的内容如下:

service tftp
{
        socket_type = dgram
        protocol = udp
        wait = yes
        user = root
        server = /usr/sbin/in.tftpd
        server_args = -s /tftpboot
        disable = no
}

参数 “-s /tftpboot” 指定tftp的根目录为/tftpboot,这个目录的文件结构如下:

yingyuan@yyresearch:~$ ls -Rl /tftpboot/
/tftpboot/:
总用量 5024
-rw-r--r-- 1 root root 5068775 2007-11-27 18:25 bsd.rd
drwxr-xr-x 2 root root    4096 2007-11-28 10:59 etc
-rw-r--r-- 1 root root   52928 2007-11-27 18:25 pxeboot

/tftpboot/etc:
总用量 4
-rw-r--r-- 1 root root 12 2007-11-28 10:59 boot.conf

bsd.rd是OpenBSD的ram disk文件系统,pxeboot是PXE请求时返回的启动加载文件,这两个文件都可以从安装光盘或者从ftp镜像网站提取。boot.conf是由pxeboot读取的启动配置文件,内容只有一行:

boot bsd.rd

启动tftp服务,

yingyuan@yyresearch:~$ sudo /etc/init.d/xinetd restart

1.2 配置DHCP服务

/etc/dhcp3/dhcpd.conf的配置内容如下,

ddns-update-style none;
option domain-name "example.com";
option domain-name-servers 10.0.0.1;
default-lease-time 600;
max-lease-time 7200;

class "openbsd-pxeboot-class" {
        match pick-first-value (option dhcp-client-identifier, hardware);
        filename "pxeboot";
        next-server 10.0.0.1;
}

subclass "openbsd-pxeboot-class" 1:8:0:27:3B:56:0;

subnet 10.0.0.0 netmask 255.255.255.0 {
        pool {
                allow members of "openbsd-pxeboot-class";
                option routers 10.0.0.1;
                range 10.0.0.200 10.0.0.240;
        }
}

需要安装OpenBSD机器的网卡MAC地址是08:00:27:3B:56:00,协议是以太网(协议号是1),我们把它分到openbsd-pxeboot-class这个类里。

启动dhcp服务,

yingyuan@yyresearch:~$ sudo /etc/init.d/dhcp3-server restart

2. 准备HTTP网络安装文件

我只从OpenBSD的镜像FTP站点拷贝了一些必要的文件,放在Apache的OpenBSD/i386目录下,

yingyuan@yyresearch:~$ ls -l /var/www/OpenBSD/i386
总用量 145976
-rw-r--r-- 1 yingyuan yingyuan 42603450 2007-11-27 17:21 base42.tgz
-rw-r--r-- 1 yingyuan yingyuan  6229740 2007-11-27 17:16 bsd
-rw-r--r-- 1 yingyuan yingyuan  5068775 2007-11-27 17:13 bsd.rd
-rw-r--r-- 1 yingyuan yingyuan  5185536 2007-11-27 17:08 cd42.iso
-rw-r--r-- 1 yingyuan yingyuan 78804092 2007-11-27 17:31 comp42.tgz
-rw-r--r-- 1 yingyuan yingyuan  1240720 2007-11-27 17:34 etc42.tgz
-rw-r--r-- 1 yingyuan yingyuan      266 2007-11-28 12:27 index.txt
-rw-r--r-- 1 yingyuan yingyuan   100845 2007-11-27 17:00 INSTALL.i386
-rw-r--r-- 1 yingyuan yingyuan    22354 2007-11-27 17:02 INSTALL.linux
-rw-r--r-- 1 yingyuan yingyuan  7656850 2007-11-27 17:35 man42.tgz
-rw-r--r-- 1 yingyuan yingyuan     1287 2007-11-27 17:14 MD5
-rw-r--r-- 1 yingyuan yingyuan  2292887 2007-11-27 17:38 misc42.tgz
-rw-r--r-- 1 yingyuan yingyuan    52928 2007-11-27 17:14 pxeboot

启动www服务,

yingyuan@yyresearch:~$ sudo /etc/init.d/apache2 restart

3. 安装OpenBSD 4.2

把机器设置为从网络启动,一按电源按照提示操作就OK了。

分区的时候我选择把整块硬盘分为一个OpenBSD分区,标签分配如下,

标签          容量                                  挂载点
----------------------------
a      512M            /
b      512M            swap
c      整个硬盘
d      1G              /var
e      剩下的空间                    /usr

指定大小的时候以磁盘扇区(512 bytes)为单位,所以需要计算一下。每个标签之间默认间隔一个磁道。

Memcache的备忘

  • 用memcache保存session的例子,非常简单
     
    CODE:

    1. <?php
    2. $session_save_path = "tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10, ,tcp://$host:$port ";
    3. ini_set(‘session.save_handler’, ‘memcache’);
    4. ini_set(‘session.save_path’, $session_save_path);
    5. ?>

     

  • memcache每一个item上限是1M,注意不要超出上限
  • memcache本身并不支持namespace,但是可以通过一些手段模拟出namespace的效果来,见Memcache 中模拟 namespace
  • 刚接触memcache的时候,可能会写出这样的代码来
    CODE:

    1. $zhang = $memcache->get(‘key1’);
    2. $li = $memcache->get(‘key2’);
    3. $wang = $memcache->get(‘key3’);

    这种写法实际运行效果是

    • get(key1) – 客户端发出请求 – 服务器端查询 – 客户端获取
    • get(key2) – 客户端 – 服务器端 – 客户端
    • get(key3) – 客户端 – 服务器端 – 客户端

    如此一来,会有三次客户端和服务器端交互的过程。但是如果用批量查询的方法,就只有一次交互的过程。比如:

     
    CODE:

    1. $all = $memcache->get(array(‘key1’, ‘key2’, ‘key3’));

    这样性能会有一些提升。对于其它程序语言来说,也封装了类似get_multi这样的方法。

  • 从数据库从查询获得一个列表,放到memcache里面保存起来是一个不错的主意,但是不要忘记memcache有1m限制。如果列表太大,可以考虑把数据分割开来,然后用key序列来保存这个列表数据,比如event_0_500来保存前500行,用event_0_1000保存500-1000行,在获取的时候可以用前面说的批量get来一次性得到这个列表。
  • 经常观察memcached的大小和命中率,方便调整缓存策略