2012年7月25日星期三

RHEL 6.3的Samba

设置好了,却不能home访问,报错
[2012/07/25 17:37:19.028405,  1] smbd/notify_inotify.c:421(inotify_watch)
  inotify_add_watch returned Permission denied

google了一下,执行下面的命令解决
sudo setsebool -P samba_enable_home_dirs 1



2012年7月16日星期一

11g的em用不了了

或许是因为我将eth2整到br0上,emctl start启动不了了,说ORACLE_UNQNAME没设置,可是我设置上了仍然没用。只好重新配置em

emca -config dbcontrol db -repos recreate
emctl start dbconsole

另外解决网页按钮乱码的事情,找一个自己机器上的字体文件ttc,upload到
$ORACLE_HOME/jdk/jre/lib/fonts/fallback目录下,改名为
我的是
$ORACLE_HOME/jdk/jre/lib/fonts/fallback/msmincho.ttf
然后删除cache
rm $ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/*.gif
最后重启em
emctl stop dbconsole
emctl start dbconsole

如何备份kvm的raw文件

官方建议disk用raw,因为raw块设备比qcow2据说快不少,我也是这么用,可是备份时却是个问题,ls看raw是非常巨大的,tar肯定不行,我测试了cp --sparse=never仍然备份出来的文件很大,dd肯定一样。备份出来的文件很大,就没有意义了。

后来没法,只有转换为qcow2后备份,使用时再恢复为raw。

qemu-img convert -O qcow2 disk.raw disk.qcow2
qemu-img convert -O raw disk.qcow2 disk.raw

RHEL 6.3将kvm配置为桥接模式

默认的kvm是nat模式,我需要用桥接模式。
1.去/etc/sysconfig/network-scripts目录下新增一个interface,ifcfg-br0文件,内容如下
 [root@linuxsrv network-scripts]# cat ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTRPOTO=static
IPADDR=192.168.101.41
NETMASK=255.255.255.0
GATEWAY=192.168.101.250
DNS1=192.168.102.1
ONBOOT=yes

2.我是用eth2,那么修改ifcfg-eth2,修改方法为去掉ip行,uuidh行,最后增加BRIDGE=br0
[root@linuxsrv network-scripts]# cat ifcfg-eth2
DEVICE="eth2"
BOOTPROTO=none
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE="Ethernet"
#UUID="57b04eb5-0f04-489c-a961-7118e0d0294a"
HWADDR=00:1B:78:5D:35:A4
#IPADDR=192.168.101.41
PREFIX=24
#GATEWAY=192.168.101.250
#DNS1=192.168.102.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth2"
BRIDGE=br0
这样就将eth2桥接到br0。

3.重启网络
service network restart
后查看一下ifconfig

4. 查看当前桥接
[root@linuxsrv network-scripts]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.001b785d35a4       no              eth2
virbr0          8000.525400ca78c1       yes             virbr0-nic

5.将nic绑到新增的br0上
[root@linuxsrv network-scripts]# brctl delif virbr0 virbr0-nic
[root@linuxsrv network-scripts]# brctl addif br0 virbr0-nic
[root@linuxsrv network-scripts]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.001b785d35a4       no              eth2
                                                        virbr0-nic
virbr0          8000.000000000000       yes

到此,操作完毕,然后就是在virt-manager里面给虚拟机选择新增的HostDevice virbr0-nic(Bridge 'br0')就可以了。


在RHEL6.3上装vncserver

kvm还是有不少问题,至少我用xmanager连上去,运行virt-manager后,进行虚拟xp安装,键盘没法输入,非得去机器旁边敲打键盘。无奈之下,安装了vncserve。

yum --disablerepo=* --enablerepo=local search vnc
yum --disablerepo=* --enablerepo=local install tigervnc-server.x86_64
就算是安装上了。

编辑/etc/sysconfig/vncserver,我添加了两行
VNCSERVERS="2:kvm"
VNCSERVERARGS[2]="-geometry 1280x800"
然后去login kvm,运行vncserver,输入密码,这会创建.vnc目录以及目录下的passwd文件,并会启动vncserver,直接vncserver -kill :number关闭vncserver,number是编号,第一次启动一般是1。 我要的是开机自动启动kvm的vncserver,所以以kvm运行vncserver只是为了生成文件罢了。

这样就ok了,开机会去看/etc/sysconfig/vncserver后会自动启动kvm的vncserver了。

如果用了SELinux,添加端口5900-5910,允许连接。

在vnc里面,就可以安装虚拟机了,不会出现键盘没法输入的情况。

2012年7月9日星期一

nfs,gfs的效能比较

装好nfs和gfs后,我做了一下读写比较。

读命令time dd if=/data/Srv1/file of=/dev/null bs=4096k count=200
写命令time dd if=/dev/zero of=/data/Srv1/file bs=4096k count=200


测试结果
本地写:159 MB/s, 327 MB/s,364 MB/s
GFS写:31.7 MB/s, 67.7 MB/s, 76.9 MB/s
NFS写:74.3 MB/s,67.9 MB/s,65.8 MB/s
本地读:340 MB/s,333 MB/s, 319 MB/s
GFS读:41.6 MB/s, 73.0 MB/s,73.1 MB/s
NFS读:42.5 MB/s,49.0 MB/s,44.6 MB/s

可能是虚拟机,对存储有一定优化,后面两组感觉不怎么真实。

nfs的option

http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/s1-nfs-client-config-options.html

nfs在RHEL 6.2的配置

由于我开了防火墙,我先去打开防火墙的NFSv4的2049的端口,然后就直接service nfs start,一直都不行
Jul  9 21:07:35 Srv3 kernel: svc: failed to register nfsdv3 RPC service (errno 13).
Jul  9 21:07:35 Srv3 kernel: svc: failed to register lockdv1 RPC service (errno 13).
Jul  9 21:07:35 Srv3 kernel: nfsd: last server has exited, flushing export cache
Jul  9 21:07:35 Srv3 rpc.nfsd[5920]: error starting threads: errno 13 (Permission denied)

重新启动也不行,我把防火墙禁止了,仍然不行,google找不到答案,绝望时
执行了service rpcbind restart,居然行了。

也就是说,如果你修改了防火墙配置,最好还是重新启动rpcbind一下,这rpcbind就是以前的portmap。
我这样做了后,nfs能启动了,但是重启机子后,仍然同样。难道非的rpcbind restat才能用?没法子,将service rpcbind restart加到init.d/nfs里面了。

gfs安装在RHEL 6.2上 配置

我整了3个虚拟机,Srv1,Srv2,Srv3
一,添加信任存储pool
在Srv1上运行
gluster peer probe Srv2
gluster peer probe Srv3
将Srv2,Srv3添加到Srv1的信任存储pool里,如果出现107错误,检查防火墙配置。 
查看一下添加的内容
gluster peer status
 
二,建立vol
gfs的vol有Distributed, Replicated, Striped,Distributed+Replicated,Distributed+Striped
5种方式。
一定要理解协议一下gfs的概念 
http://www.gluster.org/community/documentation/index.php/GlusterFS_Concepts

由于我只是想用gfs替代nfs,所以做最简单命令了。
在Srv1上执行
gluster volume create Srv1-Vol Srv1.RHEL62:/data/Srv1
gluster volume create Srv2-Vol Srv2.RHEL62:/data/Srv2
gluster volume create Srv3-Vol Srv3.RHEL62:/data/Srv3
建立了3个Distributed vol。
然后在start vol
gluster volume start Srv1-Vol
gluster volume start Srv2-Vol
gluster volume start Srv3-Vol
 
由于gfs没有什么mds的概念,所以也就无所谓老大,大家都一样,所以上面的命令,
其实在哪台机器上执行都一样。
 
三,mount 
start vol了后,就可以开始mount了,由于我的每台机器既是server又是client,
所以fuse肯定已经有了,client也是肯定有了。就不用再次安装native client了。直接mount就好。
在Srv1上,开始mount
mount -t glusterfs -o log-level=WARNING,log-file=/var/log/glusterfs/Srv2.log Srv1.RHEL62:/Srv2-Vol /data/Srv2
mount -t glusterfs -o log-level=WARNING,log-file=/var/log/glusterfs/Srv3.log Srv1.RHEL62:/Srv3-Vol /data/Srv3
注意的是,在Srv1上我用的是 Srv1的vol,用Srv2的vol是不是一样呢,当然是一样
比如,我修改为
mount -t glusterfs -o log-level=WARNING,log-file=/var/log/glusterfs/Srv2.log Srv2.RHEL62:/Srv2-Vol /data/Srv2
就会要求Srv2比Srv1开机早,不方面重启等。所以我感觉最好还是自己用自己的。 这点上,也是我打算用gfs替换nfs的原因之一。nfs如果要mount上,就非得对方先起来。
这样就完事了,同理,在Srv2,Srv3上也mount上。
 
到此,我打算用gfs替换nfs的事情就做完了。接下来是测试效率,以及热切换时gfs的反应。
  
 
 

vxfs的碎片整理

vxfs的文件系统,用了2年多,没整理过。
bash-3.00# df -os /data/image
フリーエクステントサイズ
          1:      78261            2:      86610            4:      77911  
          8:      83777           16:      72701           32:      58230  
         64:      68639          128:      53019          256:      43395  
        512:      30339         1024:      21158         2048:      12914  
       4096:       7167         8192:       3734        16384:       1715  
      32768:        461        65536:        155       131072:        124  
     262144:         89       524288:         51      1048576:         32  
    2097152:         17      4194304:         10      8388608:          3  
   16777216:          1     33554432:          1     67108864:          0  
  134217728:          0    268435456:          0    536870912:          0  
 1073741824:          0   2147483648:          0 

可以看到
<8的blocks,远远超过了总块的5%
<64的bocks,也超过了50%

整理一下
/opt/VRTS/bin/fsadm -d -e /data/image

2012年7月7日星期六

gfs安装在RHEL 6.2上 安装

一。安装
最好还是源码安装,下载http://download.gluster.org/pub/gluster/glusterfs/LATEST/glusterfs-3.3.0.tar.gz
然后解压
./configure
make
make install
一路顺利 
glusterfs --version
按后如果防火墙打开了就配置一下防火墙
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 24007:24011 -j ACCEPT 
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT 
iptables -A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT 
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 38465:38485 -j ACCEPT #这一行是用NFS时加
service iptables save
service iptables restart
在6.2里面,虽然iptables这样操作出来的/etc/sysconfig/iptables是正确的,
但是却不能正常打开端口,原因未知。所以最后还是得用system-config-firewall来gui配置 

到此,应该是安装完毕了

2012年7月6日星期五

禁止Voice Control

我把iphone放提包里,home按钮老无意被按着,然后就开了voice control功能,挺吵。

修改/System/Library/CoreServices/SpringBoard.app/目录下N88.plist里面的 voice-control后面的true,修改为false,就可以disable掉voice control功能了。根据iOS版本,文件名不一定是88,可能是94啥的。

2012年7月2日星期一

补装gdm

去了硬件商那测试机器,发现硬件商准备的RHEL 6.2没装x window,要重装的话,FC, iSCSI的挂接又得整半天,于是开始补装xwindow。

方法如下:
yum install gdm
yum groupinstall "X Window System"
yum groupinstall "Desktop"
就可以了。当然,本地别忘了安装指定repo源。装好后就可以gdm进xwindow了。
yum真是个好东西呀。

64位的Redhat Linux安装32的库

虽然中间件和应用都早走了64位,但是系统里偶尔还是会用到三方的程序,并只支持32。怎么在64的机器上装上32的库和编译环境呢,今天为编译32的程序折腾不少时间(我开始是去http://pkgs.org/centos-6-rhel-6/centos-rhel-i386/4/下的,然后rpm -ivh安装不上)
1。预备好x86_64的iso,mount上。
2。在/etc/yum.repos.d目录里建立一个文件local.repo,内容如下
[local]
name=local
baseurl=file:///mnt/dvd/
enabled=1
gpgcheck=0
这是为了yum时找repo源
3。现在可以yum开始安装了。
查找一下
yum --disablerepo=* --enablerepo=local search glibc
然后开始安装.i686的
yum --disablerepo=* --enablerepo=local install glibc.i686
yum --disablerepo=* --enablerepo=local install glibc-devel.i686
yum --disablerepo=* --enablerepo=local install compat-libstdc++-33.i686
yum --disablerepo=* --enablerepo=local install libstdc++.i686
yum --disablerepo=* --enablerepo=local install libstdc++-devel.i686

到此,gcc就可以-m32,编译了32的程序了, compat-libstdc++是需要的,要不旧的程序会报libc.so.5找不到。

2012年7月1日星期日

恢复自制固件

我的带锁老的3gs,没事儿就被我折腾,今天修改一下imessage的地址,就激活不了了,试了几个法子,都不灵。于是重新刷。用以前备份了的5.0.1的signed了的去基带固件。

1.iFaith-v1.4.2.exe,进iReb,根据说明进DFU.(没这步,直接Itune恢复会1604error)
2.再在itune里面shift恢复就可。

iFaith很久没更新了,所以没法自制5.1,5.1.1,看来我的3gs也就停留在了5.0.1了