花園防火牆升級失敗

這幾天的天氣有點涼,但是我穿了羽絨服,走上一段路之後還會覺得有點熱。

最近這段時間不知道為什麼,總是耳朵出問題,前幾天的時候,左邊耳朵不知道為什麼飛進一隻小飛蚊,小飛蚊在耳朵裡面撞來撞去,造成巨大的聲音,不過它的體積很小,很快就淹沒在了我的耳屎裡面,然後被清理出來,今天下午不知道為什麼,只要我用手托著下巴,右邊耳朵裡面就會發出呼嚕呼嚕的聲音,感覺不太像小蟲子,也不太像其他任何可以想像到的東西,準確的講,我沒有想到會是東西掉進去,我想了想找了一個棉簽,往裡面掏了掏,居然掏出一根小頭髮來。

昨天升級家裡防火牆的時候出了點問題,家裡的防火牆是架設在惠普的T620上,他的SSD容量比較小,只有8GB,由於pfSense升級的時候,他會自動創建一個當前運行環境的zfs快照,當進行過多次升級之後,這個快照的容量就會變得相當可觀,正因為如此,這台設備的SSD剩餘容量已經不足以提供本次升級操作所需,但是pfSense軟體在升級之前並沒有檢測磁碟空間剩餘,而是直接進行了升級操作,這個操作導致在升級過程中無法正常解壓縮已經下載的軟體安裝包,因為磁盤空間不足,解壓縮一部分文件以後無法繼續,最終導致升級失敗,觸發rollback 流程,而pfSense的回滾流程也並不完善,自動回滾並沒有正常進行,造成了終端介面在重啟時找不到可用的啟動文件。

pfSense是一個很好的軟體,從最早的時間算起也有十幾年,但是他在軟體發布測試工作上遠遠不及傳統防火牆廠商,問題是pfSense也並不能算做NGFW,所以他的定位有時候看起來有點怪(可是他不要錢啊),當然,同樣基於FreeBSD設計的junOS雖然是Juniper出品,卻也是同樣繼承了ufs掉電容易丟失文件的習慣,即使如此,junOS在升級的時候絕不會出現如此低級的錯誤,當然,因為他基於特定硬體,他從一開始就躲過了這個問題。

如何解決這個問題呢?

在pfSense Loader啟動時選擇boot environment,從中選擇之前可以正常啟動的環境,啟動後,刪除之前的幾個版本啟動快照,釋放磁碟空間,然後重新執行升級,如此便可以完成升級,boot environment 是pfSense plus特有的功能,如之前的blog所述,現在需要付年費129美金才可以從community édition 升級到plus版本,使用這個功能,當然我是覺得不值。