初心易得,始終難守
C'est la vie.© 2002 - 2025
  • 我是誰-Who Am I
  • 我在哪-Where Am I
  • 我是什麼-What Am I
  • 年鑑-YearBook
    • Year 2006
    • Year 2008
    • Year 2009
    • Year 2010
    • Year 2011
    • Year 2012
    • Year 2013
    • Year 2014
    • Year 2015
  • 連結
RSS
2 月 8 日, 2025 年

從FreeNAS 遷移到TrueNAS Scale

Ken 随笔 0 Comments

我並不是很想遷移,但是看起來IXsystems 已經失去了初衷,開始進入和Synology,Qnap這種廠商競爭的賽道,儘管這些家用產品銷量很大,但是Vulnerability和Bug頻出,最重要的一點是,雖然這兩間公司都聲稱自己是台灣公司,但其中一間公司的軟體開發團隊在中國深圳。

FreeNAS基於FreeBSD 的軟體版本一直停留在已經EOL的13.1-RELEASE,他們致力於開發基於Debian 的TrueNAS Scale 而放棄了Community Version FreeNAS,是的,對於基於FreeBSD 版本的Enterprise Support 他們並沒有停止。

從長遠看來,IXsystems 似乎並沒有意願繼續在FreeBSD 上開發,因為找到一個Debian 的開發者,比找到一個FreeBSD 的開發者,從機會上來說,大得多,從成本上來說,小得多,作為一間商業公司,發展路徑的選擇是可以理解的。

而我對Debian 的信心是足夠的,從歷史來看,他經過了考驗,不像Centos 的升級那麼糟糕,所以我決定進行遷移,雖說只是click 幾下而已。

這台基於AMD Opteron(tm) X3421 APU 和32G ECC memory 的HPE MicroServer Gen10 當前從使用上來講並沒有問題,由四塊8tb 的Toshiba MG08 HDD組成Raidz2 通過Rsync 為critical data進行備份以及通過NFS/CIFS 進行data share,兩塊1tb 的Crucial MX500 SSD 組成Raid1 通過iSCSI share 為ESXi 提供vmfs和為BSD Jail提供空間,兩塊SK Hynix nvme SSD 為zfs 提供read cache 和write log,雖然我知道沒有電池的write log意義不大,但是,再塞一塊帶PLP 的2.5寸SSD,確實也塞不進去。

不過4槽位的nvme PCIE 卡上確實還有兩個空槽位,於是買了兩塊Kioxia Exceria G2 2tb,因為他在pchome 的價格莫名的低,在將他們替換Crucial MX500之後,似乎就可以加入PLP SSD 了。

一個Samsung 的64G USB drive 運行底層OS,為什麼是Samsung,因為經過實驗,其他的牌子比如Sandisk 或者Kingston 都會壞,好在FreeNAS 的 boot volume 壞掉並不會影響dataset,reinstall 一遍然後把備份的dat file 導入就可以。

主要的問題有兩個,Jails和Rsyncd。

第一,FreeBSD jail 只存在於BSD 上,與TrueNAS Scale 上的docker 是完全不同的東西,我需要先把jail 遷移到ESXi,升級完成後,再將ESXi 上的vm workload 遷移回docker。

在FreeNAS 上我運行了三個jails,其中一個是database,包括mysql,redis,memecached,一個是nginx+php 的webserver,一個是resilio-sync 的數據同步。其實原本PLEX 也運行在jail,但是後來電影越來越多,裝不下啦,用舊的WD My Cloud EX2 Ultra 塞進兩塊16tb 的TOSHIBA MG08ACA16TE HDD然後nfs export給運行在ESXi 上的PLEX。

database 比較好遷移,因為他沒有使用到任何本地的掛載點,而webserver 和resilio-sync 使用了本地的掛載點,這些掛載點都需要使用nfs export 然後從ESXi 的vm 中重新進行掛載。

尚且容易,在ESXi 中啟動新的OS,設置IP地址,環境變量,安裝必要的組件,mount nfs,設置fstab,設置啟動程式,重啟測試,不到兩個小時就將三個jails 完全轉變爲vms,早年FreeBSD 很不常更新的時候,nginx 和php的版本都很陳舊,我通常會自行compile 來安裝,從FreeBSD 12開始似乎他們更新得更頻繁,可以直接從pkg 來安裝最新版本,也就簡化了很多。

第二,是TrueNAS Scale 刪除了原本存在於FreeNAS 中的Rsyncd 服務,變成了Docker 中的一個app,這一部分也還算容易,因為原本我在FreeNAS 上運行的Rsyncd 就只是要接受從BuyVM 和DigitalOcean 的webserver 每天同步過來的網站備份,重新設置一下modules ,IP whitelist 就可以。

當完成Jails的遷移後,就可以開始進行從FreeNAS 到TrueNAS Scale 的遷移啦。

首先切換要升級的目標類型,彈出警告,吧啦吧啦,大概就是上面那些,請參閱官方文件:

https://www.truenas.com/docs/scale/22.12/gettingstarted/migrate/migratingfromcore

AFP share 最重要的大概就是用到TimeMachine 的MacOS,但是Apple 已經拋棄AFP而且TimeCapsule 也後繼無人,畢竟其他的產品沒有一個能打的,應該是後無來者才對。

升級的過程絲滑無痛,我原本預計LACP 會有一些問題,畢竟跨OS 的配置完全不一樣,並不像ZFS pool 一樣可以隨意的導入導出,沒想到從FreeBSD 到Debian 可以這麼絲滑。

但SMB share 遇到一些問題,FreeBSD 上的www 用戶和用戶組,賦權給/www 的share dir,但是遷移後,www 用戶並未被遷移過來,将share 的用户和组修改为www-data 解决,這個問題看起來很奇怪,畢竟連LACP的配置他都讀了,為什麼他沒有讀取passwd 的配置呢?

接下來就是要把workload 從ESXi 遷移回到TrueNAS Scale 的Docker 上,在24.10 版本之前使用的是kubernetes ,這導致我檢索到很多的資訊都是錯誤的,請參閱官方文件:

https://www.truenas.com/docs/truenasapps

順便把原本的Docker 服務都遷移過來,一些服務只需要把目錄copy 到新的安裝中就可以,例如grafana,一些服務需要dump and import,例如mysql-server,一些服務直接啟動新的container,因為data 都在database 中,例如zabbix。

比較難搞的是n8n,因为有很多个workflow 和credential 需要export,查阅了一下官方文件,实际操作起来很简单,因为n8n 的container 里面什么command 都有……

###n8n
https://docs.n8n.io/hosting/cli-commands/#workflows
docker exec -it fc6082cbfddc sh
mkdir backup
n8n export:workflow --backup --output=backup/
tar -czf backup.tgz backup
mkdir credentials
n8n export:credentials --all --decrypted --output=credentials.json
scp backup.tgz ken@server:/tmp
scp credentials.json ken@server:/tmp
login to the new n8n:
cd /tmp
wget http://server/backup.tgz
wget http://server/credentials.json
n8n import:workflow --separate --input=backup/
n8n import:credentials --input=credentials.json

需要注意的是下面两个env,缺少第二个会导致无法正确读写NAS 上的host path。

N8N_SECURE_COOKIE false
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS true

到這裡就結束了,因為NFS/CIFS share 沒有任何變化,Rsyncd 也正常運作,Cloud Sync push 到Amazon S3 以及從Dropbox pull 到本地的sync tasks 也正常,並沒有太多額外需要改動的東西。

整體來說,從FreeNAS 升級到TrueNAS Scale 的過程沒有遇到什麼困難,FreeBSD 到Debian 的跨度被IXsystems 整合得相當無縫,我想這比我預期的情形要好得多,雖然直接重灌然後import zfs pool 的方式不是不可以,但如果遷移的問題過多,就會影響到眾多家用客人繼續使用的意願,說不定就直接棄用了。

兩塊2tb 的nvme ssd 不到5分鐘就rebuild 好了raid1,還是順序替換的,但是,似乎現在的nvme ssd變厚了,把硅脂導熱墊拿掉才蓋上散熱片,不知道是不是因為這個原因,他們的運行溫度維持在了59度左右,不過以告警溫度78攝氏度來看,這應該是一個正常的溫度。

1 月 30 日, 2025 年

年前的一點點清潔工作

Ken 随笔 0 Comments

把機櫃清潔了一下,畢竟不是無塵室,大部分的清潔工作很簡單,但是我忘記買壓縮空氣,對於MicroServer 的電源模組清潔沒有很到位,motherboard 也沒有吹得很乾凈,但是看起來灰塵似乎也不多,感覺可以留到下一個年終。

最髒的部分大概有三個,第一個是ESXi server 的CPU 散熱器,他有完整的風筒,理論上來說應該會卡很多灰塵在散熱鰭片上,第二個是FreeNAS 的進氣柵口,第三個是機櫃頂部的散熱風扇葉片,看了下FreeNAS 進氣柵口的絲襪似乎還可以再用一年,吸塵器也吸不出來太多。

WD NAS在機櫃的散熱風扇下方,我原本預計會有很多灰塵,打開看了看反而是很乾淨的樣子,WD的設計基於ARM晶片,即使高溫也沒關係,所以他的散熱風扇很少運轉,路過的灰塵的總量也比較小,都被吸走。

地震得過於頻繁,以至於在收到Alert 之後的第一反應就是躺到床上,等晃完了再起來。

終於買了這本書,不過是Google Books 的電子版,還在想辦法導出到Kindle 或者pdf。

1 月 17 日, 2025 年

rename on FreeBSD

Ken Tech 0 Comments

這個問題困擾我很久了,有時候照相機導出的照片會被添加莫名其妙的下滑線和連結符,更討厭的是有的software 會添加空格,加空格究竟是你媽個什麼鬼。

但是,FreeBSD 下面默認的renamex 我不會用,找了很多參考文件還是不行,應該是我理解能力太差,放棄,

改用perl 的rename

pkg install p5-File-Rename
rename "s/ //g" *
rename "s/_//g" *
rename "s/-//g" *
rename "s/\)//g" *
rename "s/,//g" *

vi 的替換command 似乎也是類似的

%s/logs/\/home\/www\/logs/g

增加了自動升級,雖然FreeBSD 不升級也不會像Linux 那麼倒霉。

crontab -l
0 9 * * * /home/www/sh/pkg-auto-upgrade.sh
#!/bin/sh
pkg update -f
sleep 5
pkg upgrade -y
sleep 5
pkg clean -y
sleep 1
pkg autoremove -y

還有,使用dnf 的Linux現在也有自動升級可以用,

dnf install dnf-automatic -y
vi /etc/dnf/automatic.conf
random_sleep = 120
apply_updates = yes
emit_via = motd
systemctl enable --now dnf-automatic.timer

最近老家的媽咪手機號不知道怎麼突然連不上了,也許是sim卡或插槽有問題,也許是中國聯通又在發神經,動不動就以反詐騙的名義把號碼給停了,然後今天突然發現一直插在電源上媽咪的舊手機電池鼓包,快要把螢幕撐破。

這大概是媽咪在跟我告別了吧。

12 月 23 日, 2024 年

Debian12 無人值守升級Plex

Ken Tech 0 Comments

由於Plex 更新的頻率過高,時不時的就會跳出來提醒,我想既然Debian 有自動升級,那就把Plex 也配上,大致過程如下:

第一步,添加plex 的repo 到debian 作業系統,請參閱官方說明:

https://support.plex.tv/articles/235974187-enable-repository-updating-for-supported-linux-server-distributions

第二步,啟用debian 的無人值守升級,

apt-get install unattended-upgrades apt-listchanges

第三步,將plex 添加到無人值守升級的配置裡面,這裡有點怪,因為官方文件語焉不詳,檢索了一些文件後,應該是這樣:

使用apt-cache policy 來獲取要添加到配置文件中的參數:o=Artifactory,a=public

https://downloads.plex.tv/repo/deb public/main amd64 Packages
release o=Artifactory,a=public,n=public,l=Artifactory,c=main,b=amd64
origin downloads.plex.tv

然後將這兩個參數加入到unattended-upgrades 的配置

vi /etc/apt/apt.conf.d/50unattended-upgrades

o=Artifactory,a=public --> "origin=Artifactory,codename=public";

Unattended-Upgrade::Origins-Pattern {
"origin=Artifactory,codename=public";

unattended-upgrade --dry-run --debug

然後過兩天再觀察一下,Plex server 已經自動升級到最新版本。

11 月 16 日, 2024 年

CO2 鋁瓶的墊圈和Okinawa

Ken 随笔 0 Comments

台灣的CO2鋁瓶使用英制,這倒不是問題,問題是伊士達的閥門看起來很奇怪,密封墊圈次拋型,基本上用一次就會碎掉,而且一定要擰緊,官方不建議用扳手,但是用手是沒辦法把他封住的,我還是用了扳手,在這一點上,中國的鋼瓶設計更合理一些,我從來沒遇到過會漏氣的問題。

水草們長得還不錯,就是日本珍珠草長得太過快速粗壯了,

Twinstar 的燈確實很好,我需要把亮度調低一個level 才行,不然會太刺眼,水藻也長得過快。

日本大使館的簽證辦下來,結果遇到颱風,安排好的郵輪就地取消,不過海南雞飯還是很好吃,還是去了沖縄県,畢竟簽證辦都辦了。

小島的天氣竟然很好,本來以為又一個颱風多少會有一些影響,結果完全沒有,沖縄の飲食和ときょ並沒有明顯的差別,但我覺得燒肉要比在大阪吃到的好吃,畢竟價格要一萬多日圓。

去了幾個著名景點,水族館,美國村。

好像也沒幾個,珊瑚比大阪水族館的更多元,我想可能是海水比較清潔的緣故,這裡的海邊看起來就比大阪港口的乾淨許多,也沒有大阪港口浮誇的海盜船製造污染源,日本國的水族館很愛用壓克力,磨花了怎麼辦?

但看起來這個開門很久的水族館似乎並沒有磨得很花,莫非是他們有水下修復劃痕的技術?

在Okinawa 的最後兩天去了安靜的海邊,這個島本來人就少,Sheraton的客人似乎也都是外島來的日本人,大概是個會議酒店的意思。

海邊很安靜,無論是晚上還是白天都沒有什麼人,酒店的客人們都在房間裡面不出來。

おきなわ是個好地方。

唯一的不足是這裡的公車很隨意,說不來就不來,但這也可能是GoogleMaps 的問題,GoogleMaps 上會有不存在的公車在地圖上移動,按照既定路線和時間運行而不管這台車到底有沒有出站,我應該說是Google 太隨意了嗎?

下次要自己開車才行。

«‹ 2 3 4 5›»

剧情

過客

  • R2 on 卷進了美商
  • Ken on Mommy最後的樣子
  • R2 on Mommy最後的樣子
  • Ken on 天朝Loli控组曲(带歌词,修正版)
  • liu on 天朝Loli控组曲(带歌词,修正版)
  • R2 on 甜點不錯的西紅市
  • Ken on 甜點不錯的西紅市
  • R2 on 甜點不錯的西紅市
  • Ken on 甜點不錯的西紅市
  • R2 on 甜點不錯的西紅市
May 2025
S M T W T F S
 123
45678910
11121314151617
18192021222324
25262728293031
« Apr    

Spam Blocked

101,808 spam blocked by Akismet

↑

© 初心易得,始終難守 2025
Powered by WordPress • Themify WordPress Themes