Search Google

Showing posts with label vm in general. Show all posts
Showing posts with label vm in general. Show all posts

Tuesday, June 30, 2009

山不轉路轉

上一篇寫到要如何用Network Namespaces + Vconfig來做到只用一台電腦與一張PCI網卡就可以監控使用相同IP網段的多個VLAN,結果發現從獨立namespace發出帶有VLAN ID的封包始終無法成功的送到網路上,經過整整一個星期的思考,在iptables & ip route之間穿梭,卻找不到一個可以把封包丟出去的方法。。。
在我勤奮不懈的努力之下,洗澡的時候忽然有個"Multiple routing table"的想法閃過腦中,於是踏出浴室之後馬上google Linux是否有這種東西&要怎麼用,話說天救自救者,就這樣給我試出來了,哇哈哈哈!

有興趣的人可以用下面的script試一下:

+--NS2:------------------------------------------------



./ns_exec -nm -- /bin/bash
echo $$


+------------------------------------------------------

+--NS3:------------------------------------------------


./ns_exec -nm -- /bin/bash
echo $$


+------------------------------------------------------

+--NS1:------------------------------------------------


ip link add type veth
ip link add type veth

ip link set veth1 netns 1691
ip link set veth3 netns 1704

ifconfig veth0 192.168.0.1/24 up
ifconfig veth2 192.168.2.1/24 up

vconfig add eth0 11
vconfig add eth0 33

ifconfig eth0.11 10.0.0.11/24 up
ifconfig eth0.33 10.0.0.33/24 up

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp

ip rule add from 192.168.0.2 lookup 102
ip rule add from 192.168.2.2 lookup 122

ip route add default via 10.0.0.11 dev eth0.11 table 102
ip route add default via 10.0.0.33 dev eth0.33 table 122


+------------------------------------------------------

+--NS2:------------------------------------------------


ifconfig veth1 192.168.0.2/24 up
ip route add default via 192.168.0.1 dev veth1


+------------------------------------------------------

+--NS3:------------------------------------------------


ifconfig veth3 192.168.2.2/24 up
ip route add default via 192.168.2.1 dev veth3


+------------------------------------------------------

+--NS1:------------------------------------------------


tcpdump -ne -i eth0 not port 22


+------------------------------------------------------

tcpdump擷取到的封包資訊:


[root@vmf11 ~]# tcpdump -ne -i eth0 not port 22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
10:51:41.882589 00:0c:29:56:fb:d3 > Broadcast, ethertype 802.1Q (0x8100), length 46: vlan 11, p 0, ethertype ARP, arp who-has 10.0.0.10 tell 10.0.0.11
10:51:42.326170 00:0c:29:56:fb:d3 > Broadcast, ethertype 802.1Q (0x8100), length 46: vlan 33, p 0, ethertype ARP, arp who-has 10.0.0.10 tell 10.0.0.33




看到了嗎?
問相同IP地址的封包被加上不同的VLAN ID了!

Saturday, January 31, 2009

vmware-vdiskmanager -- final

避免昨天參考的連結哪天突然變成broken link,今天還是決定上來做個筆記:

[vmware-vdiskmanager的完整路徑] -x [擴充後的容量]GB [VMDK的完整路徑]
// [擴充後的容量]並不是所有的數字都可被接受,例如昨天我放20失敗,改用21嘗試後便成功

檢查/dev/下面是不是有新的sda#,sdb#,或是類似的裝置出現,接著將新增的裝置帶入下面的指令中
fdisk /dev/sda
在console的互動環境中建立新的partition(n)並將filesystem type改成LVM適用的8e,完成後
先將改變存回partition table中(w)再離開
// #為數字
// 如果直接輸入fdisk得到查無指令的訊息,請在前面加上/sbin/再試試看,以下的指令都適用

重新開機 or 執行partporbe(就不需要重開機)

pvcreate /dev/sda#

vgextend VolGroup00 /dev/sda#
// VolGroup00可能是其他名字,請執行vgdisplay然後檢視VG Name欄位

lvextend -L +XXG /dev/VolGroup/LogVol00
// 這裡的XX就藏在執行vgdisplay後得到資訊中的Free PE / Size欄位中
// 另外LogVol00請執行lvdisplay然後哪個VG Name所對應到的LV Size與原來的磁碟空間相符合

resize2fs /dev/VolGroup00/LogVol00
// 結束之後請執行df -h確認空間擴充完畢


最後做個總整理,順序是很重要的!

  1. vmware-vdiskmanager -->
    先增加實體的檔案空間,可能是pre-allocate可能不是,但是先讓vmware知道image的limit(可以說是存取範圍)在哪裡,這個步驟跟在電腦上加個新硬碟是一樣的意思
  2. fdisk -->
    加上新硬碟之後就要先幫新硬碟規劃partition(磁區)
  3. pvcreate -->
    告訴linux現在系統中多了新的磁區(physical volume)
  4. vgextend -->
    用新的磁區擴充現有的volume group
  5. lvextend -->
    擴充邏輯空間,單純設定新的存取範圍(logical volume)
  6. resize2fs -->
    在filesystem中將新的磁區真正納入logical volume所涵蓋的範圍

Friday, January 30, 2009

vmware-vdiskmanager -- continued

昨天使用vmware-vdiskmanager增加vmware image的容量之後其實事情還沒有結束,因為對於Linux來說有用的磁碟空間仍舊沒有改變,因為我採用LVM的方式規劃硬碟,所以參考了下面兩個連結完成增加vmware disk space的後續動作:

  1. http://www.global-domination.org/forum/viewtopic.php?t=750&sid=4b727581d6dbb199087becdd4c9fb31c
  2. http://www.swizzling.org/2008/04/01/expand-lvm-disk-on-linux-in-vmware/
其實上面的兩個連結內容大同小異,要說明的地方只有:
  • 第一個連結中寫到"Add *n*ew partition 3 as primary, change to LVM *t*ype (8e) ",這裡將新增的partition編號設定為"3",原因是fedora已經把1 & 2都用掉了~,其實如果四個ID都用完了也可以新增為extended,primary與extended的差別只在於extended不能開機。
  • 第一個連結與第二個連結的最後一個步驟分別使用了"ext2online"與"resize2fs"指令,經過實驗之後只有"resize2fs"才能適用於fedora。
以下是增大vmware image size前後使用"df -h"查看磁碟空間的結果:
增加vmware image size前
[root@localhost test]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00 6.2G 3.0G 2.9G 51% /
/dev/sda1 190M 14M 167M 8% /boot
tmpfs 378M 0 378M 0% /dev/shm

增加vmware image size後
[root@localhost test]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00 19G 3.0G 16G 17% /
/dev/sda1 190M 14M 167M 8% /boot
tmpfs 378M 0 378M 0% /dev/shm


PS. 原來fedora 9之後就可以直接寫NTFS格式的硬碟了!

Thursday, January 29, 2009

vmware-vdiskmanager

之前在vmware中裝了個測試平台專門用來處理資料庫相關的嘗試與測試作業,隨著raw data與日俱增,原先設定為20G的vmware disk也不太夠用,google之後發現了增大已存在的vmware disk空間的指令與用法,現在趕快寫下來備忘一下:

"c:\Program Files\VMware\VMware Server\vmware-vdiskmanager.exe" -x 42.0Gb "c:\Virtual Machines\Red Hat Linux\Red Hat Linux.vmdk"
其中的-x 42.0Gb指的是希望將原先的vmware disk增加到42Gb

PS. 要注意的是這個指令只能用在增加vmware disk上,想減少?抱歉,辦不到!儼然就像要變胖的人瘦回原先的樣子一樣 @@

Monday, July 14, 2008

Mount drive in dosbox

1. 在terminal下執行dosbox指令
2. 在dosbox的console下執行mount指令,例如:

mount c /home/user/tmp
mount d /media/cdrom
PS. dosbox的mount指令只能接受完整路徑,因此在Linux環境下用~是行不通的。

Sunday, March 02, 2008

xen的初體驗

xen與一般的vm不同在於他是kernel level的vm,從底層直接做virtualization,因此搭載的OS的執行效率也近似於直接安裝於硬體上(據說driver也有相同的水準,我還沒體驗到),也因為他是kernel level的東西,安裝上也與一般的vm有所差異。
首先,並不是裝一裝然後執行個執行檔就開始作業了,安裝的部份可以參考Installing Xen On An Ubuntu Feisty Fawn Server From The Ubuntu Repositories安裝完後第一個遇到的問題便是為什麼沒有辦法連上Internet了呢?這時候再參考Small Tip: How to set up two interface Xen machine,這下終於可以開始嘗試玩xen了

完成開機程序

Wednesday, November 22, 2006

利用另一個vmdk擴充現有vm image的使用空間

有鑒於透過samba mount win32的FAT32會導致某些linux的指令產生錯誤(eg. 執行tar所使用的utime),決定來研究一下將額外的vm image (.vmdk) format成為ext3格式,然後再透過samba mount起來使用的可能性.

聽起來有點繞口...用個流程來解釋好了:
1. windows中的vm image執行linux <-- vm_image_01
2. 在windows中利用vmware再建立新的vm image <-- vm_image_02
3. 將vm_image_02 format成ext3格式
4. 在vm_image_01中的linux也安裝一套vmware (為了使用vmware-mount.pl一定得裝)
5. 在windows中將裝有vm_image_02的目錄設為共享並允許其他人更改
6. 進入vm_image_01的linux中使用samba將存有vm_image_02的windows目錄mount起來
7. 接著使用vmware-mount.pl將vm_image_02 mount起來
8. 大功告成,恭喜各位觀眾可以在不碰vm_image_01的情況下增加使用空間 :-)

有關第(7)步地全文請參照這篇

方法二
后来在/usr/bin/下发现了vmware-mount.pl,研究了一下

进入虚拟机文件所在的目录

vmware-mount.pl -p “Ubuntu 64-bit.vmdk”

在列表中找virutal disk的partition编号,然后就可以mount
sudo vmware-mount.pl “Ubuntu 64-bit.vmdk” 1 -t ext3 /media/vmware
现在是可以高速读写,哇哈哈,然后重新进入虚拟系统看了一下,一切正常

以上的作法只允許root對這個partition寫入資料.
也可以用sudo vmware-mount.pl “Ubuntu 64-bit.vmdk” 1 -t ext3 -o rw /media/vmware來讓這個新的partition可以被一般使用者寫入.

Thursday, June 08, 2006

bye bye vmware!

想要用vmware player卻不知到怎麼樣create image的人可以參考一下下面這個link
的第21篇回文 http://www.hackaday.com/entry/1234000153064739/
重點節錄:
You can use QEMU-img.exe to create VMDK(VMare virtual disk files meaning you
don't need to download the browser image. Also I think this will create files
that can be used as ide drives.
結論:
有了QEMU + vmware player就可以不花錢使用user friendly的virtual machine。
補充:
QEMU也有gui介面了。。。 http://www.davereyn.co.uk/download.htm

為了預防網站掛掉,自己手動copy一份:
21. Posted Oct 25, 2005, 2:04 AM ET by Rhys
Hey, Incase you don't read slashdot? You can use QEMU-img.exe to create
VMDK(VMare virtual disk files meaning you don't need to download the browser
image. Also I think this will create files that can be used as ide drives.
Quick and easy:
1 Download the the vmplayer
2. create a vmdk disk file like this:
qemu-img.exe create -f vmdk
3.Create a vmx config file. Here are the basic options you need:
config.version = "8"
virtualHW.version = "3"
memsize = "128"
ide0:0.present = "TRUE"
ide0:0.fileName = "DiskFile.vmdk"

-------TO BOOT AN ISO----------
ide1:0.present = "TRUE"
ide1:0.fileName = "c:\debian.iso"
ide1:0.deviceType = "cdrom-image"
-----------------------------------
OR
-------TO BOOT CDROM-----------
ide1:0.present = "TRUE"
ide1:0.fileName = "auto detect"
ide1:0.deviceType = "cdrom-raw"
---------------------------------
floppy0.fileName = "A:"
ethernet0.present = "TRUE"
ethernet0.connectionType = "nat"
usb.present = "TRUE"
sound.present = "TRUE"
sound.virtualDev = "es1371"
displayName = "Debian 1"
guestOS = "other24xlinux"
nvram = "debian1.nvram"
scsi0:0.redo = ""
ethernet0.addressType = "generated"
uuid.location = "56 4d f3 a5 03 8c cb b9-ed bb 8f 10 a3 de b0 10"
uuid.bios = "56 4d f3 a5 03 8c cb b9-ed bb 8f 10 a3 de b0 10"
ide1:0.autodetect = "TRUE"
ethernet0.generatedAddress = "00:0c:29:de:b0:10"
ethernet0.generatedAddressOffset = "0"
checkpoint.vmState = ""
tools.remindInstall = "TRUE"
ide0:0.redo = ""
Now just run up the vmx file in the player. Boot the cdrom/iso and install
the os as usual.

qemu-img convert
eg. qemu-img convert -f vmdk /path/filename.vmdk -O raw /path/filename.raw