2011年6月12日星期日

拔除 ORZ 迷信: SSD 用了一整年後效能下降很大嗎?

一年容易過龍舟(已過端午節了), Computex 2011展品戰場也完結, 今年 SSD 滿大片海潮般的遍地開花, 25nm NAND Flash 顆粒製程的散貨潮也展開了數個月多, 成本下降除了手機及平板熱也造就一片 SSD 繁榮景象, 阿貓阿狗廠商也要推出 SSD 或其相關軟硬體進入大餅市場, 當然不免出現大量行銷洗地河蟹槍手, 還有一群人云亦云的忠心門徒(利益所在財可通神嘛); 經常有朋友及同事在採購SSD 時會懷疑及擔心 SSD 使用後的效能下降很大, 甚至某某品牌降速快, 某某品牌技不如人, 某某品牌包山包海軟體一流服務等等, 這個也拜謝行銷槍手們啼笑皆非的吹捧秀, 也難怪會繼25nm 混雜 34nm 販售神仙過海後. 被踢爆封裝用白牌顆粒、ES 控、鎖文刪文狀告無下文的, 甚至近日的 2.06藍屏失蹤事件也見 ORZ 河蟹洗地。

在去年六月時採購了 SSD 使用, 到現在(今天)已經差不多一年了, 那麼到底近代(34nm)的 SSD 在長時間使用後效能下降很大嗎? 這個人云亦云迷信是時候考證, 剛剛在休閒星期天執行了一次 AS SSD 效能測驗, 以驗證一顆SSD 固態硬碟在一般個人應用環境使用一年後(每天八小時以上)的真實效能, 實機是一台 DIY 組裝電腦, 南橋晶片組是 Intel ICH10R, SSD 固態硬碟是 ADATA SSD S599 100GB, firmware 由 3.0.5 更新為 3.4.6, 運行 AHCI 模式, SSD 為系統 C 碟, HDD 為資料碟, 作業系統 Windows 7(包括 SSD 效能優化進階)。

ADATA SSD S599 100GB(3.4.6) 系統 C 碟一年使用後 AS SSD 效能

參考比較
ADATA SSD S599 100GB(3.0.2A) 資料碟空盤 AS SSD 效能


比較效能數值明顯的 Sequential write 下降大約 ~9%, 這個是 SSD 當了系統 C 盤, 也佔用了 ~68% 容量空間, 而且整整一年沒有執行磁碟重組(這個足夠證明 SSD 是不需要磁碟重組的), 其他有的無的效能上升應該是 firmware 升級 (3.0.2A 是 RC 初版)和使用了 Intel RST 驅動程式的情況; 個人在日常使用的情況中仍然是一個爽快度, 不過…用過 SSD 的腦惱人是不願意重回 HDD 系統碟的懷抱了吧, 至於舊 SSD 消費者是否有需要採購升級到 SATA 6Gbps,要視乎個人實際因素, 25nm 顆粒的壽命週期短已是事實(去年採購了 34nm 顆粒 SSD 的已經賺很大啊), SSD 新主控晶片(支援 SATA 6Gbps)始終要經過消費市場考驗, 除錯是不能或缺, 晶片由 ES 工程到 A1 過渡 A3 版本才見成熟, 當 SSD 傳輸速度到達一個高速的臨界點時, 新技術也難免有臭蟲缺陷, 更高速的 SSD 在受限電腦執行程式的速度, 個人感受的爽度已不會有大驚喜, 擔心 SSD 效能下降不如擔心穩定度, 電腦主機板硬體兼容性(尤其是 ACPI power management)也不是所有廠商一模一樣, 起碼消費者買下 SSD 就是要使用, 不是買來當廠商老鼠磚塊藍屏鏡, 未來 SSD 普及的障礙是 NAND Flash 顆粒的壽命週期了(當然還包括水果公司的採購大單啊), Intel 新晶片組 Z68 的電腦主機板包含了 ISRT(Intel Smart Response Technology) 技術, 利用 SSD 和 HDD 組建混合硬碟系統平台, 對於細容量 SSD 入門級的用戶也是個不錯的整體升級選擇方案。

補圖:
Adata SSD S599 100GB 實機使用一年後 SSD 的真實 Smart(Everest) 部分可參考屬性資料
  • (09)Power-On Time Count 通電使用時間 「5209 小時」
  • (0C)Power Cycle Count 通電次數 「801」
  • (F1)lifetime write froms host 已寫入數據量總數 「320 GiB」
  • (F2)lifetime write froms host 已讀取數據量總數 「3776 GiB」
以使用了一年後 380 天計筭, 每天平均通電使用了 5209/380 = 13.7 小時
每小時平均寫入了 320*1024/5209 = 62.9MB
每一分鐘平均寫入了 320*1024/5209/60 = 1.05MB (進階優化後的不錯啊 ^^!)
每小時平均讀取了 3776*1024/5209 = 742.3MB
每一分鐘平均讀取了 3776*1024/5209/60 = 12.37MB (快速讀取好處啊)

溫馨提示:
  • 今年近月來市場上的 SSD 銷量有大幅爬升的趨勢, 明顯 25nm NAND flash 顆粒成本下降造成產品多樣化及 SATA 6Gbps 效能提升, 企業及私人公司考慮採用 SSD 方案提升員工效率及其系統升級, 而且大量單位採購數字也十分驚人, 腦場或多或小的會突然出現供應缺貨的情況, 而且筆電 Notebook 也有了配置 SSD 的型號及其支援優化軟體(例如 Lenovo 聯想 的 Thinkpad Edge E420s/E220s 系列)。
  • Toshiba(東芝) 及 SanDisk 去年共同投資在日市三重縣興建的 NAND Flash 晶圓廠「Fab 5」已經落成, 開始正式投入量產, 投產的是 24nm NAND flash 將預計在 2011年第三季中出貨, 未來還會提升至 19nm 進程技術; 到今年第四季初時將會有 NAND flash 顆粒的成本較勁, 年底時市場上的 SSD 成本將受壓下降。

2011年6月1日星期三

CentOS 6 猜測六月內釋出

渡過了一整個靜寂宅懶的五月, 這個端午節的六月除了 Computex 2011、Mac粉果中地雷一串事件、夏天來臨不要亂飲亂吃(尤其是致癌 DEHP 買不到是您的短暫福氣)等等外, 另一個企鵝人及系統支援人員要注意的是事, 都已經等待了六個多月後 CentOS 6(RHEL 6 的 clone 版)即將進入 QA 階段, 發佈日程雖然不確定(亦不準確), 但是在無 ETA 預言及小缺失修正下大約會在六月分內釋出, 消息來自 CentOS 社群開發組 blog 文章。

當然仍然使用老技術(F6)舊系統的 CentOS 5.x 用戶是不一定需要升級到版本 6 的, 在穩定的前題下, 大升級難免會有陣痛期, 可能會有或多或小的不預期影響, 如果系統是用於 Production 機器環境的話, 必須有更周詳策劃, 機器(電腦)舊的硬體會因為軟體技術改變(和沒有官方驅動程式)而發生不支援的問題, 如果考慮到整個方案升級的話(包括硬體及軟體), 選擇較新技術的版本是更適合不過的。

另外, RHEL 6 已經無法安裝在只得 256MB 記憶體的老舊電腦內, 是時候放棄它們吧。

2011年4月13日星期三

CentOS 5.6 升級更新 scim 1.4.4-44.el5 後出現 segmentation fault

自 CentOS 5.6 釋出的升級後數天內, 多台使用 xorg 桌面時都發生奇怪的狀態, 當要執行的桌面應用程式時會無法啟動而立即關閉, 查看系統 log 後(dmesg)發現出現 segfault(segmentation fault)錯誤信息, 尤其是 scim-launcher 及 xterm。
經過再三的實測後, 發現是近日在線 yum 升級了 scim 及 scim-libs 造成的問題(CentOS 5.6 光碟並沒有 scim 升級), scim 及 scim-libs 由 1.4.4-41.el5 升級到 1.4.4-44.el5 後, 當 scim 應用介面啟動後, 其他 gtk 程式(例如 firefox)觸發了 scim, xterm 就必定不能正常執行, 會出現 memory segmentation fault 及立即關閉, 而且在系統 log 中會出現 scim-launcher 及 xterm 的 segfault 錯誤信息, 原因不明。
暫時解決辦法是「回復 scim 舊版本 1.4.4-41.el5(已實測)」:
  • 登出 xorg 桌面
  • 移除 scim 及 scim-libs
    # yum remove scim scim-libs
  • 在線安裝 scim 及 scim-libs 舊版本 1.4.4-41.el5 及中文輸入法支援
    # yum --disablerepo=updates groupinstall 'Chinese Support'
  • 登入 xorg 桌面生效

Linux...還是那樣的非一般系統!

補充:
  • CentOS 社群已在五月四日把 scim 及 scim-lib 版本 1.4.4-44.el5 移回 fasttrack repository, 暫時不會再出現在 updates, 下一次主版本(或許 5.7)更新時要多注意。

2011年4月7日星期四

CentOS 5.6 嘗鮮鏡像下載 mirror download

自 RHEL 5.6 官方釋出後都已經超過兩個月的漫長等待了, CentOS 5.6 社群商業版近日已經完成 QA 質量除錯進入鏡像同步階段, 一眾苦守用戶不欲再等待官方公告的話可以嘗鮮下載 CentOS 5.6。

下載位置:
32bit i386
http://isoredirect.centos.org/centos/5.6/isos/i386/
64bit x86_64
http://isoredirect.centos.org/centos/5.6/isos/x86_64/

Torrent 下載:
32bit i386 CD
32bit i386 DVD
64bit x86_64 CD
64bit x86_64 DVD

CentOS 5.6 官方正式發佈公告 Fri Apr 8 19:16:30 EDT 2011
http://lists.centos.org/pipermail/centos-announce/2011-April/017282.html

又是時候再參考 CentOS 5.4 光碟 yum 升級快過火箭升空


備註:
  • CentOS(RHEL) 5.5/5.6 的 Anaconda 安裝程式預設不會啟動 ext4 文件系統格式, 在預設安裝系統時不能選擇格化 ext4 文件系統格式, 要在安裝時格化 ext4 分割區的話, 在 bootup 畫面中鍵入 linux ext4 語句, 則可以令 Anaconda 安裝程式啟用格化 ext4 了(如果系統中已經有已格化的 ext4 分割區的話, Anaconda 亦可以自動掛載支援安裝到 ext4 分割區)。
  • 安裝 ext4 文件系統格式的話, RHEL 5.5/5.6 不能支援 boot 分割區為 ext4。
  • 安裝根目錄 / 為 ext4 文件系統格式的話, gnome 桌面的回收筒會缺失功能, 需要自行修改編譯 gnome-vfs 的 patch 補丁
  • RHEL 5.6 要完全停用掛載 ipv6 modules 的話, 需要額外在 /etc/modprobe.conf 系統文件加入語句 options ipv6 disable=1
  • CentOS(RHEL) 5.6 安裝及升級會自動掛載 iscsi modules, 沒有 iscsi 裝置的話可以停用 iscsi 及 iscsid 服務來移除 iscsi 支援
    chkconfig iscsi off
    chkconfig iscsid off

2011年3月9日星期三

CentOS(RHEL)5 Mock build 的別權模擬編譯環境下修改再編譯的 dependency 問題

CentOS(RHEL, Fedora) 的 RPM base 下 mock build 的模擬編譯環境應用技術不是特許新鮮物, 一般終端電腦用戶其實也無需認識其編譯技術理念(尤其是習慣使用 Windows 的門徒), 模擬編譯環境適合編程人員或系統管理員及高階企鵝族, 在下列所提及的實際問題情況前要瞭解 Mock 應用技術可參考 Fedora Project 內 Mock 資料。Mock build 的模擬編譯環境一般都是用於再編譯(Re-compilation)處理, 例如將 abc.src.rpm 源碼套件再編譯打包到其他的 RPM base 系統(RHEL, Fedora 等等), 此類再編譯作業並不會有太多問題發生, 多數情況都是空間容量不足、repository 連線或 mock 權限等等, 在網海上沖積的參考資料全部都是基本的再編譯作業或是跨平台再編譯, 沒有難度可言一試即成。

不過在實際情況下, 如果要 mock 編譯的是修改的源碼套件, 而需要安裝利用自家新的編譯後已修改源碼的程式開發庫(devel library)再編譯其他軟體的話, 卻是另一個腦惱問題, 因為 mock-yum 只會利用預設的 repository 來安裝 chroot 環境的軟體需求, 執行 mock 時是無法強制 mock-yum 略過或安裝自家修改的軟體套件, 也許專才會認為新的 mock 版本不是已新增 --install 功能嗎?! 可惜在實測中(EPEL5 內的 mock-1.0.7-1.el5)發現...就筭執行 --no-clean --install aa-2.i386.rpm aa-devel-2.i386.rpm 然後再執行 --no-clean --rebuild bb.src.rpm(依賴 aa-devel-2.i386.rpm)卻是無法略過 mock-yum 的強蠻檢查, 如果系統預設 repository 只得 aa-1.i386.rpmaa-devel-1.i386.rpm, mock 就會傳回 ERROR 訊息的 "Cannot find build req aa-devel >= 2. Exiting" 而編譯失敗終止, 此問題是 mock python script 程式碼的瑕玼, 無論更新的版本亦無法以指令直接解決, 企鵝族及編程人員或多或小都會有自家修改的軟體需要再編譯, 最常見的是 freetype、firefox、xulrunner 等等。

mock build 編譯 firefox-3.6.14 時 mock-yum 無法找到 xulrunner-devel-1.9.2.14 而編譯失敗
唯一輕鬆可以解決的辦法是將自家更新的軟體套件在編譯的本機(或網絡)電腦內創建一個 local repository, 修改 mock 編譯預設文件檔案(例如 centos-5-i386.cfgcentos-5-x86_64.cfg)加入自家的 local repository 位置, 那樣在執行 mock build 時 mock-yum 就會因編譯需求自動在 chroot 環境內安裝自家的修改軟體庫了, 這是最方便的辦法, 適合多人網絡的模擬編譯環境使用而排除誤用舊軟體庫版本的問題, 只需在 mock build 前注意 local repository 的更新就可搞定, 此法亦適用於 x86_64 下跨平台編譯 i386/i686。

掛建 local repository 新增已修改軟體庫活用 mock 模擬編譯:
實機使用 CentOS 5.5 x86_64 的 mock-0.6.13-1.el5_2.3
安裝 mock 及配置:
  • yum 在線安裝 mock 軟體
    # yum install mock
  • 用戶帳號(例如 aa_user)加入 mock 群組
    # usermod -G users,mock aa_user
實例: mock 編譯 xulrunner-1.9.2.14 及 firefox-3.6.14
  • 首先自行準備好 xulrunner-1.9.2.14 及 firefox-3.6.14 的 src rpm 源碼套件
    例如: 借用舊的 xulrunner-1.9.2.13-3.el5.src.rpmfirefox-3.6.13-3.el5.centos.src.rpm 解壓到 ~/rpmbuild/SOURCE/ 目錄內自行修改(或針對性功能...在此省略)後 rpmbuild -bs --nodeps --define 'dist .el5' spec_filename.spec 指令打包成 xulrunner-1.9.2.14-0.el5.src.rpmfirefox-3.6.14-0.el5.src.rpm
  • 修改 mock 配置新增 distro 編號 '.el5'
    登入管理員權限
    編輯 /etc/mock/centos-5-x86_64.cfg/etc/mock/centos-5-i386.cfg
    #%dist 下新增一行
    %dist .el5
    儲存文件
mock 編譯 xulrunner:
  • 先執行 mock build 編譯 xulrunner(編譯 firefox 需要 xulrunner 及 xulrunner-devel)
    $ mock -r centos-5-x86_64 --arch=x86_64 --resultdir=/home/tester --autocache rebuild xulrunner-1.9.2.14-0.el5.src.rpm
    build xulrunner 超長時間...要有耐性惡玩(無耐性的可以試 freetype 及 fontconfig)
  • 如果要額外編譯 i386/i686(32bit) 系統的話
    $ setarch i386 mock -r centos-5-i386 --arch=i386 --resultdir=/home/tester --autocache rebuild xulrunner-1.9.2.14-0.el5.src.rpm
  • 編譯後結果 log 及 rpm 會產生在用戶個人目錄內 /home/tester/
    xulrunner 及 xulrunner-devel rpm 產生後就可以準備編譯 firefox。

創建本機 local repository(例如 x86_64):
  • yum 在線安裝 createrepo 軟體
    # yum install createrepo
  • 建立 local repository 目錄(例如 /opt/localrepo.x86_64//opt/localrepo.i386/)
    # mkdir /opt/localrepo.x86_64
  • 將 mock 編譯後的 xulrunner 及 xulrunner-devel rpm 放置到 local repository 目錄內
    # cp -v /home/tester/xulrunner-*x86_64.rpm /opt/localrepo.x86_64/
  • 在 /opt/localrepo.x86_64/ 目錄內創建 repository
    # createrepo -o /opt/localrepo.x86_64/ /opt/localrepo.x86_64/

修改 mock config 預設文件, 加入 local repository 條件:
登入管理員權限
編輯 /etc/mock/centos-5-x86_64.cfg(32bit 的是 centos-5-i386.cfg)
[updates] section 後及 [groups] 前新增如下
[local]
name=local
baseurl=file:///opt/localrepo.x86_64/

儲存文件

mock 編譯 firefox:
  • $ mock -r centos-5-x86_64 --arch=x86_64 --resultdir=/home/tester --autocache rebuild firefox-3.6.14-0.el5.src.rpm

  • 如果要額外編譯 i386/i686(32bit) 系統的話(需要自行準備 local repository 目錄 /opt/localrepo.i386/)
    $ setarch i386 mock -r centos-5-i386 --arch=i386 --resultdir=/home/tester --autocache rebuild firefox-3.6.14-0.el5.src.rpm
  • 編譯後結果 log 及 rpm 會產生在用戶個人目錄內 /home/tester/

完成後, 使用 mock 編譯後的 xulrunner 及 firefox rpm 打包套件就可以安裝到 CentOS 5 系統中使用。
以後需要更改軟體再編譯的話, 只需要更新 /opt/localrepo.x86_64/opt/localrepo.i386 的 repository 內容後就可以立即 mock 編譯了。

備註:
  • mock build 要利用 mock-yum 在線下載系統軟體來掛建 chroot, 如要加快下載速度, 可以利用 proxy 或建立同步的系統及更新 local repository(又是另一個題外話)。
  • mock build 模擬編譯時會在 /var/lib/mock/ 目錄內掛建 chroot, 注意會耗用很大容量空間, 完成所有 mock 編譯程序後 /var/lib/mock/ 目錄內的所有文件檔案都可以刪除清空以釋放硬碟空間。
  • 利用 mock build 模擬編譯好處是不用在自己的電腦內安裝大量的編譯需求套件(例如大量的 devel library), 亦可以排除使用 root 權限編譯的安全(或錯誤路徑)問題, 還可以支援不同 arch 下 cross compilation, 唯一缺點是...mock-yum 下載實在十分耗時, 所以對於大量使用 mock 的編程人員或管理員則建議建立同步的系統及更新 local repository, 減輕耗用網絡頻寬及下載時間, 而個人用戶的話可以暫時使用 proxy 來加速下載, 其他的需求視乎個別情況修改。
  • 在 x86_64 的系統內部分軟體還需要依靠 i386 的架構, 留意是否需要同時編譯 x86_64 及 i386。

2011年3月7日星期一

RHEL6 kernel 開源碼整合齊人包, Redhat 無私顯見私

RHEL6 的推出令到不小企業注意到舊系統的生命週期造成系統升級及遷移的進程企劃, 評估測試是最必然的事, 雖然 CentOS 社群仍未釋出(未知預期)開源碼企業社群版, 而另一個基於 RHEL6 的社群版 Scientific Linux 6 已經官方釋出, 但是眾多 RHEL6 的嘗鮮用戶或許仍不知道 Redhat 公司在 RHEL6 內改變了開源策略, RHEL6 內 kernel 的源碼已經變成了齊人包, 以往 RHEL 釋出的 kernel 所有(數十個)補丁修正文件現在全部被 Redhat 烹煮到 kernel 源碼內, 例如: RHEL6 的 kernel-2.6.32-71.el6.src.rpm 源碼套件內再沒有獨立的補丁修正文件(patch), kernel 源碼已整合成 linux-2.6.32-71.el6.tar.bz2

RHEL6 的 kernel src 源碼套件 kernel-2.6.32-71.el6.src.rpm 已整合「所有」patch
The Register:
Red Hat: 'Yes, we undercut Oracle with hidden Linux patches'

Redhat 的 CTO Brian Stevens 解說這次策略的改變明顯是衝著 Oracle 及 Novell 提供的支援服務, 將源碼整合打包並沒有違反 GPL 開源碼條款, 只針對競爭對手的商業客戶服務...云云。

Redhat 此法無私顯見私的改變對於個別終端用戶應該是不會有多大影響(可能還不知道吧), 不過對企鵝人甚至開發社群(CentOS 或 Scientific Linux)等等可能有產生源碼追蹤的問題, 尤其是對 kernel 查證源碼或特定環境改造都會更困難, 考慮升級的用戶或管理群應更詳細評估此情況的未知影響。

2011年2月26日星期六

RHEL 5.6 真的「完全」支援 ext4 文件系統格式嗎?!

2008 年 12月 發佈正式的 ext4 文件系統格式及後其支援的 kernel 2.6.28, 到今天都差不多兩年多了, 除了主流的 Linux 系統 distro 個別開發嘗鮮版本外, 企業版的 Linux 系統(RHEL, SUSE 等等)基於穩定安全下一直都是以 technical preview 的方式讓用戶體驗, 並沒有完全地提供原整支援, Redhat 公司釋出的 RHEL 6 及 RHEL 5.6 終於都支援了正式 ext4, 雖然 Redhat 官方在 RHEL 5.6 版本發行說明文件中表示了 「The fourth extended filesystem (ext4) is now a fully supported feature in Red Hat Enterprise Linux 5.6」, 不過在 RHEL 5.6 的其他軟體套件卻仍然存在相容性問題, 其中 RHEL 5.6 提供的軟體 gnome-vfs 並沒有更新支援 ext4, 一但 / 根目錄或 home 目錄架建在 ext4 格式下的話, 在 gnome 桌面應用時會有功能缺失的問題, 最常見的狀態是 gnome 桌面的 Trash「回收筒」不會顯示任何已刪除的文件, 而且 nautilus 也不能正常偵測到 ext4 應用分割區。

RHEL6 的 ext4 分割區在 gnome 桌面刪除文件後 Trash 的內容存在已刪除文件
RHEL5.6 的 ext4 分割區在 gnome 桌面刪除文件後 Trash 的內容空白
RHEL 5.6 發行說明文件
http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html-single/5.6_Release_Notes/index.html

Fourth Extended Filesystem (ext4) Support
The fourth extended filesystem (ext4) is now a fully supported feature in Red Hat Enterprise Linux 5.6. ext4 is based on the third extended filesystem (ext3) and features a number of improvements, including: support for larger file size and offset, faster and more efficient allocation of disk space, no limit on the number of subdirectories within a directory, faster file system checking, and more robust journaling.
To complement the addition of ext4 as a fully supported filesystem in Red Hat Enterprise Linux 5.6, the e4fsprogs package has been updated to the latest upstream version. e4fsprogs contains utilities to create, modify, verify, and correct the ext4 filesystem.

RHEL 5.6 kernel 是 2.6.18-238
RHEL 5.6 內的 gnome-vfs2 版本仍然是 5.5 時的 2.16.2-6.el5_5.1 而 RHEL 6 內的版本已更新是 2.24.2-3.el6, 舊的版本仍然沒有支援 ext4 及 ext4dev, Debian bug#539322 2009/7 收納了此問題, 而 Redhat bug#594836 2010/5 亦收納了此問題, 不過 Redhat 官方並沒有對此支援修正感到趣味性, 這造成 RHEL 5.6 的 ext4 其實只是 kernel 的改造支援而已, 其他的軟體在相容性下變成的像殘障病患一樣, 其實 RHEL 5.6 連自身的 anaconda 系統安裝程式也沒有更新到支援格化 ext4 文件系統格式, 在腦惱的失望下唯有自己解決 gnome-vfs 的缺陷(加 patch)【適用於 CentOS 5】。

參考了 Bug#594836 內的附件 "Minimal patch to add ext4 support", 可以自行新增 ext4 patch 到 gnome-vfs2-2.16.2-6.el5_5.1 的源碼內手動編譯及安裝。

將下列修正源碼補丁 "Minimal patch to add ext4 support" 儲存為 gnome-vfs-2.16.2-ext4.patch 文件
--- gnomevfs-2.16.2/libgnomevfs/gnome-vfs-filesystem-type.c 2010-11-10 20:35:39.000000000 +0000
+++ gnomevfs-2.16.2/libgnomevfs/gnome-vfs-filesystem-type.c 2010-11-10 20:39:22.000000000 +0000
@@ -47,6 +47,8 @@
{ "ext2" , N_("Ext2 Linux Volume"), 1 },
{ "ext2fs" , N_("Ext2 Linux Volume"), 1 },
{ "ext3" , N_("Ext3 Linux Volume"), 1 },
+ { "ext4" , N_("Ext4 Linux Volume"), 1 },
+ { "ext4dev" , N_("Ext4 Linux Volume"), 1 },
{ "fat" , N_("MSDOS Volume"), 1 },
{ "ffs" , N_("BSD Volume"), 1 },
{ "hfs" , N_("MacOS Volume"), 1 },

下載源碼套件 gnome-vfs2-2.16.2-6.el5_5.1.src.rpm

安裝源碼套件
# rpm -ivh gnome-vfs2-2.16.2-6.el5_5.1.src.rpm

gnome-vfs-2.16.2-ext4.patch 文件新增到源碼目錄 /usr/src/redhat/SOURCE

修改 rpm build spec 編譯程序文件加入 ext4 patch 程序
將下列 patch 源碼儲存為 spec.patch/usr/src/redhat/SPEC 目錄
--- gnome-vfs2.spec 2011-02-25 18:26:49.550202195 +0800
+++ gnome-vfs2.spec 2011-02-25 18:28:10.237202195 +0800
@@ -12,7 +12,7 @@
Summary: The GNOME virtual file-system libraries
Name: gnome-vfs2
Version: 2.16.2
-Release: 6%{?dist}.1
+Release: 6%{?dist}.1.1
License: LGPL
Group: System Environment/Libraries
Source0: gnome-vfs-%{version}.tar.bz2
@@ -94,6 +94,8 @@
# CVE-2009-2473 neon, gnome-vfs2 embedded neon: billion laughs DoS attack
# Patch25: CVE-2009-2473-neon-billion-laughs.patch

+# ext4 support as of RHEL6
+Patch99: gnome-vfs-2.16.2-ext4.patch

%description
GNOME VFS is the GNOME virtual file system. It is the foundation of
@@ -158,6 +160,8 @@
%patch23 -p1 -b .copy-follow-symlink
%patch24 -p1 -b .dav-escape

+%patch99 -p1 -b .ext4
+
# -- disabled, no QE capacity
# %patch25 -p1 -b .neon-CVE-2009-2473

執行 spec.patch 補丁修改 gnome-vfs2.spec
# cd /usr/src/redhat/SPEC
# patch -b gnome-vfs2.spec spec.patch


手動編譯
# cd /usr/src/redhat/SPEC
# rpmbuild -ba gnome-vfs2.spec --define 'dist .el5_5'

**所有編譯開發套件要求需要手動執行 yum 安裝, 包括 yum groupinstall 'Development Tools'

編譯完成後手動升級安裝
# cd /usr/src/redhat/RPMS/i386
# rpm -Uvh gnome-vfs2-2.16.2-6.el5_5.1.1.i386.rpm gnome-vfs2-smb-2.16.2-6.el5_5.1.1.i386.rpm


安裝了 gnome-vfs 支援 ext4 的修正補丁後, gnome 的 Trash「回收筒」功能回復【CentOS 5.5】
備註:
  • 如果系統是 x86_64 的話, 則可以使用 mock 別權環境打包源碼後編譯 i386 及 x86_64。
  • 由於 blogger 對 code 碼的左方空白字去掉, 留意源碼位置已被自動改動。

更新補充:

2011年2月20日星期日

Windows 7 SP1 知者不言

微軟已經官方釋出 Windows 7 及 Windows Server 2008 r2 的 SP1 更新, 在 2011/2/16 MSDN 及 TechNet 用戶已經可以嘗先下載 SP1 更新、語言包及其整合版本分支, 一般用戶則可以在 2011/2/22 透過 Download Center「下載中心」及 Windows Update 推送更新服務包; 此次的 SP1 更新服務包將包含 2010/11 月及以前釋出的所有更新 patch, 另外加入了兩項虛擬化的進階功能, 包括 RemoteFX 及 Dynamic Memory, 並且提供了 ThinClient 版本分支。


Windows 7 service pack 1 技術文件資料
http://technet.microsoft.com/en-us/library/ff817622%28WS.10%29.aspx

當然非 MSDN 及 TechNet 的一般用戶亦可以善用 google 仙人
DVD iso 光碟影像檔案文件包括:
Windows 7 and Windows Server 2008 R2 SP1 x86 x64 DVD 多個語言
mu_windows_7_and_windows_server_2008_r2_sp1_x86_x64_dvd_619642.iso
SHA1: F2ABA1102E18EAD08C78527AB422C09AB7D1F54C

Windows 7 Service Pack 1 Language Pack (x86) - DVD
mu_windows_7_sp1_language_pack_x86_dvd_619716.iso
SHA1: E9261433FF5CCACA818328A9BDBBED3F21A6405E

Windows 7 Service Pack 1 Language Pack (x64) - DVD
mu_windows_7_sp1_language_pack_x64_dvd_619714.iso
SHA1: 7CD1FE568D968D89792DC9FF20E9AF2B318995C2

英文版的 Windows 7 with SP1 DVD iso 整合版的資料可參考:
http://www.sevenforums.com/news/139450-windows-7-sp1-integrated-isos-leaked.html

更新前必須先執行全系統備分, 及確保電腦電源供電不會終斷。
已知的軟體相容性問題:
http://support.microsoft.com/kb/2492938/

未知(不可預料)的更新故障主要是 USB 的系統檔案 usbport.sys, usbehci.sys, 及 winusb.sys 沒有正確更新, 在裝置管理員內會看見感嘆號(!), 快捷的解決辦法是在裝置管理員刪除出現嘆號(!)的 USB 控制器, 重啟電腦讓系統自動再偵測裝置及安裝系統驅動, 此狀態多數會出現在主機版使用 NVidia NForce的晶片組 USB 控制器驅動。

而另一個已知的更新故障是已安裝多國語言包後更新 SP1 時造成藍屏, 無法完成程序及重新正常啟動, 出現
Error C000009A applying update operation {######} of {######} (\Registry...)

此情況是由於安裝多國語言包後沒有啟用, 令系統 registry 內缺失了註冊機碼, 解決此問題的唯一辦法是先強行卸載 SP1 及利用還原點回復系統, 移除舊的多國語言包後再安裝(幸運的話)。

備註:
  • 執行更新過程需要時間, 如果使用一般 HDD 硬碟(甚至 Notebook 筆記本)的話, 更新時間可能耗半小時(已實測)及以上。圖
  • SP1 更新後的硬碟容量會暴增達 985MB(已實測)
    安裝 SP1 前及安裝 SP1 後的容量
    包括 Service Pack Backup Files 及 系統還原點. 如果需要釋放空間容量的話可以手動執行 Disk Cleanup「磁碟清理」刪除, 不過將無法還原及卸載 SP1。
  • 如果是全新安裝 Windows 7 with SP1 整合版本的話, 容量較執行更新包後減小大約 750MB(已實測)。
  • 如果已使用英文版(Ultimate 及 Enterprise)及安裝語言包的話, 需要在控制台內的區域語言配置手動移除舊版本, 及手動安裝 SP1 新版本(已實測)。
  • 由於 SP1 是 2010/11/20 日製作, 沒有包含 2010/12 月及以後的 patch, 如果是全新安裝 Windows 7 with SP1 整合版的話, 在 Windows Update 內會立即發現有更新需要下載。

2011年1月25日星期二

RHEL6 使用 DVD 光碟 yum 安裝軟體

RHEL6 一般必需註冊(免費 30 天評估或付費)才可以獲得線上軟體更新支援及下載, 不註冊的話其實亦可以使用光碟來執行 yum 安裝, 此方法適合多台電腦進行評估測試時免去大量註冊所需, 及沒有聯網環境的獨立電腦, 而且多台電腦亦可以共用光碟分享位置(無需大量燒錄光碟)來安裝軟體, 當然如果要更新軟體的話就必需付費註冊(除非手動自行編譯更新源碼套件)。

RHEL6 使用 yum 光碟安裝軟體步驟:
  1. 掛載 RHEL6 光碟
    # mkdir /mnt/cdrom
    # mount /dev/cdrom /mnt/cdrom -t iso9660 -o loop,ro
  2. 將光碟內的 media.repo 檔案內容複製到 /etc/yum.repos.d/media.repo
    # cat /mnt/cdrom/media.repo > /etc/yum.repos.d/media.repo
  3. 加入 yum 使用安裝光碟路徑到 /etc/media.repo
    編輯 /etc/yum.repos.d/media.repo 新增 baseurl=file:///mnt/cdrom/
    # echo 'baseurl=file:///mnt/cdrom/' >> /etc/yum.repos.d/media.repo
  4. 完成

測試:
# yum repolist


備註:
  • 在桌面環境插入安裝光碟時會自動複製 media.repo 文件到 /etc/yum.repos.d/packagekit-media.repo, 不用理會。
  • 當然亦可以掛載安裝光碟的 iso 映像檔案(或網絡路徑)到 /mnt/cdrom/ 目錄進行 yum 安裝軟體。

2011年1月21日星期五

RHEL6 下載評價試用體驗

在去年 11 月時 Redhat 紅帽公司官方釋出了 Red Hat Enterprise Linux 6(RHEL6) 企業級 Linux 系統, 一直守候等待 CentOS 社群移植開發, 閒情時間有限沒有嘗試的心力, 近日也溜空的實測試用一下 RHEL6 的體驗, 起碼在 CentOS 6 來臨時不會一惆莫展腦惱般的盲撞, 而且系統升級進階是始終都不能避免。

RHEL6 其實基礎是步進於 Fedora 10 架構, 如果習慣使用 Fedora 的話應該不難上手, 而且也很眼熟的, 不過由 RHEL5 升級到 RHEL6 卻是非一般簡單, 尤其是 RHEL6 的系統配置功能及軟體套件有很大的改變, 以往使用的 SystemVinit 已改變為 upstart, 系統支援人員(系統管理員)及用戶都需要研究學習, 由於系統軟體(及兼容)有很大的改變, 升級及遷移舊系統需要額外配置設定亦令過程變得複雜了, 而且升級後也可能有無法預測的兼容錯誤問題, 所以升級前必雖慎重考慮方案流程及測試。

Red Hat Enterprise Linux 6 主要分為二個分類版本 Server(伺服器), Desktop(桌面)
Server 版本:
  • Red Hat Enterprise Linux Server
  • Red Hat Enterprise Linux for HPC Head Node(HPC機群部署管理)
  • Red Hat Enterprise Linux for HPC Compute Node
Desktop 版本:
  • Red Hat Enterprise Linux Desktop(Client)
  • Red Hat Enterprise Linux Workstation

評價試用體驗當然需要下載, Redhat 紅帽公司提供了官方下載 Red Hat Enterprise Linux 6 Server 的 30 天評價試用

redhat 官方下載 RHEL6 試用方法:
  1. 到 redhat 網頁註冊一個帳號(需要 email 電郵信箱)
    https://www.redhat.com/wapps/ugc/register.html
  2. 電郵收信後激活 redhat 帳號, 激活帳號後登出
  3. 到 redhat 網頁選擇下載評價試用
    https://www.redhat.com/rhel/details/eval/
    選擇 Download 30-day evaluation
  4. 輸入以上激活的 redhat 帳號
  5. 電郵信箱會收到正在處理中的信件, 等待第二封電郵
  6. 電郵信箱會收到訂閱已激活, 此時即可以登入 redhat subscription channel 下載 RHEL6 Server 版本
    https://rhn.redhat.com/rhn/software/downloads/SupportedISOs.do
  7. 安裝完成後, 註冊系統(使用以上的 redhat 帳號)即有 30 天的免費軟體更新支援, 逾期後需要付費續期才可以獲得軟體更新支援。

非官方下載 RHEL6 torret:
RHEL6 Server 32bit DVD iso
RHEL6 Server 64bit x86_64 DVD iso
RHEL6 Desktop Client 32bit DVD iso
RHEL6 Desktop Client 64bit x86_64 DVD iso
RHEL6 Workstation 32bit DVD iso
RHEL6 Workstation 64bit x86_64 DVD iso

備註:
  • 那 Supplementary disc 其實是 Adobe Acrobat Reader, Flash Plugin 及 Sun Java Runtime。
  • Server 版本沒有包含 openoffice.org 軟體套件。
  • 沒有註冊 redhat 支援(免費或付費)的話, RHEL6 是不能線上 yum 軟體更新及下載, 系統功能仍然是正常可以運行。

2011年1月5日星期三

ADATA 威剛 S500 系列 S599 firmware 韌體更新

已經歷了差不多半年使用 SSD 固態硬碟的爽快度, 已經無法重投物理硬碟當 OS 系統的懷抱了, 在這半年的使用中也實在的嘗到一次系統不穩的「小」問題而出現啟動 OS 時藍畫面(腦惱啊), 不過經過細心檢查發現是 SATA 線材接頭不穩固的問題, 更換了新的 SATA 線材後就再沒有發生任何怪異狀態了, 也不曾想過要更新 SSD 的 firmware 韌體(起碼在半年多天天使用的過程中也踫不到甚麼靈異事件), 但是穩定及效能的步進推演是不會(亦不能)停下來, 更新產品的韌體及電子線路板(甚至晶片組)在所難免。ADATA 威剛推出的當代 SSD 固態硬碟 S500 系列在近月(好像是去年十月和十二吧)官方釋出了韌體更新軟體工具, 已購買 ADATA S500 系列 SSD 的用戶終於可以自行更新到最新的韌體版本以改善效能及穩定。

ADATA SSD S599(sandforce) 韌體更新軟體工具下載網頁, 韌體版本是 3.4.6(2010/12/30)
http://www.adata.com.tw/index.php?action=product_download&cid=3&piid=33

更新步驟:
  • 必需先將 SSD 固態硬碟完全備分以免任何資料檔案損壞, 個人文件及設定檔案建議額外再備分(尤其是 SSD 組成 RAID 0 當系統碟)
  • 下載 ADATA S599 Firmware Upgrade Tool V1.0.rar 後手動自行解壓縮(需要有 WinRAR 或 7zip 軟體)
  • 以系統管理員身分執行 ssdupdate.exe
    程式會自動偵測檢查存在適合的 ADATA SSD
    圖中的是 S599 100GB 舊韌體版本是 3.0.5
  • 點按 "..." 選擇韌體文件 "3.4.6.pkg",
    在 Drive List 中勾選需要更新韌體的 S599 SSD,
    然後點按 "Download Firmware to Selected Drive"
  • 程式最後確定提示, 用戶必需在更新韌體前將 SSD 固態硬碟備分, 及系統會自動重啟
    點按 OK 繼續, 更新韌體大約兩分鐘內完成
  • 重啟後更新完成
    韌體版本是 3.4.6


更新韌體後的差異最明顯的是 SMART 溫度的偵測, 溫度指數 C2 出現失常的誤判了, 竟然由舊的 ~26℃ 變成 53℃(今天室溫還只是 ~16℃ 而已), 相信沒有多小個固態或物理硬碟能長久存活在此溫度運作環境下吧(將此誤判的溫度/2 就差不多正常了)。 ~~!

備註:
  • 系統重啟後由於 SSD 的硬體資料改動, OS 系統(Windows)會再配置新裝置(更新 GUID), 如果 SSD 是系統碟的話系統會提示需要重啟一次。
  • 更新韌體會有小許風險, 系統必須在穩定狀態下執行更新程序(電源啊), 萬一更新出狀態的話, 要聯絡 ADATA 代理商保固。

另外, ADATA 的 S596 及 S596 Turbo SSD 亦官方釋出了韌體更新軟體工具, 有需要的話可瀏覽 ADATA 的官方網頁下載
S596 SSD
http://www.adata.com.tw/index.php?action=product_download&cid=3&piid=35
S596 Turbo SSD
http://www.adata.com.tw/index.php?action=product_download&cid=3&piid=103

溫馨提示: Sandforce 的新一代 SSD 固態硬碟控製器 SF2000 系列, 採用 SF-2582 控製器晶片工程樣本已經正在國際消費電子展 CES 2011 中展出實體工程樣品 OCZ「Vertex 3 EX」及「Vertex 3 PRO」, 支援 SATA III/6Gbps 及 25nm NAND flash 顆粒, 單碟(非 raid 0) 550MB/s 讀取 525MB/s 寫入 80K IOPS 4K 隨機寫入效能, 預計產品及類同產品將在第二季上市, 願望一嘗享受超激爽快度的玩家們要準備好(要鈔票滿滿的)錢包啊。

2010年12月9日星期四

Centos Linux 活用 dnsmasq 緩存加速本機及局網 DNS resolver 解拆 IP 地址速度

在慢不經意的網海世界流連閒遊, 經常都會發現瀏覽速度(或電郵伺服器)傳送會突然瞬間頓頓的, 當然網站伺服器及其網絡頻寬相關都排除後, 剩下唯一可能是路由器(或 DNS 伺服器)的問題, 尤其是現代的網頁內容極其「瘋」富, 一個網頁有十多個不同地址的 Flash 及廣告已是平常不過, 試難想像當眾多電腦(辦工室或教育機構)在繁忙時段要 DNS resolver 解拆 IP 地址時路由器(或 DNS 伺服器)所受到的壓力, 而且現今的大爺 ISP 電訊服務商還會玩 DNS 攔截過「淚」的把戲, 當然那 15ms~100ms 的回傳時間不筭怎麼樣, 但能夠為本機及相鄰局網電腦 DNS resolver 解拆地址提升速度(5ms內)也是不錯的。

Linux 應用軟體 dnsmasq 輕量而且可以提供簡易設定的 DNS 轉發(forwarder)及 DHCP 伺服器, 配置成為一個 DNS 緩存加速轉發機供應其他相鄰(及本機)電腦使用, Windows 及 Linux/Unix 或 MacOS 都可以同時得益, 亦減輕大量網絡交通時向上扒 DNS 的時間。

實機使用 CentOS 5.5 Linux, dnsmasq-2.45-1.1.el5_3.i386

設定 dnsmasq 配置緩存加速轉發(cache forwarder):
1. 安裝 dnsmasq, 以 root 系統管理員權限執行在線安裝指令
# yum install dnsmasq
其實 CentOS 一般安裝時已經預裝了 dnsmasq
2. 設定 dnsmasq
以 root 系統管理員權限編輯 /etc/dnsmasq.conf
新增一行, 使用本機 local loopback 監聽地址
listen-address=127.0.0.1

3. 新增一行, 停用無關的 DHCP 供應介面 eth0 裝置
no-dhcp-interface=eth0

4. 如果 DNS 轉發需要提供給其他相鄰局網電腦使用的話, 新增一行
interface=eth0

5. cache-size 的預設值只是 150, 修改增加 DNS 緩存數量 1000(最大上限是 10000), 新增一行
cache-size=1000

6. 設定使用本機 DNS 回傳解拆為先
以 root 系統管理員權限編輯 /etc/dhclient-eth0.conf
新增一行
prepend domain-name-servers 127.0.0.1;

7. 設定 DNS resolver 的服務地址(dnsmasq local loopback)
以 root 系統管理員權限編輯 /etc/resolv.conf
新增一行在首行(如圖)
127.0.0.1

8. 如果需要使用 google dns 的話, 可以加入 8.8.8.8 及 8.8.4.4
9. 如果使用其他局網電腦提供的 dnsmasq, 可以在首行加入其 ip 地址(如圖), 如果其電腦不存在(關機的話), 則會自動選用 127.0.0.1(dnsmasq local loopback)援存加速

由於 DNS 的 domain 地址保留時限是根據 domain 傳回的 TTL(Time To Live), 並不會永遠存留在 cache 中, 所有 cache 都會自動 expire 餘時過期的。

測試, 執行指令 dig google.com

回傳第一次時是正常向上扒 dns 解拆的時間(7Xms), 第二次則是緩存加速後的時間(1ms), 速度差別很大(雖然只是小小的數十個 ms, 如果眾多電腦在繁忙時段大量的話, 節省下的時間是十分可觀的)

備註:
如果 dnsmasq 架設是提供給局網其他相鄰電腦使用的話, 防火牆要開啟 port 53。