• NIS+NFS安装实战 - [Linux]

    2012-02-01

    随着服务器的增加,维护用户帐号成了一件要命的事情,一台台登录上去useradd、设置证书,非疯了不可。

    之前一直知道LDAP可以做到帐号统一维护,但是看到那天书般的配置就头痛不已,后来发现有yp这么一个NIS(Network Information Services)软件,直接使用系统帐号,安装配置简单,真是我等半吊子SA的福音啊。

    对于NIS的详细说明推荐阅读鸟哥的这篇文章,介绍的很详细。

    废话不多说,直接开始。

    服务器端

    安装yp组件,CentOS 6.2:

    yum install ypserv yp-tools rpcbind

    修改 /etc/sysconfig/network 文件,加入

    NISDOMAIN=domainame

    鸟哥的文章说最好设置端口号,但是我认为如果是内网使用则完全不需要,设置好 iptables 就好了。

    确认 /etc/hosts 文件IP及hostname配置正确。

    生成数据库:

    /usr/lib64/yp/ypinit -m

    启动服务:

    /etc/init.d/rpcbind start
    /etc/init.d/ypserv start
    /etc/init.d/yppasswdd start
    chkconfig rpcbind on
    chkconfig ypserv on
    chkconfig yppasswdd on

    检查服务是否正常

    rpcinfo -p localhost
    rpcinfo -u localhost ypserv

    客户端

    客户端只需要安装 yp-tools 及 ypbind,以下使用 gentoo

    emerge yp-tools ypbind

    gentoo 默认安装的是 portmap,可以考虑使用 rpcbind 替换。

    emerge rpcbind

    修改 /etc/conf.d/net 设置 nisdomain

    nis_domain_eth0="domainame"

    重启网络服务

    /etc/init.d/network restart

    启动服务

    /etc/init.d/rpcbind start
    /etc/init.d/ypbind start
    rc-update add rpcbind default
    rc-update add ypbind default

    好了,这样就基本OK了,服务器端创建一个用户,然后再次 ypinit -m 生成数据库,应该就可以登录了,可是这时间客户端是没有用户的 home 目录的,这时就需要NFS来做了。

    NFS服务器端

    rpcbind 上面已经装好了,所以NFS就不需要再次安装配置了,直接安装 nfs-utils

    yum install nfs-utils

    修改 /etc/exports

    /home 192.168.1.0/24(rw,no_root_squash)

    OK,就这么简单,NFS服务器端完成。

    NFS客户端

    依然需要安装 nfs-utils

    emerge nfs-utils

    挂载

    mount -t nfs serverip:/home /home

    一般情况下这就已经完成了,只是我这里NFS使用了最新的版本4,有一个问题就是所有的 uid 及 gid 都为:4294967294,而不是真实的用户与组名,这就导致用户无法使用证书登录,提示:Authentication refused: bad ownership or modes for file /home/xxx/.ssh/authorized_keys,这是因为权限不对造成的。

    简单的处理方法是不使用 NTFSv4,改用 v3

    mount -t nfs -o vers=3 serverip:/home /home

    另外一个方法就是配置 /etc/idmapd.conf,这个稍后补充。

  • KVM使用原生CPU - [Linux]

    2012-01-10

    默认情况下 CentOS 6 安装虚拟机后的CPU是:QEMU Virtual CPU,一般使用是没有问题的,只是性能低下,PHP一个10万次循环的脚本居然需要执行50多秒,而母系统执行只需2秒多,差距有点儿太大。

    # virsh edit vm_name
    <domain type='kvm'>
      ......
      <qemu:commandline>
        <qemu:arg value='-cpu'/>
        <qemu:arg value='host'/>
      </qemu:commandline>
    </domain>
    

    一般建议使用 virsh edit 编辑虚拟机配置文件,避免文件被破坏。

  • 克隆一个虚拟机:

    virt-clone -o formdomain -n todomain -f /path/filename.img

    转换镜像格式:

    qemu-img convert -O qcow2 filename.img filename.qcow2

    支持的格式:raw、qcow、qcow2、vmdk、vdi

    查看一个镜像的信息:

    qcmu-img info filename.img

    调整镜像大小

    qemu-img resize filename.img +|-size
  • 作为一名半调子系统管理员,XEN那dom0,domU还要编译内核,这简直要了我的亲命,KVM作为一个CentOS 6开始唯一内置支持的虚拟化,安装配置简单,很适合我。

    安装:

    KVM需要CPU支持vmx(Intel)或svm(AMD)。

    $ cat /proc/cpuinfo | egrep 'vmx|svm'
    flags: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 
    clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 
    3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid pni monitor 
    cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a 
    misalignsse 3dnowprefetch osvw ibs skinit wdt npt lbrv svm_lock nrip_save
    flags: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 
    clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 
    3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid pni monitor 
    cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a 
    misalignsse 3dnowprefetch osvw ibs skinit wdt npt lbrv svm_lock nrip_save

    安装KVM组件

    # yum groupinstall Virtualization
    # yum groupinstall "Virtualization Platform"

    重启后检查是否安装成功,若使用Intel CPU会显示 kvm_intel。

    # lsmod | grep kvm
    kvm_amd                37434  4 
    kvm                   292815  1 kvm_amd

    OK,就这么简单,KVM安装完成。

    周边工具:

    virt-manger与virt-viewer是基于X Window的图形化管理工具,优点呢就是操作简单、鼠标点点,坏处自然就是要装一堆图形组件,对于服务器来说这些东西有些太多余。

    服务器上最好用的当然是命令行工具

    yum install libvirt-client python-virtinst

    libvirt-client 提供了 virsh,主要功能为:启动、重启、停止等管理功能。

    python-virtinst 提供了 virt-install 安装工具。

    安装虚拟机

    #&nbsp;virt-install \
    --name gentoo6 \
    --ram 512 \
    --vcpus=1 \
    --disk path=/var/vps/gentoo6.img,size=4 \
    --network network:default \
    --os-variant=generic26 \
    --accelerate \
    --cdrom /var/vps/install-amd64-minimal-20111201.iso \
    --vnc \
    --vncport=5911 \
    --vnclisten=0.0.0.0

    --name 指定虚拟机名称,virsh操作指定虚拟机时所需要的参数,不可以重复。

    --ram 分配内存大小,安装完成后可以用 virsh 调整。

    --vcpus 分配CPU核心数,最大与实体机CPU核心数相同,安装完成后也可以用 virsh 调整。

    --disk 指定虚拟机镜像, size 指定分配大小单位为G。

    --network 网络类型,此处用的是默认,一般用的应该是 bridge 桥接,这个下次再说。

    --os-variant 指定操作系统类型,此处使用的是标准Linux 2.6,其他的可以通过 man virt-install 详细查看。

    --accelerate 呃,加速,具体什么原理还不太清楚。

    --cdrom 指定安装镜像所在。

    --vnc 启用VNC远程管理,一般安装系统都要启用。

    --vncport 指定 VNC 监控端口,默认端口为 5900。

    --vnclisten 指定 VNC 绑定IP,默认绑定127.0.0.1,这里将其改为 0.0.0.0 以便可以通过外部连接。

    执行后如果没有安装 virt-viewer 或没有 X Window 系统可能会提示 virt-viewer 启动失败,不过没关系,使用 VNC Viewer 或者 MAC 下使用Chicken of the VNC连接到实体机,端口使用上面指定的就可以操作安装过程。另外需要注意的是,某些系统安装盘有等待输入时间,超过时间会自动使用硬盘启动,所以VNC连接一定要快,否则就需要 virsh destroy 然后 virsh start 再启动,因为系统尚未安装成功,此时的 virsh reboot 执行是无效的。

    virsh 常用命令

    virsh list 列出当前虚拟机列表,貌似不包括未启动的。

    virsh start domain-name 启动指定虚拟机。

    virsh shutdown domain-name 停止指定虚拟机,执行此命令后 virsh list 里将不出现。

    virsh reboot domain-name 重新启动指定虚拟机,这个命令貌似必须系统安装完成后才有效。

    virsh autostart domain-name 指定虚拟机开机自动启动,需要 libvirtd 服务默认启动。

    还有更多,一时也没全搞明白,全写出来估计可以写本手册了。

    其他

    虚拟机配置存储在 /etc/libvirt/qemu 目录,配置文件为XML格式。

    自动启动的虚拟机在 /etc/libvirt/qemu/autostart 目录。