群晖官方只支持将M2接口的SSD作为存储空间的缓存来使用,但是这样我觉得太浪费,毕竟自动管理的缓存在用户少的时候命中率很低不如我直接在SSD上创建存储空间直接用于VMM或者存储需要高速读写的文件,毕竟这M2接口的SSD读写速度上GB/s。不过官方并不支持我直接在M2接口的SSD上创建存储空间,空间管理里面无法选择M2硬盘进行存储空间,存储池的创建。不过群晖的系统是基于Linux并且开放了SSH,既然如此那里理论上只要硬盘能被linux识别就肯定有办法挂载,至少也可以挂载到一个文件夹进行直接读写。
基于以上想法经过几个小时研究我最终成功的将硬盘挂载到指定文件夹实现了读写,并且最后也成功的将M2设置成了群辉的存储空间并安装了VMM虚拟机。
一、先说说怎么实现对M2硬盘的读写
链接群辉的SSH(怎么打开和链接SSH请看官们自行百度),然后直接提权到root执行
sudo su
然后输入登录密码即可取得系统的最高权限root权限,后续操作都需要在root下进行
然后查看m2硬盘是否被系统直接识别为硬盘存储设备
fdisk -l |grep Disk
可以看到会出现很多存储设备,找到名为 /dev/nvme开头的设备我的群晖里识别到的名称叫做 /dev/nvme0n1使用的插槽为第一个插槽,可能插在第二个插槽会识别为 /dev/nvme0n2
既然能在存储设备里看到m2硬盘那么后续就简单了,直接执行
mkfs.btrfs -f /dev/nvme0n1
将设备格式化为btrfs格式
然后群晖的控制面板里创建一个共享文件夹,我直接在第一个存储空间创建了一个叫FlashDisk的共享文件夹,于是执行挂载
mount /dev/nvme0n1 /volume1/FlashDisk
执行完挂载命令后就可以在直接在群晖中操作FlashDisk文件夹,此时FlashDisk文件夹的所有文件实际都是存储在m2硬盘上的。
以上就完成了最基础的能直接读写SSD的配置,但是我没有止步于此,进一步研究群晖的系统
在刚刚查看存储设备的时候我发现群晖的系统里出现了多个/dev/md开头的设备,懂linux的朋友应该都知道这是什么设备,这个就是linux的软raid设备,也就是系统创建的raid
但是我根本没创建raid啊,我总共装了4个普通硬盘每个盘都使用Basic模式创建,但是奇怪的是出现么md0 md1 md2 md3 md4 md5 这六个软raid,进一步看看这些raid到底是什么
别使用
mdadm -D /dev/md0
和
mdadm -D /dev/md1
命令查看,发现这2个raid同时使用了4块硬盘上的第一个分区组件了raid1,大小为2.4g和2g
/dev/md0:
Version : 0.90
Creation Time : Wed Oct 17 22:48:44 2018
Raid Level : raid1
Array Size : 2490176 (2.37 GiB 2.55 GB)
Used Dev Size : 2490176 (2.37 GiB 2.55 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sat Oct 27 11:02:08 2018
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
UUID : c5db6689:b4344136:3017a5a8:c86610be
Events : 0.1982
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
2 8 33 2 active sync /dev/sdc1
3 8 49 3 active sync /dev/sdd1
然后在查看 md2 md3 md4 md5这4个软raid就比较简单了直接对应了我安装硬盘的大小,不过都使用的是第三个分区。
进一步使用fdisk -l查看详细存储设备信息
可以看到sda到sdd 4块硬盘各自都有3个分区,而且前2个分区的大小一致,分区的类型为 linux raid
Device Start End Sectors Size Type
/dev/sdc1 2048 4982527 4980480 2.4G Linux RAID
/dev/sdc2 4982528 9176831 4194304 2G Linux RAID
/dev/sdc3 9437184 7813832351 7804395168 3.6T Linux RAID
Disk /dev/sdd: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xc7051d67
Device Boot Start End Sectors Size Id Type
/dev/sdd1 2048 4982527 4980480 2.4G fd Linux raid autodetect
/dev/sdd2 4982528 9176831 4194304 2G fd Linux raid autodetect
/dev/sdd3 9437184 3906824351 3897387168 1.8T fd Linux raid autodetect
经过分析我大胆的推测群晖自动创建了md0和md1并且这2个软raid应该是存储系统和配置数据的并且每插入一块硬盘群晖都会给硬盘分3个区前2个加入到md0 md1 第三个分区就是存储用户自己的文件的。系统根目录分别由volume1 – volume4 这4个文件夹,经过上面的命令也能看到 实际分别对应md2-md5这四个设备
既然如此我们大致应该能推测出群晖的存储空间创建过程应该是 将硬盘配置成raid,然后把软raid挂载到根目录下的volume文件夹下这样一个过程。既然如此我们只要将m2硬盘照葫芦画票不就能识别成存储空间了?
我们卸载掉之前的挂载使用
umount /volume1/FlashDisk
如果提示失败的话直接重启
然后我们执行
fdisk /dev/nvme0n1
对m2硬盘进行分区,具体分区过程输入n 然后输入分区编号先用1 输入起始位置照着看到的其它分区来第一个分区2048开始,然后结束为止4982527,完成后分2 3这2个分区,注意3的结束为止不要输入不输入默认就是表示使用剩余的全部。
做完分区开始输入T然后输入1表示操作第一个分区,然后输入fd 依次吧 2 3分区都做这个操作,意思是将分区类型调整为linux raid
最后输入w保存分区
分区完毕 开始创建raid
mdadm --create /dev/md6 --level=1 --raid-devices=1 /dev/nvme0n1p3 --force
mdadm -C -v /dev/md6 -l 1 -n 1 /dev/nvme0n1p3 --force (7.0系统)
这样一个新的叫做md6的软raid就创建好了
格式化md6
mkfs.btrfs -f /dev/md6
然后创建volume5目录
mkdir /volume5
挂载md5到/volume5
mount /dev/md6 /volume5
经过这一系列操作m2硬盘已经成为存储空间了,但是这是去群晖的存储空间管理里面查看并没有新的存储空间出现
别着急重启群晖,然后再打开存储空间会有惊喜 PS:我探索的时候就没重启,没看到存储空间很绝望准备暂时放弃,到了晚上想重启一下让系统自动解除所有挂载,但是重启后惊奇的发现成功了识别成存储空间了。
将ssd增加到2个系统分区加速系统
向raid增加磁盘
mdadm /dev/md0 -a /dev/nvme0n1p1
mdadm /dev/md1 -a /dev/nvme0n1p2
修改磁盘激活数量
mdadm -G /dev/md0 -n 5 --force
mdadm -G /dev/md1 -n 5 --force