kvm使用iscsi作为存储池安装win

最近都在研究ipxe和iscsi,那么如何让kvm使用存储在iscsi上面的文件卷呢? 假设我们已经按之前的文章架好了iscsi: 造个10G文件: dd if=/dev/zero of=/export/iscsi/disk03.img count=0 bs=1 seek=10G 服务端增加iscsi target vi /etc/tgt/targets.conf <target iqn.2016-07.com.renhe:renhe-16-8-6.disk03> backing-store /export/iscsi/disk03.img write-cache off </target> tgt-admin --execute isci准备好了,然后我们去kvm定义池子:myiscsi virsh virsh# pool-define-as myiscsi 172.16.8.6 - iqn.2016-07.com.renhe:renhe-16-8-6.disk03 - /dev/disk/by-path virsh# pool-start myiscsi Name State Autostart ----------------------------------------- myiscsi active no virsh# pool-autostart myiscsi virsh # pool-list Name State Autostart ----------------------------------------- myiscsi active yes virsh# vol-list myiscsi Name Path ----------------------------------------- unit:0:0:1 /dev/disk/by-path/ip-172.16.8.6:3260-iscsi-iqn.2016-07.com.renhe:renhe-16-8-6.disk03-lun-1 ok,记下来这个Name:unit:0:0:1 然后我们来安装win的kvm吧,直接clone输出到硬盘 virt-install \ --name=iscsi-16-11-9 \ --vcpu=2 \ --ram=4096 \ --cdrom=/export/kvm/iso/Luobo_Ghost_Win7_SP1_x86_2015_0904.iso \ --boot network,cdrom,hd,menu=on \ --disk vol=myiscsi/unit:0:0:1 \ --os-type=windows \ --os-variant=win7 \ --network bridge=br0 \ --vnc --vnclisten=0.0.0.0 --vncport=5911 注意上面disk的参数,myiscsi/unit:0:0:1 ...

2024年01月18日 · 1 分钟 · 95 字 · 八戒

IPXE万能工具hiren.iso的启动方式

我们希望有紧急情况出现的时候,ipxe可以用systemrecuecd救急,可能也希望机器上架前测测内存、分区、起个winpe等等。这时候就要用到hiren这个工具了,这个东西就是国外的老毛桃工具箱! 很简单,修改boot2.php case '\52:54:00:a7:ef:5d': echo "initrd http://172.16.8.1/ks/winpe/Hiren.iso\n"; echo "chain http://172.16.8.1/ks/winpe/memdisk iso raw\n"; break; memdisk从syslinux里面拷贝即可。 这样就有一个万用工具可用了,iso启动都可以采用这种方式哦。

2024年01月18日 · 1 分钟 · 15 字 · 八戒

IPXE远程运行sysrecuecd系统

既然用到ipxe,就试试远程运行systemrecuecd。万一系统出毛病,可以用来恢复或者急救。 下载cd wget http://downloads.sourceforge.net/project/systemrescuecd/sysresccd-x86/4.7.3/systemrescuecd-x86-4.7.3.iso 装进 http://172.168.8.1/ks/sysrcd目录中 mount -o loop systemrescuecd-x86-4.7.3.iso /mnt/iso mkdir -p /var/www/html/ks/sysrcd cp -r /mnt/iso/* /var/www/html/ks/sysrcd 重头戏,依然按前面的方法修改boot2.php即可 case '\ec:f4:bb:d9:96:40': $ip="172.16.36.2:172.16.37.254:255.255.254.0:myhost-16-36-2"; $ipa=explode(':',$ip); echo "ifopen net0\n"; echo "set net0/ip $ipa[0]\n"; echo "set net0/netmask $ipa[2]\n"; echo "set net0/gateway $ipa[1]\n"; echo "set net0/dns $dns\n"; echo "set base-url http://172.16.8.1/ks/sysrcd\n"; echo "kernel \${base-url}/isolinux/rescue32 netboot=\${base-url}/sysrcd.dat nodhcp eth0=172.16.36.2/23 dns=172.16.8.1 gateway=172.16.37.254 rootpass=xxxxxxxx vncserver=1:password nameif=eth0:ec:f4:bb:d9:96:40\n"; echo "initrd ${base-url}/isolinux/initram.igz\n"; echo "boot\n"; break; 注意上面,静态ip的设置部分,还有同时设置了sshd和vncserver,方便远程操作。

2024年01月18日 · 1 分钟 · 64 字 · 八戒

用IPXE启动个Ubuntu桌面

有了上篇IPXE的启动方法,我们来启动一个Ubuntu来玩: 简单的修改boot2.php即可: case '\ec:f4:bb:d9:96:40': $ip="172.16.36.2:172.16.37.254:255.255.254.0:myhost-16-36-2"; $ipa=explode(':',$ip); echo "ifopen net0\n"; echo "set net0/ip $ipa[0]\n"; echo "set net0/netmask $ipa[2]\n"; echo "set net0/gateway $ipa[1]\n"; echo "set net0/dns $dns\n"; echo "kernel http://172.16.8.1/ks/ubuntu/vmlinuz.efi root=/dev/nfs boot=casper netboot=nfs nfsroot=172.16.11.6:/root/ubuntu ip=172.16.36.2::172.16.37.254:255.255.254.0:renhe-16-36-2:eno1 ro\n"; echo "initrd http://172.16.8.1/ks/ubuntu/initrd.lz\n"; echo "boot\n"; break; 注意:变的就是kernel和init那两行,netboot支持nfs和cifs,不支持http啊,试了半天!另外ip那一行,如果是动态的,ip=dhcp,如果是静态的,格式如下: ip=客户端ip:服务器端ip:网关:掩码:主机名:网卡 服务器端ip不填,主机名也可以不填。 首先我们要去下个ISO wget http://mirrors.163.com/ubuntu-releases/16.04/ubuntu-16.04-desktop-amd64.iso 然后把vmlinuz.efi和initrd.lz弄出来,放到[http://172.16.8.1/ks/ubuntu]目录下 mount -o loop ubuntu-16.04-desktop-amd64.iso /mnt/iso cp /mnt/iso/casper/vmlinuz.efi /var/www/html/ks/ubuntu cp /mnt/iso/casper/initrd.lz /var/www/html/ks/ubuntu 然后建立nfs,把iso里的东西都弄到nfs共享里去: mkdir -p /export/ubuntu vi /etc/exports /export/ubuntu *(rw,sync,no_subtree_check,fsid=0,no_root_squash) yum install -y nfs-utils rpcbind service nfs start ok,启动pxe,就看到桌面了。

2024年01月18日 · 1 分钟 · 75 字 · 八戒

IPXE kickstart安装CentOS的方法

这些年IDC物理机装机的大法也在不断衍进,从最早的手动装一堆tftp/dhcp/syslinux/httpd,到cobbler的一统江湖,到现在的dnsmasq轻量级安装,nocps安装,一直在不断进化着。 因为cobbler实在太重,不得不专门起一个kvm虚机来运行,完全不喜欢啊。所以一直也在研究终极安装服务器的大法。 折腾服务器无数回,找出了个自己比较喜欢的方式。 首先介绍一下背景知识: PXE 可以通过网络给计算机安装操作系统。 PXE协议大致上结合了DHCP和TFTP。 gPXE gPXE是PXE的一个开源实现(更早的实现是Etherboot)。通过gPXE能让网卡直接支持网络启动,而不依赖于网卡自带的PXE固件。同时相比PXE,gPXE支持更多的协议。 传统的PXE只能通过TFTP进行传输,而gPXE支持HTTP,iSCSI和ATA over Ethernet(AoE),甚至支持wifi链接。 iPXE iPXE表示 it doesn’t PXE。iPXE是gPXE的原班人马写的(他们从Etherboot开始),作为官方的gPXE的替代品。 gPXE扩展的功能在iPXE中都得到支持。 之所以不再使用gPXE是由于存在版权纠纷,iPXE从2010年4月开始,基于同一个代码库开始开发。 PXELINUX Syslinux是一个优秀的系统启动加载器(bootloader),可引导自硬盘、光盘、和通过PXE的网络启动。 PXELINUX派生自Syslinux,用来使支持PXE的网卡从网络引导启动Linux。PXELINUX程序不是烧在网卡里,而是存储在TFTP服务器上。 Chainloading iPXE 可以把iPXE当作固件刷进计算机网卡的ROM里替换掉自带的PXE,但更为常见的是通过chainloading的方式进入iPXE。 有点晕是吧,总结一下,pxe包含了gpxe/ipxe/pxelinux,ipxe是最新的,gpxe/ipxe/pxelinux可以通过chain的方式顶替网卡原生的pxe。 推荐的装机方式: 客户机启动网卡自带的固件pxe,然后去服务器拉一个gpxe/ipxe,然后启动这个gpxe/ipxe,再去服务器拉具体的启动文件,这种就是chain方式了。我们就可以用到http/iscsi/wifi等各种先进方式启动了。 我们第一步先要准备一个gpxe的boot文件。 解释一下,文件后缀有.pxe/.kpxe/.kkpxe,这是个递进关系,.pxe是最原生的网卡驱动,.kpxe包含了调用原生网卡的UNDI驱动(无网卡驱动),.kkpxe更进一步,包含了UNDI+PXE原生网卡的驱动。 当然选择.kpxe了,我们的目的就是通过这个ipxe调用原生网卡上的驱动即可,如果是你自己要烧网卡的bootroom片子,就得选择所有驱动了。 这样我们会得到一个 gpxe-1.0.1-undionly.kpxe 的文件,保存备用。 然后我们来设置Dnsmasq: log-dhcp dhcp-no-override enable-tftp tftp-root = /tftpboot dhcp-range=tftp,172.16.36.100,172.16.36.105 dhcp-match=gpxe,175 dhcp-boot=net:#gpxe,gpxe-1.0.1-undionly.kpxe,gxe/bootserver,172.16.36.1 dhcp-boot=http://172.16.8.1/ks/boot.txt 注意:gpxe-1.0.1-undionly.kpxe是放在/tftpboot/gpxe/之下的 上面有很多玄机,dhcp-range是随便设一个地址池,因为最终实际是gpxe来决定地址,所以第一次dhcp得到的地址反而不重要了。dhcp-no-override一定要有,否则gpxe有bug,无法启动。 其次匹配gpxe,凡是175的都是gpxe,为什么要匹配呢?看下面,有两个dhcp-boot启动选项,#pxe,#表示不是,这行意思是:不是gpxe启动的话用/tftp/gpxe/gpxe-1.0.1-undionly.kpxe来启动,dhcp的server是172.16.36.1。第二行如果是gpxe启动的话,就chain到[http://172.16.8.1/ks/boot.txt]去启动 呵呵,如果不这么设置,就用一行的话: dhcp-boot=gpxe-1.0.1-undionly.kpxe,gxe/bootserver,172.16.36.1 就会陷入死循环,首先pxe启动,抓了个gpxe,gpxe又启动抓了个gpxe,又抓gpxe,循环往复没玩没了。所以必须标记gpxe,并跳出这个循环。 我们在172.16.8.1上面建立/centos7的yum安装源,同时建立/ks目录。准备boot.txt,boot2.php,boot3.php,centos7.ks四个文件,下面一个一个解释: 首先是boot.txt cat boot.txt #!gpxe chain http://172.16.8.1/ks/boot2.php?uuid=\${uuid}&mac=\${mac}&busid=\${busid}&ip=\${ip}&hostname=\${hostname:uristring}&serial=\${serial:uristring}&asset=\${asset:uristring}&manufacturer=\${manufacturer:uristring}&product=\${product:uristring} 大家看上面,boot.txt是个gpxe脚本,实际是让gpxe向boot2.php传输了一些数据过来,有机器的uuid/mac/busid/hostname/serial/product等等。给个具体的例子,从access.log看到实际发过来的请求如下: "GET /ks/boot2.php?uuid=%5C44454c4c-5600-1054-8042-b1c04f433532&mac=%5Cec%3Af4%3Abb%3Ad9%3A96%3A40&busid=%5C01%3A80%3A86%3A15%3A21&ip=%5C172.16.36.100&hostname=%5C&serial=%5C1VTBC52&asset=%5C&manufacturer=%5CDell%20Inc.&product=%5CPowerEdge%20R730 HTTP/1.0" 200 46 "-" "gPXE/1.0.1" "-" 看上面,有很多信息,网卡的物理地址,还有serial,对应dell就是svc tag号,还有机器类别PowerEdge R730,这是个好东西啊。 我们购买机器的时候肯定有序列号,上架到机房的时候,可以让idc抄下来机柜和序列号,然后我们让网管规划好ip,再这里就可以利用serial来确定机器应该按哪个模板安装。 ...

2024年01月18日 · 2 分钟 · 365 字 · 八戒

kickstart安装脚本中如何同时配置bridge和bond

如何在kickstart脚本中既配置br,又配置bonding呢? 基本篇: 以Dell R730为例,物理网卡名称是em1/em2/em3/em4 network --device=br0 --noipv6 --onboot=yes --bridgeslaves=bond0 --gateway=172.16.37.254 --ip=172.16.36.2 --nameserver=172.16.8.1 --netmask=255.255.254.0 --activate network --device=bond0 --noipv6 --onboot=yes --bondslaves=em1,em2 --bondopts=mode=active-backup,balance-rr;primary=em1,miimon=80,updelay=60000 --activate network --device=em1 --noipv6 --nodns --onboot=yes --activate network --device=em2 --noipv6 --nodns --onboot=yes --activate network --device=em3 --noipv6 --nodns --onboot=yes --activate network --device=em4 --noipv6 --nodns --onboot=yes --activate network --hostname=myhost-16-36-2 注意以上,是只做了 em1 和 em2 绑定成为 bond0 ,然后 br0 启动在 bond0 之上。 进阶篇: 基本篇的做法固然是做了四网卡绑定和桥接,副作用也是很可怕的。 大家去看/etc/sysconfig/network-scripts, 里面有一堆的ifcfg-br0-slave_1,ifcfg-bond0-slave_1, ifcfg-bond0-slave_2,更可恶的是进程中跑着好几个dhcp-client,一想就明白了,这是NetworkManager搞得。em3和em4不断去启停端口,试图获得地址,导致交换机端口忽断忽通。 这个试图自动化网络的东西在服务器跑上实在是太无聊了。 所以上面的做法摒弃。在%post把网络搞好: ... %packages @compat-libraries @core wget net-tools chrony bridge-utils %end ... network --bootproto=static --device=em1 --noipv6 --nodns --onboot=yes --gateway=172.16.37.254 --ip=172.16.36.2 --nameserver=172.16.8.1 --netmask=255.255.254.0 network --bootproto=dhcp --device=em2 --noipv6 --nodns --onboot=no network --bootproto=dhcp --device=em3 --noipv6 --nodns --onboot=no network --bootproto=dhcp --device=em4 --noipv6 --nodns --onboot=no network --hostname=myhost-16-36-2 ... %post yum -y erase NetworkManager cat </etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=static ONBOOT=yes IPADDR=172.16.36.2 NETMASK=255.255.254.0 GATEWAY=172.16.37.254 EOF cat < /etc/modprobe.d/bonding.conf alias bond0 bonding BONDING_OPTS="miimon=100 mode=1 primary=em1" EOF cat < /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 ONBOOT=yes USERCTL=no BRIDGE=br0 EOF cat < /etc/sysconfig/network-scripts/ifcfg-em1 DEVICE=em1 USERCTL=no ONBOOT=yes MASTER=bond0 SLAVE=yes BRIDGE="br0" EOF cat < /etc/sysconfig/network-scripts/ifcfg-em2 DEVICE=em2 USERCTL=no ONBOOT=yes MASTER=bond0 SLAVE=yes BRIDGE="br0" EOF %end 注意上面,安装包必须安装bridge-utils,否则没有brctl,无法启动br0。 ...

2024年01月18日 · 1 分钟 · 163 字 · 八戒

Dell idrac 重启机器进入单次pxe安装

用Dell idrac的脚本来使服务器进入单次pxe安装进程。 脚本如下: sshpass -p "xxxxxxxx" ssh -oStrictHostKeyChecking=no root@172.16.17.1 racadm set iDRAC.ServerBoot.BootOnce 1 sshpass -p "xxxxxxxx" ssh -oStrictHostKeyChecking=no root@172.16.17.1 racadm set iDRAC.ServerBoot.FirstBootDevice PXE sshpass -p "xxxxxxxx" ssh -oStrictHostKeyChecking=no root@172.16.17.1 racadm serveraction powercycle

2024年01月18日 · 1 分钟 · 32 字 · 八戒

nxlog推送数据到elasticsearch

其实rsyslog、syslog-ng、nxlog这三种东西真的是都差不多。随便选一个用都没问题。 比较喜欢nxlog的route和json以及箭头的功能,很简洁,所以用它来推数据到elasticsearch 方法一、用om_elasticsearch推: ... <Input in> Module im_tcp Host 0.0.0.0 Port 1514 InputType Binary </Input> <Output es> Module om_elasticsearch URL http://localhost:9200/_bulk FlushInterval 2 FlushLimit 100 # Create an index daily Index strftime($EventTime, "nxlog-%Y%m%d") IndexType "My logs" # Use the following if you don't have $EventTime set #Index strftime(now(),"nxlog-%Y%m%d") </Output> <Route r> Path in => es </Route> ... 方法二、用om_http推: ... <Output elasticsearch> Module om_http URL http://elasticsearch:9200 ContentType application/json Exec set_http_request_path(strftime($EventTime, "/nxlog-%Y%m%d/" + $SourceModuleName)); rename_field("timestamp","@timestamp"); to_json(); </Output> ... 我们生产上是将各个机器上的日志通过rsyslog发到nxlog,再由nxlog导入elasticsearch,然后用kinaba看。 ...

2024年01月18日 · 1 分钟 · 206 字 · 八戒

F5-bigip的Load balance告警邮件设置

F5-Bigip负载均衡设备,在我们的生产环境,用于分发前端的请求,如果后端的成员离线了,需要及时得到通知。 规则是:load balance池子里的成员如果离线,就发送告警邮件,如果又恢复了,也发告警邮件。 首先我们需要在内网中设置一个邮件发送服务器,我们用的是qq的企业邮箱,如何设置在之前说过,这里设置的是内网用这台服务器发邮件不需要验证,但是发送者必须是monit@company.com。 先来确认f5的版本,不同的版本不一定通用撒。这里版本是11.5.3才可以。 登录F5(ip是172.16.0.1),查看版本,是不是11.5.3 $ ssh user@172.16.0.1 # tmsh show /sys version ... Product BIG-IP Version 11.5.3 ... # quit 编辑/etc/ssmtp/ssmtp.conf,设置邮件服务器 # vi /etc/ssmtp/ssmtp.conf mailhub=192.168.0.1 # 如果没有安装内网的邮件服务器,可以在这里设置。安装了就不用设 FromLineOverride=YES UseTLS=yes AuthUser=smtp_account AuthPass=password 设置告警内容: alert BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_DOWN "Pool (.*?) member (.*?):(.*?) monitor status down." { email toaddress="user01@company.com,user02@company.com" fromaddress="monit@company.com" body="A pool member went down" } alert BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_UP "Pool (.*?) member (.*?):(.*?) monitor status up." { email toaddress="user01@company.com,user02@company.com" fromaddress="monit@company.com" body="A pool member went up" } ok,搞定。不用重启什么的啊,即时生效。 ...

2024年01月18日 · 1 分钟 · 73 字 · 八戒

在Ubuntu上装个plsql通过远程桌面访问oracle

这真是个无比古怪的审计需求,需要让一些同事能访问oracle,但是不允许他们通过剪切板拷贝数据。 这只能是kvm+Ubuntu+xrdp+wine+plsql来实现了(CentOS应该也没问题) 首先准备ubuntu的iso,选精简的server版,桌面手动装: wget http://mirrors.163.com/ubuntu-releases/12.04/ubuntu-12.04.5-server-i386.iso 生成kvm虚机磁盘: qemu-img create -f qcow2 /home/kvm/ubuntu.qcow2 20G 安装kvm虚机: virt-install \ --name=ubuntu \ --vcpu=1 \ --ram=2048 \ --disk path=/home/kvm/ubuntu.qcow2,format=qcow2,size=20 \ --cdrom=/home/kvm/ubuntu-12.04.5-server-i386.iso \ --os-type=linux \ --network bridge=br0 \ --vnc --vnclisten=0.0.0.0 --vncport=5901 这时候就要连到实机的vnc 5901端口,开始安装。反正是只要用plsql的,所以缺省都可。记住要装上sshd server,便于远程管理。 装ubuntu时会提示生成一个非root用户,就叫plsql好了。 安装不表,安装好了以后因为装了sshd,所以就可以ssh远程操作了。 安装wine: sudo apt-get install software-properties-common sudo add-apt-repository ppa:ubuntu-wine/ppa sudo apt-get update sudo apt-get install wine 安装xrdp和gnome-shell以及输入法: sudo apt-get install xrdp sudo apt-get install gnome-shell sudo apt-get install ibus sudo apt-get install fcitx-table-wbpy 设置xrdp由gnome-session控制: ...

2024年01月18日 · 1 分钟 · 203 字 · 八戒