700元從閑魚購入了3代i5 3317U 8G內存 128G固態的工控機,物理系統裝上ESXI,再在ESXI上虛擬化出一個OpenWRT軟路由,一個DMS黑群輝NAS,一個WIN10用來掛迅雷當下載機往NAS中下載文件。
DMS群輝兼容性
初始準備使用DS918鏡像,畢竟只有這一款支持核顯硬解碼,可以把i5的核顯用起來。但是DS918的兼容性非常差,嘗試了之后發現怎么都無法在OpenWRT中找到他,無法DHCP給他。網上找了一圈,說是DS918只支持4代以及之后的CPU,而我這個正好是3代,于是只好退而求其次,使用DS3716的鏡像,成功把黑群輝跑起來。
不得不說群輝的軟件做的不錯,不愧被稱作買軟件送硬件。
直通
要玩直通,首先得看CPU支不支持vt-d,只有支持了vt-d才能做到IO直通,也就是PassThrough。可以在這個表格中查詢:https://xiwaer.com/wp-content/uploads/2019/12/intel-cpu-vt-d.xls
sata直通
主板上有兩個sata口,于是打算摳掉一個com口,將兩個sata引出來,外接兩個支持7*24的監控紫盤。本來打算將硬盤直通給NAS,但是由于ESXI系統是安裝在msata口的固態上,而這個msata口和那兩個sata歸屬于同一個sata控制器,所以沒辦法將主板上那兩個sata單獨直通給NAS。
有一個辦法是可以將ESXI安裝在U盤上,這樣就可以將整個sata控制器直通給NAS,但是我不喜歡常年外掛一個U盤的感覺,而且U盤的可靠性也不行,作為常開的家庭主機,穩定性還是很重要的,還是比較相信內置的msata固態。
但是不直通的話,降速又非常嚴重,所以權衡一下,準備使用RDM直通,與PassThrough的直通相比,缺點是無法休眠,但是優點是設置方便,兼容性強,而且方便遷移。畢竟群輝上裝幾個套件后也不用考慮硬盤休眠了。所以此時購買支持7*24工況的硬盤就顯得尤為重要。
如果將來哪一天想不開又想搞sata的PassThrough直通,可能會考慮兩種方案:
往mini-PCIe上插一個轉NGFF的轉接卡,再插上NVME的SSD,用于裝ESXI系統,再將整個sata控制器直通給NAS
往mini-PCIe上插一個ESXI兼容的sata陣列卡或者普通轉接卡,再往上插sata硬盤,可以將卡上的硬盤直通給NAS
后續1:感覺休眠還是挺重要的,于是我真的買了塊ASM1061的mini PCI-e轉兩口sata的轉接卡,插在原來的無線網卡的位置,sata線從拆掉的一個com口引出來。
發現要直通轉接的sata硬盤,需要注意以下幾點:
1. 啟動群輝時,選擇最后一項。一般是通過修改引導img中的grub實現,其實可以設置下一次啟動強制打開bios,然后從bios退出后,就可以有幾秒鐘的時間操作方向鍵,以后每次啟動就自動都是最后一項了。 http://www.nasyun.com/thread-71520-1-1.html http://www.nasyun.com/thread-67301-1-1.html
2. DSM引導后要在web里安裝pat文件,至少需要2個sata控制器(http://blog.sinovale.com/tag/esxi),可以兩個都是虛擬控制器,也可以一個虛擬一個直通。如果只有一個,web界面會提示找不到硬盤,應該是一個sata控制器下的硬盤作為引導,另一個sata控制器下的硬盤用來安裝pat系統文件。嘗試過只創建一個sata控制器,兩個硬盤都掛在同一個sata控制器下也不行。
3. 添加2個虛擬sata控制器后,一個控制器添加的硬盤放引導,一個控制器添加數據盤裝pat群輝系統,啟動安裝完成后,再在轉接卡上插入硬盤,將轉接卡直通過群輝,準備讓轉接的sata硬盤作為徹底的NAS盤,發現群輝并不認新硬盤。有可能是因為硬盤需要刪除分區(https://tieba.baidu.com/p/6051704189?red_tag=0145464987),待后續測試。也有可能是引導盤和系統盤的sata控制器占用了2個虛擬sata控制器后,導致群輝無法添加轉接卡的直通sata控制器(https://www.cnblogs.com/nuti/p/12949031.html)。于是嘗試將第二個sata控制器(安裝系統的硬盤所在的sata控制器)改為SCSI控制器,將pat系統文件安裝在SCSI控制器下的硬盤里,來實現節省一個sata控制器的目的(http://www.gebi1.com/thread-293563-1-1.html)。pat安裝完之后,再將轉接卡直通給群輝,發現群輝真的認出了轉接的硬盤,但是S.M.A.R.T.讀取失敗,網上也有人出現一樣的無法讀取S.M.A.R.T.的問題。
4. 如果只添加一個虛擬sata控制器并在這個控制器上添加一個引導盤,然后直通的轉接卡作為另一個sata控制器,可以正常引導,并且安裝pat前不會提示找不到硬盤,還會提示會將硬盤上的數據清空,看來是能正常識別到,這樣操作也是可行的。但是這種方法會將pat群輝系統安裝到轉接出來的數據盤上,不是很完美
5. 目前使用3的方式,成功直通了硬盤,但是槽位是錯亂的,需要修改SataPortMap(https://www.opsit.cn/5931.html、https://www.opsit.cn/5859.html)。同時16G的系統數據盤也出現了,要隱藏的話同樣需要修改SataPortMap。
6. 如果硬盤無法休眠,可以嘗試ssh登錄群輝后,編輯/etc/init/syslog-ng.conf,添加如下內容(https://zhuanlan.zhihu.com/p/147199325?from_voters_page=true、https://bbs.nas66.com/forum.php?mod=viewthread&tid=5451&extra=page%3D3&page=1),然后勾選硬盤休眠,然后重啟
#scemd bind
touch /tmp/scemd.log.new || true
chmod 660 /tmp/scemd.log.new || true
chown system:log /tmp/scemd.log.new || true
mount -o bind /tmp/scemd.log.new /var/log/scemd.log || true
#
之后發現硬盤休眠成功,出現了“Internal disks woke up from hibernation.”的日志。
下面是放了一天沒有去登錄,實際的休眠喚醒情況
7. 不過顯示有個eSATA外接設備,即使彈出了,下次重啟還會再次出現。而且也會出現在File Station中,打開發現是引導盤的兩個分區。不過影響不大。
后續2:感覺不能讀取S.M.A.R.T.并且槽位錯亂還是有點難受,于是又開始折騰。這次準備嘗試只創建一個sata控制器,并將引導盤和數據盤都掛在這個控制器下,另一個控制器使用直通(https://www.opsit.cn/5931.html)。
1. 使用OSFMount掛載引導鏡像,修改 DiskIdxMap=0C00 SataPortMap=21。先打開OSFMount軟件,點擊Mount New–>彈出菜單Image file 瀏覽到黑群暉的引導文件(synoboot)然后選中Partition0-15.0MB(dos3.31+FAT16)這個選項
去掉勾選的“Read-only driver” Drive letter可以選擇掛在為什么盤符,一般會根據你電腦上的硬盤自動選擇盤符,您也可以手動指定一個盤符,前提是這個盤符不能被占用。
打開grub目錄,找grub.cfg這個配置文件。我們就是要修改這個配置文件。
黑群暉引導配置文件修改完畢后,點擊OSFMount 軟件界面的 Dissmount all & Exit 保存退出,彈出提示點擊“是”;至此黑群暉的引導文件已經修改完畢,后續如果你要洗白或者修改黑群暉硬盤的順序也是修改這個配置文件。
SataPortMap:意思是SATA控制器的數量。21是兩位數代表兩個SATA控制器,2的意思是第一個SATA控制器2掛載了2塊硬盤,1的意思是第二個SATA控制器掛在了1塊硬盤;
DiskIdxMap:意思是SATA驅動器的端口起始。0C00是4位數采用的是16進制,每2位數表示硬盤在SATA驅動器的幾號端口開始往下排。0C00這個數值中0C對應的是SataPortMap=21中的2,00對應的是SataPortMap=21中的1;0C的10進制為12,代表硬盤的端口接在在第13個端口,00的10進制為0,代表硬盤的端口接在在第1個端口。依次類推,第一個控制器有2個硬盤,分別排序是13、14這兩個端口。第二個控制器有1個硬盤,排序是1這個端口。由于前面看到存儲空間管理員中最多可以識別10個硬盤,那么排在13、14這兩個硬盤就在DSM系統中看不到了,從而達到隱藏的目的。
2. 嘗試只創建一個SATA控制器,并將引導盤和數據盤都掛載在這個控制器下,另一個控制器使用直通。引導盤使用修改后的鏡像。此時的SATA結構與DiskIdxMap和SataPortMap一致。這一次我還嘗試創建虛擬機時不再使用Red Hat 7,轉而使用4.x或更高版本的Linux,這樣就可以使用USB3.0控制器。同時我還勾選了內存熱拔插,這樣可以開機狀態下修改內存大小。(https://www.opsit.cn/5859.html)
3. 開機后,提示我已經將一塊群輝硬盤插入了一臺新的群輝,是否恢復。點了恢復,便開始10分鐘倒計時。不用等倒計時結束,直接另外開一個窗口嘗試登陸,發現新創建的虛擬機已經恢復到之前的狀態,包括所有設置,以及添加的硬盤休眠代碼都還在。可見雖然之前將系統裝在SATA控制器2的16G數據盤里,但是將NAS盤插進去后,其實初始化NAS盤的時候,也會將系統寫入NAS盤中,包括所有的設置項的存儲。這一次的系統就是從NAS盤恢復出來的。我接著進入ESXI看那個16G的精簡制備盤的實際文件大小,發現是0B。可見其實這一次的恢復,根本沒有沒有將NAS盤上的系統恢復到16G系統盤,而是直接從引導盤引導從NAS盤加載的系統,以后NAS盤既是NAS盤也是系統盤。
4. 發現槽位正確,引導盤和系統數據盤確實也被隱藏了起來。試了一下讀取S.M.A.R.T.發現竟然正常了!原來讀取S.M.A.R.T.失敗跟DiskIdxMap和SataPortMap有關系!
而且硬盤休眠依然正常,下圖是放了一晚上,到第二天中午登錄查看期間的喚醒日志(9點的時候看硬盤也是休眠狀態,所以6:41后的休眠-12:23期間硬盤都沒有被喚醒過)。
5. 不過顯示有兩個eSATA外接設備,即使彈出了,下次重啟還會再次出現(后續1中是1個)。而且也會出現在File Station中,打開發現是引導盤的兩個分區。不過影響不大。
核顯直通嘗試
核顯如果可以直通給WIN10,那么后續還可以用WIN10硬解碼播放影片串流出來,雖然核顯即使直通了也無法輸出HDMI,這是個大遺憾,不然可以當做HTPC了,據說PVE虛擬機直通核顯后可以輸出HDMI。于是 嘗試了核顯,發現核顯直通后,WIN10能識別出一個顯卡,但是顯示驅動有問題,用不起來。
如果將來哪一天想不開又想搞HDMI輸出給電視當HTPC,可能會考慮買一張ESXI支持的AMD獨顯,插在PCIE上,再把它直通給WIN10。
USB直通
這個工控機上有三個USB控制器,其中第一個看起來是板載的,不支持直通(通過ssh修改配置文件可以強制直通:https://www.upud.cn/389.html),另外兩個可以直通。
嘗試了將#1直通,分配給群輝,方便在不重啟群輝的情況下拔插U盤。由于工控機上背部有4個USB3.0,前方有四個USB2.0,故不好判斷映射關系,于是拿了個U盤一個個試,插進去再在ESXI虛擬機編輯那邊看能不能給虛擬機分配USB設備,如果ESXI識別出USB設備,說明當前U盤插的這個口不是直通口。結果令人遺憾的是,背部的所有USB3.0的口,都屬于板載控制器,前面的四個USB2.0的口被另外兩個可以直通的非板載控制器瓜分。所以只好直通了2個USB2.0的口給群輝。
又嘗試了將另一個USB控制器直通給WIN10,看能不能插入U盤或者鼠標鍵盤后直接給WIN10用,發現直通后WIN10也能識別出USB控制器,但是插入U盤還是鍵盤鼠標均無反應。網上說鍵盤鼠標即使直通也會被ESXI屏蔽,但是不知道為什么U盤也不行。鑒于直通后還需要將內存一次性占用,而WIN10分配了4G內存,一次性占用也比較浪費,遂放棄WIN10下直通USB。
網卡直通
暫時滿足需求,還沒折騰,先記錄一下后續折騰的路線:
vmnic0物理網卡作為LAN口,連接vSwitch0虛擬交換機,連接VM Network網絡,三個虛擬機都連接著這個網絡,組成局域網。同時由于在ESXI設置了這個網口(第一個網口)作為配置口,所以還掛著Management Network。
vmnic1物理網卡作為WAN口,連接vSwitch1虛擬交換機,連接VM Network1網絡。
要直通的話,應該是直通vmnic1,也就是WAN口,之后往OpenWRT虛擬機添加這個網卡PCI設備,OpenWRT下再設置這個口作為WAN口。千萬不能直通vmnic0,因為我的是雙網口,只有這個口配置了ESXI管理權限,要是這個口直通了,ESXI就脫控了。
先找一下要直通的vmnic1口的PCI地址,再到直通頁面找到對應的網卡直通就可將這個網卡配置為直通
備份
準備備份每個虛擬機。一開始嘗試直接在ESXI的web管理頁面導出ovf+vmdk,發現導出來的都只有xml、txt、vmdk文件,永遠沒辦法導出ovf,網上找了一圈竟然沒有找到一樣的情況。
故想嘗試直接從ESXI管理頁面的數據存儲瀏覽器中將整個虛擬機的文件夾的每個文件下載下來。但是發現這樣通過二級路由的wifi傳輸速度好慢,于是想了一個歪招:通過USB3.0插入移動硬盤,分配給WIN10,在WIN10中打開ESXI管理頁面,直接在虛擬的WIN10中下載WIN10在ESXI文件系統下的文件夾下的所有文件。一開始確實幾百兆每秒,但是突然RDP卡住了,然后過了一會兒發現硬盤也不寫數據了,再過了一會兒WIN10自動重啟了。應該是因為復制文件的時候,整個WIN10的vmdk文件被鎖住,但是系統又需要往里面寫數據,于是系統就卡死了,相當于物理機的硬盤直接掛掉。
詭異的是復制到一般的移動硬盤里的文件夾,在WIN10下打不開刪不掉,在mac下也無法刪除,還好占用不大,先這么著吧。
轉念一想,安裝也不麻煩,固態壞掉的概率也不高,干脆不備份了,以后大不了重裝。果然放棄折騰一身輕松。
內網穿透
我家沒有公網ip,所以沒辦法DDNS,只能使用內網穿透。一開始使用花生殼每個月1G,2個端口,1M的免費套餐,在WIN10里常年掛一個花生殼內網穿透的客戶端,一個指向自身的3389用于RDP,另一個指向黑群輝的IP的5000端口用于文件服務。
但是花生殼只有1M帶寬,只能添加兩個端口,加上每個月只有1G免費流量,用著不舒坦,于是決定在云上搭一個NPS服務端,在OpenWRT里面直接實現內網穿透。實測體驗相當好,不再有端口數限制,帶寬也大了好多。而且NPS支持在web上配置所有要穿透的內網地址,無需編寫配置文件,體驗相當好。唯一需要注意的是,在添加ESXI控制臺IP的內網穿透的時候,需要穿透的本地端口是443,不能是80,因為ESXI的web頁面會自動重定向到443的HTTPS。
最終實現了可以在任意外網環境下,訪問內網的OpenWRT控制臺、RDP到WIN10、訪問NAS、訪問ESXI控制臺。
關于Docker
要實現功能最大化,Docker必不可少。而且虛擬機中裝的OpenWRT和群輝DMS都有Docker,但是要真正用起來,還是得裝個Linux虛擬機來命令行跑Docker。但是由于我已經有云服務器可以跑Docker了,這個主機以娛樂為主,故暫時還沒有安裝Linux。
媒體庫
群輝的硬盤上放了那么多電影,不做一個媒體庫怎么行。網上的方案大多數是收費的Emby和免費開源的Jellyfin。不過我不想那么折騰,直接用群輝的Video Station套件,因為這個套件也能通過DLAN將電影投屏到電視上。
投屏
但是要將電影DLAN到電視,需要電視和群輝在一個網段下,所以需要OpenWRT的LAN口接出來的無線路由器使用AP模式而不是路由模式。
一般的做法是,在路由器的設置頁面中,設置路由器內網IP與OpenWRT的LAN屬同個網段下,比如OpenWRT為192.168.66.1,則設置路由器局域網IP為192.168.66.129,再關閉路由器的DHCP,再將工控機的LAN接到路由器的LAN而不是WAN。這樣電視通過路由器的WiFi連進來后,就由OpenWRT分配IP,跟OpenWRT屬于同一個網段,在OpenWRT中可以看到通過路由器WiFi連進來的所有設備,也就是跟群輝屬于同一個網段。(https://service.tp-link.com.cn/detail_article_336.html、https://jingyan.baidu.com/article/5552ef47e1aa89518ffbc994.html)
不過由于我用的路由器是京東無線寶,還要負責白嫖,發現按照上述設置之后,雖然可用,但是路由器本身無法上網,無法白嫖。后來發現路由寶的設置頁面里面竟然有路由器模式菜單,于是還原了內網IP和DHCP設置后,在這個菜單中設置為AP模式,完美解決。(https://www.right.com.cn/forum/thread-4054918-1-1.html、https://www.right.com.cn/forum/thread-4054468-1-1.html)
設置好之后,Video Station中的投屏按鈕就可點擊,完美投屏。以后要在電視上看電影,只需要登錄群輝的Video Station就可以挑選電影,直接投屏到電視。
解碼DTS、eac3
如果想在瀏覽器直接播放電影,Video Station從2.4.6版本開始由于版權問題不再支持這兩個音頻格式的視頻了,而網上的電影資源很多都是這兩種音頻格式的音軌,特別是DTS,會導致無法播放電影
網上的教程一般都是降級到2.4.5,再從社區的源安裝ffmpeg來解決(https://blog.csdn.net/qq_19013047/article/details/99960101)。但是最新版的Video Station已經是2.4.9-1626版本了,如果使用舊版本不再升級,將失去新版本的特性。所以可以換一種方案:
首先同樣是添加社區的源?https://packages.synocommunity.com/?并安裝ffmpeg套件。然后ssh登錄并進入root用戶下執行安裝腳本。(https://zhuanlan.zhihu.com/p/77694568)
sudo -i
sh -c "$(wget -O- https://raw.githubusercontent.com/Wooden-Robot/documents-for-fun/master/Synology/ffmpeg_dts_eac3_patch.sh)" -p install
如果要卸載的話,執行卸載腳本
sh -c "$(wget -O- https://raw.githubusercontent.com/Wooden-Robot/documents-for-fun/master/Synology/ffmpeg_dts_eac3_patch.sh)" -p uninstall
至此可以完美的在瀏覽器中播放所有電影了
不過我發現拖動進度條后要轉圈很久,暫時不知道怎么解決
從任務管理器中能看到,在解碼DTS音頻的H264時,ffmpeg耗盡了一個CPU在解碼(群輝虛擬機分配了4個CPU)
但是在解碼aac音頻的rmvb時,ffmpeg可以充分利用多核心
看電影的姿勢
1. 直接在PC上內網登錄群輝,打開Video Station,網頁播放。缺點是RMVB需要群輝實時轉嗎,默認240p,此時四核CPU已經快占滿了,如果修改成更高分辨率和碼率,CPU估計撐不住。而且這種方法只能用PC看,不能用電視。
2. 手機用DS File APP內網登錄群輝,用MXPlayer播放。缺點是只能手機播放。
3. 手機用ES瀏覽器掛載群輝的SMB,再投屏到電視的DLAN。或者Mac掛載群輝的SMB后,用Sofa Player投屏到電視的DLAN。缺點是需要經過手機或者Mac中轉。
4. 電視盒子中安裝ES瀏覽器掛載群輝的SMB,用MXPlayer播放。缺點是沒辦法看到Video Station的海報封面,不方便挑想看的電影。經驗證這個方法播放非常卡頓,拖動進度條也需要緩沖非常久,暫時不知道為什么,因為Mac通過SMB掛在后用INNA播放及拖動非常流暢。
5. 用PC連接群輝的Video Station挑選想看的電影,點擊DLAN投屏到電視播放。缺點是還需要通過PC挑選,而且DLAN播放無法挑選音軌和字幕,如果是有國語配音音軌的外語片就會很麻煩。由于手頭有一臺Chromecast,想試一下不用DLAN而用Chromecast的效果。發現PC登錄的Video Station不能投屏到Chromecast,APP登錄的情況下可以顯示出Chromecast的菜單(http://scl13.com/synology-ds415play-video-station/),但是經試驗投屏失敗,Chromecast屏幕黑一段時間又回到桌面,不知道是不是Chromecast的問題。
6. 電視盒子中安裝DS File APP內網登錄群輝,直接用電視遙控器挑選想看的電影,點擊使用MXPlayer播放。缺點是DS File APP對電視優化不好,沒有高亮當前光標所在文件,所以如果電視盒子沒有外接鼠標的話,使用遙控器不方便操作。
7. 電視盒子中安裝DS Video APP內網登錄群輝,直接用電視遙控器挑選想看的電影,通過DLAN投屏到電視播放。缺點是DLAN無法切換音軌,如果是有國語配音音軌的外語片就會很麻煩。
8. 電視盒子中安裝DS Video APP內網登錄群輝,直接用電視遙控器挑選想看的電影,在影片列表頁的卡片右下角點出菜單,點擊Play,或者影片詳情頁點擊紅色播放按鈕,就可以直接調用MXPlayer硬解播放,播放前APP內會讓挑選字幕和音軌。后續:突然發現盒子里裝的DS Video自動更新成了TV版的DS Video,可以在APP內直接播放不用調用MXPlayer,體驗非常好,APP內播放器支持DTS音軌,同時也支持設置字幕和音軌。而且支持設置是否轉碼,以及是否使用第三方播放器播放。所以如果是較新的片源,可以直接使用內置播放器配合轉碼播放,如果是舊的RMVB片源,為了不被轉碼成240P,可以選擇開啟第三方播放器開關,使用MXPlayer播放。實測如果關閉了轉碼的情況下播放RMVB,即使關閉了第三方播放器播放的開關,也會強行使用外部播放器播放,因為RMVB必須經過轉碼。
總結:直接用8。
外設
硬盤架
一開始很簡陋的將硬盤放在地上,后來淘寶上二十幾塊錢買了個彈簧防共振硬盤架,效果不錯,還支持疊加,后面要組raid的話,再買一個疊加層就可以了。
硬盤電源
閑魚上20元收的,還沒到貨,用來替換掉以前讀本科時淘寶買的大4PIN轉sata供電電源適配器。主要看中這個直接提供3個sata供電口,不用轉換,后面組raid時也能直接用。