2017年5月30日 星期二

[經驗分享]FreeNAS Rebuild 速度以及故障影響



如圖所示,磁碟陣列重建是所有系統管理員的惡夢,硬碟越多、容量越大、資料越滿越是可怕。

不過,我所使用的 FreeNAS 基於 ZFS 檔案系統,在這方面可以說是勝於其它磁碟陣列系統,最近正好有一台機器硬碟故障進行更換,利用此機會將數據提供各位朋友參考。


圖片出處



儲存情況


這台儲存伺服器的配置如下:

  • 採用 ZFS 檔案系統
  • 總容量 24TB,已使用 12.2TB
  • 硬碟數 x 12,每顆 3TB,轉速 7200rpm,介面 SATA
  • 採 RAIDZ2 + RAIDZ2 組成,每組 RAIDZ2 有 6 顆硬碟



磁碟配置情況




處理經過


端午連假時,發現其中一顆硬碟故障,發生 Faulted 後,磁碟陣列進入 Degraded 模式。


磁碟發生故障




確認問題後,利用空 Bay 裝上新硬碟並 Replace 替換之,接著系統便開始進行 Rebuild (Resilver) 程序,這就是一般磁碟陣列耗時最久,也最吃系統效能的階段。

不過,ZFS 在這方面有一些獨到的設計,可以只重建有使用到的資料部份,並搭配相關的演算法有效降低效能損耗與時間長度。



磁碟重建進度


本次重建完成大約 11 小時(時間 11:30 開始,於 22:30 左右結束)

特別注意,這台 FreeNAS 同時也在線上提供給 VM 服務中,並非離線專心 Resilver。





其它情況


本次磁碟發生問題後,也察覺到兩個情況,需特別注意。

  • 當磁區出問題時,排程定期快照功能將停止運作
  • 同時,因為排程快照停止運作,複寫工作也同步停止
  • 直到 Rebuild (Resilver) 完成後才恢復正常運作


另外,剛把新的硬碟插上空 Bay 時,正要做 Replace 之前發生詭異的 FreeNAS WebUI 死掉,經過 Reboot 才恢復。

不過 WebUI 死掉時,其它 ZFS、NFS、SSH 等所有服務都還是正常的。


FreeNAS WebUI 故障




結論


FreeNAS 及 ZFS 是好物,走過路過不要錯過!


2017年5月21日 星期日

[經驗分享]Visual Studio for Mac 實用度越來越好


微軟 .NET 平台一直是我喜歡的開發環境,即便到了 Linux、macOS 上,我的程式也都能夠透過另一個 Mono 專案執行,既利用了 .NET 快速開發的特性,也保有跨平台的優勢。


開發工具


另一個殺手級的工具 Visual Studio,目前最強大的整合式開發環境,大大的節省眾多在困在開發海中的軟體工程師,最近更正式推出了 Visual Studio Community for Mac,當然要來好好的試一下。

它的歷史沿革源自於 SharpDevelop -> MonoDevelop -> Xamarin Studio,最後 Xamarin Studio 被微軟買下。





牛刀小試


不僅可以正常開啟 .NET 方案與其下專案檔,甚至執行、編譯與偵錯也完全沒問題。




測試專案為「Duplicati



正常開啟方案與專案檔



正常建置、偵錯與執行



行動應用


除此之外,還具備了直接開發三大平台 App 的能力,從此一套開發工具就能完成 Windows、iOS、Android 行動應用的目標,而且使用上非常容易!


開發與偵錯 Android 專案




網站開發


即便是 ASP.NET 網站開發也難不倒它,去年它還在 Preview 版的時候我已經測試過 WebForm 的實際使用,只要按下執行就會自動呼叫系統上的瀏覽器起來並開始偵錯。



開發與偵錯 ASP.NET 專案



未來展望


從微軟的野心來,讓開發工具統一所有平台指日可待,對於開發人員來說只需要掌握一套 IDE 便能吃遍天下,不僅降低重新學習其它語言或開發工具的時間,在企業的產品開發時程也會大大縮短,予以期待,也樂見微軟開始跨平台與開放原始碼。


2017年5月20日 星期六

[經驗分享]開源的原始碼檢測系統 - SonarQube



現代軟體越來越強,原始程式碼也越來越龐大,加上需要不斷追趕的時程,每個軟體團隊對於兼顧程式碼品質已經日漸困難。





需求困境

市面上有多種針對原始碼品質做白箱檢測工具軟體,可惜的是都價格不菲。




這張投影片真好用,一次製作常常用到(誤)





替代方案


這種等級的套件,原本我已經沒有奢望找到可用的開源軟體,那知我運氣還真的不錯,就在這個節骨眼上,有個套件不斷改版改到適合我用的程度了。


(那有這麼剛好的啦... 哈哈)


就是這麼剛好,而且這套軟體同樣有我個人偏好的「美觀介面」與「容易操作」,分享經驗如下。

SonarQube



SonarQube 是一款基於 Java 開發的原始碼檢測與品質管理系統,因著 Java 的關係,Server 與 Client 都是跨平台的。


功能簡介:

  • 支援多種程式語言
  • 檢測安全性、可靠性、重覆性、技術債務、測試覆蓋率等
  • 提供問題資訊以及程式碼改善建議
  • 具驗證機制,可整合 Github、Gitlab、LDAP、AD 等
  • 成熟的更新中心,可方便的升級系統與安裝外掛套件
  • 更多...





使用經驗


下載解壓縮後,執行 sonar.sh start 命令將服務運作起來。




Web 功能


打開瀏覽器,輸入 http://ip:9000 即可進入。


強烈提醒:請不要使用 Firefox 瀏覽,會發生一些匪夷所思的事,它浪費了我好幾個夜晚。


透過更新中心,可以快速的安裝需要的功能外掛,系統與外掛升級也是在此簡單點選就可以完成。不過要特別注意外掛的授權,有些是商業套件。

更新中心




使用者可以自己決定什麼語言要用那些特徵做檢測,內建了非常多的規則,依據需求可以更嚴格或者更寬鬆。

代碼規則



對於各種語言以及品質檢測的分數,可以自訂每一個項目的細節,以做為軟體品直的把關。

質量配置





Scanner 功能


基本設定完成後,第二個階段是配置 Client 端使用 Scanner 程式,依據不同的作業系統下載相對應的 Scanner。







Scanner 解開後,需要配置 conf 與 project 裡的設定檔,請參考官網文件。







配置完成後,在想要檢測的專案路徑下,執行 sonar-scanner 即可開始分析專案,並會把結果送到伺服器上。




查看報告


最重點的時刻來了,所有分析完的結果會用非常直覺的儀表板、圖表、數字呈現。


專案總覽



安全性指標




技術債指標



重覆率指標



問題清單




SonarQube 不僅僅是幫我們找出原始碼的各種問題,還會儘可能的提供我們問題資訊,描述原因,甚至是改善建議,這將為我們節省大量的程式修正時間。

如圖中所述,在一段 HTML 裡它建議我們把 < b >  改為較新的 < strong >  標籤。


問題改善建議



最後要介紹的是一種挺酷炫的功能,利用 3D 互動的方式來檢視整個專案的問題面向。

3D檢視模式







心得結論


佛心啊!SonarQube!

對於軟體開發團隊來說,大大節省經費,也大大節省時間。

❤❤❤







2017年5月11日 星期四

史諾登:開放原始碼的重點在於不必妥協




史諾登認為開放原始碼的美妙之處便在於透明公開,所有的程式錯誤或漏洞皆無從隱藏,例如去年爆發出來的Hearbleed與Shellshock漏洞。


他認為研究找出開放原始碼的漏洞,並不會打擊到開放原始碼,反而會讓開放原始碼更令人安心,因為整個開放原始碼社群會立刻修補漏洞,立即解決問題。


反觀商業軟體,是不可能做到這一點。 


「開放原始碼的重點在於不必妥協,」


「想要世界更好就得親自動手。」






2017年5月8日 星期一

[經驗分享]開源自動化APP安全測試系統 - MobSF



現代人手都是智慧型手機,APP 市場佔據一片江山,對開發商來說,面臨的各種資安考驗越來越多,行政院亦推動工業局與資策會成立「行動應用App基本資安規範」,期望讓台灣 App 開發的安全性更加提高。

APP 相關檢測工具越來越多選擇,黑箱、白箱測試各有好產品,自動化測試更是節省開發團隊時間的重要利器。



需求困境


無奈的是,這類 App 的自動化檢測工具價格不低,許多團隊礙於資金問題,心有餘而力不足。



這張投影片真好用,一次製作常常用到(誤)





替代方案


沒關係,我們可以從開源專案中找到可以使用的替代方案,即便比不上需要花錢購買的商業套件,但也能夠達到一定的效果,效益絕對比沒有使用前大大提升。

這就是我找到的開源解決方案,介面美觀、操作容易,分享經驗如下。


MobSF


MobSFMobile-Security-Framework)是一款基於 Python 開發的 APP 自動化測試框架,可以在 Windows、macOS、Linux 上運作使用。


功能簡介:

  • 支援 APK (Android)、IPA (iOS) App 靜態分析
  • 支援 APK (Android) 動態分析
  • 檢測 程式簽署、索取權限、API 呼叫等
  • 惡意行為分析
  • 提供 Manifest、Code、File 安全性分析
  • 更多...





使用經驗


安裝完成後,使用 python manage.py runserver 命令即可將服務執行起來。

服務運作中畫面



操作方式非常非常非常簡單,只要將 apk 或 ipa 檔案直接拖曳進網站即開始進靜態分析。


App 上傳檢測介面



經過一段時間檢測完成後,畫面會自動切到檢視頁面,這個介面清楚簡單,數據直接呈現在儀表板上。

檢測結果儀表版





點選左側類別可進入查看,對於不同的問題,MobSF 會自動在報告上寫出問題原因、危險等級,以及所在檔案,點選後的檔案可以直接進入反編譯後的原始碼。

安全性分析報告





如果檢測的對象是 Android 系統 App,可以點選功能表下方的 [Start Dynamic Analysis] 進入動態分析功能。

Apk 動態分析



進入介面後,MobSF 會自動將 VirtualBox 上安裝好的 Android VM 帶出來,點選 [Create Environment] 後即可將 Apk 帶入 VM 裡完成準備程序。

啟動成功後,可以分別使用 [Start Exported Activity Tester][Start Activity Tester] 進行各種測試,按下 [Take a Screenshot] 則可以查看目前運作的情況。


當動態分析的項目全部測試完成後,點選 [Finish] 即可進入動態分析的報告頁面。

動態分析結果報告


動態分析報告裡有非常詳盡的資料,例如各 API 呼叫的歷程、檔案存取、簡訊使用、電話撥打行為、網路流量、... 等,可以協助軟體測試人員省下大量的時間,專注於更重要的任務。


當專案測試完畢,靜態與動態分析都可以將報告匯出成 pdf 檔,方便遞交使用。



查看歷史測試記錄


日後若想要再回頭查看資料時,不用浪費時間重新測試,點選畫面上方的 [Recent Scans] 即可進入曾經做過的檢測,再點進去即可查看當時的檢測報告。





心得結論


一套功能這麼強大、方便又自動化的開源測試工具,讓我使用之後感到意外驚喜,MobSF 真的是 App 軟體開發團隊的超級好朋友啊!

😎😎😎






參考資訊


MobSF 相關資料整理





2017年5月1日 星期一

[經驗分享]比 rsync 更適合大檔案同步的 bigsync



這麼多檔案同步工具裡,rsync 歷史悠久功能也很不錯,幾乎大部份的 Linux 系統與 NAS 設備都有內建,使用起來非常方便。




有什麼問題?


rsync 的缺點在於進行檔案同步時,rsync 所使用的系統資源較為吃重,以及傳輸的效率不夠快速。

rsync


這是肇因於 rsync 所使用的檔案比對機制所致。





有什好推薦?


為了加快與提高效率,在 2011 年我們發現了一款仍在初期開發階段的「bigsync」套件,同樣是開源軟體。

bigsync



bigsync 用起來很快,同步的速度比 rsync 快非常非常多,我曾經用他做為檔案同步到異地機制好一段時間,直到後來遇見了 ZFS,那就是另一段故事了。



bigsync 適合用在備份目的裝置效能低落的場景




運作方式:
  • 取出來源區塊計算 Hash 值
  • 讀取目的端上次計算過的 Hash 值
  • 兩相比對,有不同才傳輸該區塊
  • 因為目的端只要取儲存過的 Hash 值,所以快(rsync 每次都要把目的端檔檔案進行比對)
  • 使用者可以依據實際情況自行決定區塊大小





指令用法:
bigsync --source /pve/d2.qcow2 --dest /bak/d2.qcow2
其它常用參數

--blocksize:指定使用區塊大小(預設 15MB)
--sparse:支援以稀疏檔案方式處理
--quiet:沉默是金(不要笑,說明檔真的這麼寫!!)



支援系統:
  • Linux
  • macOS



安裝方式:
  • 呃... 他只提供編譯方式,請下載原始碼後 Makefile



注意事項:
  • bigsync 已經有一段時間沒有更新版本,最新版號 0.1.2,釋出日期 2013/09/29