Synology DiskStation DS923+ 使用非原廠 NVMe SSD 建儲存空間
使用過SSD固態硬碟就回不去了,因為傲人的讀取速度讓人難以忘懷,然而速度永遠不嫌慢,M.2 PCIe的固態硬碟又重新定義了傳統SSD的效能速度。M.2 NVMe SSD變成了下一代的新寵兒。對NAS這種存儲裝置來說,速度不是唯一考量,但正所謂天下武功是唯快不破,NAS已經不再是NAS了,除了需要大量的儲存空間外,同時也需要可靠且高效的資料傳輸和存取,於是利用一些技巧,終於讓 Synology DS923+ 使用非原廠NVMe SSD來建立儲存空間,或許安全性上打了些折扣,但在有限的經費上,是個另類的選擇。
Synology NAS的功能眾多,已不是單純NAS那麼簡單,筆者的部落格備援站、郵件主機、私有雲空間與相簿、iSCSI、備份通通在NAS上,原因無他,就是Synology NAS有個令人愛不擇手的DSM系統與眾多的應用軟體。NAS想要好用,系統扮演著相當重要的角色,Synology DSM系統可是出了名,尤其是套件的運用更是讓NAS飛上天。
網路無遠弗屆,速度的演變也非吳下阿蒙,對個人來說1Gb的網路頻寬應該還算OK,但面對一台多人存取的NAS而言,感覺似乎也慢慢不敷使用,低成本的Link Aggregation 802.3ad (稱為「網路聚合」)是不錯的解決方案,Synology DS923+ 內建 2 個 1Gb 網路埠,可 Link Aggregation 合併頻寬,避免多人使用下造成的瓶頸,也提供10Gb網路升級套件,可說進可攻退可守,滿足要求網路速度的需求。裝上E10G22-T1-Mini套件後,就有兩個可 Link Aggregation 合併頻寬的1Gb 網路埠+一個10Gb網路埠,對於網路的配置靈活度更佳。
筆者就以自己的角度來說,必須具備大容量與安全的儲存空間、快速的資料傳輸和存取速度、應用程式的支援、易於管理設定和一定的擴充能力。所以當時選擇了Synology DS923+ NAS,除了可以擴充10G網卡,又有內建兩個M.2插槽,可用於快取或儲存空間用。使用了一年多,家中的環境已經全部10G網路化,對於NAS的速度已經不是快取能滿足。看到原廠的NVMe SSD價格,真的下不了手,於是才有想要使用非原廠的念頭。
由於PC一直升級,手上蠻多1TB的M.2 SSD,裝上只能當作快取用,無法直接當成儲存區,有些遺憾。
DSM只要偵測不是原廠或認定NVMe SSD,都不會出現儲存區選項,所以要利用一些技巧,首先要啟用SSH功能。
接下來使用終端機程式來登入DSM系統內,不用第三方工具,使用Windows 11的PowerShell就可以。找到PowerShell後按下滑鼠右鍵,選擇「以系統管理員身分」來執行
進入PowerShell後,使用「ssh 帳號@NAS IP位址」來登入,登入前會詢問帳號密碼,輸入確認後即看到熟悉Linux的’$’提示字元。
眾所周知,DSM系統其實就是以Linux為核心研發的,想要對磁碟分割與管理,必須取得root權限,有玩過Linux都知道下個sudo -i指令即可輕鬆取得root權限,當然執行後會要求再次輸入密碼來確認(就是你DSM帳號的密碼),看到’#’提示字元就是擁有最高權限的環境。
想要讓NVMe SSD被DSM辨識到,需要動一些手腳。先來看看磁碟設備的清單,/dev這個目錄對所有的使用者都十分重要,因為在這個目錄中包含了所有Linux系統中所使用的外部設備。單純地列出NVMe可以使用”ls /dev/nvme*“指令,如下圖看到一大堆的NVMe裝置,是不是眼花撩亂。
從/dev 下可以發現有一堆nvme 設備,NVMe固態硬碟的裝置名稱通常以”/dev/nvmeXnY“形式表示,其中X是裝置編號,Y是命名空間編號。這與之前的sda/sdb有些不同,因為NVMe 介面硬碟的出現,Linux 採用了新的命名規則,即nvme[0-9]n[1-9],nvme 是固定的前綴,第一個數字表示控制器的編號, n 是固定字符,第二個數字表示該控制器下的命名空間編號。
那明明只有插入兩塊NVMe SSD,怎麼跑出這麼多的裝置出來,主要是分割區的關係。例如nvme0設備裝置上,有3個分割區,分區表類型為GPT,如下所示:
nvme0n1
├─nvme0n1p1
├─nvme0n1p2
└─nvme0n1p3
會出現這種狀況,主要是筆者的NVMe SSD都是PC升級大容量汰換下來的,所以殘留下Windows的分割狀況。
如果你是新的NVMe SSD就不會有這麼多的清單出現,如下找到/dev/nvme0n1及 /dev/nvme1n1兩個主要的NVMe SSD硬碟。
接著就是來分割這兩個NVMe SSD硬碟,不是使用Linux常見的fdisk,而是使用Synology的synopartition指令來分割,利用–part 12參數來做特定佈局的磁碟分割,–part後面為(1-16),不同的值代表不同的佈局,筆者查不到細節,所以就照著輸入”synopartition –part /dev/nvme0n1 12“就對了,當出現訊息時按下”Y”,即可完成。
可以使用”fdisk -l /dev/nvme0n1“來查看剛剛分割的資訊,可以很清楚看到切出的3個分割區(nvme0n1p1、nvme0n1p2、nvme0n1p3),nvme0n1p3擁有最大空間的分割區,待會就是要處理格式化分割區。
一樣下”synopartition –part /dev/nvme1n1 12“指令將另一顆SSD進行分割配置,也再利用”fdisk -l /dev/nvme1n1″查看,如同第三個/dev/nvme1n1p3擁有最大空間的分割區。
目前我的DS923+上有兩顆傳統硬碟的RAID佈局,兩個插槽是空的,雖然NVMe SSD品質已經相當成熟,為了安全起見,RAID 1還是不可避免。但手動做RAID,必須避免衝突,所以使用”cat /proc/mdstat”來查看RAID編號狀況。藍色匡內看到編號md0、md1、md2,所以只要編號md3以上即可。
考慮到筆者還有兩個空的插槽要使用RAID,想說設定成md6應該足夠,所以利用Linux的mdadm指令來建立Raid。
指令:mdadm –create /dev/md6 –level=1 –raid-devices=2 –force /dev/nvme0n1p3 /dev/nvme1n1p3
–create /dev/md6 # 建立一個RAID,名稱為md6
–level=1 # RAID1
–raid-device=2 # 使用2個分割區
–force #強制執行
–/dev/nvme0n1p3 /dev/nvme1n1p3 # 指定要建立Raid 1的兩個最大分割區
建立RAID後,接下來就是格式化,檔案系統格式當然是選擇Synology首推的btrfs(若想使用mkfs.ext4 -f /dev/md6)。
指令:mkfs.btrfs -f /dev/md6
看到完成後退出ssh並離開PowerShell,回到NAS的DSM畫面上,請重新啟動NAS。
重新啟動後再進入NAS,進入儲存空間管理員內,隨即看到一個可重組集區,點選「線上重組」。
看到再次檢查設定視窗內,有RAID類型還有硬碟的型態,出現M.2硬碟就表示手動將非原廠SSD掛入成功。
接下來就慢慢地等檢查完成。
雖然有些繁複,但結果是令人振奮。
筆者實作時的DSM版本是7.1.1,嘗試升級到7.2.2試試看(安全起見,若有資料要先備份)。
升級後進入儲存空間管理員查看,手動建立M.2 SSD還健在,完全運作正常不受影響,暫時不用擔心小版本的升級。不過最好不要使用韌體自動升級,因為此方式未必是正常的管道,遇到大版本的升級,先備份在聽看聽一下再做決定哦!
小結
有了10G網路後,剩下的就是硬碟效能的問題。傳統的磁碟I/O少於160MB/s,即使使用SATA SSD也只能有500MB/s多的實力,但使用10GbE的網路設備,理論上有每秒的1250MB的讀取,可見利用M.2 NVMe SSD插槽當成儲存區,才能讓NAS裝置瞬間享受高速的傳輸與讀寫效能。對NAS這種存儲裝置來說,MTBF(平均故障間隔)、TBW(寫入總量)、廠商保固、NAND Flash晶片類型更是重點。使用非原廠的NVMe SSD 當建儲存空間,就一定會有安全上的問題嗎?其實享受速度也不一定要妥協原廠的束縛,善用快照、Hyper Backup就可以迎刃而解。
如筆者使用非原廠的NVMe SSD來做RAID 1,有了第一層保護。再利用NAS內建的快照功能儲到到傳統硬碟上,隨時依需求將檔案還原至特定時間點,確保資料萬無一失,則屬第二層防護。第三層使用Hyper Backup完善的備份策略儲存較安全的傳統硬碟上,最多有65,535份備份版本,讓重要的資訊隨時可還原與追蹤,且使用區塊層級增量備份與跨版本資料去重複技術,大幅地降低所需的儲存空間,所以享受速度也可以便宜又大碗。
如何刪除修復磁碟分割區
如果你的是全新的SSD,可以不用理會以下的說明。筆者將汰換的PCIe Gen 3×4 NVMe SSD給NAS運用,對於10Gb網路速度綽綽有餘,但因Windows系統的分割,產生了微軟特有的修復磁碟分割區,此區主要是來恢復系統用的特殊分割區,有使用Windoiws RE(Windows Recovery Environment)大都了解。雖然此區站個空間不大,但總是覺得殘留無法讓NAS為所用。如果你想要釋放,也不一定要第三方工具,可以用內建的磁碟管理工具來清除,不過動作務必小心,別刪錯了。
Windows系統有個修復磁碟分割區,使用磁碟管理工具的視窗介面無法刪除,你可以使用diskpart指令。
- C:\WINDOWS\system32>diskpart
- DISKPART> List Disk (列出所有磁碟)
- DISKPART> Select Disk X (修復磁碟分割區所在的磁碟號碼)
- DISKPART> list partition (列出該磁碟所有分割區)
- DISKPART> select partition X (選擇修復磁碟分割區號碼)
- DISKPART> delete partition override (刪除該分割區)
- DISKPART> list partition (重複指令確認該復原磁碟分割 X 已刪除)
清除乾淨後就看到一個完整的未配置間。
延伸閱讀: