Archive

‘SuSE Linux 相關應用’ 分類過的Archive

Linux 下的 RDP 連線工具

2015年9月29日 尚無評論

一直以來在 Linux 底下我在使用 RDP 連線的工具通常是透過 Terminal Server Client,但詭異的是今天要嘗試透過 Terminal Server Client 連線到 Windows Server 2012 的 RDP 時卻發現一直無法連線,原本以為是主機掛點,後來才發現似乎是 Client 工具支援的問題。

於是改用 rdesktop 這個計畫所分支出來的另外一個軟體 Remmina 來進行 RDP 連線的管理,安裝方式十分簡單:

# zypper in remmina remmina-plugin*

要注意,預設若是直接安裝 remmina 套件是不支援除了 SSH/SFTP 以後的協定,所以要記得將 Plugin 套件安裝起來才可以在協定選擇中使用其他連線協定

Novell SUSE Linux Enterprise Server 12 安裝心得

2014年12月19日 尚無評論

Novell SUSE Linux Enterprise Server 12 (以下簡稱 SLES12)其實已經上市一段時間了,但最近實在太忙了一直沒時間針對這個版本進行簡單的安裝測試,昨天在聽完 SUSE Instructor – SLE 12 Online Session 之後,趁今天晚上稍微有點空閒進行簡單的安裝測試分享。

基本上這次由於是一個新版本的開始,再加上這段時間一些軟體版本與架構的大幅異動之外,對於舊有用戶來說必須要重新花點時間去了解 SLES 12 的使用。在這個版本中有幾個主要的異動項目大家需要注意的,包含:

  • 預設的檔案系統改以 Btrfs 檔案系統為主
  • GRUB2 取代原先的 GRUB
  • systemd取代原先 System V的 init
  • Linux Containers / cgroup 的增加
  • MariaDB終於扶正了,成為預設的資料庫系統
  • 增加了PolicyKit這個驗證機制

當然,除了上面條列的項目之外,也有一些技術預覽的部分,例如:Docker、zSWAP等。這些主題有空的話我後續會進行相關文章的介紹,接下來我們來看一下這個版本的安裝模式是不是有什麼較大的異動。

閱讀全文…

SuSE Linux 中啟動 Apache 的 rewrite 模組功能

2014年3月15日 尚無評論

預設在 SuSE Linux 中 Apache 的 rewrite 模組是被關閉的,因此當你需要使用時,必須要手動重新將這個模組指定於啟動 Apache 服務時載入,操作方式如下所示:

  1. 編輯 /etc/sysconfig/apache2 檔案,搜尋 APACHE_MODULES 字串,如下所示:APACHE_MODULES=”authz_host actions alias authn_file authz_groupfile authz_user auth_basic autoindex cgi dir include log_config mime negotiation setenvif status userdir asis imagemap php5 authn_core authz_core reqtimeout”
  2. 添加 rewrite 於清單中:APACHE_MODULES=”rewrite authz_host actions alias authn_file authz_groupfile authz_user auth_basic autoindex cgi dir include log_config mime negotiation setenvif status userdir asis imagemap php5 authn_core authz_core reqtimeout”
  3. 重新啟動 apache2 服務

openSUSE 13.1 升級小記

2013年11月20日 尚無評論

OpenSUSE 13.1 於昨日 ( 11/19 ) 正式釋出了,有興趣的朋友可以參考 黑眼珠 大大所撰寫的 openSUSE 13.1 你可能想知道的事 ,基本上升級過程與之前大同小異,也沒有變化太大,但有幾個部分若有與我環境應用相同者可能要特別注意:

  • 若你有使用  Postfix + cyrus-sasl-saslauthd 運作的朋友要注意,在第一次安裝後啟動 saslauthd 服務會出現 “Failed to issue method call: Unit saslauthd.service failed to load: No such file or directory. ” 錯誤訊息,這時候不管你啟動 N 次都一樣會失敗,解決方式:重新開機,就正常嚕
  • 在新版的  Apache2 2.4 語法上有些許修正,若你之前有使用 roundcubemail 這個網頁郵件時,可能會出現錯誤警告,你必須將 /etc/apache2/conf.d/roundcubemail.conf 中的 23 行:Options -Indexes FollowSymLinks 改成 Options -Indexes +FollowSymLinks 便可以成功啟動
  • amavisd-new 2.8.1 與 clamav 0.98 的對應位置需要調整,修改 /etc/amavisd.conf 檔案中的  379 行左右,關於 ClamAV-clamd 的描述,將 /var/lib/clamav/clamd-socket-socket 改為 /var/run/clamav/clamd-socket-socket

將 Amavis 誤判斷的 Mail 回存

2012年12月10日 尚無評論

若有用 Amavis + Postfix 的朋友應該會發現,有時候在判斷上因為誤判導致郵件被丟到過濾目錄內,其實要回復這封 Mail 的方式十分簡單,首先我們可以從 Mail Log 中查詢下列資訊:

Dec 10 15:39:13 ns1 amavis[5902]: (05902-14) Blocked BANNED (.exe,jre-6u7-windows-i586-p.exe) {DiscardedInbound,Quarantined}, [192.168.1.100] <john@wholan.corp> -> <figaro@newcompany.corp>, quarantine: banned-mN9EVr1U5gxH, Message-ID: <3E44274481EB3C4FA806E224FE67D872949315@visvr1.visvr1.corg>, mail_id: mN9EVr1U5gxH, Hits: -, size: 26286086, 23178 ms
Dec 10 15:39:13 ns1 postfix/smtp[9492]: 86DD9B60EA3: to=<figaro@newcompany.corp>, relay=127.0.0.1[127.0.0.1]:10024, delay=310, delays=287/0.02/0.01/23, dsn=2.7.0, status=sent (250 2.7.0 Ok, discarded, id=05902-14 – BANNED: .exe,jre-6u7-windows-i586-p.exe)

從 Log 找到 mail_id 這個欄位訊息,後面那串文字便是我們的檔案名稱,由於筆者這封信件是被 Blocked BANNED,因此儲存到對應空間名稱會變成 banned-mN9EVr1U5gxH,檔案會被放置在 /var/spool/amavis/virusmails 目錄內,其他 SPAM 的郵件則會被命名為 spam-xxxxx.gz 檔案存在於剛才的路徑下。

接著,找到這個檔案之後我們只要於指令列下達:

wholan-mail:/var/spool/amavis/virusmails # amavisd-release banned-mN9EVr1U5gxH

便可以將這封信件回存到指定的收件人員信箱空間中

OpenNebula 3.7.80 XEN Cluster 配置紀錄 — Part II

2012年10月23日 尚無評論

在 OpenNebula 3.7.80 XEN Cluster 配置紀錄 — Part I 中,我們已順利將 ONE 環境給建構起來,但全部透過指令來進行操作對於大部分的新手而言可能會略顯痛苦,好在 OpenNebula有另外提供一個套件Sunstone來做為圖形化的管理介面,功能與指令操作管理完全相同,接著筆者將針對如何組態Sunstone的方式來進行介紹:

步驟一:於ONE-Master環境中安裝Sunstone套件

預設安裝 ONE 相關 RPM 套件時,套件內已經包含了 Sunstone 套件環境,只是預設並未啟用與安裝而已,安裝方式如下所示:

ONE-Master:~ # /usr/share/one/install_gems sunstone
Distribution “suse” detected.
About to install these dependencies:
* make
* gcc
* rubygem-rake
* gcc-c++
* sqlite3-devel

Press enter to continue…  [ 按下 ENTER 按鍵讓系統補齊運作 sunstone 所缺少的套件 ]

zypper install make gcc rubygem-rake gcc-c++ sqlite3-devel
Loading repository data…
Reading installed packages…
‘make’ is already installed.
No update candidate for ‘make-3.82-147.1.2.x86_64’. The highest available version is already installed.
Resolving package dependencies…

The following NEW packages are going to be installed:
gcc gcc-c++ gcc46 gcc46-c++ glibc-devel libstdc++46-devel linux-glibc-devel
rubygem-rake sqlite3-devel

9 new packages to install.
Overall download size: 13.6 MiB. After the operation, additional 59.1 MiB will
be used.
Continue? [y/n/?] (y): y [ 輸入 y 讓系統自動將缺少的套件補齊 ]
Retrieving package linux-glibc-devel-3.1_rc5-7.1.1.noarch (1/9), 778.0 KiB (3.1 MiB unpacked)
Retrieving: linux-glibc-devel-3.1_rc5-7.1.1.noarch.rpm [done (0 B/s)]
Retrieving package rubygem-rake-0.8.7-11.1.2.x86_64 (2/9), 359.0 KiB (1.5 MiB unpacked)
Retrieving: rubygem-rake-0.8.7-11.1.2.x86_64.rpm [done]
Retrieving package glibc-devel-2.14.1-14.27.1.x86_64 (3/9), 612.0 KiB (2.9 MiB unpacked)
Retrieving: glibc-devel-2.14.1-14.27.1.x86_64.rpm [done (7.5 KiB/s)]
Retrieving package sqlite3-devel-3.7.8-1.1.2.x86_64 (4/9), 92.0 KiB (339.0 KiB unpacked)
Retrieving: sqlite3-devel-3.7.8-1.1.2.x86_64.rpm [done (79.0 KiB/s)]
Retrieving package libstdc++46-devel-4.6.2_20111026-1.1.4.x86_64 (5/9), 2.4 MiB (21.3 MiB unpacked)
Retrieving: libstdc++46-devel-4.6.2_20111026-1.1.4.x86_64.rpm [done (1.3 MiB/s)]
Retrieving package gcc46-4.6.2_20111026-1.1.4.x86_64 (6/9), 5.5 MiB (18.5 MiB unpacked)
Retrieving: gcc46-4.6.2_20111026-1.1.4.x86_64.rpm [done (1.3 MiB/s)]
Retrieving package gcc46-c++-4.6.2_20111026-1.1.4.x86_64 (7/9), 3.9 MiB (11.5 MiB unpacked)
Retrieving: gcc46-c++-4.6.2_20111026-1.1.4.x86_64.rpm [done (1.3 MiB/s)]
Retrieving package gcc-4.6-15.1.3.x86_64 (8/9), 4.0 KiB (0 B unpacked)
Retrieving: gcc-4.6-15.1.3.x86_64.rpm [done]
Retrieving package gcc-c++-4.6-15.1.3.x86_64 (9/9), 4.0 KiB (0 B unpacked)
Retrieving: gcc-c++-4.6-15.1.3.x86_64.rpm [done]
Installing: linux-glibc-devel-3.1_rc5-7.1.1 [done]
Installing: rubygem-rake-0.8.7-11.1.2 [done]
Installing: glibc-devel-2.14.1-14.27.1 [done]
Installing: sqlite3-devel-3.7.8-1.1.2 [done]
Installing: libstdc++46-devel-4.6.2_20111026-1.1.4 [done]
Installing: gcc46-4.6.2_20111026-1.1.4 [done]
Installing: gcc46-c++-4.6.2_20111026-1.1.4 [done]
Installing: gcc-4.6-15.1.3 [done]
Installing: gcc-c++-4.6-15.1.3 [done]
About to install the gems for these components:
* sunstone
Press enter to continue…  [ 按下 ENTER 按鍵讓系統開始進行套件的配置與安裝 ]

gem install –no-ri –no-rdoc json sinatra thin sequel sqlite3
Fetching: json-1.7.5.gem (100%)
Building native extensions. This could take a while…
Successfully installed json-1.7.5
Fetching: rack-1.4.1.gem (100%)
Fetching: rack-protection-1.2.0.gem (100%)
Fetching: tilt-1.3.3.gem (100%)
Fetching: sinatra-1.3.3.gem (100%)
Successfully installed rack-1.4.1
Successfully installed rack-protection-1.2.0
Successfully installed tilt-1.3.3
Successfully installed sinatra-1.3.3
Fetching: eventmachine-1.0.0.gem (100%)
Building native extensions. This could take a while…
Fetching: daemons-1.1.9.gem (100%)
Fetching: thin-1.5.0.gem (100%)
Building native extensions. This could take a while…
Successfully installed eventmachine-1.0.0
Successfully installed daemons-1.1.9
Successfully installed thin-1.5.0
Fetching: sequel-3.40.0.gem (100%)
Successfully installed sequel-3.40.0
Fetching: sqlite3-1.3.6.gem (100%)
Building native extensions. This could take a while…
Successfully installed sqlite3-1.3.6
10 gems installed
ONE-Master:~ #

步驟二:接著安裝 noVNC 功能於Sunstone環境

noVNC是一個webSocket為基礎的VNC用戶端軟體,用來作為連結運作中的VM使用,預設安裝 Sunstone 環境時並不會自動安裝,因此我們需要額外進行配置,操作方式如下所示:

ONE-Master:~ # cd /usr/share/one/
ONE-Master:/usr/share/one # ./install_novnc.sh
Downloading noVNC latest version…
######################################################################## 100.0%
Extracting files to temporary folder…
Installing Sunstone client libraries in /usr/lib/one/sunstone/public…
Installing SelfService client libraries in /usr/lib/one/ruby/cloud/occi/ui/public…
Downloading Websockify VNC proxy files
######################################################################## 100.0%
######################################################################## 100.0%
Backing up and updating /etc/one/sunstone-server.conf with new VNC proxy path…
Backing up and updating /etc/one/occi-server.conf with new VNC proxy path…
Installation successful

步驟三:組態 Sunstone 監聽網路 IP 位置

Sunstone 安裝後並不需要太多的設定便可以直接進行運作,其伺服器的組態檔案位在 /etc/one/sunstone-server.conf,在啟用伺服器服務之前我們必須要調整監聽的 IP 位址與服務埠號,操作方式如下所示 ( 組態檔案中的 29 ~ 32 行 ):

29 # Server Configuration
30 #
31 :host: 127.0.0.1    [ 修改為 ONE-Master 所使用的 IP 位址 ]
32 :port: 9869

啟動與關閉 Sunstone 伺服器也是透過 oneadmin來進行操作,因此當我們修正好相關監聽IP位址資訊之後,便可以切換到 oneadmin 使用者帳號身分內,執行  sunstone-server start

oneadmin@ONE-Master:~> sunstone-server start
sunstone-server started

步驟四:透過網頁來存取 Sunstone 伺服器

由於剛才我們已經將 Sunstone 伺服器的監聽位址改為 192.168.1.27:9869  ,如下圖所示,當我們透過瀏覽器連線到這個位址時,便可以順利看到Sunstone伺服器的網頁畫面:

登入 Sunstone 伺服器可以直接使用 oneadmin 的帳號與密碼便可以順利進入介面來進行操作,預設 Sunstone 伺服器介面為英文,因此我們可以點選Dashboard –> Configuration 中進行語系的調整,將介面改為繁體中文版:

而 Sunstone 伺服器的詳細操作方式,讀者若有興趣可以參考 http://opennebula.org/documentation:rel3.8:sunstone 官方文件來進行使用,在Sunstone伺服器介面中美執行一個動作時,讀者可以仔細觀察右下方會出現操作狀態提示文字,我們可以從隨時彈出的文字框架中確認這個指令操作是否有異常。因此,若要快速進行 ONE 的使用,Sunstone 伺服器是一個不錯的選擇。

 

OpenNebula 3.7.80 XEN Cluster 配置紀錄 — Part I

2012年10月22日 尚無評論

OpenNEbula ( 簡稱 ONE ) 是一個開放原始碼套件,可以用來作為動態佈署虛擬機器在一群實體資源,目的是將一群實體叢集資源轉換成彈性的虛擬基礎設備,且可以透過動態調適工作量來進行使用。在這個紀錄中是針對如何於 OpenSUSE 12.1 中進行 XEN Cluster 的配置,並且搭配 OpenNebula 來進行這些基礎建設資源的管理操作方式。

操作環境說明

在這次的實驗架構中筆者將兩台擁有雙核心的主機作為資源的叢集,初步資訊如下表所示:

資源項目 ONE-Master1 ONE-Node01
系統版本 OpenSUSE 12.1 X86_64 OpenSUSE 12.1 X86_64
CPU Core數 2 2
IP資訊 192.168.1.27 192.168.1.25

安裝過程中,大約僅需要 1 GB 左右的磁碟空間來進行環境的配置,如下圖所示,安裝時可以於類型挑選選擇,Other –> Minimal Server Selection (Text Mode),來進行使用。

另外,記得挑選軟體套件項目於 Server Functions –> Xen Virtual Machine Host Server 挑選安裝,兩台配置都是採用相同選擇模式,如下圖所示。

步驟一:基礎環境配置

完成 OpenSUSE 12.1 X86_64 環境安裝之後,記得於開機時挑選 Xen 這個開機選項,這樣才能啟動於 Xen 運作模式中,如下圖所示。

當然,我們也可以直接修改 /boot/grub/menu.lst 組態檔案,將預設啟動的項目直接指定開機 Xen 運作模式中 ( 在這個範例操作中是將 default 改為 0 ),操作方式如下所示:

重新啟動後我們可以透過 uname -r 確認一下系統是否已經運作 Xen 的核心模式中,操作方式如下所示:

最後在基礎環境配置中,我們還需要將兩台主機的 /etc/hosts 檔案將主機名稱與 IP 位址資訊進行配置,這樣便可以完成相關設定基礎需求:

步驟二:SSH伺服器的免密碼登入驗證環境配置

接著,我們需要將 ONE-Master 與 ONE-Node01 中分別將 SSH 伺服器啟動與配置免密碼登入驗證的設定 ( 針對 root 使用者 ),操作步驟如下所示:

上面步驟分別要在ONE-Master 與 ONE-Node01 中進行操作,接著,我們需要將 ONE-Node01 所產生的公開金鑰傳遞到 ONE-Master 主機中,操作方式如下所示:

ONE-Node01:~ # scp .ssh/id_rsa.pub root@ONE-Master:/root
The authenticity of host ‘one-master (192.168.1.27)’ can’t be established.
ECDSA key fingerprint is 15:61:a0:27:62:c6:9f:0b:e2:ce:45:28:3a:21:3a:2e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘one-master,192.168.1.27’ (ECDSA) to the list of known hosts.
Password:
id_rsa.pub 100% 397 0.4KB/s 00:00

接著,我們必須在 ONE-Master 中將ONE-Master 與 ONE-Node01的公開金鑰內容放置到 .ssh/authorized_keys 檔案內,操作方式如下所示:

ONE-Master:~ # cat id_rsa.pub >> .ssh/authorized_keys
ONE-Master:~ # cat .ssh/id_rsa.pub >> .ssh/authorized_keys
ONE-Master:~ # chmod 600 .ssh/authorized_keys
ONE-Master:~ # scp .ssh/authorized_keys ONE-Node01:/root/.ssh/

The authenticity of host ‘one-node01 (192.168.1.25)’ can’t be established.
ECDSA key fingerprint is a6:03:dc:85:a9:63:c0:36:5e:c5:b8:9e:b4:27:62:d0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘one-node01,192.168.1.25’ (ECDSA) to the list of known hosts.
Password:
authorized_keys 100% 794 0.8KB/s 00:00

複製完畢後,兩台主機可以進行相關測試,確認系統管理員 root 已經不在需要密碼便可以於兩台主機間進行登入存取作業:

ONE-Master:~ # ssh ONE-Node01
Last login: Mon Oct 22 12:48:56 2012 from one-master
Have a lot of fun…
ONE-Node01:~ # ssh ONE-Master
Last login: Mon Oct 22 12:49:05 2012 from one-master
Have a lot of fun…

步驟三:於ONE-Master與ONE-Node01確認是否有安裝 XEN Hypervisor 工具

系統基礎配置完成前我們得確認一下是否安裝過程中有正確安裝 XEN Hypervisor 環境與工具,如下圖所示,可以於指令列中執行 yast 指令工具,在Virtualization群組中,選擇 Install Hypervisor and Tools項目。 ( 如果已經裝好 XEN Hypervisor 環境與工具時,在這個選單會出現四個項目 )

接著,我們必須要挑選安裝 Xen 的虛擬化環境:

由於某些套件會是在圖形環境底下才可以運作,因此安裝前系統會跟你警告是否持續安裝,請選鑿Yes繼續安裝:

安裝過程中可能會碰到套件衝突,如下所示,請選擇反安裝衝突的套件,便可以順利完成相關配置,安裝完畢後請直接 reboot 系統,並且將系統開在 XEN 的運作環境下。

步驟四:於 ONE-Master 主機上安裝 ONE 套件

完成基礎配置之後,接著,我們必須在 ONE-Master 主機上進行 ONE 套件的配置,我們可以前往 http://downloads.opennebula.org/ 網站進行下載最新的 ONE 套件,如下圖所示:

在這個範例中筆者是採用 3.7.80 這個版本來進行示範,由於安裝過程中我們會需要許多額外的函數庫支援,因此我們可以先在 ONE-Master 主機上將 Packman 套件庫添加到套件庫列表中再進行安裝作業,操作方式如下所示:

ONE-Master:~ # zypper ar -f -n “Packman Repository” http://packman.inode.at/suse/12.1/ “Packman Repository”
Adding repository ‘Packman Repository’ [done]
Repository ‘Packman Repository’ successfully added
Enabled: Yes
Autorefresh: Yes
GPG check: Yes
URI: http://packman.inode.at/suse/12.1/

接著,我們將剛才所下載到系統中的 ONE 套件檔案解開:

ONE-Master:~ # tar zxvf openSUSE-12.1-opennebula-3.7.80.tar.gz
opennebula-3.7.80/opennebula-3.7.80-1.x86_64.rpm
opennebula-3.7.80/opennebula-devel-3.7.80-1.x86_64.rpm
opennebula-3.7.80/opennebula-sunstone-3.7.80-1.x86_64.rpm
opennebula-3.7.80/opennebula-zones-3.7.80-1.x86_64.rpm
opennebula-3.7.80/src/
opennebula-3.7.80/src/opennebula-3.7.80-1.src.rpm

解開後的 ONE 套件包會包含安裝檔與Source RPM檔案,我們僅需要將編譯好的 RPM 安裝檔案進行安裝即可,操作方式如下所示:

ONE-Master:~ # cd opennebula-3.7.80/
ONE-Master:~/opennebula-3.7.80 # zypper in opennebula-*
Retrieving repository ‘Packman Repository’ metadata [done]
Building repository ‘Packman Repository’ cache [done]
Loading repository data…
Reading installed packages…
Resolving package dependencies…

The following NEW packages are going to be installed:
apache2 apache2-prefork apache2-utils libapr-util1 libapr1 libxmlrpc++7
libxmlrpc3 libxmlrpc_abyss3 libxmlrpc_client++7 libxmlrpc_client3
libxmlrpc_packetsocket7 libxmlrpc_server++7 libxmlrpc_server3
libxmlrpc_server_abyss++7 libxmlrpc_server_abyss3 libxmlrpc_util3 opennebula
opennebula-devel opennebula-sunstone opennebula-zones pwgen ruby ruby-devel
rubygem-nokogiri rubygem-rack-1_1 rubygem-sqlite3 rubygems sqlite3 xmlrpc-c
ypserv

The following recommended packages were automatically selected:
apache2-prefork ruby-devel ypserv

The following package is recommended, but will not be installed:
mariadb

30 new packages to install.
Overall download size: 9.4 MiB. After the operation, additional 39.4 MiB will
be used.
Continue? [y/n/?] (y): <== 回答 Y 之後便會開始進行安裝

步驟五:於ONE-Node01主機上安裝 ruby 與 相關需求套件環境

由於 ONE-Node01 會直接掛載 ONE-Master 主機上所安裝好的 ONE 環境直接使用,但有些套件與套件庫並非都安裝在 /var/lib/one 目錄內,因此我們需要額外補上這些需求套件,操作方式如下所示:

ONE-Node01:~ # zypper ar -f -n “Packman Repository” http://packman.inode.at/suse/12.1/ “Packman Repository”
Adding repository ‘Packman Repository’ [done]
Repository ‘Packman Repository’ successfully added
Enabled: Yes
Autorefresh: Yes
GPG check: Yes
URI: http://packman.inode.at/suse/12.1/

ONE-Node01:~ # zypper in libmariadbclient16 libmariadbclient_r16 libmysqlclient18 libxmlrpc++7 libxmlrpc3 libxmlrpc_abyss3 libxmlrpc_client++7 libxmlrpc_client3
libxmlrpc_packetsocket7 libxmlrpc_server++7 libxmlrpc_server3 libxmlrpc_server_abyss++7 libxmlrpc_server_abyss3 libxmlrpc_util3 mariadb
mariadb-client opennebula pwgen ruby ruby-devel rubygem-nokogiri rubygem-sqlite3 rubygems sqlite3 xmlrpc-c

步驟六:於 ONE-Master 主機上配置 ONE 環境

ONE 套件安裝時會建立一個新的群組帳號 cloud 與使用者帳號 oneadmin,使用者家目錄會被配置在 /var/lib/one,如下所示:

ONE-Master:~ # id oneadmin
uid=1001(oneadmin) gid=1000(cloud) groups=1000(cloud),33(video)
ONE-Master:~ # ls /var/lib/one/
.bash_history .emacs .local .vimrc bin remotes
.bashrc .fonts .profile .xim.template datastores
.config .inputrc .ssh .xinitrc.template public_html

在ONE運作過程中,/var/lib/one/datastores 是用來作為存放系統媒體與運作的VM空間使用,因此筆者會建議將這個目錄單獨放在 SAN 或是 RAID 上,在這個範例中筆者僅以畫分一個新的分割區來進行示範:

ONE-Master:~ # fdisk /dev/sdb  [ 首先,筆者先將新添加的 HDD /dev/sdb 切割一個獨立的分割區 /dev/sdb1 ]
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xacc5e768.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039

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

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

ONE-Master:~ # partprobe
ONE-Master:~ # mkfs.ext4 /dev/sdb1   [ 接著將這個分割區格式化為 EXT4 檔案系統,若是實際運用建議讀者可以改用 XFS 檔案系統 ]
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

ONE-Master:~ # tail -1 /etc/fstab [ 將掛載的作業模式寫到 /etc/fstab 組態檔案內 ]
/dev/sdb1 /var/lib/one/datastores ext4 defaults 0 0

ONE-Master:~ # mount -a [ 執行掛載作業,並確認相關檔案目錄權限是否為 oneadmin.cloud ]
ONE-Master:~ # df -h | grep datastores
/dev/sdb1 20G 172M 19G 1% /var/lib/one/datastores

ONE-Master:~ # ls -ld /var/lib/one/datastores/
drwxr-xr-x 3 root root 4096 Oct 22 13:14 /var/lib/one/datastores/
ONE-Master:~ # chown -R oneadmin.cloud /var/lib/one/datastores/

接著,我們於ONE-Master主機切換使用者身分到 oneadmin,並且載他的家目錄內建立一個子目錄 .one,將用來存取 ONE 服務的帳號密碼填寫到 .one/one_auth 檔案內,操作方式如下:

ONE-Master:~ # su – oneadmin
oneadmin@ONE-Master:~> mkdir .one
oneadmin@ONE-Master:~> echo “oneadmin:novell” > .one/one_auth
oneadmin@ONE-Master:~> chmod 600 .one/one_auth

步驟七:於 ONE-Node01主機上配置 ONE 環境

ONE-Node01主機上的 ONE環境基本上可以直接透過 NFS 協定掛載來自於 ONE-Master 主機已經安裝好的相關資源,因此,我們必須先手動於 ONE-Node01 主機中建立 oneadmin 使用者帳號資訊,操作方式如下所示:

ONE-Node01:~ # groupadd -g 1000 cloud
ONE-Node01:~ # useradd -d /var/lib/one -g 1000 -u 1001 oneadmin

接著,我們在ONE-Master主機上配置NFS伺服器將/var/lib/one 與/var/lib/one/datastores目錄共享給ONE-Node01主機來進行使用:

ONE-Master:~ # chkconfig rpcbind on
insserv: Service syslog is missed in the runlevels 4 to use service xenstored
ONE-Master:~ # rcrpcbind start
redirecting to systemctl
ONE-Master:~ # cat /etc/exports
# See the exports(5) manpage for a description of the syntax of this file.
# This file contains a list of all directories that are to be exported to
# other computers via NFS (Network File System).
# This file used by rpc.nfsd and rpc.mountd. See their manpages for details
# on how make changes in this file effective.

/var/lib/one ONE-*(rw,no_root_squash,async,no_subtree_check)
/var/lib/one/datastores ONE-*(rw,no_root_squash,async,no_subtree_check)

ONE-Master:~ # exportfs -ra
ONE-Master:~ # chkconfig nfsserver on
insserv: Service syslog is missed in the runlevels 4 to use service xenstored
ONE-Master:~ # rcnfsserver start
redirecting to systemctl

組態完 ONE-Master主機的 NFS 伺服器之後,接著,我們切換到 ONE-Node01進行 NFS 用戶端的配置,操作方式如下所示:

ONE-Node01:~ # chkconfig rpcbind on
ONE-Node01:~ # rcrpcbind start
redirecting to systemctl
ONE-Node01:~ # tail -1 /etc/fstab
ONE-Master:/var/lib/one /var/lib/one nfs bg,soft,rw 0 0
ONE-Master:/var/lib/one/datastores /var/lib/one/datastores
 nfs bg,soft,rw 0 0
ONE-Node01:~ # mkdir /var/lib/one
ONE-Node01:~ # mount -a
ONE-Node01:~ # mount | tail -2

ONE-Master:/var/lib/one on /var/lib/one type nfs4 (rw,relatime,vers=4,rsize=524288,wsize=524288,namlen=255,soft,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.25,minorversion=0,local_lock=none,addr=192.168.1.27)
ONE-Master:/var/lib/one/datastores/ on /var/lib/one/datastores type nfs4 (rw,relatime,vers=4,rsize=524288,wsize=524288,namlen=255,soft,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.25,minorversion=0,local_lock=none,addr=192.168.1.27)

ONE-Node01:~ # chkconfig nfs on

ONE-Node01:~ # rcnfs start

步驟八:於 ONE-Master主機上調整 ONE 啟用支援 XEN 環境

完成基本組態步驟之後,接著我們必須調整 ONE 組態檔案 ( 預設,組態檔案是定義使用 KVM ),將 XEN 虛擬化環境作為主要的支援項目,編輯 /etc/one/oned.conf 檔案,將 135 ~ 138 行與217 ~ 222註解,開啟 146 ~ 149 行與234 ~ 239 行:

註解

IM_MAD = [
name = “im_kvm”,
executable = “one_im_ssh”,
arguments = “-r 0 -t 15 kvm” ]

VM_MAD = [
name = “vmm_kvm”,
executable = “one_vmm_exec”,
arguments = “-t 15 -r 0 kvm”,
default = “vmm_exec/vmm_exec_kvm.conf”,
type = “kvm” ]

開啟

IM_MAD = [
name = “im_xen”,
executable = “one_im_ssh”,
arguments = “xen” ]

VM_MAD = [
name = “vmm_xen”,
executable = “one_vmm_exec”,
arguments = “-t 15 -r 0 xen”,
default = “vmm_exec/vmm_exec_xen.conf”,
type = “xen” ]

步驟九:於 ONE-Master 與 ONE-Node01 主機上調整 oneadmin 使用者 sudo 權限配置

因為筆者將 ONE-Master 與 ONE-Node01 都作為 XEN Host使用,因此在 ONE 運作過程中會需要使用到一些基本的 xentop、xm等指令,因此我們必須先將執行權限透過 visudo 指令工具添加下列規格:

oneadmin ALL=(ALL) NOPASSWD: /usr/sbin/xm *
oneadmin ALL=(ALL) NOPASSWD: /usr/sbin/xentop *
oneadmin ALL=(ALL) NOPASSWD: /usr/sbin/ovs_vsctl *

除此之外,讀者也必須更替一下 ONE-Master與ONE-Node01主機上的 oneadmin 使用者帳號密碼:

ONE-Master:~ # passwd oneadmin
Changing password for oneadmin.
New Password:
Bad password: too simple
Reenter New Password:
Password changed.

ONE-Node01:~ # passwd oneadmin
Changing password for oneadmin.
New Password:
Bad password: too simple
Reenter New Password:
Password changed.

步驟十:於 ONE-Master 啟動 ONE 伺服器服務

完成前面的基礎配置之後,接著我們可以在ONE-Master這台主機中,以oneadmin使用者帳號執行 one start,將 ONE 伺服器啟動,操作方式如下所示:

ONE-Master:~ # su – oneadmin
oneadmin@ONE-Master:~> one start
oneadmin@ONE-Master:~> ls  one.db
one.db

第一次啟動ONE伺服器時,會在 oneadmin 使用者帳號家目錄內產生一個 one.db 資料檔案,這裡面便是所運行的 ONE 伺服器相關資訊 ( ONE 也支援改用 MYSQL 作為儲存這些資訊的資料庫,有興趣的朋友可以參考官方網站說明配置 )

步驟十一:將 ONE-Master 與 ONE-Node01 XEN 資源添加到 ONE 伺服器中

順利啟動 ONE 伺服器之後,接著我們可以將運行中的 XEN 伺服器資源添加到 ONE 伺服器內,操作方式如下所示: ( -i  Set the information driver for the host , -v  Set the virtualization driver for the host , -n Set the network driver for the host )

oneadmin@ONE-Master:~> onehost create ONE-Master -i im_xen -v vmm_xen -n dummy
ID: 0
oneadmin@ONE-Master:~> onehost create ONE-Node01 -i im_xen -v vmm_xen -n dummy
ID: 1

接著,我們可以將這些資源建立一個叢集群組,這樣便可以將整個資源進行統合使用,操作方式如下所示:

oneadmin@ONE-Master:~> onecluster create Cluster
ID: 100
oneadmin@ONE-Master:~> onecluster addhost Cluster ONE-Master
oneadmin@ONE-Master:~> onecluster addhost Cluster ONE-Node01

到這邊為止我們便已經順利完成 ONE 運作環境,相關細部操作或者是語法使用問題讀者可以參考後面的 Ref. 文件進行閱覽。

參考文件:

延伸閱讀:

openSUSE 12.2 安裝 XEN 於 GRUB2 選單問題

2012年9月20日 1 則評論

因為目前手上的主機尚未升級到 12.2 來跑 XEN 的部分,前幾天看到 Rex 在部落格中詢問到這個問題,嘗試將某一台測試主機升級到 12.2 並搭配 XEN Kernel,發現目前的 GRUB2 並不會自動添加啟動項目到選單中,檢查一下 kernel-xen 安裝好後相關的選單還是會寫到舊版的 GRUB 選單內,因此若你要使用 GRUB2 來作為選單的管理必須要手動添加,操作方式如下:

  1. 首先,透過 vi 去編輯 /boot/grub2/grub.cfg 組態檔案
  2. 我是在 #### BEGIN /etc/grub.d/20_linux_xen ###  這個 Section 底下添加啟動項目如下menuentry “openSUSE 12.2 (XEN) {
    multiboot  /boot/xen.gz
    module  /boot/vmlinuz-xen  root=37673d4e-cba6-436b-b6ce-07f889b60651 ro
    module  /boot/initrd-xen
    }
  3. 重新啟動後便可以看到選單,也可以順利開啟

補充 – 

在 openSUSE 正體中文社團中提出了這問題,感謝有 張大神 的協助 ( https://bugzilla.novell.com/show_bug.cgi?id=774666 ),安裝好 Kernel-Xen 之後若選單看不到可以直接執行:

# grub2-mkconfig -o /boot/grub2/grub.cfg  就可以更新嚕 ~

openSUSE 12.2 Release …..

2012年9月6日 2 則評論

新版的 OpenSUSE 12.2 於 9/5 正式釋出了,不過目前台灣的 Mirror Site 到 9/6 上午尚未完備,所以我是從日本的 Mirror Site 取得 ISO 安裝檔案 ( 速度還不錯,大概 2 HR 可以將 32/64 Bit 檔案抓完 ),當然在正式安裝之前我們還是得先看一下這個版本的重大異動項目 ( Release Note ),在這個版本中個人認為有幾個比較重要的變化是使用者之後採用 OpenSUSE 12.2 時要特別注意的部分,包含有:

  • 採用 GRUB 2.0 final 版本作為預設的 GRUB 程式,也可以直接支援 UEFI,並且也可以支援 LVM 或 btrfs 分割區、與加密的分割區來作為開機磁碟。
  • sysvinit 已經停用,改用systemd來做為主要的啟動系統服務運作元件
  • 原先我們慣用的cryptoloop加密容器的方式,在這個版本中也被停用了 ( mount 與 losetup 也不支援舊的模式 ),並改用dm-crypt方式來進行處理。( 若是之前您有參照筆者著作 “Linux系統安全防護與建置” 一書第三章來進行加密檔案系統操作時,當時厚的方式筆者便以 dm-crypt 模式來進行介紹,所以不影響使用模式。)
  • 在虛擬化技術部分,這個版本已經預設支持支援 XEN 與 KVM 虛擬化技術,但在 KVM 相關虛擬化技術文件上官方也有提供相關技術手冊供使用者參照使用,後續我也會再補上一篇關於 KVM 的操作說明與範例示範使用模式。

當然,除了我列出來認為比較重要的更動項目之外,openSUSE 12.2有許多異動與更新的部分還需要大家好好的深入研究與接觸,勢必會發現一些不同的觀感。底下,提供一些操作範例影片:

  • openSUSE 12.2 安裝影片檔案
  • 待續 …

 

於 Novell SUSE Linux 中使用大磁碟作為啟動碟

2012年8月23日 2 則評論

在新版的 RHEL 中已經可以支援直接於安裝作業進行中,透過Globally Unique Identifier Partition Table (GPT)來管理大容量磁碟,並且直接將這個大容量磁碟直接設定為啟動磁碟,有興趣的朋友可以參考這篇文件( Getting Over the 2.2TB Bootable Storage Volume Limit in RHEL 6 )說明進行操作。

上週上課時剛好有學員提到那在 Novell SLES 11中有辦法這樣操作嗎,印象中之前在 SLES 10 有碰過一次超過 2.0 TB 大容量磁碟的問題,當時候似乎無法如此操作,因此查閱了一下相關文件與請教 Novell 的 Jeffrey Cheung,確實目前 SLES 11 尚無法直接於 YaST 安裝時進行 GPT 的分割作業,但可以先透過其他 LINUX 將磁碟以 GPT 方式分割好在放入 SLES 光碟進行安裝,YaST 可以直接管理並且把系統裝在預先分割好的 GPT 分割內。  

感謝 maxsolar 的修正,在 SLES 11 中可以在 “Custom partitioning (for experts)” 模式下進行 GPT 的分割區管理,我想我把 UEFI 與 GPT 的問題搞混了,更正一下 ^^ ~

操作方式如此文章所示:UEFI SLES/SLED 11 partitioning recommendations

有需要的朋友可以參考進行操作