第 186 期 程式語言延伸模組管理系統─自由軟體鑄造場電子報─智邦公益電子報
enews.url.com.tw · February 07,2012[技術專欄] NPM - Node Package Manager
xpsteven / 文
簡介
npm (Node Package Manager) 是 Node.js 下的主流套件管理程式。因為 javascript 易開發的特性,Node.js 的套件數量龐大,目前有 4,468 個套件發佈登記在 npm 的資料庫中。透過 npm 可以協助開發者安裝與移除 Node.js 套件,並發佈自己開發的套件。[技術專欄] RubyGems─管理你的紅寶石
林健欣 / 文
前言
RubyGems 是 Ruby 社群最常使用的套件管理系統,如同 Perl 的 CPAN 或 Python 的 EasyInstall / pip,使用者可以很簡易地安裝及管理套件。與其它的套件管理系統一樣,RubyGems 也有版本與相依性管理。
RubyGems 大致可以分為兩個部份。一個是 gem 命令,另一個則是在 runtime 中管理可用的 gems 與其版本。在這篇淺談中,將不會介紹所有的功能與選項,使用者請自行參閱 gem help
。
[技術專欄] CPAN - Comprehensive Perl Archive Network
BlueT / Matthew Lien / 練喆明 / 文
簡介
CPAN - Comprehensive Perl Archive Network 的中文名稱為「Perl 綜合典藏網」,是各種程式語言線上典藏網的始祖,在它之後許多語言也複製類似的模式,比如 R 語言的 CRAN、Tex 語言 CTAN、Python 語言的 PyPI 與 PHP 語言的 PEAR 等。
CPAN 網站自從 1995 年十月上線以來,已經累積了 101,232 個 Perl 模組,共 23,715 個套件,9330 個作者,在全世界有 269 個鏡像伺服器,而且這些數字還在迅速累加。幾乎開發者需要的所有功能在 CPAN 網站上都能找得到實作,而且因為 Perl 程式語言秉持 TMTOWTDI (There's More Than One Way To Do It) 的哲學,針對不同特性強化的實作往往不只一個,讓開發者與使用者可以選擇最適合自己的模組。
CPAN 的使用分成兩個部份:CPAN 網站,以及使用者本機電腦上的工具程式。
- CPAN 網站:線上列表、查詢模組和各種相關資訊,甚至有線上一鍵安裝的功能,以及針對不同需求發展的介面,例如:
- 經典站:CPAN.org
- 搜尋網站:Search.CPAN.org
- 類似 Google 介面:MetaCPAN.org
- 工具指令程式:本機端的工具指令程式,可以自動化查詢與安裝模組。大部分為文字介面,但也有開發圖形化介面的工具。
- 經典老工具:
cpan
: 通常只要裝了 Perl 就會附上這個最傳統的工具。
- 強大的 CPANPLUS
cpanp
: 自 2007 年開始加入預載的強大 CPAN 工具。
- 方便好用的 cpanminus
cpanm
: 新的工具,資源消耗量少,不需繁雜的設定,極為推薦。
- ActiveState 公司的 perl package manager
ppm
: 專有工具,不支援某些模組。
- 經典老工具:
[技術專欄] Python 套件管理程式簡介
林錦賜 (pct) / 文
前言
對任何作業系統以及程式語言而言,管理「擴充套件」是非常重要的一環。有了擴充套件,可以更容易地操作電腦,程式設計師寫程式也變得更輕鬆。
您也許聽過「不要重造輪子」這句話,或是 DRY (Don't Repeat Yourself),講得就是「別人已經寫好的東西,就拿去用吧,不用自己再重新寫一套」。
本次介紹的 easy_install
以及 pip
,正是 Python 程式語言的套件管理程式,讓您可以直接使用前人的心血結晶。
以下敘述的指令,以 # 開頭的,請用 root 權限;以 $ 開頭的,使用一般使用者權限即可。
[技術專欄] PHP extension management tools - Pecl and Pear
黃崇閔 / 文
簡介
PHP 從 1995 年發展至今已有十多年的歷史。因為學習門檻低,許多人在摸索一段時間後即可快速上手,PHP 就成為許多人第一次接觸 web base 程式設計時所使用的程式語言。隨著網路興起,越來越多程式語言加入 web base 的開發行列。其中,JAVA 程式語言因為擁有豐富的 API 可以直接套用在 JSP 及 Servlet 中,讓已經熟悉開發 JAVA 應用程式的程式設計師可以無痛轉移到 web base 的開發行列。而使用 Asp.Net 的開發者,也可以結合 C# 及 VB 等程式語言直接進行 web base 開發。
面對其他程式語言的競爭,PHP 陣營提供了許多套件供開發者直接使用,Pear (PHP Extension and Application Repository) 的作者 Stig S. Bakken 於 1999 年底推出 Pear,目的是讓 PHP 的開發者能重複利用相同功能的元件,有效減少開發過程中繁雜的工作內容,進而達到事半功倍的效果。從 Pear 問世至今,除了 Pear 這套函式庫外,也發展了許多其他的函式庫,例如 CodeIgniter 及 Zend Framework 等。這些工具除了讓 PHP 開發者擁有多元的選擇性外,每個套件也各有其愛好者。
除了 Pear 外,還有 Pecl 的 PHP 擴展模組方式。兩者的不同之處在於,Pear 是純粹用 PHP 程式語言撰寫的擴展模組,而 Pecl 則是用 C 或 C++ 程式語言撰寫的。
[源碼快訊] Open Source Apps on Mobile 國際研討會-以開源軟體打造行動生活
OSSF/編述
行動裝置與雲端服務近年快速成長,除了在使用上走入大型的商業服務,並漸漸成為多數人日常生活不可或缺的重要元素!而許多走在時代尖端的大專院校與公司組織,也搭上此波風潮、開始採用各類雲端式的資訊處理平台,同步搭配行動裝置來進行機構的資訊同步與更新,以替代與簡化傳統的行政紙本作業程序,加速組織內的資訊分享,並活絡資訊傳遞的效率與速度。有鑑於此、自由軟體鑄造場基於推廣自由開源軟體技術與媒介國際資訊趨勢的立場,將於 12 月 28、29 日,與國家高速網路與計算中心、軟體自由協會,假中研院人文社會館 102 會議室與國研院國家高速網路與計算中心 104 階梯教室,共同舉辦跨台北與新竹地界的 Open Source Apps on Mobile 國際研討會。
本次活動邀請到 Kurogo 校園資訊系統主要開發者與 Modo Labs 創辦人 Andrew Yu 先生來台,為參與者說明 Kurogo 的技術框架,並分享經驗說明其如何將此原生自美國麻省理工學院的校園專案,轉植到許多美國東岸如哈佛大學等知名院校的行動校園網,由於機會難得、所以同步在 28 號與 29 號的新竹場皆安排了相關議程;而在 28 號台北場的下午,更加碼邀集了三位國內對於行動裝置應用程式有實務開發與推展經歷的專家,透過本次的活動將其在行動裝置軟體應用方面的寶貴經驗分享給與會的大家。預計活動的參與者,將可以第一手面對面的學習到如何善用自由開源軟體的既成工具與框架,快速地建置自己想要的行動裝置應用程式,並繼以開發自己心目中期待的 SaaS 與 PaaS 雲端式解決方案,而大專院校或中大型企業的資訊系統建置人員,更可以吸收到麻省理工學院校內資訊服務系統的建設原理,並據以調整改善手上承接的服務性資訊平台!
歡迎各界有興趣的朋友踴躍報名、共襄盛舉!
Open Source Apps on Mobile 國際研討會台北場
◎ 活動時間:2011 年 12 月 28 日(三)上午 09:00 ~ 16:20◎ 活動地點:中央研究院 人文社會科學館 第二會議室:http://www.openfoundry.org/tw/activities/venueevents/29-2nd-Conference-Room-HSS
◎ 主辦單位:中研院 資創中心 自由軟體鑄造場、國家高速網路與計算中心、軟體自由協會
◎ 協辦單位:Modo Labs、智新資通
◎ 媒體夥伴:破週報
◎ 活動網頁:http://www.openfoundry.org/tw/activities/details/240-open-source-apps-on-mobile
Open Source Apps on Mobile 國際研討會新竹場
◎ 活動時間:2011 年 12 月 29 日(四)上午 09:00 ~ 12:00
◎ 活動地點:國家高速網路與計算中心 104 階梯教室:http://www.nchc.org.tw/tw/about/traffic/index.php
◎ 主辦單位:中研院 資創中心 自由軟體鑄造場、國家高速網路與計算中心、軟體自由協會
◎ 協辦單位:Modo Labs、智新資通
◎ 媒體夥伴:破週報
◎ 活動網頁:http://www.openfoundry.org/tw/activities/details/255-apps-shin
[源碼快訊] WAUS 軟體創作研討會 邀你看論文也看軟體實作
OSSF 工作團隊/編述
WAUS 軟體創作研討會的全稱為「Workshop on Advanced and Usable Software」,這是一個兼顧軟體創作性與實用性的技術分享研討會,將於本月份 23 號假大同大學尚志教育館 106 室,舉辦為期一天的論文發表與軟體展示活動。有鑑於國內資通訊領域裡,多重於硬體生產而疏於軟體創作,導致許多大專院校在軟體教學上,常過於偏向理論架構,而輕忽程式寫作,故本次的 WAUS 研討會特別徵求不論在學術創作上、軟體應用上,皆具一定成熟度及可利用性的軟體專案,透過 WAUS 創作研討會這個活動來推廣這些專案的開發創意與技術內容,以表彰其軟體專案的創作性與實用性,並進而提升國內資通訊領域的軟體程式實作風氣。
本研討會即日起開放免費註冊報名,對全天的參與者亦將提供午餐便當。而研討會發表的所有內容,皆將同時具有論文報告與軟體專案的產出,並將在活動當天由作者現場進行實機操作與技術說明,歡迎各界對研討會內容有興趣的朋友,可以踴躍報名、共襄盛舉!
- 活動時間:2011 年 12 月 23 日(五)上午 09:00 ~ 16:30
- 活動地點:大同大學尚志教育館 106 室
- 活動網頁:http://sites.google.com/site/waus2011/registration
- 議程連結:http://sites.google.com/site/waus2011/program
[技術專欄] 麥克阿忠的 Ruby on Rails 實務─熟悉 MVC
麥克阿忠 / 文
前言
相信讀者在前篇文章依照內容操作一遍後,對於 CRUD 的應用邏輯與設計,以及 RoR 的架構都有了些許認識。只要多加實做,將會覺得 Rails 開發的作業時間短得不可思議。
Ruby on Rails 是一套架構很完善的 MVC Framework,這樣的開發架構可有效分隔出程式模組之間共同的資料傳遞方式,以及階層的物件概念,讓開發專案能以共同的標準鑄造程式碼,未來也讓開發員在進行維護與修正程式時容易閱讀。
什麼是 MVC
MVC 是一個軟體工程概念,意指 Model(模型)、View(檢視)、Controller(控制器)三個基本區塊。
▲ 圖1:MVC 架構的概觀(圖片來源:http://upload.wikimedia.org/wikipedia/commons/f/f0/ModelViewControllerDiagramZh.png)
- Model
資料模型,針對資料傳遞的邏輯方法與接受資料的操作處理方式。簡單說來是對於資料庫中的資料進行初始化,並等待接受其它區塊的指派再進行資料的處分。
- View
檢視,與使用者介面互動的區塊,有些框架會將程式碼與 HTML 混雜,一方面需要靠迴圈列印出資料,一方面需要依功能、操作性產生表單等等的界面。
- Controller
控制器,控制某段程式碼的流程運作。控制器會針對各種要求進行事件的傳遞或是處理方法,去向Model連結資料,再將結果傳遞至View。
為什麼要用 MVC
MVC 架構可運用於大型的多人開發專案,讓開發中人員能專精某個區塊,例如不需要顯示畫面的程式碼,只要在 Model 中撰寫即可。專精網頁 UI 的開發者可在 View 修改頁面,適合安全性內部的相關處理即可在 Controller 定義相關的程式碼。區塊的分隔讓開發員彼此間不會受到檔案被編修的干擾。
Rails MVC 的架構原理
第一篇文章中筆者提過 Rails 的 MVC 實際架構,在這裡重述一次加深讀者對此架構的印象。
▲ 圖2:Ruby on Rails MVC 架構與運作流程
- Route.rb 的應用方法詳解
圖 2 為流程示意圖。當使用者發出 Request 時,程式開始處理事件觸發的運作,從網址列的 Request 發送至 Routing 關卡,再由 Route.rb 的查表方式指定至某個 Action Controller。
例如在上篇的範例中網址為 http://localhost:3001/phone/index,則在 route.rb 裡頭就會有一行 get "phone/index" 的路由設定。
因此 RoR 就會到 app/controller/phone_controller.rb 程式碼中定義的 index 程式碼區塊執行指令。
如下圖 3 與圖 4 的範例:
▲ 圖3:route.rb 的設定
▲ 圖4:action controller 所定義的 actions
由於現階段 Web 應用的 app 已被廣泛使用,再加上 Window form 的桌面程式設計入門困難,且有系統平台相容性的問題,因此許多 web 應用框架會在網址列加入 route 的功能應用,一方面為求 SEO,另一方面也是避免安全性的問題。未來傳統的網址參數傳遞方式將會式微。
該如何有效的運用 Route 功能?
RoR 在 Route 操作上實踐了 RESTful 的理論,因此在 CRUD 流程中可以依照慣例自動定義 URI 發出 Request 的動詞。這些動詞出自於將 POST、GET、PUT、DELETE 對應到資料的新增、讀取、更新、刪除四項操作。將 HTTP 動詞納入考慮後,我們再參考圖 3 所定義的 route 如下:
POST /phones 對應到 Controller 中的 create action
GET /phones/1 對應到 Controller 中的 show action
PUT /phones/1 對應到 Controller 中的 update action
DELETE /phones/1 對應到 Controller 中的 destroy action
按照慣例,你的 coltroller 名稱本來是單數的 phone,要轉化成 RESTful,最好的方式是變成複數 phones 來命名。若讀者已經按照前篇的範例實作,請砍掉重練。
在 route.rb 加上這一行程式碼:
resources :phones
這個 route 就會定義出以下七個 Action:
get '/phones' => "phones#index", :as => "phones"
post '/phones' => "phones#create", :as => "phones"
get '/phones/:id' => "phones#show", :as => "phone"
put '/phones/:id' => "phones#update", :as => "phone"
delete '/phones/:id' => "phones#destroy", :as => "phone"
get '/phones/new' => "phones#new", :as => "new_phone"
get '/phones/:id/edit' => "phones#edit", :as => "edit_phone"
這七個路由可以先移除,只留下 resources:phone,就會發現這些定義非常方便實用。這七個 Action 方法的方法名稱,是 Rails 本身定義好的,無法修改,你可以這樣記:
show、new、edit、update、destroy 是單數,對單一筆資料操作
index、create 是複數,對群體資料操作
event_path(@phone) 需要參數,根據 HTTP 動作判定 show、update、destroy
events_path 不需參數,依照 HTTP 動作判定 index、create
而用了 RESTful 之後,其影響是表單所使用的 form_for、link_to 與 redirect_to 會修改成如下:
phone_path(@phone), :method => :put do |f| %>
並且只需記得 resources 就能寫出 URL Helper,
[custom route]_phone[s]_path( phone ), :method => GET | POST | PUT | DELETE
可以不必再寫成如下的手動路由指定方式,
link_to phone.name, :controller => 'phones', :action => :show , :id =>phone.id
實際上 Routing 不是 MVC 一定會用到的技術,但 RoR 是個 Web framework,所以路由在此就會變得比較重要,本篇的重點是在 RoR 的 MVC 架構下說明,因此 Routing 就必須納入說明。
Model 模組
在撰寫程式的過程中,有經驗的工程師會將重複利用的程式碼另外封裝成模組,好讓程式在運作時直接以一行流的方式跑完十行的程式碼。
而在 RoR 中的 Model 大都是連結資料庫,並且在服務開始之後就會初始化資料表,將每個欄位載入成物件操作或是方法,因此在 phone 的範例中,可以在 app/model/pbook.rb 看到這個檔案,若沒有任何相關的特別設定,它通常會保留空白,然後就可以用 Phone.find(id) 的操作以 puts Phone.name 的方法把姓名印出。
通常在 RoR 中的 ActiveRecord 區塊就是 Model 的應用類別。
▲ 圖5:如果沒有特別的資料表關聯設定一般說來都保持這兩行的狀態
▲ 圖6:若在資料表之間有關聯的狀況,或是需要轉換常數與變數的的程序,大多會在這裡設定
所以如圖 5 與圖 6 的慣例,程式設計師若對於資料庫的關聯很專精,就會在這個區塊撰寫與資料表處理、關聯相關的程式碼。
- View 檢視
大部分的 web 應用程式一定會有一套完整的 UI 以供使用者操作,包含能控制鍵盤、滑鼠、螢幕繪製的項目。在 RoR 中,View 的區塊相當常見,而控制 View 相關畫面呈現的是靠 Action Controller 接受 Route 參數再繪製出 View。
另外,在其它篇被忽略的 Layout 是 RoR 中利用 View 的方式,以 ActionName.html.erb 帶入至 app/views/layouts/application.html.erb,並以 繪製出完整的畫面。
▲ 圖7:RoR 輸出頁面的關係
在 app/views/layouts/application.html.erb 之中即有完整的 標籤,所以重視美工外觀的 HTML 設計人員就可以從這裡編修網頁美工,而圖片的路徑一律放在 /public/images,再使用 images_tag() 的內建函數產生連結圖片的標籤。
一般說來,這樣的關係是利用 Partial(局部樣板)的觀念拼湊出一張網頁,所以如果是一系列統一的網頁版型,通常只要修改 application.html.erb 檔案即可。
下圖範例中,資料都在 "body" 與 "/body" 之間變化,只要用 yield 這個內建的函數即可讓程式共用這一型的版面。
▲ 圖8:application.html.erb 完整的 HTML 範例
如果還想在每一頁網頁的版頭放置登入狀態的功能,你可以在 application.html.erb 使用 "common/PartName" %>,那麼所建立的檔案名稱路目錄就在 app/views/common/_partName.html.erb,若有很多局部樣板需要共用的話,那麼未來這個 application.html.erb 大概就會長成下圖。
▲ 圖9:整個樣板 application.html.erb 套入多個局部樣板的程式碼
- Controller 控制器
RoR 的 Controller 扮演最重要的角色。它一方面接受由 Route 分析出來的路由,以決定哪個控制器該被執行,讓控制器執行某個動作,也就是在 app/controller 中 AppName_controller.rb 被定義的 Method。另一方面 Controller 也要和 Model 傳遞資料,以及跟 Views 處理輸出,看起來它相當忙啊。
有時一個專案在 app/controller/ 不一定只有一個控制器,所以就要在路由個別為它設定導引的描述。如下圖,
▲ 圖10:多個控制器的 RoR 專案
▲ 圖11:RoR 定義的 Actions
不過這個 Controller 的運作方式還是必須搭配 Route 一起說明,因此在這一段還是拿 Route 來補充。
如何知道該執行哪個控制器跟動作?如果網址如下:
http://localhost/shopping/computer/info/12333
那麼在 RoR 裡程式流程如下:
- 選擇 app/controller/Shopping_controller.rb 的控制器。
- 執行 Shopping_controller.rb 裡已定義 info 的動作。
- 由 info 所設計的程式碼,並將 id:12333,向 app/model/computers.rb 取出資料庫名為 computers 資料表中的資料。
- 將資料初始化之後由 Shopping_controller.rb 中的 info 動作,把 12333 的資料傳遞至 app/views/shopping/info.html.erb。
- 最後該控制器會把 info.html.erb 產生的結果整入至樣板 app/views/layouts/applications.html.erb 以完成整個網頁的輸出。
若要做出「將商品放入購物車」,網址大致如下:
http://localhost/shopping/cart/12333
結帳之後會是:
http://localhost/shopping/checkout
所以在 shopping_controller.rb 裡就會定義 cart 跟 checkout 的動作。而在 views 裡就會有 cart.html.erb 跟 checkout.html.erb 的局部頁面。
以上 RoR 的 MVC 就介紹到此,相信經過這樣有條理的說明,讀者們可以更加明暸它們之間的運作關係,也更容易導入設計專案時所相關連的檔案路徑,讓開發RoR的歷程不再困難重重。
作者簡介
麥克阿忠,資深網站程式開發者,興趣是攝影。目前擔任 Ruby on Rails 網站開發員,主要使用 Ubuntu Server 進行 Web 應用程式開發。
作者部落格 http://about.me/MichaelChen520
歡迎對 Ruby 有興趣的同好前來交流指教。
[技術專欄] 利用 FreeNAS 打造儲存設備 (7)─Failover(故障轉移)
Weithenn ( http://www.weithenn.org/ ) / 文
利用 FreeNAS 打造儲存設備 (7)─Failover(故障轉移)
前言
本文將實作建立 lagg 虛擬網路介面,以達到 FreeNAS 主機網路發生故障時的轉移功能,並且分別解說由 Console 或由 GUI 圖形介面進行的修改方式,設定完成後會進行 Lagg 故障轉移機制測試。
實作環境
- 作業系統:FreeNAS-8.0.2-RELEASE(32 位元版本)
- 網路卡:em0、em1
- 區域網路 IP 網段:10.10.75.0 / 255.255.255.0
- Default Gateway:10.10.75.254
Lagg 虛擬網路卡
Lagg 是將 FreeNAS 主機上多片實體網路卡群組之後所產生的一片虛擬網路卡,它可以讓實體網路卡具備故障轉移 (Failover),以及頻寬合併 (LACP、FEC) 或流量均衡負載 (Loadbalance, Round-robin) 的能力,若設定為 None 模式則會禁止任何網路流量,但不會禁止 lagg 介面的建立。
Console 設定 Lagg 故障轉移功能
要設定 FreeNAS 主機 Lagg 故障轉移功能以前,請先將網卡上的網路線拔除,以避免主機一開機就尋找區網內 DHCP Server 干擾設定。Console 介面手動設定固定 IP 位址的步驟如下:
01. 輸入「2」進入「Configure Link Aggregation」:設定 Lagg 故障轉移功能
- Select a lagg protocol (q to quit):顯示 Lagg 故障轉移功能支援的六種模式(failover, fec, lacp, loadbalance, roundrobin, none),輸入「1」選擇「failover」機制。
- Select an interface (q to quit):顯示於開機流程中偵測到的網路卡清單,請選擇要加入 Lagg 功能的實體網路卡編號,此例輸入「1」先選擇「em0」網卡,再次選擇「1」選擇「em1」網卡,選取二片網卡後輸入「q」離開。
- 回到 Console 畫面後,選擇「10」重新啟動 FreeNAS 主機。
02. 輸入「1」 進入「Configure Network Interfaces」:設定網卡 IP 位址
- Select an interface (q to quit):請選擇要設定固定 IP 位址的實體網路卡編號,輸入「1」選擇剛才建立的「lagg0」網路卡。
- Delete existing config? (y/n):是否要刪除已經存在的 IP 位址設定內容,輸入「n」表示 No。
- Configure Interface for DHCP? (y/n):是否要啟用此網路卡的 DHCP Client 功能,輸入「n」表示 No。
- Configure IPv4? (y/n):是否要設定此網路卡的 IPv4 位址資訊,輸入「y」表示 Yes。
- Interface name [lagg0]:您可以輸入此網路卡的別名,若直接按下 Enter 則套用網路卡編號 lagg0。
- IPv4 Address:請輸入 IPv4 位址格式,其中網路遮罩設定支援 Subnet mask 表示方式 255.255.255.0 以及 CIDR 表示方式 /24,輸入「10.10.75.10/24」設定固定 IP 位址。
- Configure IPv6? (y/n):是否要設定此網路卡的 IPv6 位址資訊,輸入「n」表示 No。
- Restarting network ok:設定完成後 FreeNAS 會重新啟動網路服務,並回到 Console 畫面。
03. 輸入「4」進入「Configure Default Route」:設定主機預設閘道 IP 位址
- Configure IPv4 Default Route? (y/n):是否設定 IPv4 預設閘道資訊,輸入「y」表示 Yes。
- IPv4 Default Route:請輸入區域網路中預設閘道的 IP 位址,輸入「10.10.75.254」。
- Configure Ipv6 Default Route? (y/n):是否設定 Ipv6 預設閘道資訊,輸入「n」表示 No。
- Restarting routing ok:設定完成後 FreeNAS 會重新啟動路由服務,並回到 Console 畫面。
04. 輸入「6」進入「Configure DNS」:設定主機使用名稱解析伺服器 IP 位址
- DNS Domain [local]:請輸入主機的網域名稱(DNS 尾碼),此例輸入「weithenn.org」。
- DNS Nameserver 1:請輸入主機使用的第一台 DNS 名稱解析伺服器 IP 位址,輸入「8.8.8.8」。
- DNS Nameserver 2:請輸入主機使用的第二台 DNS 名稱解析伺服器 IP 位址,輸入「168.95.1.1」。
- DNS Nameserver 3:請輸入主機使用的第三台 DNS 名稱解析伺服器 IP 位址,輸入「168.95.192.1」。
- Reloading network config ok:設定完成後 FreeNAS 會重新載入網路設定,並回到 Console 畫面。
05. 輸入「10」進入「Reboot」選項重新啟動主機
- Confirm reboot (y/n):是否確定要重新啟動主機,輸入「y」表示 Yes。
06.重新啟動主機的同時,請將主機網路卡 (em0、em1) 與網路交換器之間的網路線插上。
▲ 圖1:建立 Lagg 虛擬網路介面
▲ 圖2:設定固定 IP 位址至 Lagg 網路介面
▲ 圖3:設定 Default Gateway 至 Lagg 網路介面
▲ 圖4:設定 Domain 及 DNS 至 Lagg 網路介面
GUI 設定 Lagg 故障轉移功能
01. 先將 FreeNAS 主機其中一片網路卡接上網路線(只插 em0),區域網路中已有架設 DHCP 伺服器,主機由 em0 網路卡取得 IP 位址 10.10.75.52。
02. 開啟瀏覽器後於網址列輸入 FreeNAS 主機暫時的 IP 位址「http://10.10.75.52」,此時將自動登入 FreeNAS GUI 圖形介面(IE Browser 已可正常操作)。
03. 切換至「Network > Link Aggregations > Create Link Aggregation 」,選擇及輸入相關資訊:
- Lagg protocol:顯示 Lagg 故障轉移功能支援的六種模式,選擇「Failover」。
- Physical NICs in the LAGG:顯示於開機流程中偵測到的網路卡清單,請選擇要加入 Lagg 功能的實體網路卡編號,選擇「em0、em1」後按下「OK」鍵。
04. 切換至「View All Link Aggregations」按下「lagg0」項目的「Edit Interface」鈕,輸入 IP 位址資訊:
- Interface Name:請輸入此網路卡的別名(此為必填欄位無法忽略!),採用預設值「lagg0」即可。- IPv4 Address:請輸入設定於此網路卡上的固定 IP 位址,此例輸入「10.10.75.10」。
- IPv4 Netmask:請於下拉選單中選擇適合的網路遮罩值,此例選擇「/24 (255.255.255.0)」。
- Save:當上述設定確認無誤按下「Save」鈕確定套用設定值。
- 切換到 FreeNAS Console,輸入「10」進入「Reboot」選項,重新啟動主機。
▲ 圖5:建立 Lagg 虛擬網路介面及選取成員網卡
▲ 圖6:設定固定 IP 位址至 Lagg 網路介面
▲ 圖7:設定主機名稱、網域、Default Gateway、DNS 至 Lagg 網路介面
▲ 圖8:重新啟動 FreeNAS 主機
測試 Lagg 故障轉移機制
故障轉移 (Failover) 功能啟用時,會將第一片加入 Lagg 的實體網卡視為「主要 (Master)」網卡,而此網卡的 MTU 設定值也將會是 Lagg 虛擬網卡的預設 MTU 值,之後加入的網卡則皆為故障轉移的備用網卡(之後加入的網卡 MTU 值須配合 Master 網卡,以免影響網路功能運作)。
只有當 Master 網卡不可用時才會啟用另一個備用網卡,唯有具有「Active」的備用網卡才會發送及接收封包。此外,FreeNAS 的故障轉移具有「Failback 機制」,也就是當 Master 網卡故障時備用網卡會接手流量,但是當 Master 網卡復原時會把「Active」控制權搶回來進行封包的發送及接收,那麼該如何在 Console 及 GUI 查看哪一片網卡是 Master?
- Console:輸入「9」進入 Shell 後執行「ifconfig lagg0」指令即可得知。
- GUI:切換到 Network > Link Aggregations > View All Link Aggregations 後點選「Edit Members」,其中 Priority 為「0」者即為 Master。
▲ 圖9:Console 查看 Lagg 網卡成員狀態
▲ 圖10:GUI 查看 Lagg 網卡成員狀態
可以在 Console 中進入 Shell 模式後,輸入「systat -ifstat 1」指令即時查看網卡流量,此時 Master/Active 為 em0 網卡,若 em1 網卡故障當然不影響整體運作,在本例將查看 em0 網卡故障時(以拔除網路線為測試方式),Failover 及 Failback 影響網路流量的時間。
▲ 圖11:即時查看網卡流量
利用持續 ping 的方式來查看 FreeNAS 主機的流量,經實測當 em0 網卡故障後,整個故障轉移的 Failover 過程大約掉了 2~3 個 ping 封包,而當 em0 網卡恢復後將主控權搶回的 Failback 過程大約也掉了 4~5 個 ping 封包。
如果您覺得這樣的反應時間太長,還可以透過調整「net.link.lagg.failover_rx_all」參數值改善情況,其預設值為「0」,使用指令「sysctl net.link.lagg.failover_rx_all=1」調整參數值後,經實測 Failover 及 Failback 過程皆「不會掉封包」。
如果您希望該參數值在 FreeNAS 重新啟動後仍能生效,則可以透過修改「/conf/base/etc/sysctl.conf」設定檔達成,不過 FreeNAS 是嵌入式設計,所以要先把根目錄設定為「非唯讀」狀態,操作步驟如下:
# mount | grep read-only
/dev/ufs/FreeNASs1a on / (ufs, local, read-only, soft-updates)
# mount -uw /
# mount | grep s4
/dev/ufs/FreeNASs4 on /data (ufs, local, noatime, soft-updates)
# echo 'net.link.lagg.failover_rx_all=1' >> /conf/base/etc/sysctl.conf
結語
至此 FreeNAS 的網卡故障轉移功能已設定完成,並且通過災難測試。FreeNAS 官方有錄製教學影片 FreeNAS™ 8: LAGG and VLAN (http://www.youtube.com/watch?v=F1Y9vWCVdHk),有興趣的朋友不妨參考看看。
<iframe src="http://www.youtube.com/embed/F1Y9vWCVdHk" frameborder="0" height="315" width="560"></iframe>[自由文化] 你覺得什麼是資訊時代的共有資源?「資訊時代的共有資源」活動記實
周文茵 / 文
◎ 本文轉錄自台灣創用CC計畫網站採用 CC-BY-SA 3.0 台灣授權條款釋出
「資訊時代的共有資源」專題,已於 2011.11.19 在交通大學客家文化學院順利舉辦,會中有許多精采的對話。這裡提供講者精采摘要,讓大家延續思考這個重要的議題。
合理使用誰的著作?
論合理使用與出處明示之關聯
李治安 政治大學法律科技整合研究所暨智慧財產研究所 合聘助理教授
合理使用向來是著作權法中之重要課題,國內外就合理使用之判斷標準相關議題早已累積了數量龐大的文獻,但是實務上在判斷合理使用成立與否時,有一幽暗未明之問題,至今仍無確定見解,亦即利用人明示出處與否,是否影響合理使用之成立,有法院認為應將利用人之明示出處義務與合理使用脫鉤處理,亦有實務見解將明示出處與否當作合理使用成立之先決條件者。此一懸而未解的問題,有時亦會對部分利用人帶來相當迷思,渠等或認為,若利用時明示出處,系爭利用行為即可成立合理使用。但該等見解均存在相當偏差,此等不確定性對法院及利用人而言,均造成合理使用制度設計時所未預期之成本。
本文以為,利用人明示出處之義務與著作人之姓名表示權有相當關聯,但兩者在我國現行著作權法中,分別受到著作財產權及著作人格權之規範。由現行著作權法之規範及體系之觀點而言,利用人是否明示出處,應對合理使用成立與否造成相當影響,但其影響並非絕對,仍須藉由更細緻的法律分析,並考量相關利用情況,方能得知影響程度為何。本文藉由論理、體系及比較法之方法,探討利用人出處明示義務於合理使用規範中之地位,並據以提出對我國司法及立法上之相關建議。此外,本文亦分析利用人在何等情況下,能免除系爭出處明示之義務。
關鍵詞:著作權、合理使用、明示出處、著作人格權、姓名表示權、利用之目的及性質、刑事責任
「商」之所趨,「民」之所向?
從「三振條款」到「著作權警報系統」探討網路服務提供者與使用者間的矛盾關係
葉志良 元智大學資訊社會學碩士學位學程 助理教授
由於人民對於網路之使用依賴甚深,中斷網路使用對人民而言可說是一種基本權利的侵害;然而網路使用並非毫無規範,特別是媒體與娛樂產業亟欲對網路上發生之著作權侵害行為(例如非法 P2P 檔案分享)進行事前防堵、減少損害等自律或他律等措施。2008 年 12 月美國唱片業協會 (RIAA) 為減少對各地 P2P 軟體侵權使用者進行訟爭,希望與 ISP 業者共同合作採取「三振條款」措施,由 ISP 業者對屢次侵權之使用者,予以斷線或終止服務的機制,並欲藉由遊說與貿易談判方式推廣至全球各國;然此措施恐有違反憲法上之基本權利、比例原則與法律正當程序,飽受各界批評。
2011 年 7 月美國 ISP 業者及影視聽內容組織宣布採用「著作權警告系統」,一旦發現網路服務帳號可能遭用以竊取數位內容,使用者將收到數個階段之警告信函而予自制,對屢勸不聽者雖並未要求 ISP 業者終止其帳號,ISP 業者仍可祭出「緩解措施」協助制止;不過 ISP 業者仍將持續受制於 1998 年美國 DMCA 法案之規範,為享受民事免責利益而執行「通知及取下」之必要措施。在著作權系統下,著作權人、ISP 業者與使用者原立於平衡之三角關係;然近來著作權法對權利人保護日益強大,而 ISP 業者為免除間接侵權責任而「依附」於著作權人陣營,使原本即為被動與弱勢的使用者,其可利用與分享的空間逐漸窄化,尤其在「超著作權」 (paracopyright) 盛行之今日,合理使用竟成著作權人自行設定與解釋的「恩惠」。本文從知識流通與查緝盜版的公私利益進行權衡分析,認為著作權體系的平衡保障建立起來,始為討論著作權保障的真義所在。
關鍵字:著作權法、三振條款、著作權警報系統、網路服務提供者民事免責規範
用創意換取注意力
注意力經濟時代的智者利仁
洪朝貴 朝陽科技大學資訊管理系 副教授
網路時代,個人/公司/機關/組織應該選擇與網路為友,是與網路為敵?2010 年之前,哪一家公司擁有全球最高的市值?
他們的商業模式,與網路為友,或與網路為敵?近十年來,又有哪些公司靠著網路迅速崛起?他們的商業模式,與網路為友,或與網路為敵?
智慧真的是財產嗎?或者它其實是承載創作者聲譽的廣告看板?把數位內容當做財產來保護 vs 把數位內容當做宣傳行銷的工具,何者與網路為友,何者與網路為敵?
排泄物在什麼樣的時空情境之下,會被當做財產來保護?如果你在小行星帶採礦,你的太空船的化糞池被隕石打破,你願不願意花錢向鄰居買排泄物?在這個時空之下,用法律保護 「排泄物財產權」 是否合理?出生成長於小行星採礦之家的地球總統,決定把小行星帶的「排泄物財產權」概念推廣到全地球,是否合理?
陽光空氣水有沒有價值?價格是多少?那麼「資訊」呢?網路出現之前,跟網路出現之後,時空情境有什麼差異呢?資訊本身的價值並不因為網路的出現而改變;但網路出現之後,它應該如何定價才合理呢?
諾貝爾經濟學獎得主 Herbert Simon 說:「資訊爆炸年代,稀有的當然不是資訊;那是什麼呢?當然是資訊所『消耗』的東西,也就是注意力。」網路作家 Michael Goldhaber 在「The Attention Economy: The Natural Economy of the Net」一文當中闡述新時代的經濟原理。
提出長尾理論的網路作家 Chris Anderson 注意到:在尾端,不同的創作誘因形成了「reputation economy」;開放原始碼倡議人士 Eric Raymond 用「gift culture」解釋程式設計師為什麼要免費分享作品;哥倫比亞大學臺裔法學教授 Tim Wu 指出「exposure culture」反應了網路時代的新哲學。 如果四個瞎子可以拼湊出大象的長相,那麼當四位不同出發點的遠見觀察者不約而同地指向同一個方向的時候,我們是否應該試著從智慧財產權沙丘裡面用力掙脫,探出頭來,認真地思考他們共同的結論呢?面對智慧財產權概念的爭議,教授們-尤其是資訊科系教授們-是否懂得上網搜尋各方觀點,並且發現利益團體滲透媒體與國家教育機器進行洗腦、掩蔽網路社會真實趨勢的眾多案例呢?
探究「網路現象地圖」可以發現:智慧財產的過時概念,正在多面向地遭受「注意力經濟」現象及其他許多力量的挑戰。臺灣「苦行僧學院」、「去網路化」、「追逐創新」鄙視擴散、追逐「內耗型競爭力」方式的資訊教育,必須做一百八十度的徹底翻轉,轉而「與網路為友」,鼓勵師生「用創意換取注意力」,以智者利仁的思考方向重新找回符合社會利益與自身利益的教育主軸。[請用最後一段各關鍵詞搜尋。以創用CC 授權在網路上分享「智慧財產」,這種行為的動機並不單純只是仁者安仁而已 :-) ]
[自由文化] 維基化.話維基(3)-誰是條目的所有人?
Reke / 文
夫人善於自見,而文非一體,鮮能備善,是以各以所長,相輕所短。俚語曰:「家有弊帚,享之千金。」斯不自見之患也。─曹丕《典論.論文》
大概在十八個世紀以前,曹丕評點了當世的文人,開篇一句「文人相輕,自古而然」傳頌千古。1800 年來的文人還是一樣「相輕相礙」,不過文學創作本來就是爭一個主觀的「美」字,這樣的習性是作家們精進的動力,稱不上什麼壞事。不過到了維基百科來,就得盡力的去除編輯者相輕的問題,畢竟這是一個眾人協力才能完成的百科全書,若是因為文字使用的差異而爭議不斷,可是會阻礙百科成長的。
先搶先贏是真理嗎?
為了避免一些無謂的爭議,維基百科社群在一些比較無關條目正確性,單純只是見仁見智的喜好問題上,有所謂「先到先得」的慣例。例如古人的稱謂,有人覺得有名字才正式,有人覺得用通行的字號比較容易理解;維基百科的條目命名有規定要用最常見的名稱、或者是要用名字主人想要用的名稱,然而若這兩個名字使用頻率差不多,也都是主人承認的稱謂,此時單用方針實在難以斷定應該使用哪一個當成條目名稱,這時通常就會看創建條目的人先選了哪一個名字,就用哪一個名字當成條目名。
▲圖1:這個歐吉桑的名字是蘇軾,大家又習慣叫他蘇東坡。到底哪一個當條目名字好?
先到先得的判定,比起很多其他的方針判定起來容易而明確得多,因為到底是誰先創建或編輯了條目,翻找編輯歷史就一清二楚,絕對不會再有模稜兩可的空間。這樣的方便性,再加上這樣的規定保障了早些的編寫者,可以不用接受讓他抓狂的修正,所以「先到先得」的理念不知不覺地被濫用到了許多地方。即使是出現了違反方針的編輯、有爭議的編輯,原本的作者也高舉起「尊重」的大旗,悍然地拒絕後來的更動。
我們不否認,任何一項編輯都是辛苦的,尤其是條目的開拓者或長期維護者,往往花費了更多的心力投注其中,面對著突然而來的修改,修改的結果又不合己見,「相輕所短」的心理便油然而生。然而維基百科是一個多人協作的結晶,把條目當成自己的孩子一樣牢牢抓著,固然展現了一個作者對維基百科的熱誠,但確實也跟「人人都可編輯」的基本核心理念產生矛盾。我們不敢說這是否原本的編輯一定是「家有敝帚」,但是動不動就「享之千金」絕對不是一個好的現象。
站在維基化的思考來看,編輯的衝突都應該儘可能的試圖去妥協,「先到先得」這種慣例,只能在衝突的各方編修內容都百分之百合乎方針,而且只能擇一選擇,不可能妥協的情況下適用。比方說條目的內容用簡體或繁體中文編輯都是被容許的,而且中文的用字也只有簡體與繁體兩套系統可以選擇,不可能出現「不繁不簡」、「又繁又簡」或者乾脆「繁簡各寫一次」這樣的選項,這樣的情況下自然就是先到先得,後來的編輯者不能大規模的把內容全部由繁變簡或是由簡變繁;至於條目內容用語的中立性有爭議,這樣的衝突是可以透過商討更中立的、雙方都可以接受的用詞來解決,原本的作者自然要跟後來的編輯好好協商才是。
打破心結 讓出條目的所有權
在否定了「先搶先贏」的迷思之後,似乎不能避免的情況是,有些貢獻卓著的編者最後妥協於共識,但是也因為這樣而「奇檬子」不好,表面上雖然不再堅持,但是乾脆就退出了編輯做為無聲的抗議。對於這樣的離去相信很多時候讓其他的編輯感到遺憾,只是畢竟不能為了 一個人的心情,而犧牲掉了維基的理念。所以要避免這樣的離去,正確的方向並不是美其名尊重,卻給予原作者更大的特權,而是要在平日就對編輯者特別是新手,做好心理建設,打開他們的心結。
這個絕對要做的「心理建設」,就是要讓出條目的「所有權」。如果一個編輯者時時刻刻念茲在茲「這是我的成果」,對於不合意的編輯就會失去理性以對的空間,完全憑感覺而行。但其實不應該忘記的是,維基百科的內容從來都不是一個人的資產,任何一筆編輯,都是屬於全人類共有的。
最明顯可以看出這種特色的地方是,維基百科在著作權上,採用了極為寬容的條款。像是CC創用授權,維基百科選擇了CC-BY-SA的授權方式,意味著在標註來源,以及用樣開放授權的情況下,你辛苦編寫的條目可以被拿去做任意的轉載、改寫,甚至出版賣錢,而不用付你半毛授權費。這授權背後的意義,當然是擴大了分享的便利性,要讓知識成果交給所有人應用。(順帶一提:另一個授權方式GFDL條款也是便於分享的開放式授權,但由於內容較難說明,此處暫不討論。)
▲圖2:維基百科採用的授權方式之一:CC-BY-SA
除此之外,在編輯頁面時,維基百科的界面也明明白白地寫著「**若您不希望您貢獻的內容被任意修改或被他人再度分發,請不要提交這些內容。**」這也意味著,在提交貢獻的時候,任何一位編者都應該對後續的修改,抱持著歡迎的想法。 當然,我們每一個人幾乎都是在一個對自己文章擁有絕對所有權的環境裡長大,小時候學校裡的作文課程,每一篇文章都是自己完成,最後的分數完全由自己獲得,老師或同學都無法透過替你改文章內容的方式,讓你拿更多的分數;長大以後不管投稿報紙雜誌,還是在部落格上面爬鍵盤,幾乎也都是一個人獨立完成一篇文章,文章內容完全按照自己的想法與意志來決定。經年累月存下來根深柢固的概念,很難在接觸維基之後就完全根除,然而踏出這一步,就是腦袋思路「維基化」的開始了。
共享共作 成就更為不朽的大業
寫到這裡,我還是要請出文章前頭的曹丕先生來做個總結。《典論.論文》的最後一段中對文章的價值提出了深刻的見解,他說「蓋文章,經國之大業,不朽之盛事。年壽有時而盡,榮樂止乎其身,二者必至之常期,未若文章之無窮。」白話一點就是說,人生是短暫的,但是「文章恆永遠,一篇永流傳」。看看這篇文章在經歷了 18 個世紀交替,至今還是出現在台灣的國文課本裡,叫一群高中生一邊背頌一邊氣得牙癢癢,可以說是最好的明證。
比起單人完成的文章來說,維基百科的編寫,卻更是「經世之大業,不朽之盛事」。文章要能夠流傳,必須有好的文筆、有深刻的觀察體會,才能在歷史長河中被淘選出來。若是文筆普通,創意缺乏,要能夠像曹丕一樣留名千古,應該是遙不可及。不過維基百科因為共享共作,就算你的文筆不好,只要先把資料整理出來轉化為條目,自然可以透過其他人的協助潤飾,讓條目漸漸提升,最終成為典範。最後這樣的榮耀雖然無法全歸功於你,但是你的貢獻卻會被銘刻在系統紀錄中,只要維基百科不消失,就算條目內容已經被改到跟原先你編修的樣子完全不同,貢獻依然會永久地存在而不可磨滅。放開對條目所有權的執著,換得的,可是更大的世界。
作者簡介
Reke,台灣維基社群成員,PTT 電影板板主,主業為文字工作者。著迷於電影,耽溺於文字;在現實裡怯弱地柔從,在評論裡驕傲地反抗。電影部落格:http://rekegiga.blogspot.com/
[技術專欄] 基於 KVM 與 libvirt 的虛擬化叢集系統-儲存空間的配置
魏藥 /文
簡介
上次我們介紹了如何使用 KVM 與 libvirt 架設虛擬化叢集,其儲存方式是採用 NFS。但NFS 並非唯一的網路存取方案,本篇將會介紹另一種 iSCSI 的網路儲存方式。此外,也會針對 QEMU 特有的 qcow2 儲存格式進行介紹,希望協助讀者在實作時能更快上手。
iSCSI
iSCSI 是在 TCP/IP 通訊協定下的 SCSI 實作,這意味著您可以透過區域網路使用 iSCSI 連接其他電腦的硬碟設備,並直接與設備通訊。擔任過網管的朋友或許已經認識到 SCSI 以及 SAS 介面的儲存設備可提供良好的速度與穩定性。
這裡要特別提醒讀者,使用 iSCSI 連接時,建議多架設一組獨立的區域網路來部署,而不建議與原本的網路混雜,以避免降低存取效能。
架設 iSCSI 儲存設備
一般而言,您可以採購一組 SAN (storage area network) 來使用,也有一些作業系統發行版專門針對儲存用途作設計,例如 Openfiler、FreeNAS 等。在此作者將介紹如何使用 Debian 安裝相關套件滿足此需求。
01. 安裝作業系統與套件
請安裝乾淨的 Debian,分割硬碟時需獨立出數塊未分割的磁區,以作為將來虛擬機器使用的硬碟,在此建議用 LVM 來設定,因為比起 MS-DOS 的磁區分割模式,LVM 所允許的分割區數目較多,也更具延展彈性。安裝完 Debian 系統之後請安裝 iSCSI Target(伺服器軟體)。
安裝完作業系統以後,也請記得安裝 iscsitarget 以及 iscsitarget-dkms:
# aptitude install iscsitarget iscsitarget-dkms
設定 iSCSI Target 的 Logical Unit (LUN)
在此我們需要設定 iSCSI 參數,新增一個 Target 以及數個 LUN。
您需要一個 Target 名稱,依照 RFC 3720,Target 的名稱必須使用以下格式:
iqn.[年]-[月].[倒著寫的單位網域名稱]:[自己定義的名稱]
例如 iqn.2011-08.org.openfoundry:storage.vm1
您還需要磁碟分割區的裝置路徑,通常會在 /dev 裡面,如果您使用 LVM,在 /dev/[LVM 名稱] 裡面通常有不同的分割區。
因此請修改 /etc/iet/ietd.conf 並加入以下項目。本內容為 OpenFoudry 之設定,請適當修改為適合自己的環境:
Target iqn.2011-08.org.openfoundry:storage.vm1
Lun 0 Path=/dev/storage_vg/vol1,Type=blockio
Lun 1 Path=/dev/storage_vg/vol2,Type=blockio
我們的規劃中,一個 LUN 就相當於虛擬機器所使用的一個硬碟,在本範例中只有兩個 LUN,但您可以依照個人需求增加 LUN 數目。
設定 iSCSI Target 存取權限
修改 /etc/iet/initators.allow,將原本允許所有連線的 ALL ALL 設定以註解掉的方式使其失效,並參考以下範例輸入(IP 請輸入 VM host 端的位置或是網段)。本內容為 OpenFoudry 之設定,請依照自己的需求修改為適合自己機器的環境:
iqn.2011-08.org.openfoundry:storage.vm1 192.168.1.0/24
或是
iqn.2011-08.org.openfoundry:storage.vm1 192.168.1.1, 192.168.1.2
啟動 iSCSI Target
修改 /etc/default/iscsitarget,並將原本 ISCSITARGET_ENABLE 該行中的 false 改成 true,否則將無法啟動 iSCSI Target。
最後啟動 iSCSI Target:
# /etc/init.d/iscsitarget start
新增 iSCSI Target 位置
跟上一篇新增 NFS storage pool 的步驟大致相同,在新增的選單稍微修改即可。
如圖,請將 Target 改成 iscsi。然後除了輸入 Hostname 以外,在 Source Path 上輸入 Target 名稱,按 Finish 即可。
▲ 圖1:新增 iSCSI Target 圖示 1
▲ 圖2:新增 iSCSI Target 圖示 2
使用 iSCSI 新增虛擬機器
在設定 storage 的地方調整一下步驟,直接選取尚未被使用的 LUN 空間即可。
▲ 圖3:新增 iSCSI 虛擬機器圖示
qcow 格式
qcow 是 QEMU 的 copy-on-write 映像檔格式。由於在使用到虛擬硬碟空間時才會增加大小,於硬碟空間有限的桌上型電腦環境下相當實用,比較新的 qcow2 還可利用一個映像檔為基礎建立新的映像檔。在此將會介紹如何從 VMWare 或是 VirtualBox 的硬碟格式轉換成 qcow2,以及如何建立 qcow2 的快照 (snapshot)。
目前 QEMU 映像檔系列最新的 QED 效率已有提昇,不過由於本篇教學所使用的 Debian Squeeze 裡沒有可以支援 QED 的 QEMU,因此在本文將不介紹。
建立 qcow 映像檔
映像檔剛建立時,只會佔用很小的空間,但經過使用,空間會越佔越多。
建立映像檔主要有兩種方式:
01. 從 virt-manager 建立
如果您是使用本機安裝,或是 NFS 格式的網路存取,virt-manager 在建立映像檔的時候就可以選擇以 qcow2 作為映像檔格式。
02. 使用命令列指令建立
您也可以使用以下指令:
$ qemu-img create -f qcow2 [映像檔名稱] [映像檔大小]
例如:
$ qemu-img create -f qcow2 debian-squeeze-test1.img 16G
來建立映像檔。
從基礎的映像檔建立映像檔
qcow2 可以從基礎的映像檔 (backing file) 建立一個映像檔。藉此,您可以以一個映像檔為基礎建立不同的映像檔,用在不同的虛擬機器上,就不需要再重新安裝作業系統。不過透過基礎的映像檔建立映像檔以後,請不要任意使用基礎的映像檔,以免造成不必要的麻煩。
您可以使用以下指令來建立:
$ qemu-img create -f qcow2 -b [基礎映像檔的名稱] [映像檔名稱]
例如我剛安裝好一套 Ubuntu Server,為了方便我可以透過它來建立一個 snapshot:
$ qemu-img create -f qcow2 -b ubuntu-server-base.img whatever-server-i-want.img
您也可以查詢映像檔用到的是哪一個 backing file:
$ qemu-img info [映像檔名稱]
在映像檔內進行快照
透過 qcow 格式,您可以在映像檔內進行快照 (snapshot),這有助於系統管理。建立快照後,若您的虛擬機器出現問題,可以再從快照還原之前的狀態。
指令如下:
$ qemu-img snapshot -c [快照名稱] [映像檔名稱] # 建立快照
$ qemu-img snapshot -a [快照名稱] [映像檔名稱] # 套用快照
$ qemu-img snapshot -d [快照名稱] [映像檔名稱] # 刪除快照
$ qemu-img snapshot -l [映像檔名稱] # 列出所有快照
轉換映像檔
如果您想將身邊其他格式的映像檔轉換成 qcow2 格式,可以使用以下指令轉換:
$ qemu-img convert -f [來源格式] -O qcow2 [原本的映像檔名稱] [轉換後的映像檔名稱]
支援的格式相當多,包含 VMWare 的 vmdk、VirtualBox 的 vdi 等。
例如:
$ qemu-img convert -f vmdk -O qcow2 windows-8-preview.vmdk windows-8-preview.img
使用該映像檔建立新的虛擬機器
若要使用剛建立好的映像檔,可以將映像檔放置在 storage pool 指定的目錄中(如果是單機使用,預設是 /var/lib/libvirt/images,必須使用 root 或是 sudo 權限才能放置),並在建立虛擬機器時直接從 storage pool 選取該映像檔即可。
▲ 圖4:使用映像檔建立新的虛擬機器
結語
筆者介紹了如何使用 iSCSI 作為 libvirt 的儲存池,也介紹 qcow 磁碟儲存格式。雖然兩者在 libvirt 裡面無法同時使用,但是讀者可以依對效能的需求或是便利性自行決定要使用哪一種格式,以達到最佳的生產力。
作者簡介
魏藥,本名魏銘廷,目前是大學四年級學生。目前在自由軟體鑄造場擔任技術支援工讀生,也是一隻阿宅。最近在 Debian、Ubuntu 與 LXDE 等社群活動,做各式各樣的事情。
[自由文化] 香港、台灣與開放政府
OpenData/TW 徐子涵 / 文
這次去香港參加香港前瞻中心和香港歐洲商務協會所共同舉辦的 Open Government Seminar 是一個誤會。我本來不知道有這個會議,但從 Open Knowledge Foundation 的一位朋友信中知道活動訊息後,心想香港也不遠,而且這主題來的正是時候。不假思索,直接報名參加。會後與基金會的 Councillor 聊天才知道,原來我竟然是第一個報名的,而且積極的程度有點意料之外。這顯示了幾個有趣的事實,而這事實也透漏著 APAC 區域的 Open Government 和 Open Data 會如何發展。
這裡有幾股勢力在競逐。首先是來自 E-Government 治理想望的餘蔭,這股想望相當強大,也是東亞各官方色彩較為明顯的單位所第一優先考慮的發展路線。簡單來說,公單位過去在電子治理、電子政務、電子政府所佈署的政策架構,包含法規法令、組織權責更動、流程數位化等,腳步快的已經進行十年有餘,腳步慢的才剛開始發展。但無論 E-Government 的內涵如何,至少運用現代的電子技術和通訊技術,針對部門和部門 (G2G)、部門和商業公司 (B2E) 或是部門和民間 (G2C) 等幾大領域進行管理、流程和效能的投資,短期內 E-Government 在亞太地區各國的政策資源加碼,或許會變形(如 GFW),但應不致於大幅減少。
但 Open Data 和 Open Government 來得正好是時間,因為有些國家(或城邦國家)走的快,早已到必須另謀路線的時間點。雖然政策的寬軌無法快速切換,但至少不再提隔靴搔癢的 「E-Gov」。這道理就好比當國民的識字率達到 99% 之後,或是手機(終端)的滲透普及率達到 100% 以上時,「E-Gov」或「M-Gov」等多加冠詞的過渡賦詞,反而是暴露決定數位治理的數位移民者(官員)不足以勝任數位時代的最大徵象(敗象)之一。Open Data 的嘶喊來自民間,Open Government(或 Open Government Data)的助力有官有民。官者如美國國務院主導的 Open Government Partnership,民者如日前我所參與的 Open Government Data Camp 年會,一股自 2007 年後在網路產業、次世代媒體以及社群間的趨勢,西風東漸,怎麼樣都會吹到東方的此岸。
但香港各界要如何要因應 Open Government 此一風潮?我感覺有些本次 Seminar 上有些可能的路線正在發酵。這些路線為港府所特有,但也是台灣能立帆引風,對區域數位經濟使上力的微妙槓桿。
參考資料
- United Nations Department of Economic and Social Affairs. “United Nations E-Government Survey 2010″. UN. Retrieved 2011-12-05.
「開放政府資料:現況、願景、策略」座談會 12/14 中研院登場!
座談時間:2011/12/14(三)14:00-16:00
座談地點:中央研究院 資訊科技創新研究中心 1F 演講廳
詳情請見活動網頁
[自由文化] 鄉鎮逐時天氣預報與開放資料
OpenData/TW 徐子涵 / 文
最近有一則關於氣象局新聞頗值得關注。根據媒體報導,氣象局在天氣預測的部份,即將實行 368 鄉鎮的預報。預報資料的頻率是鄉鎮市區兩天內每 3 小時天氣預報,以及 7 天內每 12 小時的天氣預報資訊。
在開放資料的各種討論,氣象和交通資訊通常是最常被提及的資料類型。不只是因為這兩者所產出的資料,幾乎是所有民眾每日生活所需,而且由於資料本身的變異以及更新頻率相當的頻繁,在資料應用的方式以遊戲規則方面,也有不少的發展。
對於一般民眾而言,這是件好事。例如我們可以拜訪氣象局檢索旅遊地區隔日或是未來幾日的天氣預報,好比在台北的萬華區,最近的氣候狀況和南港區其實差異頗大。以往在網站上只能看到整個台北市的天氣預報,現在預報區域縮小,透過專業的氣象人員所產生的天氣預報(詮釋),參考價值應能得到有效提升。
▲ 氣象局鄉鎮逐時天氣預報網
不過所謂某個地區的「天氣資料」以往並不是不存在,但民眾無法順利取得。原因不少,但我猜想,主要是氣象局並沒有義務或政策依據必須提供民眾透過網站使用氣象預報資料(或產品)。在「發展鄉鎮逐時天氣預報系統計畫」的資料內我們可以看到,雖然這是民國 99 到 100 年中央氣象局主要的施政計畫之一,但預報資料要怎麼在網站上呈現,或是如何提供應用程式開發者一個合理的接取規則,顯然不在整體的考量範圍之內。我們看到的反而是資訊服務被放在「加強氣象服務與推廣氣象防災教育宣導」的章節,而且這也不是一朝一夕的狀況。
這不單是氣象局本身的問題,更進一步來看,這幾乎是所有擁有大量資料的政府機關的問題。就算退幾步來看,不要求提供以開發者為導向的資料接取服務,即便是一般民眾要檢閱現有的氣象資料產品,達到氣象局所謂「推廣」的目的,可是,氣象局的網站在親和度 (accessibility) 卻一直是詬病的指標之一。網頁充滿了未經全盤思考卻硬把資訊塞放在首頁的毛病,網頁資訊區塊成為高階長官在螢幕上「指指點點」的受害者。相對之下,日本的 www.tenki.jp 就清爽許多。
試想,氣象資訊的數量之多,異質性高,但又必須在效能、審美、人力、內部流程以及預算等各方考量,整合到同一個網站。這樣說起來,設計網站在開放資料各種討論當中,不是一門具體而且頗難的學問?
在政策和預算都無視網路已經是最主要資訊服務管道的此時,氣象局的網站氣象產品,也只是這些因素的果實罷了。網站服務既不是主要的業務,提供這項業務也需要相當的成本。若是民間的開發者想自行運用氣象站資料開發天氣的應用程式,也只能透過迂迴的方式達成。各相關業者對於氣象局網站(資料)的諸多抱怨,其來有自。
欣聞最近又有不少以「雲端」為名的聯盟競相成立,但在刻意忽略國家級氣象和交通資料服務的狀況下,雲端要算什麼,我認為大概只有行事(或形式、形勢)的算計層次而已。
Open Government Data 講座 @中研院!
十二月中旬,台灣創用CC 將會就 Open Government Data 議題,邀請政府相關機關、法律學者,以及民間推動者一起來對談。活動細節一旦確認就會即時公佈,歡迎對 Open Data 議題有興趣者來參加。