为啥linux分区是nvme0n1,NAS 篇五:尝试达成最终目标: 黑裙+万兆网卡+Nvme 存储空间的实现与测试...
NAS 篇五:嘗試達(dá)成最終目標(biāo): 黑裙+萬兆網(wǎng)卡+Nvme 存儲空間的實(shí)現(xiàn)與測試
2020-01-18 18:49:23
46點(diǎn)贊
248收藏
80評論
創(chuàng)作立場聲明:1. 本系列文章討論NAS與局域網(wǎng), 請小編高抬貴手不要分類到無線網(wǎng)絡(luò)去
2. 如果你讀了開頭, 有“可我的寬帶才300M”的想法, 那么這文章還不適合你的需求, windows下請按Ctrl+W, iOS請按Home鍵,安卓我不熟.....
3. 本篇(第5篇) 涉及使用linux命令手動(dòng)修改磁盤狀態(tài), 錯(cuò)誤操作可能導(dǎo)致數(shù)據(jù)丟失,請小心操作,本人不承擔(dān)由此造成的損失
首先我把大家問得比較多的有用信息鏈接列表如下:
還是建議大家按順序閱讀, 不容易產(chǎn)生誤解
覺得NVME緩存還不夠給力怎么解?
如果你是從我前四篇順序讀下來, 那么應(yīng)該是已經(jīng)感受到了Nvme 緩存的機(jī)械硬盤存儲和萬兆網(wǎng)絡(luò)配合后速度飛躍, 然而這畢竟是緩存不是最終存儲, 雞血總是有限的, 緩存一旦用完, 速度又回到了機(jī)械硬盤的老樣子。而群暉的緩存策略, 似乎放棄舊緩存是個(gè)漫長過程(注意是指放棄舊緩存內(nèi)容所占空間, 不是指寫回。 寫回后原內(nèi)容還是駐留緩存的), 這導(dǎo)致緩存用滿后 , 很長時(shí)間這個(gè)存儲盤就和普通機(jī)械硬盤無異了。
那么群暉有沒有可以直接使用NVME SDD 做存儲的設(shè)定呢? 我翻遍群暉的介紹, 無論是家用頂配的DS918+,還是中小企業(yè)使用的DS1018+, 發(fā)現(xiàn)都是只支持Nvme m.2 SSD緩存, 卻不支持nvme SSD的存儲空間。而對于Nvme SSD, 現(xiàn)在的市場上不但有???#xff0c; 西數(shù), 東芝等廠家推出的2T左右的m.2 Nvme SSD;更有3.2T,4T甚至8T的二手“大船貨”U2 Nvme 2.5寸 SSD可供選擇。 很多人也在我這系列文章的前幾篇問有沒有辦法用NVMe SSD直接做存儲盤。 我爬了半天XPENOLOGY 論壇, 從一篇俄文帖子里找到線索(此處吐槽google翻譯1000次), 最后在reddit 論壇找到了一個(gè)方法, 由于不可描述的原因, 大家訪問可能有困難, 所以我這次干脆全文貼給大家了, 中英文混合, 大家見諒
前提條件:
首先是黑群暉硬件固件要求是DS918+ DSM6.2 bootloader 1.04。PC上有SSH的工具如putty
其次是打上了我在篇三中貼出的patch腳本, 從而在黑群暉的DSM 存儲空間管理->HDD/SSD 頁面可以看見Nvme緩存設(shè)備, 但還沒有被用作任何存儲空間的緩存
Step1 創(chuàng)建分區(qū)
從SSH用admin賬戶登陸群暉命令行終端, 并鍵入
sudo -i
輸入密碼獲得root權(quán)限, 然后執(zhí)行
ls /dev/nvme*
You will see the /dev/nvme0n1 or /dev/nvme1n1 depend on which slot you install the SSD.
輸入:
fdisk -l /dev/nvme0n1
此命令用來確認(rèn)nvme SSD的狀態(tài)大小. ( 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的信息,用如下命令創(chuàng)建分區(qū):
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.
這樣實(shí)際上給一個(gè)nvme 盤創(chuàng)建了標(biāo)準(zhǔn)的群暉方式的分區(qū), 即: 2.4G大小的系統(tǒng)分區(qū), 2G大小的swap分區(qū), 然后是剩余空間分配了一個(gè)給用戶使用的數(shù)據(jù)分區(qū)。 我自己是一個(gè)250G的SSD,這樣分區(qū)后, 數(shù)據(jù)分區(qū)大小是大概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
原文例子里是一個(gè)256G SSD, 群暉分區(qū)后數(shù)據(jù)區(qū)大概是234G的樣子
Step2 建立存儲空間
Type
cat /proc/mdstat
此命令用于檢查當(dāng)前的磁盤陣列情況
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]
這個(gè)命令顯示了目前已有邏輯存儲盤的情況: md0 其實(shí)就是群暉的系統(tǒng)分區(qū), 以RAID1的形式, 在每個(gè)物理磁盤上都有分區(qū), md1是swap分區(qū), 也是RAID1形式, 每個(gè)盤都有一個(gè)分區(qū); md2 是物理磁盤sda, sdb的第三分區(qū)(數(shù)據(jù)區(qū)) 組成的RAID1存儲空間; md3 是物理磁盤sdc, sdd 的第三個(gè)分區(qū)組成的RAID1存儲空間
我們現(xiàn)在就是要把已經(jīng)分好區(qū)的Nvme 磁盤上, 也建立起群暉DSM中可用的磁盤空間, 雖然用linux的mdadm理論上各種RAID形態(tài)都可以做, 但小弟不才不敢亂試命令搞亂已有存儲數(shù)據(jù), 所以就用最基本的單盤即DSM中說的basic 存儲空間。 實(shí)際上就是單盤RAID1 (群暉就是這么干的, 別問我為什么)
輸入:
mdadm --create /dev/md4 --level=1 --raid-devices=1 --force /dev/nvme0n1p3
此命令為剛才建立的Nvme SSD的數(shù)據(jù)分區(qū)建立新存儲空間 , 注意/dev/md4,如果你在剛才的mdstat命令中看到的已有存儲空間已經(jīng)最大是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 格式化文件系統(tǒng)
如果你要使用常見的ext4 文件系統(tǒng)
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 文件系統(tǒng)已經(jīng)建立好了
如果你想用群暉新版DSM更推薦的btrfs系統(tǒng),
type
mkfs.btrfs -f /dev/md4
無論你建立的是ext4還是btrfs系統(tǒng), 如果這時(shí)候你在DSM的存儲空間管理員里查看,還是看不到新的存儲空間, Nvme SSD 也還是作為未分配的緩存空間。 這時(shí)候你需要在SSH 終端輸入
reboot
重啟后, 就可以看到新的nvme存儲空間啦!
外觀展示
接下來是實(shí)操時(shí)間: 鑒于我自己的黑裙已經(jīng)有兩塊Nvme SSD做了緩存, 如今又要試裝nvme 存儲盤,不得不又把東芝RC500 250G 拿出來做試驗(yàn)田
RC500
為什么要轉(zhuǎn)接卡? 因?yàn)槲业暮谌簳熎脚_已經(jīng)插滿了NVme SSD緩存
, 第4篇中提到的便宜貨技嘉B150M DS3H 板插不了那么多PCIe設(shè)備, 只好閑置, 換上技嘉新款的B365M小雕
即使這樣, 在已經(jīng)插了兩塊NVMe SSD緩存, 一個(gè)intel X550萬兆網(wǎng)卡后, 也已經(jīng)滿滿堂堂了, 再插RC500, 又要祭出轉(zhuǎn)接排線
一番折騰, 萬兆網(wǎng)卡下面空PCI槽位太低散熱太差, RC500只能擠在機(jī)箱一角了
裝箱, 啟動(dòng), 由于我的黑裙已經(jīng)打好nvme 驅(qū)動(dòng)的補(bǔ)丁, 進(jìn)入DSM可以看到又增加一個(gè)Nvme SDD 緩存設(shè)備, 型號就是東芝RC500
照前所述操作(我最后創(chuàng)建的nvme存儲空間是md5), 然后重啟, 就可以在DSM存儲空間管理員中發(fā)現(xiàn)新的存儲池
以及新的存儲空間, 因?yàn)槲疫€想試試VMM虛擬機(jī), 所以我選了btrfs文件系統(tǒng)格式
測試時(shí)間:
測試很簡單, PC和黑裙都是10G網(wǎng)卡,黑裙在新的Nvme 存儲空間上建共享文件夾TEST, 從PC的NVme SSD 上對NAS的TEST文件夾讀寫大約20~30G大小的文件, 觀測win10顯示的速度曲線:
NAS寫測試:
寫速度1GB/s
基本穩(wěn)定在1GB/s 左右略有跳動(dòng)
NAS讀測試:
讀 1GB/s以上
讀速度基本穩(wěn)穩(wěn)的在1GB/s以上, 完全滿足了萬兆網(wǎng)卡帶寬!
最后我突發(fā)奇想給這個(gè)存儲空間跑個(gè)分, 于是黑群里建了iSCSI target
在win10的開始->管理工具 中打開iSCSI initator, 建立iSCSI盤, 然后跑Crystal Diskmark
結(jié)果基本就是個(gè)最高速被限在1.2GB/s的SSD, 4K略差, 我想原因是通過萬兆網(wǎng)絡(luò)比純Nvme設(shè)備latency大了很多的原因吧。
總結(jié):
這篇主要解決的是如何讓黑群暉系統(tǒng)支持用NVme SSD創(chuàng)建存儲空間, 獨(dú)立存儲數(shù)據(jù), 而不是僅僅作為SATA硬盤存儲空間的緩存。利用Nvme硬盤的高帶寬低延遲, 我們很容易跑滿萬兆網(wǎng)絡(luò), 甚至4K小文件傳輸也會大大高于千兆網(wǎng)絡(luò)極限。這個(gè)方法不但黑裙適用, 白裙也一樣適用。 無論黑白群, 能使用的前提都是機(jī)型本身必須支持Nvme( 即可插nvme m.2 SSD 做緩存)。
但這種手動(dòng)添加存儲空間的操作, 風(fēng)險(xiǎn)也是很大的 :
首先系統(tǒng)里必須有SATA硬盤安裝好了DSM, 不可能在NVme SSD上新裝DSM。其次存儲空間建立后需要小心自動(dòng)升級DSM, 由于是手動(dòng)添加的存儲空間,極有可能在一次系統(tǒng)升級后空間就消失了, 造成數(shù)據(jù)丟失。 最后作為黑群暉, 還需要始終確保Nvme驅(qū)動(dòng)的黑裙補(bǔ)丁有效, 否則驅(qū)動(dòng)都沒了, 磁盤空間必然消失
相比用NVme SSD 做虛擬機(jī)的SATA 磁盤這樣的暗渡陳倉的方式, 直接使用NVme可以在DSM中監(jiān)控NVme SSD的SMART信息, 也不存在由于虛擬化造成的性能下降。 我只能說, 兩種方法各有優(yōu)缺點(diǎn)。
最佳解決方案, 是期望群暉在DSM 7.0 這一代正式支持Nvme SSD做存儲空間, 在Flash越來越便宜的今天, 我想這是趨勢吧。
未經(jīng)授權(quán),不得轉(zhuǎn)載
總結(jié)
以上是生活随笔為你收集整理的为啥linux分区是nvme0n1,NAS 篇五:尝试达成最终目标: 黑裙+万兆网卡+Nvme 存储空间的实现与测试...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 悬浮球多功能_一个悬浮球,怎么可以这么贴
- 下一篇: python编程a的x次方_「Pytho