为啥linux分区是nvme0n1,NAS 篇五:尝试达成最终目标: 黑裙+万兆网卡+Nvme 存储空间的实现与测试...
NAS 篇五:嘗試達成最終目標: 黑裙+萬兆網卡+Nvme 存儲空間的實現與測試
2020-01-18 18:49:23
46點贊
248收藏
80評論
創作立場聲明:1. 本系列文章討論NAS與局域網, 請小編高抬貴手不要分類到無線網絡去
2. 如果你讀了開頭, 有“可我的寬帶才300M”的想法, 那么這文章還不適合你的需求, windows下請按Ctrl+W, iOS請按Home鍵,安卓我不熟.....
3. 本篇(第5篇) 涉及使用linux命令手動修改磁盤狀態, 錯誤操作可能導致數據丟失,請小心操作,本人不承擔由此造成的損失
首先我把大家問得比較多的有用信息鏈接列表如下:
還是建議大家按順序閱讀, 不容易產生誤解
覺得NVME緩存還不夠給力怎么解?
如果你是從我前四篇順序讀下來, 那么應該是已經感受到了Nvme 緩存的機械硬盤存儲和萬兆網絡配合后速度飛躍, 然而這畢竟是緩存不是最終存儲, 雞血總是有限的, 緩存一旦用完, 速度又回到了機械硬盤的老樣子。而群暉的緩存策略, 似乎放棄舊緩存是個漫長過程(注意是指放棄舊緩存內容所占空間, 不是指寫回。 寫回后原內容還是駐留緩存的), 這導致緩存用滿后 , 很長時間這個存儲盤就和普通機械硬盤無異了。
那么群暉有沒有可以直接使用NVME SDD 做存儲的設定呢? 我翻遍群暉的介紹, 無論是家用頂配的DS918+,還是中小企業使用的DS1018+, 發現都是只支持Nvme m.2 SSD緩存, 卻不支持nvme SSD的存儲空間。而對于Nvme SSD, 現在的市場上不但有海康, 西數, 東芝等廠家推出的2T左右的m.2 Nvme SSD;更有3.2T,4T甚至8T的二手“大船貨”U2 Nvme 2.5寸 SSD可供選擇。 很多人也在我這系列文章的前幾篇問有沒有辦法用NVMe SSD直接做存儲盤。 我爬了半天XPENOLOGY 論壇, 從一篇俄文帖子里找到線索(此處吐槽google翻譯1000次), 最后在reddit 論壇找到了一個方法, 由于不可描述的原因, 大家訪問可能有困難, 所以我這次干脆全文貼給大家了, 中英文混合, 大家見諒
前提條件:
首先是黑群暉硬件固件要求是DS918+ DSM6.2 bootloader 1.04。PC上有SSH的工具如putty
其次是打上了我在篇三中貼出的patch腳本, 從而在黑群暉的DSM 存儲空間管理->HDD/SSD 頁面可以看見Nvme緩存設備, 但還沒有被用作任何存儲空間的緩存
Step1 創建分區
從SSH用admin賬戶登陸群暉命令行終端, 并鍵入
sudo -i
輸入密碼獲得root權限, 然后執行
ls /dev/nvme*
You will see the /dev/nvme0n1 or /dev/nvme1n1 depend on which slot you install the SSD.
輸入:
fdisk -l /dev/nvme0n1
此命令用來確認nvme SSD的狀態大小. ( if your SSD at slot 2, use /dev/nvme1n1 instead)
Disk /dev/nvme0n1: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
如果信息符合你要使用的NVme SSD的信息,用如下命令創建分區:
synopartition --part /dev/nvme0n1 12
and answer 'Y' if you confirm
Device Sectors (Version8: SupportRaid)
/dev/nvme0n11 4980480 (2431 MB)
/dev/nvme0n12 4194304 (2048 MB)
Reserved size: 260352 ( 127 MB)
Primary data partition will be created.
WARNING: This action will erase all data on '/dev/nvme0n1' and repart it, are you sure to continue? [y/N]y
Cleaning all partitions...
Creating sys partitions...
Creating primary data partition...
Please remember to mdadm and mkfs new partitions.
這樣實際上給一個nvme 盤創建了標準的群暉方式的分區, 即: 2.4G大小的系統分區, 2G大小的swap分區, 然后是剩余空間分配了一個給用戶使用的數據分區。 我自己是一個250G的SSD,這樣分區后, 數據分區大小是大概228G
Type
fdisk -l /dev/nvme0n1
You will see the partition layout is created
Disk /dev/nvme0n1: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xef61a3e4
Device Boot Start End Sectors Size Id Type
/dev/nvme0n1p1 2048 4982527 4980480 2.4G fd Linux raid autodetect
/dev/nvme0n1p2 4982528 9176831 4194304 2G fd Linux raid autodetect
/dev/nvme0n1p3 9437184 500103449 490666266 234G fd Linux raid autodetect
原文例子里是一個256G SSD, 群暉分區后數據區大概是234G的樣子
Step2 建立存儲空間
Type
cat /proc/mdstat
此命令用于檢查當前的磁盤陣列情況
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid1 sda3[0] sdb3[1]
5855700544 blocks super 1.2 [2/2] [UU]
md3 : active raid1 sdc3[0] sdd3[1]
9761614848 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1] sdc2[2] sdd2[3]
20097088 blocks [4/4] [UUUU]
md0 : active raid1 sda1[0] sdb1[3] sdc1[1] sdd1[2]
2489920 blocks [4/4] [UUUU]
這個命令顯示了目前已有邏輯存儲盤的情況: md0 其實就是群暉的系統分區, 以RAID1的形式, 在每個物理磁盤上都有分區, md1是swap分區, 也是RAID1形式, 每個盤都有一個分區; md2 是物理磁盤sda, sdb的第三分區(數據區) 組成的RAID1存儲空間; md3 是物理磁盤sdc, sdd 的第三個分區組成的RAID1存儲空間
我們現在就是要把已經分好區的Nvme 磁盤上, 也建立起群暉DSM中可用的磁盤空間, 雖然用linux的mdadm理論上各種RAID形態都可以做, 但小弟不才不敢亂試命令搞亂已有存儲數據, 所以就用最基本的單盤即DSM中說的basic 存儲空間。 實際上就是單盤RAID1 (群暉就是這么干的, 別問我為什么)
輸入:
mdadm --create /dev/md4 --level=1 --raid-devices=1 --force /dev/nvme0n1p3
此命令為剛才建立的Nvme SSD的數據分區建立新存儲空間 , 注意/dev/md4,如果你在剛才的mdstat命令中看到的已有存儲空間已經最大是md4, 那么這里需要改成/dev/md5,以此類推
And answer y
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md4 started.
Step3 格式化文件系統
如果你要使用常見的ext4 文件系統
Type
mkfs.ext4 -F /dev/md4
mke2fs 1.42.6 (21-Sep-2012)
Filesystem label=1.42.6-23824
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
15335424 inodes, 61333024 blocks
25600 blocks (0.04%) reserved for the super user
First data block=0
Maximum filesystem blocks=2210398208
1872 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
看到最后的done, 那么ext4 文件系統已經建立好了
如果你想用群暉新版DSM更推薦的btrfs系統,
type
mkfs.btrfs -f /dev/md4
無論你建立的是ext4還是btrfs系統, 如果這時候你在DSM的存儲空間管理員里查看,還是看不到新的存儲空間, Nvme SSD 也還是作為未分配的緩存空間。 這時候你需要在SSH 終端輸入
reboot
重啟后, 就可以看到新的nvme存儲空間啦!
外觀展示
接下來是實操時間: 鑒于我自己的黑裙已經有兩塊Nvme SSD做了緩存, 如今又要試裝nvme 存儲盤,不得不又把東芝RC500 250G 拿出來做試驗田
RC500
為什么要轉接卡? 因為我的黑群暉平臺已經插滿了NVme SSD緩存
, 第4篇中提到的便宜貨技嘉B150M DS3H 板插不了那么多PCIe設備, 只好閑置, 換上技嘉新款的B365M小雕
即使這樣, 在已經插了兩塊NVMe SSD緩存, 一個intel X550萬兆網卡后, 也已經滿滿堂堂了, 再插RC500, 又要祭出轉接排線
一番折騰, 萬兆網卡下面空PCI槽位太低散熱太差, RC500只能擠在機箱一角了
裝箱, 啟動, 由于我的黑裙已經打好nvme 驅動的補丁, 進入DSM可以看到又增加一個Nvme SDD 緩存設備, 型號就是東芝RC500
照前所述操作(我最后創建的nvme存儲空間是md5), 然后重啟, 就可以在DSM存儲空間管理員中發現新的存儲池
以及新的存儲空間, 因為我還想試試VMM虛擬機, 所以我選了btrfs文件系統格式
測試時間:
測試很簡單, PC和黑裙都是10G網卡,黑裙在新的Nvme 存儲空間上建共享文件夾TEST, 從PC的NVme SSD 上對NAS的TEST文件夾讀寫大約20~30G大小的文件, 觀測win10顯示的速度曲線:
NAS寫測試:
寫速度1GB/s
基本穩定在1GB/s 左右略有跳動
NAS讀測試:
讀 1GB/s以上
讀速度基本穩穩的在1GB/s以上, 完全滿足了萬兆網卡帶寬!
最后我突發奇想給這個存儲空間跑個分, 于是黑群里建了iSCSI target
在win10的開始->管理工具 中打開iSCSI initator, 建立iSCSI盤, 然后跑Crystal Diskmark
結果基本就是個最高速被限在1.2GB/s的SSD, 4K略差, 我想原因是通過萬兆網絡比純Nvme設備latency大了很多的原因吧。
總結:
這篇主要解決的是如何讓黑群暉系統支持用NVme SSD創建存儲空間, 獨立存儲數據, 而不是僅僅作為SATA硬盤存儲空間的緩存。利用Nvme硬盤的高帶寬低延遲, 我們很容易跑滿萬兆網絡, 甚至4K小文件傳輸也會大大高于千兆網絡極限。這個方法不但黑裙適用, 白裙也一樣適用。 無論黑白群, 能使用的前提都是機型本身必須支持Nvme( 即可插nvme m.2 SSD 做緩存)。
但這種手動添加存儲空間的操作, 風險也是很大的 :
首先系統里必須有SATA硬盤安裝好了DSM, 不可能在NVme SSD上新裝DSM。其次存儲空間建立后需要小心自動升級DSM, 由于是手動添加的存儲空間,極有可能在一次系統升級后空間就消失了, 造成數據丟失。 最后作為黑群暉, 還需要始終確保Nvme驅動的黑裙補丁有效, 否則驅動都沒了, 磁盤空間必然消失
相比用NVme SSD 做虛擬機的SATA 磁盤這樣的暗渡陳倉的方式, 直接使用NVme可以在DSM中監控NVme SSD的SMART信息, 也不存在由于虛擬化造成的性能下降。 我只能說, 兩種方法各有優缺點。
最佳解決方案, 是期望群暉在DSM 7.0 這一代正式支持Nvme SSD做存儲空間, 在Flash越來越便宜的今天, 我想這是趨勢吧。
未經授權,不得轉載
總結
以上是生活随笔為你收集整理的为啥linux分区是nvme0n1,NAS 篇五:尝试达成最终目标: 黑裙+万兆网卡+Nvme 存储空间的实现与测试...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 悬浮球多功能_一个悬浮球,怎么可以这么贴
- 下一篇: linux的硬件系统管理,Linux 系