:::
針對查詢「virtualbox」依日期排序顯示文章。依關聯性排序 顯示所有文章

用AutoIT撰寫Windows的自動化腳本 / AutoIT: Powerful Script Language for Windows

布丁布丁吃布丁

用AutoIT撰寫Windows的自動化腳本 / AutoIT: Powerful Script Language for Windows

2023-0119-235043.png

如果要寫Windows上可以執行的exe檔案,你會用什麼程式語言呢?

(more...)

Chromebook多重作業系統簡介:Chrome OS + Android + Linux的世界 / Chrome OS, Android and Linux on Chromebook

Chromebook多重作業系統簡介:Chrome OS + Android + Linux的世界 / Chrome OS, Android and Linux on Chromebook

Presentation1

你知道嗎,便宜且硬體等級不高的Chromebook中竟然能夠同時運作Chrome OS、Android和Linux,甚至可以模擬並安裝Windows軟體。這實在是太有趣了,讓我就用這篇來跟大家做個簡單的介紹吧。

(more...)

開放原始碼數位典藏整合平台發展與建置 / Introduce to DSpace-DLLL: an Open Source Digital Archive System

布丁布丁吃布丁

開放原始碼數位典藏整合平台發展與建置 / Introduce to DSpace-DLLL: an Open Source Digital Archive System

image

這是我在2016年到兩個地方介紹DSpace-DLLL的投影片。一個是在政治大學圖書館舉辦的「數位典藏、數位策展暨數位人文學研習班」,內含實作的3小時課程,另一個是在國立師範大學舉辦的「台北市教師研習中心校史研習班」單純講課的課程。這兩個課程都可以搭配我另外製作的VirtualBox版本DSpace-DLLL虛擬機器來使用,以下提供連結讓有需要的人自由下載。

(more...)

斷開魂結!Windows圖片分割與轉換PDF工具「布丁式圖片工具箱」 / Quickly Splitting Images - Image Toolbox for Windows

斷開魂結!Windows圖片分割與轉換PDF工具「布丁式圖片工具箱」 / Quickly Splitting Images - Image Toolbox for Windows

image

將文件數位化掃描之後,我常常需要將掃描兩頁一起的圖片從中間切開,然後再合併成一份PDF,這樣方便做成電子文件來檢閱。我雖然介紹過功能強大、可以自動判斷中間切割線的Scan Tailor,或著是功能比較少的PSP Comic Converter,但是他們操作都還是太複雜了。我找來找去找不到滿意的工具,索性自己用AutoItImage Magick自己寫一個圖片分割與PDF轉換工具:「布丁式圖片工具箱」。

這個工具箱包含水平切割工具(split-horizontally.exe)、垂直切割工具(split-vertically.exe)以及PDF轉換工具(images-to-pdf.exe)。只要將要處理的圖片以這些工具開啟,就能完成切割或轉換成PDF的工作。比起使用上述工具來說,效率快上許多喔!

(more...)

快速建立開箱即用的系統!VirtualBox匯入應用裝置教學 / How to Import a OVF Format Virtual Appliance to VirtualBox

快速建立開箱即用的系統!VirtualBox匯入應用裝置教學 / How to Import a OVF Format Virtual Appliance to VirtualBox

image

建立一個應用系統已經不需要從基本的作業系統開始安裝起,現在流行的是使用虛擬應用範本(Virtual Appliance)來建立開箱即可用的應用系統。當然,在不同的虛擬機器管理器(Hypervisor,或稱為Virtual Machine Monitor, VMM)上,使用虛擬應用範本建立虛擬機器的操作方式都有所不同。以前我介紹的大多都是偏伺服器管理的Proxmox VE,這次要為大家介紹的在較為流行的VirtualBox中匯入OVF格式虛擬應用範本(在VirtualBox中,稱為虛擬應用裝置)的做法。

(more...)

Proxmox VE 4.2配置失敗記錄 / Failed to Setup Proxmox VE 4.2

Proxmox VE 4.2配置失敗記錄 / Failed to Setup Proxmox VE 4.2

image

繼前幾天開始研究Proxmox VE 4.2,我也試著將Proxmox VE 4.2以VirtualBox虛擬機器架設,並且測試看看新的虛擬化技術lxc新的高可用叢集Proxmox VE HA Manager,然後看看有沒有其他的功能好用。結果很遺憾,我未能順利成功使用這些功能。我想在這邊記錄一下這些失敗的過程,也許未來的我知道怎麼操作的話,也許看了會有些不同的感觸吧。

(more...)

修復Proxmox VE:增加第二顆硬碟到LVM / Fix Proxmox VE: Add Another Disk to LVM

布丁布丁吃布丁

修復Proxmox VE:增加第二顆硬碟到LVM / Fix Proxmox VE: Add Another Disk to LVM

pablo

之前我寫過「Proxmox VE增加第二顆硬碟」的做法,是用額外掛載的方式來新增一個新的Storage。這次我要做的是比較完整的做法:將新增加硬碟加入LVM中。操作步驟主要參考Jarrod的LVM教學


操作環境 / Proxmox VE Environment

2015-06-21_222426

本文是以Proxmox VE 3.4為例子,以VirtualBox來架設。重點是這個電腦有兩顆硬碟,Proxmox VE是安裝在第一顆硬碟中,第二顆硬碟是空的。

操作步驟 / Operation Process

Step 1. 登入 / Login

image

你可以用Proxmox VE的Web GUI中的Shell來登入,也可以直接登入本機端。總之要先以root的身份操作指令。

Step 2. 分割新的硬碟 / Partition the new disk

首先我們要確定新硬碟的路徑。一般來說,第一顆SATA硬碟為 /dev/sda 、第二顆為 /dev/sdb,而IDE的路徑則是 /dev/had 、第二顆則是 /dev/hdb。詳情請看鳥哥的說明

因為我安裝的是第二顆的SATA硬碟,所以路徑為 /dev/sdb。

硬碟的分割要使用fdisk,搭配第二顆硬碟的路徑/dev/sdb,指令如下:(粗體的地方表示是我們要輸入的指令)

root@pve:~#fdisk /dev/sdb

接下來會跳到fdisk的對話介面:

Command (m for help):

如果該硬碟裡面已經有資料,那就要用d指令來刪除。

Command (m for help): d

Selected partition 1

image

然後新增磁碟分割區,建立一個主要分割區,空間為整顆硬碟:

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): "enter"
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): "enter"
Using default value 2610

image

然後將該分割區的檔案類型修改為Linux LVM:

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

image

最後將分割表的資訊寫入硬碟:

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

image

完成。新增硬碟的磁碟分割位置為 /dev/sdb1。

Step 3. 增加邏輯捲軸 / Increasing the logical volume

接下來要連續輸入四個指令。注意裡面的磁碟分割路徑 /dev/sdb1,這是剛剛用fdisk新增的磁碟分割。

pvcreate /dev/sdb1
vgextend pve /dev/sdb1
lvextend /dev/pve/data /dev/sdb1
resize2fs /dev/pve/data

image

這樣就把第二顆硬碟新增到Proxmox VE的local空間中。

image

使用lvdisplay指令來看看結果,可以發現/dev/pve/data的空間已經新增到了12.37GiB。

這樣就大功告成囉!同樣的這種做法也可以用在第三顆、第四顆硬碟上面,繼續擴大local的硬碟空間。

將硬碟從LVM中移除 / Remove disk from LVM

既然我們可以新增硬碟到LVM,那一樣可以從LVM中移除硬碟。但是這個步驟就比新增還要複雜很多,細節可以參考鳥哥的縮小LV容量,如果那天我遇到這種情況了再來深入研究吧。


結語:使用LVM的風險 / Conclusion: The risk of LVM

現在Linux在安裝時預設都是以LVM的形式來分割磁碟,所以對大多數的人來說都感覺不到LVM的存在。LVM雖然能夠像上面這樣任意擴充一顆硬碟來增加空間,但是LVM是一種以任意調整容量為目的的檔案系統,安全性、可恢復性則不在考量範圍內。而且LVM預設是用線性模式在寫入資料,一顆硬碟滿了再放下一顆,存取方式無法與RAID相比。簡單來說:

  1. 當LVM裡面其中一顆硬碟毀損時,你得花很多功夫來調整LV,以移除壞掉的硬碟。
  2. 其他作業系統無法讀取以LVM管理的硬碟資料,也無法用Gparted之類的工具來調整硬碟分割。
  3. 結合以上兩點,如果LVM的作業系統毀損、無法開機。除非是用救援模式進入系統,不然不能用外接硬碟的方式讀取LVM的資料。

既然大部分Linux發佈版預設都用LVM,我們應該也無法擺脫LVM壞掉時的風險。因此在使用LVM時,一定要有壞掉之後很難復原的心理準備喔。

(more...)

修復Proxmox VE:第二次安裝時遭遇LVM的問題 / Fix Proxmox VE: Solve unable to create volume group while installing Proxmox VE

布丁布丁吃布丁

修復Proxmox VE:第二次安裝時遭遇LVM的問題 / Fix Proxmox VE: Solve unable to create volume group while installing Proxmox VE

pablo (1)

安裝Proxmox VE的時候,如果事前硬碟上已經有安裝好的Proxmox VE時,再次安裝就會發生「unable to create volume group at /usr/bin/proxinstall line 706」的問題。這個問題必須先移除硬碟上名為「pve」的LVM,然後就可以正常安裝了。


問題狀況 / Problem Description

image

有時候安裝Proxmox VE的時候會遇到「unable to create volume group at /usr/bin/proxinstall line 706」的錯誤訊息,然後安裝就無法繼續下去。

問題原因 / Casues of Problem

造成這個問題的原因是因為原本硬碟上面已經安裝過Proxmox VE。Proxmox VE在安裝時會建立一個名為「pve」的邏輯捲軸管理員LVM。而LVM不能有相同的名字,因此第二次安裝Proxmox VE時,就無法建立相同名字的「pve」,因此造成失敗。

解決方案 / Solution

我們需要一個可以開機的Linux版本Live CD來刪除LVM。

Step 1. 以Live CD開機 / Boot from Live CD

image

我原本是使用Ubuntu 14.04桌面版,但是那個太大了,速度也很慢。我試了幾個Live CD的版本,太小的Live CD並不具備LVM的工具,找到最後是Ubuntu Rescue Remix 12.04版本,ISO大小為233MB,啟動速度很快。

image

將這個ISO燒錄成光碟之後,或是像我這樣用VirtualBox掛載ubuntu-rescue-remix-12-04.iso之後,我們就可以開機進入Live CD。

Step 2. 刪除Volume Group / Remove Volume Group

image

一路enter到最後會是這個畫面。請輸入指令:

sudo vgremove pve –-removemissing

接下來會一一確認是否要刪除Volume Group裡面的Logical volume,總共有swap、root跟data。請一律按「y」確定。

image

接下來確認是否有刪除這個Volume Group。

vgdisplay

如果沒有看到pve,那Volume Group「pve」就刪除完成了。

Step 3. 關機 / Shutdown

image

完成之後輸入關機指令:

sudo halt

在看到「Please remove installation media and close the tray (if any) then press ENTER:」的訊息時,取出光碟,然後按下Enter鍵繼續關機。

Step 4. 重新安裝Proxmox VE / Install Proxmox VE again

2015-06-21_210909

再來重新安裝Proxmox VE的時候就可以順利成功了。

(more...)

Proxmox VE以vmdk作為虛擬機器的硬碟 / Use vmdk format as Virtual Machine's disk in Proxmox VE

布丁布丁吃布丁

Proxmox VE以vmdk作為虛擬機器的硬碟 / Use vmdk format as Virtual Machine's disk in Proxmox VE

pablo

Proxmox VE預設採用qcow2作為虛擬機器的硬碟格式,如果要改用vmdk格式的話,建立虛擬機器時就要調整cache的設定為「Write through」才能讓虛擬機器正常開啟。


用vmdk跑虛擬機器比較好 / It is better to run a Virtual  Machine based on vmdk image disk format

經過多台虛擬機器的架設,我發現以vmdk作為硬碟影像檔格式架設的虛擬機器總是有較好的執行效率與壓縮率,不論是VirtualBox還是Proxmox VE都是如此。

而且qcow2預設不開啟動態配置模式,因此創建影像檔時,檔案大小就會是設定的硬碟大小。例如我建立一顆80GB的硬碟,即使尚未安裝任何作業系統,qcow2硬碟影像檔依然會佔實體硬碟80GB的空間。相較之下,vmdk或是設定了動態配置的vdi格式,一開始的檔案大小通常不會超過10MB,開始安裝作業系統、增加檔案之後,影像檔才會逐漸變大。

image

再考量到現在很多可以直接掛載vmdk的工具,例如WinMount (也可以掛載vdi,但這是一個付費軟體),這樣子要從備份資料中取回需要的資料也很方便。

總而言之,VMware不愧是虛擬技術界的龍頭老大,他們家的vmdk的確是比較好。

Proxmox VE無法開啟vmdk格式虛擬機器的問題 / The error message while start virtual machine based on vmdk

image

我們可以用預設值建立好虛擬機器,而虛擬機器的硬碟是用vmdk格式。但是這時候開啟虛擬機器時,卻會發生類似以下錯誤訊息:

「TASK ERROR: start failed: command '/usr/bin/kvm -id 106 -chardev 'socket,id=qmp,path=/var/run/qemu-server/106.qmp,server,nowait' -mon 'chardev=qmp,mode=control' -vnc unix:/var/run/qemu-server/106.vnc,x509,password -pidfile /var/run/qemu-server/106.pid -daemonize -smbios 'type=1,uuid=eece4916-f5e4-49de-a043-d2e77af96a53' -name test-vmdk -smp '1,sockets=1,cores=1,maxcpus=1' -nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000' -vga cirrus -cpu qemu64 -m 512 -k en-us -cpuunits 1000 -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' -iscsi 'initiator-name=iqn.1993-08.org.debian:01:0a39bcb174' -drive 'if=none,id=drive-ide2,media=cdrom,aio=native' -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' -drive 'file=/var/lib/vz/images/106/vm-106-disk-1.vmdk,if=none,id=drive-ide0,format=vmdk,aio=native,cache=none,detect-zeroes=on' -device 'ide-hd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0,bootindex=100' -netdev 'type=tap,id=net0,ifname=tap106i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown' -device 'e1000,mac=FE:CE:E5:CC:F3:C4,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' -machine 'accel=tcg'' failed: exit code 1」

這是因為在KVM虛擬技術中,預設快取寫入硬碟的方式為「Default (No cache)」,但是vmdk必須使用「Write Through」設定,因此只要調整硬碟快取寫入方式就可以解決這個問題。

建立虛擬機器時調整硬碟設定 / The disk configuration while creating virtual machine

image

建立虛擬機器的時候,在設定硬碟的這一個步驟中可以找到快取寫入的設定。(註:Proxmox VE不同版本在這一部上有很大的不同,這是3.4的版本) 預設是使用「Default (No cache)」,請把他修改成「Write through」即可。

其實上面的Bus/Device改成VIRTIO的話,一般來說效能會更好,因為這是虛擬裝置原生的通道,而非模擬出來的IDE或SATA。

修改既有的虛擬機器 / Revise the disk disk configuration for existed Virtual Machine

image

如果是已經建立完成的虛擬機器,那也可以修改硬碟的相關設定。首先我們先開啟該虛擬機器的硬體頁面(hardware),找到vmdk的那一顆硬碟。

image

選擇該硬碟,按下編輯按鈕(edit)。

image

在這邊修改硬碟設定。讓我們把原本的「Default (No cache)」設定改成「Write through」,然後按下OK。

image

這樣子就能夠正常啟動vmdk囉。

如何在沒有CPU虛擬化技術支援下開啟KVM? / How to run KVM virtual machine without CPU Virtualization Technology?

image

我是在自己電腦上以VirtualBox架設Proxmox VE來測試。在這種情況下,一般來說是不能啟動KVM的。這時候得要在「Options」中關閉「KVM hardware virtualization」選項,然後就能順利開啟。當然,這種情況下只能測試用,不能運作實際的作業系統。

要如何將qcow2轉換成vmdk? / How to convert qcow2 format to vmdk?

image

如果我們虛擬機器已經是以qcow2架設了,那難道就沒辦法使用vmdk的好處嗎?

別擔心,我們可以用qemu-img convert指令可以讓你把qcow2格式轉換成vmdk格式。首先我們要先切換到映像檔所在的目錄,Proxmox VE存放在local的資料夾,路徑為:

/var/lib/vz/images/[VMID]/

如果虛擬機器的VMID為106,則路徑為:

/var/lib/vz/images/106/

qemu-img convert指令用法如下:

$qemu-img convert -f qcow2 –O vmdk vm-106-disk-2.qcow2 vm-106-disk-2.vmdk

  • vm-106-disk-2.qcow2:來源的檔案
  • vm-106-disk-2.vmdk:輸出的檔案
  • -O是大寫的o,不是0

image

硬碟越大,轉換所需要的時間越久。轉換完成之後,可以看到原始的qcow2大小為33GB,而轉換成vmdk之後只剩下4.1MB。這就是vmdk的優勢。

如果要運作虛擬機器的話,要記得在虛擬機器的硬體(hardware)中把硬碟改為轉換後的vmdk那一顆硬碟,並且設定快取寫入為「Write through」,就可以正常開啟囉。確認運作正常之後,原始的qcow2就可以刪除了。


結論:虛擬化技術的相容性 / Conclusion: The Compatibility of VMDK image format

Proxmox VE使用的KVM,以及VirtualBox這兩種虛擬化技術都有提供對vmdk的相容。因此我們不僅可以用Turnkey Linux提供的虛擬應用範本,也能夠在VMware的Virtual Application???找到其他的虛擬應用範本。就算是容器虛擬化技術OpenVZ,也能用一些比較複雜的步驟將虛擬機器轉換成vmdk來輸出(雖然是這樣想,但其實難度跟P2V一樣,並沒有真的如上面用qemu-img轉換來得容易)。如果沒有特別的考量的話,以vmdk架設傳統的虛擬機器應該是不二首選,不過這還是無法跟容器虛擬化的OpenVZ與Docker相比就是了。

(more...)

用OpenVZ安裝Zentyal失敗記錄

用OpenVZ安裝Zentyal失敗記錄

openvz

為了繼續之前提出的DLLL-CIAS第四版架構,我開始試著在Proxmox VE 3.2上用OpenVZ來安裝Zentyal (附帶一提,Proxmox VE本身是以VirtualBox架設的,因此是全部都在虛擬機器下運作)。我以ubuntu-14.04-x86_64.tar.gz為基礎,用apt-get來安裝Zentyal。過程很順利,但問題卻卡在最後的網路上:無法建立具有內網與外網的NAT。我嘗試了很多方法來解決這個問題,但總歸來說,無法建立的原因可歸納為兩個門檻:1. OpenVZ的veth網卡只能連到未公開的虛擬網路;2. OpenVZ的veth與venet之間無法轉遞封包。以下來說明我遇到的這兩個問題。


1. OpenVZ的veth網卡只能連到未公開的虛擬網路

image

在討論這個問題之前,我們必須先釐清OpenVZ的兩種網路模式:venet跟veth。下表是veth跟venet的差異比較:

veth跟venet的差異
Feature
特徵
veth venet
可使用的虛擬機器類型 OpenVZ
KVM
OpenVZ
可透過網頁管理
直接配置網路IP
No Yes
MAC address
網卡位置
Yes No
Broadcasts inside CT
封包會在虛擬機器間廣播
Yes No
Traffic sniffing
封包攔截
Yes No
Network security
網路安全
Low High
Can be used in bridges
可否用於橋接器
Yes No
IPv6 ready
可否使用IPv6
Yes Yes
Performance
效能
Fast Fastest

OpenVZ預設使用的是venet (Virtual NETwork),可以直接給定IP,速度非常快。但是venet沒有MAC位址,使用上較為受限,可能不適合作為Zentyal的網路。因此這次我選擇使用veth (Virtual ETHernet)來架設,veth是用模擬真實的網卡的方式,可給虛擬機器安裝如「eth0」的虛擬網卡,因此配置上會比較貼近我們真實使用情境下安裝Zentyal的模式。

我原本是這樣想,但很遺憾的是,veth並沒有照我想的去運作。建立的veth網卡只能在虛擬機器之前彼此連線,但是卻無法連上網際網路。

用KVM的方式新增veth:失敗

我是以Ubuntu 14.04來建立虛擬機器(又稱為container),一開始是用類似KVM的方式來新增網卡,但沒有成功。大致上步驟如下:

  1. 將虛擬機器關機。
  2. 新增veth網卡,Bridge設為vmbr0 (預設),其他參數、包括MAC位址,全由Proxmox VE自動指定。
  3. 虛擬機器開機。
  4. 在console端進入虛擬機器的指令列,設定網路。 (因為網路尚未設定好,所以沒辦法用SSH連入)
    以下都是虛擬機器 (container) 中的操作。
  5. /etc/network/interfaces中設定eth0:
    auto eth0
    iface eth0 inet static
            address 192.168.11.118
            netmask 255.255.255.0
            gateway 192.168.11.99
  6. 重新啟動網路:
    [container]# /etc/init.d/networking restart
  7. 使用ifconfig,確認eth0有正常啟動
  8. 使用ping,無法連到網際網路。
參考OpenVZ的veth說明來設定:失敗

由於用KVM設定veth的方法失敗了,所以我改找OpenVZ官方網站的veth說明來操作。該網頁介紹了很多方法,從簡單的設定使用IPv4的直接路由使用IPv6的直接路由、或是建立橋接器(brdige)等等。我按照上面的指示操作,但大部分都失敗了。

在OpenVZ的介紹中有幾個動作是之前沒有做過的:

  • 確保vzethdev載入:
    modprobe vzethdev
  • 開啟網路卡的forwarding跟proxy_arp

    [host-node]# ifconfig veth101.0 0
    [host-node]# echo 1 > /proc/sys/net/ipv4/conf/veth101.0/forwarding
    [host-node]# echo 1 > /proc/sys/net/ipv4/conf/veth101.0/proxy_arp
    [host-node]# echo 1 > /proc/sys/net/ipv4/conf/eth0/forwarding
    [host-node]# echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp

其他設定網卡的方法大致上類似。但是很遺憾的是,這些設定依然是無法讓veth網卡連線到網際網路。

奇妙的是,網路上許多人在OpenVZ中使用veth看起來都很順利,可是我自己使用OpenVZ從以前到現在就沒有veth順利連線的印象,這究竟是怎麼會是呢?如果有高手看到我這篇的話,希望能夠在下面留言欄為我解惑解惑。


2. OpenVZ的veth與venet之間無法轉遞封包

由於veth未能照預期的形式運作,所以我改轉用venet來設定網卡。

Zentyal只能抓到venet一張網卡

image

儘管虛擬機器可以設定兩個venet的IP,各別配置對外網路用的IP: 192.168.11.117跟對內網路用的IP: 10.0.0.254,但結果會如上圖所示,Zentyal只能抓到一個venet網卡。

這是因為venet網卡只有venet0,兩個IP是用虛擬網路卡的方式模擬出來的。我們可以用ifconfig來觀察虛擬機器的設定:

image

[container]# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:200 errors:0 dropped:0 overruns:0 frame:0
          TX packets:200 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:10000 (10.0 KB)  TX bytes:10000 (10.0 KB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:127.0.0.2  P-t-P:127.0.0.2  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:35 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:4480 (4.4 KB)  TX bytes:6905 (6.9 KB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:192.168.11.117  P-t-P:192.168.11.117  Bcast:192.168.11.117  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

venet0:1  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.0.0.254  P-t-P:10.0.0.254  Bcast:10.0.0.254  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

 

Zentyal設定邏輯中對外網路與對內網路有相當大的差異,若使用venet會導致Zentyal無法判斷那一張網卡是對外網路(External, WAN)還是對內網路,因此並不是一個可行的方案。

venet可連上網際網路,但無法架設NAT

即使如此,若使用venet的兩個IP來設定,對內網路依然連得到對內網路的虛擬機器、對外網路則可以讓網際網路的電腦來連線。不過光是這樣依然無法做成NAT的網路架構。

一般使用情境下,只要在Zentyal當中設定好對外網路與對內網路的網卡,Zentyal就會自動設定成NAT。若是不仰賴套裝軟體,也可以用iptables來實作NAT。我參考Ubuntu Server 12.04 LTS 設定 iptables 實現 NAT Server這篇的做法來做,關鍵的設定是在設定 IP Forwarding and Masquerading:
iptables --table nat --append POSTROUTING --out-interface venet0:0 -j MASQUERADE
iptables --append FORWARD --in-interface venet0:1 -j ACCEPT

但是很遺憾的是,依然無法成功。然後我試著用veth來作為內部網路的網卡,結果反而連venet都無法連線。我猜是因為Zentyal會蓋掉Proxmox對虛擬機器的網路設定,兩者導致了衝突。


結論:應該使用KVM來架設Zentyal

直到剛剛我都還在嘗試各種設定,但是總是該設一個期限。當我把這篇失敗的記錄寫完之後,我想也差不多該終止以OpenVZ架設Zentyal的研究,而回歸到原本使用KVM架設的規劃

想來還是有點不甘心,以OpenVZ架設的Zentyal壓縮後的備份檔案大小只有800MB不到,而且啟動速度又快。回去使用KVM的話,虛擬網卡會有網路轉換的額外負荷,只能說是「可以用」但稱不上是「很有效率」。只是因為伺服器虛擬化之後管理起來比較方便而已。

好吧,雖然不是一篇成功的研究,不過總是該打起精神,這條路就先到此為止吧。

(more...)

Proxmox VE增加第二顆硬碟 / Add Another Hard Disk in Proxmox VE

布丁布丁吃布丁

Proxmox VE增加第二顆硬碟 / Add Another Hard Disk in Proxmox VE

image

Proxmox VE預設安裝時只會使用一顆硬碟,不過我們也可以手動把其他顆硬碟加入到Proxmox VE中,加大可使用的空間。

This article show you how to add another hard disk as Proxmox VE's storage.


操作環境 / Proxmox VE Environment

本文章是以Proxmox VE 3.2為例子。

不過這個Proxmox VE實際上是架設在VirtualBox之中,方便我練習。

2014-10-14_170247 - Copy

我先安裝了一台Proxmox VE。關於安裝方法,請參考我之前寫的安裝教學。然後我再為這台Proxmox VE加上了一顆80GB的SATA硬碟,以擴充這台Proxmox VE的可用空間。

注意硬碟的類型,此例中用的是SATA,這會影響接下來要加入硬碟時所需要指定的裝置路徑。

準備好了話,我們就要來開始安裝第二顆硬碟囉。


安裝第二顆硬碟 / Install Anothor Hard Disk

STEP 1. 進入Shell / Enter Proxmox VE’s Shell

2014-10-15_002034

以下操作我們都得用指令列,以root的身份來進行。一般教學會用SSH或在本機端操作,還好Proxmox VE還提供了方便的功能,可以讓我們用Shell直接以root身份進入伺服器指令列端操作。

2014-10-15_002204 - Copy

Shell是透過Java Applet來使用,因此通常它會先問一些安全性問題。這時候直接按下Continue即可。

image

進來指令列端了,開始進行接下來的操作吧。

STEP 2. 確認磁碟路徑 / Finding Hard Disc’s Device Path

這一步是Linux基本操作,操作指令細節可以查看鳥哥的Linux磁碟與檔案系統管理,以下我僅列出主要操作步驟。

首先,我們要先確定要新增加的硬碟的路徑。簡單地方法可以用ls指令來確認,這是SATA硬碟的確認方法:

root@proxmox:~# ls /dev/sd*

如果安裝的硬碟是IDE (PATA)類型,那路徑一般是以/dev/hd*開頭,查詢方式為:

root@proxmox:~# ls /dev/hd*

2014-10-15_004309

上圖是查詢結果。你可以注意到只有/dev/sdb後面沒有接數字。這表示這顆磁碟尚未被分割,也就是我們剛剛加入的新硬碟。

STEP 3. 磁碟分割 / Create Hard Disk Partition

接下來我們要用fdisk來把該硬碟分割成可以用的磁區。/dev/sdb請替換成你硬碟的路徑。

root@proxmox:~# fdisk /dev/sdb

然後會進入fdisk操作界面,以下我只列出需要輸入的操作,大多動作都是使用預設值,直接按下enter跳過即可:
Command (m for help): n
Select (default p): (直接按下enter)
Partition number (1-4, default 1): (直接按下enter)
First sector (2048-167772159, default 2048): (直接按下enter)
Last sector, +sectors or +size{K,M,G} (2048-167772159, default 167772159): (直接按下enter)
Command (m for help): w

2014-10-14_195250

上面訊息中sector會隨著你的硬碟大小而改變,直接採用預設值按下enter就可以不用理會囉。

分割完成之後的路徑就是 /dev/sdb1。

STEP 4. 硬碟格式化 / Format Partition

Proxmox VE使用的硬碟格式是ext3,在此我們也使用mkfs來把硬碟分割格式化為ext3格式。以下路徑請使用剛剛分割完磁碟之後的磁碟分割路徑:

root@proxmox:~# mkfs -t ext3 /dev/sdb1

2014-10-14_195628

格式化需要花點時間,中間沒有任何要操作的動作,請耐心等待回到指令列即可。

沒有什麼特別要確認的訊息,這樣就格式化完了。

STEP 5. 掛載磁碟 / Mount Hard Disk

Linux的硬碟要掛載之後才能使用,首先我們先建立掛載路徑的目錄。在此我直接用磁碟分割的編號 sdb1 來做為路徑名稱:

root@proxmox-01:~# mkdir -p /mnt/sdb1

然後把開機掛載訊息寫入/etc/fstab:

root@proxmox-01:~# echo /dev/sdb1 /mnt/sdb1 ext3 defaults 1 2 >> /etc/fstab

(此處有變更過,原本的做法會導致無法在開機時自動啟用虛擬機器,參考了鳥哥的fstab說明之後更正)

接著用reboot指令重開機:

root@proxmox-01:~# reboot

用df指令確認是否有掛載上去:

root@proxmox-01:~# df /mnt/sdb1

2014-10-15_010812

有看到/mnt/sdb1就表示成功了。

STEP 6. 建立Proxmox VE的Storage / Create Storage in Proxmox VE

接下來我們回到Proxmox VE的網頁管理界面操作。

 2014-10-15_011033

先到「Datacenter」,進入「Storage」,然後「Add」增加「Directory」磁碟目錄。

2014-10-15_011210

填入以下資訊,磁碟編號跟路徑則是要參考上面設定的結果:

  • ID: sdb1
  • Directory: /mnt/sdb1
  • Content: Images, ISO, Templates, Backups, Containers (全部選擇)
  • Nodes: proxmox-01 (只選擇你安裝硬碟的Proxmox VE節點)

按下Add。

2014-10-15_011450

proxmox-01節點下就會多出一個新的Storage「sdb1」,未來在建立虛擬機器、備份、下載虛擬應用範本時,就可以使用這顆新加入的硬碟囉。

 

雖然這方法很簡單,但寫著寫著赫然發現步驟挺複雜的。難得有機會整理一下供大家參考也好啦。

(more...)