黑群晖DSM-7.X开启NVME缓存的方法

1、群晖在控制面板-终端机与SMNP,启用SSH功能;

2、在电脑的SSH工具,以root登录群晖,输入命令查看nvme的名字:

ls /dev/nvme*

如果只有一个nvme硬盘并且硬盘为空,一般会显示/dev/nvme0n1,如果有两个空的nvme硬盘则显示/dev/nvme0n1和/dev/nvme1n1,只需要记住这些名字就行了;

如果nvme有分区了,还会显示如/dev/nvme0n1、/dev/nvme0n1p1、/dev/nvme0n1p2等,这些分区名字不用理会。

3、输入命令,查看nvme硬盘的ID:

udevadm info /dev/nvme0n1

 

我们要记住自己的nvme所在的位置,比如我的就是0000:00:1d.0,这个数字一定要记下来;

 

3、之所以NVME硬盘黑群晖的空间管理员中无法识别,是因为群晖提前设定了各个机型的NVME所在的PCI位置,这些信息保存在 /lib64/libsynonvme.so.1 这个文件中,而我们需要将这个文件中,关于DS918+机型的NVME所在的PCI位置改为自己机器实际所在的位置就能正确识别了;

4、先备份一下原文件,输入命令:

cp /lib64/libsynonvme.so.1 /lib64/libsynonvme.so.1.bak

 

5、把原文件 libsynonvme.so.1 复制到一个可以供其他电脑下载的共享文件夹中,比如我将其复制到 Download 这个共享文件夹(具体以实际路径为准,请自行更改),输入命令:

cp /lib64/libsynonvme.so.1 /volume1/Download/libsynonvme.so.1

 

6、在电脑访问群晖,将在Download文件中的 libsynonvme.so.1 下载到本地电脑;

7、在电脑上使用 winhex 软件打开刚才下载的 libsynonvme.so.1 文件,按ctrl+F键输入DS918+搜索,在右侧找到如下图字段的原数据为0000:00:13.0和0000:00:13.1,根据第一步查到的本机NVME所在的PCI位置,修改为0000:00:1d.0,顺便把另外一个nvme插槽也该了即0000:00:1d.1,修改后保存;

 

8、将修改后的 libsynonvme.so.1 文件,上传到群晖的 Download 共享文件夹下(以第5步使用的文件夹为准),覆盖原文件。

 

9、返回 ssh 工具,以root账户登录群晖;

 

10、删除群晖系统原文件:

rm /lib64/libsynonvme.so.1

11、把修改好的文件复制到系统(把 /volume1/Download 替换为第5步实际使用的路径):

cp /volume1/Download/libsynonvme.so.1 /lib64/libsynonvme.so.1

12、修改文件权限:

chmod 755 /lib64/libsynonvme.so.1

13、重启群晖,再打开存储管理器,就发现正常识别NVME并可以按照提示进行缓存的设置。

 

 

 


上述内容原文地址:http://www.gebi1.com/thread-299964-1-1.html

 


上面操作,博主在DS918-7.01-42218版本下亲测,是OK的。如果群晖系统型号不是DS918+,而是别的系统型号(比如DS3617xs/DS3622xs+等,除了DS3615xs以外)的DSM7.X版本,那么就不能用上面的方法,需要按照以下流程操作:

1、群晖在控制面板-终端机与SMNP,启用SSH功能;

2、在电脑的SSH工具,以root登录群晖,输入命令查看nvme的名字:

ls /dev/nvme*

 

如果只有一个nvme硬盘并且硬盘为空,一般会显示/dev/nvme0n1,如果有两个空的nvme硬盘则显示/dev/nvme0n1和/dev/nvme1n1,只需要记住这些名字就行了;

如果nvme有分区了,还会显示如/dev/nvme0n1、/dev/nvme0n1p1、/dev/nvme0n1p2等,这些分区名字不用理会。

3、输入命令,查看nvme硬盘的ID:

udevadm info /dev/nvme0n1

 

找到这个nvme硬盘的ID,比如我的就是0000:00:1d.0,这个数字一定要记下来;

 

4、输入命令,修改文件:

vi /etc.defaults/extensionPorts

 

使文件里面的ID与实际nvme硬盘的相匹配,比如我这个要改成(以你实际的ID为准):

[PCI]
pci1="0000:00:1d.0"

 

如果有两个nvme硬盘,则改成(以你实际的ID为准):

[PCI]
pci1="0000:00:1d.0"
pci2="0000:00:1d.1"

 

5、保存退出,重启群晖生效。

点赞
  1. 纳斯达人说道:
    Google Chrome Mac OS X 10.15.7
    博主,请问一下我三星970PRO 1TB nvme SSD,esxi7.03虚拟机、黑群3615xs 7.01 42118,为什么进系统fdisk根本就看不到这个盘,也没有libsynonvme.so.1这个文件,是3615xs本身就不支持nvme,还是其它原因,麻烦博主抽空指导,万分感激!如若本站开通打赏通道,本人愿表示心意。
    1. 博主说道:
      Google Chrome Windows 10
      需要直通nvme控制器给群晖虚拟机,然后udevadm info /dev/nvme0n1获取nvme的ID(比如:/devices/pci0000:00/0000:00:01.0/0000:01:00.0/nvme/nvme0/nvme0n1),敲命令vi /etc.defaults/extensionPorts修改文件,使ID与实际的nvme匹配,比如: [PCI] pci1="0000:00:01.0"
      1. 纳斯达人说道:
        Google Chrome Mac OS X 10.15.7
        感谢博主,换918引导解决该问题,应该是不包含驱动导致,再次感谢!
      2. pt95说道:
        Google Chrome Windows 10
        博主,您好:请教一下,是否主板的m.2接口要插上固态硬盘,再输入:udevadm info /dev/nvme0n1,才能显示固态硬盘的位置信息?谢谢
        1. 博主说道:
          Google Chrome Windows 10
          肯定要插入硬盘啊,你想啊,怎么能隔着空气获取到硬盘信息呢?
          1. pt95说道:
            Google Chrome Windows 10
            感谢博主指教,谢谢
  2. 918说道:
    Google Chrome Windows 10
    918 不知道什么原因 改完出现 抱歉,您所指定的页面不存在。 7.1.0-42661 pat文件 改完后缀无法解压 目前没找到替换文件 未处理
    1. 博主说道:
      Google Chrome Windows 10
      你搞错了吧,不是改pat文件啊
      1. 918说道:
        Google Chrome Windows 10
        没有弄错 1、先按教程 修改开启nvme缓存 按上面的步骤通过ssh操作成功 2、重启后 文件服务正常 ssh正常连接 不能进入web管理页面 提示页面不存在 3、根据另一个教程修复 提示页面不存在的问题 教程说需要用pat内的两个文件替换现有系统内的 4、pat解压失败 修复终止 5、登录ssh nvme挂载正常 创建存储池 挂载nvme 操作成功 6、重启后 nvme存储池消失 web管理也不能进 决定重装群晖 7、U盘格式化重做引导 8、用另一个U盘 写入磁盘参数计算映像 9、计算磁盘参数 修改引导盘内参数 重新引导 10、安装7.1.0 pat 安装成功 硬盘存储池 在线重组成功 一个存储池出现只读状态 11、按此教程再次挂载nvme 挂载成功 重启无异常 12、挂载nvme为存储池成功 重启无异常 13、删除只读存储池 重建 从备份恢复数据 操作成功 耗时24小时 折腾完毕
        1. 博主说道:
          Google Chrome Windows 10
          你看的那些提示页面不存在的教程是针对DS3617-6.17版本的,不是针对DSM7.X版本的系统。
  3. DeathPuppet说道:
    Google Chrome Windows 10
    通过命令找得到地址为0000:00:1d.0,也通过WINHEX修改二进制文件,与原教程步骤不同的是“Bad paramter”后面跟的是"nvme 0000:00:XX.0",我试过改成“0000:00:1d.0 0000:00:1d.1”、“nvme 0000:00:1d.1”、“ 0000:00:1d.0”都没成功,主板只有一个NVME口。
  4. xbl说道:
    Google Chrome Windows 10
    大佬能提供下你的libsynonvme.so.1文件么,我的系统自带的918+附近为 00007550 44 D 00007560 53 39 31 38 2B 00 6E 76 6D 65 5F 6D 6F 64 65 6C S918+ nvme_model 00007570 5F 73 70 65 63 5F 67 65 74 2E 63 00 25 73 3A 25 _spec_get.c %s:% 00007580 64 20 42 61 64 20 70 61 72 61 6D 74 65 72 00 6E d Bad paramter n 00007590 76 6D 65 00 00 00 00 00 00 00 00 00 30 30 30 30 vme 0000 000075A0 3A 30 30 3A 31 33 2E 32 00 52 53 31 36 31 39 78 :00:13.2 RS1619x 000075B0 73 2B 00 与网上看到截图相差很多
    1. xbl说道:
      Google Chrome Windows 10
      DS918+ nvme_model _spec_get.c %s:% d Bad paramter nvme 0000:00:13.2 RS1619xs+ 就是默认只有一组数据 而且nvme和那组数据中间间隔很大
    2. 博主说道:
      Google Chrome Windows 10
      每个人使用的硬件不同,所以上面的数值都是不一样的,这个不奇怪。所以必须是在本机上针对实际的地址进行修改。
      1. xbl说道:
        Google Chrome Windows 10
        大佬,现在nvme能认到了,可是创建缓存的时候提示 不符合硬盘状态的条件 怎么搞
        1. 博主说道:
          Google Chrome Windows 10
          换硬盘
        2. DeathPuppet说道:
          Google Chrome Windows 10
          请问你是怎么修改的,我也是一样的情况,修改后认不到盘
  5. magic说道:
    Google Chrome Windows 10
    我的主板上有一个M.2和通过pcie扩展卡上也加了一个M.2固态硬盘,通过查看为 ls /dev/nvme* /dev/nvme0 /dev/nvme0n1 /dev/nvme1 /dev/nvme1n1 udevadm info /dev/nvme0n1 P: /devices/pci0000:00/0000:00:01.1/0000:01:00.0/nvme/nvme0/nvme0n1 udevadm info /dev/nvme1n1 P: /devices/pci0000:00/0000:00:01.3/0000:02:00.2/0000:03:04.0/0000:06:00.0/nvme/nvme1/nvme1n1 但mvme1n1的那串字符明显长很多,我也把0000:00:01.1和0000:00:01.3都加入了libsynonvme.so文件, 但是只能识别到0000:00:01.1的固态硬盘,识别不到0000:00:01.3的硬盘。我看文件里有一个DS1621XS+0000:00:01.1 0000:00:01.2,我也修改成其他地址了,也一样,修不修改都只能识别0000:00:01.1硬盘,但如果我安装ds3622xs是两块都能认的,两个系统修改的方法不一样,918用3622的方法不行。知道什么原因吗?
    1. 博主说道:
      Google Chrome Windows 10
      主板自带的m2盘位,一个m2和两个m2的我都改过,DS918都可以正常识别。我估计你使用的是转接卡,有可能没有驱动。
      1. magic说道:
        Google Chrome Windows 10
        但用ssh链接系统,通过fidk能查看到2个M.2固态硬盘的分区信息。而且还发现918的网卡驱动和3622的网卡驱动支持的网卡也不一样,有一块主板的网卡918的驱动就不认,一上3622或3615系统都可以,应该是你说的问题,但为什么在命令模式下,能找到硬件,不理解。
        1. 博主说道:
          Google Chrome Windows 10
          敲命令能识别硬件基本信息,不代表群晖就能驱动。
  6. kcllee说道:
    Google Chrome Windows 10
    大佬,我在改完重启之后,存储管理器中还是不显示NVME固态,但是我ssh登录群辉,可以通过fdisk看到nvme固态的信息,想问这是为啥。我改完重启之后还把群辉上的文件下载下来,确认过修改成功了,麻烦大佬解答一下
    1. 博主说道:
      Google Chrome Windows 10
      我不知道你做了什么,所以无法解答。看不到nvme有可能没有操作对。
  7. nonskim说道:
    Google Chrome Windows 10
    : /devices/pci0000:00/0000:00:1e.0/0000:05:01.0/0000:06:1b.0/nvme/nvme0/nvme0n1 N: nvme0n1 E: DEVNAME=/dev/nvme0n1 E: DEVPATH=/devices/pci0000:00/0000:00:1e.0/0000:05:01.0/0000:06:1b.0/nvme/nvme0/nvme0n1 E: DEVTYPE=disk E: MAJOR=259 E: MINOR=0 E: PHYSDEVBUS=pci E: PHYSDEVDRIVER=nvme E: PHYSDEVPATH=/devices/pci0000:00/0000:00:1e.0/0000:05:01.0/0000:06:1b.0 E: SUBSYSTEM=block E: SYNO_ATTR_SERIAL=19462528DAC7 E: SYNO_DEV_DISKPORTTYPE=UNKNOWN E: SYNO_INFO_PLATFORM_NAME=apollolake E: SYNO_KERNEL_VERSION=4.4 E: SYNO_SUPPORT_XA=no E: TAGS=:systemd: E: USEC_INITIALIZED=9601286 大佬,设置为0000:00:1e.0和0000:00:1e.1不行啊,还有我这个怎么多一串呢 :kuanghan:
    1. 博主说道:
      Google Chrome Windows 10
      如果有多个nvme硬盘的,先用命令ls /dev/nvme*来查询硬盘名称,然后再用udevadm info来查硬盘ID,而不是随便写。
  8. paph说道:
    WebView Android 12
    博主我想问下,我是安装了一个PCIE转接卡转接了4个nvme 按照你的教程,可以识别2个,但是添加第三个后,系统就会报错崩溃,需要重新安装,想问下918是否可以安装4个nvme ,如果不行3622的引导是否可行?
    1. 博主说道:
      Google Chrome Windows 10
      因为默认918的系统就只支持两个nvme而已。
      1. paph说道:
        Google Chrome Windows 10
        那如果换3622的引导呢,我看您其他的文章里提到了,3622本身不支持NVME,没有的都添加上了,按理说应该也行啊,另外我看其他地方也有人用6.23版本改了so文件后里面有至少5、6个ssd缓存设备,所以也想请教您下7.0有没有什么办法
        1. 博主说道:
          Google Chrome Windows 10
          7.0系统修改/etc.defaults/extensionPorts这个文件,把nvme的ID修改正确了,就能显示。你可以试一下。
          1. paph说道:
            Google Chrome Windows 10
            有具体方式么?你这么说没头绪啊
          2. 博主说道:
            Google Chrome Windows 10
            有空再写教程了
          3. paph说道:
            Google Chrome Windows 10
            十分感谢,按你说的方式,今天搞成了,在免拆分扩展卡的情况下,ASM2824主控芯片的虽然NVME LIST什么的都能看到,也有地址位,但是填入后是认不出来的,如果是PLX8747主控的没问题,用的3622的引导,估计3615和3617都能用。不过目前还有2个问题想请教下,3622xs在7.0有核显的情况下怎么硬解,没找到驱动,另外就是目前的引导都没有AQC107的网卡驱动,尝试了隔壁上那个自编译的tinycore 只能自动导入918的驱动才有AQC107,但是导入后没法引导,找不到设备,可否帮忙在3622的引导里面加入AQC107的驱动,INTEL。。。有点贵
          4. 博主说道:
            Google Chrome Windows 10
            加了驱动太多了会冲突,这次编译多了8168和8169的驱动,都已经不太正常了。你会自己编译就自己编译啊,只加入你所需要的驱动就行了。
    2. 胖虎说道:
      Google Chrome Mac OS X 10.15.7
      问下兄弟识别到的两个nvme 用udevadm info nvmexx后,识别到的id一样么
  9. 王耀贤说道:
    Sogou Explorer Windows 10
    麻烦大佬给看下、我这两个缓存盘,都是在主板上的接口、一次只能找到一个。分别是:udevadm info /dev/nvme0n1和udevadm info /dev/nvme1n1。能看到两个不同的位置、怎么在表里修改?我试了的00:1b.0和00:1d.0.只能读取到一个、几个组合都式了都不应,每次只能读取到一个,就是在第一个位置上的。
    1. 博主说道:
      Google Chrome Windows 10
      应该是改00:1b.0和00:1b.1,不是00:1b.0和00:1d.0吧。
    2. 7ordy说道:
      Google Chrome Windows 10
      你的是对的,分别使用udevadm info /dev/nvme0n1和udevadm info /dev/nvme1n1,会看到两个码,然后去winhex里改918后的两个,我的改了就能显示两个SSD了
  10. 王耀贤说道:
    Sogou Explorer Windows 10
    root@Nas:~# udevadm info /dev/nvme0n1 P: /devices/pci0000:00/0000:00:1b.0/0000:01:00.0/nvme/nvme0/nvme0n1 N: nvme0n1 E: DEVNAME=/dev/nvme0n1 E: DEVPATH=/devices/pci0000:00/0000:00:1b.0/0000:01:00.0/nvme/nvme0/nvme0n1 E: DEVTYPE=disk E: MAJOR=259 E: MINOR=0 E: PHYSDEVBUS=pci E: PHYSDEVDRIVER=nvme E: PHYSDEVPATH=/devices/pci0000:00/0000:00:1b.0/0000:01:00.0 E: SUBSYSTEM=block E: SYNO_ATTR_SERIAL=PHBT83540BXC016N E: SYNO_DEV_DISKPORTTYPE=UNKNOWN E: SYNO_INFO_PLATFORM_NAME=apollolake E: SYNO_KERNEL_VERSION=4.4 E: SYNO_SUPPORT_XA=no E: TAGS=:systemd: E: USEC_INITIALIZED=678329 root@Nas:~# udevadm info /dev/nvme1n1 P: /devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme1/nvme1n1 N: nvme1n1 E: DEVNAME=/dev/nvme1n1 E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme1/nvme1n1 E: DEVTYPE=disk E: MAJOR=259 E: MINOR=1 E: PHYSDEVBUS=pci E: PHYSDEVDRIVER=nvme E: PHYSDEVPATH=/devices/pci0000:00/0000:00:1d.0/0000:02:00.0 E: SUBSYSTEM=block E: SYNO_ATTR_SERIAL=PHBT83540CUC016N E: SYNO_DEV_DISKPORTTYPE=UNKNOWN E: SYNO_INFO_PLATFORM_NAME=apollolake E: SYNO_KERNEL_VERSION=4.4 E: SYNO_SUPPORT_XA=no E: TAGS=:systemd: E: USEC_INITIALIZED=678792

发表回复