Cyrill105
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Всем привет! и снова о танцах с бубнами вокруг ESX и ESXi Проблемки со следующим железом: MB: supermicro X7DB8+ - http://www.supermicro.com/products/motherboard/Xeon1333/5000P/X7DB8+.cfm (Bios 2.1a). I/O встроеный: Adaptec AIC-7902 Controller в довес к которому докуплен ZCR3 - http://www.supermicro.com/products/accessories/addon/AOC-LPZCR3.cfm AOC-LPZCR3 (bios v5.1-0[Build 8454]), корпус взял не сказёвый, а SATAшный http://www.supermicro.com/products/chassis/4U/745/SC745TQ-R800.cfm , 0) уж больно дорого выходит и под мои цели скази, поэтому гиговые сата воткнул 4 штучки, мама их тянет при работе с массивом райд сказёвым, а остальные потом потребуется довешу на отдельный сата контроллер простенький, что подешевле, может есть что посоветовать чтоб в бубны потом не бить по sata контроллеру на 4 порта? 1) Пробывал ставить ESX и ESXi, но на обоих одна и таже проблема - они не видят SATA диски которые зацеплины на встроеный в мать контроллер Intel ESB2 SATA только когда отключаю cd-rom с которого инсталлирую ESX или ESXi, как отсоединяю cd-rom(ide) от сервака gjckt ecnfyjdrb vmware, то после перезагрузки пропадают SATA диски и котроллер SATA. Порыл инет, и каким то чудом, сам не понял как на ESX данная проблема решилась, думаю это благодаря запуску следующего файлика-скрипта (после отсоединения cd-rom и перезагрузки сата диски видяться и всё ок - причём без всяких инсталяций виртуальных IDE (это же разгружает сервер!)... файлик не простой, его редактить можно только в редакторах которые поддерживают юникс текст формат(пользовался wordpad-ом от WinXP32bit, потом редакторе vi убивал на только установленном ESXi первые два символа в скрипте по нажатию x и только тогда запускал). Но вот проблемка, сейчас файлик не запускается у меня на ESXi (пишет типа кавычка не там), хотя на ESX пол года назад робил, кто знает может подскажете как побороть (shell не знаю, а как поборол в прошлый раз не помню блин и всё)? вот сам файлик (прошу обратить внимание в юникс формате скрипт должен быть размером за 20 кб из-за разности в форматах): # Version history # # 0.2: Initial version by Reinhard Partmann # 0.2a: Changed the XML file settings by Pascal de Wild # 0.3: add check if running under ESX and in troubleshooting mode and # bc is not available # code cleanup # # 0.4: parameters added # 1st filename ex: sata_nv for sata_nv.xml od sata_nv.o # 2nd PCI-DeviceID 037f # 0.5 redesign. # 0.6 bugfix thanks jims_tx # # TODO # VERSION="0.5" VENDOR_ID="10de" # 8086 .. INTeL # 10de .. NVidia # 1166 .. ServerWorks # 1095 .. SIL/CMD DEVICE_ID="037f" DEVICE_NAME="MCP55 SATA Controller" #------------------------- VENDOR_FILENAME="" DEBUG=1 RETURN_VAL="" ############################################################################### ############################################################################### # C O N S T A N T S # ############################################################################### # define some colors black='\E[30;40m' red='\E[31;40m' green='\E[32;40m' yellow='\E[33;40m' blue='\E[34;40m' magenta='\E[35;40m' cyan='\E[36;40m' white='\E[37;40m' ############################################################################### #### subroutines #### ############################################################################### function colorReset () # Reset text attributes to normal { #+ without clearing screen. tput sgr0 return 0 } ############################################################################### function cecho () # Color-echo. # Argument $1 = message # Argument $2 = color { local default_msg="No message passed." #Doesn't really need to be a local variable. message=${1:-$default_msg} # Defaults to default message. color=${2:-$white} # Defaults to black, if not specified. echo -e "$color$message" # echo -n "$message" colorReset # Reset to normal. return 0 } ############################################################################### function debug_echo() { if [ -z "$1" ] then echo "DEBUG_ERROR: NO Parameter" return 1 else if [ "$DEBUG" == "1" ] then cecho "DEBUG: $1" $red >&2 fi fi return 0 } ############################################################################### function usage() { echo "USAGE: gosata.sh " echo " Edit the following lines for your system" echo " VENDOR_ID=xxxx " echo " where xxxx is the VendorID of your SATA Controller" echo " with the vendorID we select the correct filename.[o|xml]" echo " DEVICE_ID=yyyy " echo " where yyyy is the DeviceID of your SATA controller" echo } ############################################################################### function vendorID2name() { case $VENDOR_ID in 8086) # intel echo "INTeL ..." VENDOR_FILENAME="ata_piix" DEVICE_ID_REPLACE="2920" ;; 10de) # nvidia echo "NVidia ..." VENDOR_FILENAME="sata_nv" DEVICE_ID_REPLACE="037e" # 0267 ;; 1166) # ServerWorks echo "ServerWorks ..." VENDOR_FILENAME="sata_svw" DEVICE_ID_REPLACE="0240" ;; 1095) # SIL / CMD Technology echo "SIL/CMD Technology..." VENDOR_FILENAME="sata_sil" DEVICE_ID_REPLACE="3112" ;; *) # cecho "ERROR: VENDOR not found! exiting..." $red VENDOR_FILENAME="notfound" exit ;; esac } ############################################################################### function esx_troubleshoot() { echo "check ifrunning on an ESX host : " if [ -f /usr/bin/vmware ] then isESX=`vmware -v | grep "VMware ESX Server 3\." | wc -l| tr -d [:space:]` echo "isESX: $isESX" #[ -f /etc/motd ] || if [ $isESX == "1" ] then isESXfailsafe=`grep "ESX.*Server.*troubleshooting.*mode" /etc/motd | wc -l| tr -d [:space:]` echo "isESXfailsafe: $isESXfailsafe" if [ $isESXfailsafe == "1" ] then # here we assume we are running on a VMware ESX Server # in NOT troubleshooting mode BOOT_PREFIX="/boot" ROOT_PREFIX="" BOOT_MOUNTED=`mount |grep "boot" |wc -l| tr -d [:space:]` debug_echo "BOOT_MOUNTED $BOOT_MOUNTED" if [ $BOOT_MOUNTED == "0" ] then debug_echo "0==BOOT_MOUNTED $BOOT_MOUNTED" debug_echo "mount /boot" mount /boot else debug_echo "1==BOOT_MOUNTED $BOOT_MOUNTED" fi #else # # here we assume we are running on a VMware ESX Server # echo "You should do this in the ESX troubleshooting mode!" # exit fi fi else # here we assume we are NOT running on a VMware ESX Server # because we booted a Linux LiveCD isESX=0 debug_echo "isESX: $isESX" echo "mounting.." BOOT_PREFIX="/mnt/eboot" ROOT_PREFIX="/mnt/eroot" mount /dev/sda1 $BOOT_PREFIX mount /dev/sda2 $ROOT_PREFIX echo "" mount | grep sda echo "" fi } ############################################################################### function update_initrd(){ echo "copying original initrd file..." #echo "mkdir -p $ROOT_PREFIX/tmp/initrd/extracted" mkdir -p $ROOT_PREFIX/tmp/initrd/extracted # here vars to use either /boot or /mnt/eboot #echo "cp $BOOT_PREFIX/initrd-2.4.21-47.0.1.ELvmnix.img $ROOT_PREFIX/tmp/initrd/initrd-2.4.21-47.0.1.ELvmnix.img.gz" cp -f $BOOT_PREFIX/initrd-2.4.21-47.0.1.ELvmnix.img $BOOT_PREFIX/initrd-2.4.21-47.0.1.ELvmnix.img.old mv -f $BOOT_PREFIX/initrd-2.4.21-47.0.1.ELvmnix.img $ROOT_PREFIX/tmp/initrd/initrd-2.4.21-47.0.1.ELvmnix.img.gz cd $ROOT_PREFIX/tmp/initrd echo "unpacking & mounting original initrd file..." gunzip -v -f initrd-2.4.21-47.0.1.ELvmnix.img.gz mount initrd-2.4.21-47.0.1.ELvmnix.img extracted -t ext2 -o loop cd extracted/etc/vmware echo "changing simple.map..." #echo "10de:037f 0000:0000 sata_nv.o" >> simple.map echo "adding $VENDOR_ID:$DEVICE_ID to simple.map" echo "$VENDOR_ID:$DEVICE_ID 0000:0000 sata_nv.o" >> simple.map cp simple.map /root/simple.map cd ../../.. umount extracted echo "replacing original initrd file..." gzip -v --best initrd-2.4.21-47.0.1.ELvmnix.img cp -f initrd-2.4.21-47.0.1.ELvmnix.img.gz /root/initrd-2.4.21-47.0.1.ELvmnix.img rm -f $BOOT_PREFIX/initrd-2.4.21-47.0.1.ELvmnix.img mv -f initrd-2.4.21-47.0.1.ELvmnix.img.gz $BOOT_PREFIX/initrd-2.4.21-47.0.1.ELvmnix.img } ############################################################################### function update_xml(){ # decided not to calculate, which is error prone, # "bc" is not available in the ESX COS, XML:Simple for perl is also not there # bash aritmetic caused some errors asin the forum mentioned # and as we dont need to insert a full section, # because none fitted to our controller # just reuse a existing one but the description is then wrong echo "patching xml files..." cd $ROOT_PREFIX/etc/vmware/pciid mv $VENDOR_FILENAME.xml $ROOT_PREFIX/tmp/$VENDOR_FILENAME.xml.org sed -e "s/$DEVICE_ID_REPLACE/$DEVICE_ID/g" $ROOT_PREFIX/tmp/$VENDOR_FILENAME.xml.org > $VENDOR_FILENAME.xml } ############################################################################### function update_initd(){ echo "generating init.d file..." rm -f $ROOT_PREFIX/etc/init.d/rp-esxcfg-pciid-boot touch $ROOT_PREFIX/etc/init.d/rp-esxcfg-pciid-boot cat >> $ROOT_PREFIX/etc/init.d/rp-esxcfg-pciid-boot << EOF1 #!/bin/bash esxcfg-pciid sleep 5 rm -f /etc/rc3.d/S99rp-esxcfg-pciid-boot EOF1 chmod a+x $ROOT_PREFIX/etc/init.d/rp-esxcfg-pciid-boot cd $ROOT_PREFIX/etc/rc3.d/ rm -f S99rp-esxcfg-pciid-boot ln -s ../init.d/rp-esxcfg-pciid-boot S99rp-esxcfg-pciid-boot } ############################################################################### ############################################################################### ############################################################################### #### int main() #### ############################################################################### alias cp=cp alias mv=mv alias rm=rm # during install # dest: /boot /mnt/sysimage/boot /dev/sda1 # dest: / /mnt/sysimage /dev/sda2 clear colorReset cecho "SATA BootFix for VMware ESX Server $version by Reinhard Partmann" $yellow if [ $VENDOR_ID == "0" ] || [ $DEVICE_ID == "0" ]; then usage exit fi # are we running within COS of ESX and troubleshooting mode esx_troubleshoot # get the filename which have to be processed vendorID2name #echo "vendorID2name->return: $?" echo "VENDOR_FILENAME: $VENDOR_FILENAME" echo "DEVICE_ID: $DEVICE_ID" echo "DEVICE_ID_REPLACE: $DEVICE_ID_REPLACE" echo "" echo "creating temp directories..." mkdir -p /mnt/eboot mkdir -p /mnt/eroot #->update init ram disk core next reboot #->update description files update_xml #->update next boot behaviour if [ $isESXfailsafe == "1" ] then esxcfg-pciid # initrd is updated by the next command esxcfg-boot -r else # when booting a LiveCD the esx command┤s are not available. update_initrd update_initd fi ############################################################################### echo "cleanup..." cd / rm -f -r $ROOT_PREFIX/tmp/initrd echo "$isESX" if [ $isESX == "0" ] then echo "unmount try -- isESX: $isESX" cd / umount $BOOT_PREFIX umount $ROOT_PREFIX fi #do it manually! #rm -f -r /mnt/eboot #rm -f -r /mnt/eroot echo "DONE." echo "happy ESXing..." а вообще ещё есть вопросики: 2) Как организовать доступ в инет всех компов с комутатора (8 портов), если инет заходит по выделенки витой с настройкой всех параметров по DHCP? предпочитаю по командной стоке всё настраивать, но почему то не катит написать скрипт (опирался на http://vmware-land.com/esxcfg-help.html) для удаления и настройки сети, может кто сталкивался? 3) ESXi вроде как не поломан или это не так, поэтому хотелось бы знать какие ограничения ждут при переходе на пробную лицензию от vmware и как долго она работать будет? как перепробовать все фичи esxi может есть блог какой или курс желательно на русском? |