vasiliy_gr Posted November 26, 2019 Share #51 Posted November 26, 2019 5 hours ago, The Chief said: I'm more than happy to say — no, it's not! It's just simple pci bus number check in proprietary Syno code. Thank you! Very good news. I also tried this method with nvme (Kingston A1000 240GB) on motherboard's internal nvme connector. So I changed those values to "0000:04:00.0". And it works! The only one thing I still do not understand is - what about second nvme drive for RW cache setup? Does it have the same pci ids as the first one on add-on card? If so what about my second nvme slot on motherboard, no chance?.. Quote Link to comment Share on other sites More sharing options...
The Chief Posted November 27, 2019 Share #52 Posted November 27, 2019 (edited) 6 часов назад, vasiliy_gr сказал: The only one thing I still do not understand is - what about second nvme drive for RW cache setup? Does it have the same pci ids as the first one on add-on card? If so what about my second nvme slot on motherboard, no chance?.. You have to wait until someone will make full patch, removing pci bus check completely from syno library. PS: I personally can't recommend RW cache setup — it can lead to data corruption. And even more, it both ssd's went dead, you loose access to RW-cached volume until you replace ssd's with new ones. Edited November 27, 2019 by The Chief Quote Link to comment Share on other sites More sharing options...
The Chief Posted November 27, 2019 Share #53 Posted November 27, 2019 (edited) 10 часов назад, vasiliy_gr сказал: Does it have the same pci ids as the first one on add-on card? Try this: Any nvme ssd in any pcie slot shoud do from now. Xpeno has to be DS918+, obviously. root@Xpenology:~# synonvme --is-nvme-ssd /dev/nvme0n1 It is a NVMe SSD root@Xpenology:~# synonvme --m2-card-model-get /dev/nvme0n1 Not M.2 adapter card root@Xpenology:~# synonvme --model-get /dev/nvme0n1 Model name: INTEL MEMPEK1W016GAH root@Xpenology:~# nvme list Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 PHBT730601CQ016D INTEL MEMPEK1W016GAH 1 14.40 GB / 14.40 GB 512 B + 0 B K3110310 /dev/nvme0n1p1 PHBT730601CQ016D INTEL MEMPEK1W016GAH 1 14.40 GB / 14.40 GB 512 B + 0 B K3110310 root@Xpenology:~# udevadm info /dev/nvme0n1 P: /devices/pci0000:00/0000:00:01.0/0000:01:00.0/nvme/nvme0/nvme0n1 N: nvme0n1 E: DEVNAME=/dev/nvme0n1 E: DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/nvme/nvme0/nvme0n1 E: DEVTYPE=disk E: ID_PART_TABLE_TYPE=dos E: MAJOR=259 E: MINOR=0 E: PHYSDEVBUS=pci E: PHYSDEVDRIVER=nvme E: PHYSDEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0 E: SUBSYSTEM=block E: SYNO_ATTR_SERIAL=PHBT730601CQ016D E: SYNO_DEV_DISKPORTTYPE=CACHE E: SYNO_INFO_PLATFORM_NAME=apollolake E: SYNO_KERNEL_VERSION=4.4 E: USEC_INITIALIZED=94668 root@Xpenology:~# synonvme --get-location /dev/nvme0n1 Device: /dev/nvme0n1, PCI Slot: 0, Card Slot: 1 root@Xpenology:~# synonvme --port-type-get /dev/nvme0n1 SSD Cache. root@Xpenology:~# synodiskport -cache nvme0n1 root@Xpenology:~# ls -l /dev/mapper/cache* brw------- 1 root root 252, 2 Nov 27 10:12 /dev/mapper/cachedev_0 root@Xpenology:~# dmsetup status vg1-syno_vg_reserved_area: 0 24576 linear cachedev_0: 0 11701714944 flashcache-syno stats: reads(9899), writes(3082) read hits(4377), read hit percent(44) replacement(0), write replacement(0) invalidates(0) pending enqueues(792), pending inval(0) no room(0) disk reads(5522), disk writes(3082) ssd reads(3585) ssd writes(4833) uncached reads(689), uncached writes(3082), uncached IO requeue(0) disk read errors(0), disk write errors(0) ssd read errors(0) ssd write errors(0) uncached sequential reads(689), uncached sequential writes(0) pid_adds(0), pid_dels(0), pid_drops(0) pid_expiry(0) write miss ssd(0) --------------------------- Read hit statistics: pending preread(792) match none read disk(0) busy in io(792) busy wait queue(0) match partial: total(0) Write hit statistics: busy inval(0) do pending write back(0) map skip_unaligned_io(0) dirty_writeback(0) cleanings_over_threshold(0) cleanings_total(0) preread_job_mem_count(0) num_uncached_write(0) num_write_cache(0) num_flush_bio(318) inval dirty writeback(0) write miss invalidate(0) map_inval(0) uncacheable_inval(0) do_pending_no_error_inval(0) pending enqueue inval (0) pending enqueue inval handled(0) disk flush start(0) disk flush done(0) dirty writeback start (0) dirty writeback done (0) vg1-volume_1: 0 11701714944 linear Edited November 27, 2019 by The Chief 2 4 Quote Link to comment Share on other sites More sharing options...
The Chief Posted November 27, 2019 Share #54 Posted November 27, 2019 (edited) The way Syno checks NVME cache (two most interesting functions, reversed to C) : Скрытый текст //------------------------------------------------------------------------- // Data declarations char *off_DS719_PCIBUS = "0000:00:13.2"; // weak char *off_DS1019_PCIBUS = "0000:00:13.2"; // weak char *off_DS419_PCIBUS = "0000:00:13.1"; // weak char *off_RS1619_PCIBUS = "0000:00:03.2"; // weak char *off_DS918_PCIBUS = "0000:00:13.1"; // weak char *off_207C00 = "08.0"; // weak char *off_207C40 = "08.0"; // weak char *off_207C80 = "08.0"; // weak char *off_207CC0 = "04.0"; // weak char *off_207D00 = "04.0"; // weak char *off_207D40 = "04.0"; // weak char *off_207D80 = "04.0"; // weak char *off_207DC0 = "04.0"; // weak char *off_207E00 = "04.0"; // weak //----- (0000000000003E10) ---------------------------------------------------- __int64 __fastcall SYNONVMeModelSpecGet(_QWORD *a1, char *a2) { _QWORD *v2; // rbp unsigned int v3; // eax __int64 result; // rax __int64 v5; // [rsp+0h] [rbp-418h] v2 = a1; memset(&v5, 0, 0x400uLL); if ( a1 && a2 ) { if ( (unsigned int)SYNONVMeModelNameGet((char *)&v5) ) { syslog(3, "%s:%d Failed to get model name", "nvme_model_spec_get.c", 261LL); result = 0xFFFFFFFFLL; } else { *a1 = 0LL; a1[1] = 0LL; v3 = SYNOM2CardModelGet(a2); if ( v3 == 1 ) // Syno M.2 card adapter present { if ( !memcmp(&v5, "FS6400", 6uLL) ) { *(_DWORD *)v2 = 2; v2[1] = &off_207D40; result = 0LL; } else { *(_DWORD *)v2 = 2; if ( !memcmp(&v5, "RS1619xs+", 9uLL) ) v2[1] = &off_207D00; else v2[1] = &off_207CC0; result = 0LL; } } else if ( v3 < 1 ) // different M.2 adapter type? { if ( (unsigned int)SLIBCSupportM2AllDev(a2, 1024LL) ) // 'support_m2_all_devices' in config is TRUE { *(_DWORD *)a1 = 2; if ( !memcmp(&v5, "FS6400", 6uLL) ) v2[1] = &off_207E00; else v2[1] = &off_207DC0; result = 0LL; } else { *(_DWORD *)a1 = 2; a1[1] = &off_207D80; result = 0LL; } } else if ( v3 == 2 ) // and one more M.2 adapter type? { if ( !memcmp(&v5, "FS6400", 6uLL) ) { *(_DWORD *)v2 = 2; v2[1] = &off_207C80; result = 0LL; } else { *(_DWORD *)v2 = 2; if ( !memcmp(&v5, "RS1619xs+", 9uLL) ) v2[1] = &off_207C40; else v2[1] = &off_207C00; result = 0LL; } } else if ( v3 == 3 ) // M.2 adapter search error, try to find nvme on well-known pci hubs { if ( !memcmp(&v5, "DS918+", 6uLL) ) { *(_DWORD *)v2 = 2; v2[1] = &off_DS918_PCIBUS; result = 0LL; } else if ( !memcmp(&v5, "RS1619xs+", 9uLL) ) { *(_DWORD *)v2 = 2; v2[1] = &off_RS1619_PCIBUS; result = 0LL; } else if ( !memcmp(&v5, "DS419+", 6uLL) ) { *(_DWORD *)v2 = 2; v2[1] = &off_DS419_PCIBUS; result = 0LL; } else if ( !memcmp(&v5, "DS1019+", 7uLL) ) { *(_DWORD *)v2 = 2; v2[1] = &off_DS1019_PCIBUS; result = 0LL; } else { if ( !memcmp(&v5, "DS719+", 6uLL) ) { *(_DWORD *)v2 = 2; v2[1] = &off_DS719_PCIBUS; } else { *(_DWORD *)v2 = 1; v2[1] = &off_207AA0; // void* } result = 0LL; } } else { syslog(3, "%s:%d Do not support this device", "nvme_model_spec_get.c", 280LL); result = 0xFFFFFFFFLL; } } } else { syslog(3, "%s:%d Bad paramter", "nvme_model_spec_get.c", 256LL); result = 0xFFFFFFFFLL; } return result; } //----- (00000000000041F0) ---------------------------------------------------- const char **__fastcall SYNONVMeSlotInfoGet(char *s) { FILE *v1; // r12 char *v2; // rbp char *v3; // rdi const char **v4; // rbx __int64 v6; // r13 __int64 v7; // [rsp+0h] [rbp-2048h] char *haystack; // [rsp+8h] [rbp-2040h] __int64 v9; // [rsp+10h] [rbp-2038h] const char **v10; // [rsp+18h] [rbp-2030h] char sa; // [rsp+20h] [rbp-2028h] char v12; // [rsp+1020h] [rbp-1028h] v7 = 0LL; haystack = 0LL; v9 = 0LL; v10 = 0LL; memset(&sa, 0, 0x1000uLL); memset(&v12, 0, 0x1000uLL); if ( (int)SYNONVMeDevNameGet(s, &v12) < 0 ) { syslog(3, "%s:%d Can't get the device name", "nvme_slot_info_get.c", 81LL); LABEL_18: if ( haystack ) free(haystack); return 0LL; } if ( (int)SYNONVMeModelSpecGet(&v9, &v12) < 0 ) { syslog(3, "%s:%d Failed to get model specification", "nvme_slot_info_get.c", 86LL); goto LABEL_18; } snprintf(&sa, 0x1000uLL, "%s/%s/uevent", "/sys/block", &v12); v1 = fopen64(&sa, "r"); if ( !v1 ) { syslog(3, "%s:%d Can't open file %s", "nvme_slot_info_get.c", 93LL, &sa); goto LABEL_18; } while ( getline(&haystack, (size_t *)&v7, v1) != -1 ) { v2 = haystack; if ( strstr(haystack, "PHYSDEVPATH") ) { if ( (int)v9 <= 0 ) { LABEL_10: v4 = 0LL; v3 = v2; } else { v4 = v10; v6 = (__int64)&v10[3LL * (unsigned int)(v9 - 1) + 3]; while ( !strstr(v2, *v4) ) { v4 += 3; if ( v4 == (const char **)v6 ) goto LABEL_10; } v3 = v2; } goto LABEL_11; } } syslog(3, "%s:%d Fail to read PHYSDEVPATH from %s", "nvme_slot_info_get.c", 106LL, &sa); v3 = haystack; v4 = 0LL; if ( !haystack ) goto LABEL_8; LABEL_11: free(v3); LABEL_8: fclose(v1); return v4; } Edited November 27, 2019 by The Chief 1 Quote Link to comment Share on other sites More sharing options...
The Chief Posted November 27, 2019 Share #55 Posted November 27, 2019 В 07.03.2019 в 01:34, flyride сказал: Ooo, I wonder if Syno coded their utilities specifically to a particular PCIe address for DS918? Yes, they were. 1 Quote Link to comment Share on other sites More sharing options...
flyride Posted November 27, 2019 Share #56 Posted November 27, 2019 (edited) EDIT: read through this whole thread for patch information specific to the DSM version you are running. This is nice work, and thank you for your contribution. For those who aren't familiar with patching binary files, here's a script to enable nvme support per this research. It must be run as sudo and you should reboot afterward. Note that an update to DSM might overwrite this file such that it has to be patched again (and/or can't be patched due to string changes, although this is unlikely). Your volume might appear as corrupt or not mountable until the patch is reapplied. To be very safe, you may want to remove the cache drive from the volume prior to each update. #!/bin/ash # patchnvme for DSM 6.2.x # TARGFILE="/usr/lib/libsynonvme.so.1" PCISTR="\x00\x30\x30\x30\x30\x3A\x30\x30\x3A\x31\x33\x2E\x31\x00" PHYSDEVSTR="\x00\x50\x48\x59\x53\x44\x45\x56\x50\x41\x54\x48\x00\x00\x00\x00\x00\x00" PCINEW="\x00\x6E\x76\x6D\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00" PHYSDEVNEW="\x00\x50\x48\x59\x53\x44\x45\x56\x44\x52\x49\x56\x45\x52\x00\x00\x00\x00" # [ -f $TARGFILE.bak ] || cp $TARGFILE $TARGFILE.bak if [ $? == 1 ]; then echo "patchnvme: can't create backup (sudo?)" exit fi COUNT=`grep -obUaP "$PCISTR" $TARGFILE | wc -l` if [ $COUNT == 0 ]; then echo "patchnvme: can't find PCI reference (already patched?)" exit fi if [ $COUNT -gt 1 ]; then echo "patchnvme: multiple PCI reference! abort" exit fi COUNT=`grep -obUaP "$PHYSDEVSTR" $TARGFILE | wc -l` if [ $COUNT == 0 ]; then echo "patchnvme: can't find PHYSDEV reference (already patched?)" exit fi if [ $COUNT -gt 1 ]; then echo "patchnvme: multiple PHYSDEV reference! abort" exit fi sed "s/$PCISTR/$PCINEW/g" $TARGFILE >$TARGFILE.tmp if [ $? == 1 ]; then echo "patchnvme: patch could not be applied (sudo?)" exit fi sed "s/$PHYSDEVSTR/$PHYSDEVNEW/g" $TARGFILE.tmp >$TARGFILE if [ $? == 1 ]; then echo "patchnvme: patch could not be applied (sudo?)" exit fi echo "patchnvme: success" rm $TARGFILE.tmp 2>/dev/null Edited November 18, 2021 by flyride fixed formatting 7 2 Quote Link to comment Share on other sites More sharing options...
advin Posted November 27, 2019 Author Share #57 Posted November 27, 2019 This is nice work, and thank you for your contribution. flyride & The Chief😊 Quote Link to comment Share on other sites More sharing options...
IG-88 Posted November 27, 2019 Share #58 Posted November 27, 2019 1 hour ago, flyride said: Note that an update to DSM might overwrite this file such that it has to be patched again (and/or can't be patched due to string changes, although this is unlikely). Your volume might appear as corrupt or not mountable until the patch is reapplied. To be very safe, you may want to remove the cache drive from the volume prior to each patch. that needs to be red an bold !!! Quote Link to comment Share on other sites More sharing options...
flyride Posted November 27, 2019 Share #59 Posted November 27, 2019 Done 😀 Quote Link to comment Share on other sites More sharing options...
The Chief Posted November 28, 2019 Share #60 Posted November 28, 2019 (edited) 9 часов назад, flyride сказал: prior to each patch «…prior to each DSM update», I guess. PS: this final patch version needs more testing in real setups, and more feedback as well to claim it stable. Comrades, test & provide feedback, if you please. Edited November 28, 2019 by The Chief Quote Link to comment Share on other sites More sharing options...
The Chief Posted November 28, 2019 Share #61 Posted November 28, 2019 (edited) 9 часов назад, flyride сказал: It must be run as sudo and you should reboot afterward. Is there a way to do a shellscript automagically post-update or at boot/premount time? Hmmm… Edited November 28, 2019 by The Chief 1 Quote Link to comment Share on other sites More sharing options...
The Chief Posted November 28, 2019 Share #62 Posted November 28, 2019 14 часа назад, flyride сказал: Note that an update to DSM might overwrite this file such that it has to be patched again Put attached script in /usr/local/etc/rc.d/ — it will try to keep .so patched (script is executed at system startup/shutdown), even after DSM update. Based on the nice shell code of yours, thanx a lot! libNVMEpatch.sh 1 2 Quote Link to comment Share on other sites More sharing options...
DerMoeJoe Posted November 29, 2019 Share #63 Posted November 29, 2019 (edited) @The Chief thanks for your good work, ive tried your script to get my test cache ssd to work... im running DSM 6.2.2-24922 U4 on Baremetal ASRock B250M with Intel i5-6400T ive copied your script to the NAS, started the shell script as ROOT and after this ive copied the file to /usr/local/etc/rc.d/ and rebooted the NAS with init 6.... but after the reboot my NVME isnt alive on the volume manager. Its an Intenso 128GB NVME root@NAS:/# nvme list Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 3QLUS7RSFP174FJTPDR5 INTENSO 1 128.04 GB / 128.04 GB 512 B + 0 B R1115A0 /dev/nvme0n1p1 3QLUS7RSFP174FJTPDR5 INTENSO 1 128.04 GB / 128.04 GB 512 B + 0 B R1115A0 /dev/nvme0n1p2 3QLUS7RSFP174FJTPDR5 INTENSO 1 128.04 GB / 128.04 GB 512 B + 0 B R1115A0 root@NAS:/ root@NAS:/# synonvme --is-nvme-ssd /dev/nvme0n1 It is a NVMe SSD root@NAS:/# root@NAS:/# synonvme --model-get /dev/nvme0 Model name: INTENSO root@NAS:/# udevadm info /dev/nvme0n1 P: /devices/pci0000:00/0000:00:1d.0/0000:01:00.0/nvme/nvme0/nvme0n1 N: nvme0n1 E: DEVNAME=/dev/nvme0n1 E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/0000:01:00.0/nvme/nvme0/nvme0n1 E: DEVTYPE=disk E: ID_PART_TABLE_TYPE=gpt E: MAJOR=259 E: MINOR=0 E: PHYSDEVBUS=pci E: PHYSDEVDRIVER=nvme E: PHYSDEVPATH=/devices/pci0000:00/0000:00:1d.0/0000:01:00.0 E: SUBSYSTEM=block E: SYNO_ATTR_SERIAL=3QLUS7RSFP174FJTPDR5 E: SYNO_DEV_DISKPORTTYPE=UNKNOWN E: SYNO_INFO_PLATFORM_NAME=apollolake E: SYNO_KERNEL_VERSION=4.4 E: USEC_INITIALIZED=648737 root@NAS:/# when i look for the age of the file libsynonvme.so i can see that it was modded. (by the date) root@NAS:/usr/lib# ls -l total 145160 lrwxrwxrwx 1 root root 16 Nov 29 17:35 libsynonvme.so -> libsynonvme.so.1 -rw-r--r-- 1 root root 33578 May 9 2019 libsynonvme.so.1 d u got a hint for me? Edited January 7, 2020 by Polanskiman Please use code tags when posting command line, code or logs. Quote Link to comment Share on other sites More sharing options...
The Chief Posted November 29, 2019 Share #64 Posted November 29, 2019 (edited) Shellscript has to be executable: chmod 0755 /usr/local/etc/rc.d/libNVMEpatch.sh What «Storage Manager → SSD Cache → Create» says? It should allow you to select SSD after «Choose Mode → Next». Edited November 29, 2019 by The Chief Quote Link to comment Share on other sites More sharing options...
DerMoeJoe Posted November 29, 2019 Share #65 Posted November 29, 2019 @The Chief damn... ive forgot the basic's... thx for your hint. now it works (y) Quote Link to comment Share on other sites More sharing options...
dragosmp Posted December 4, 2019 Share #66 Posted December 4, 2019 (edited) Thank you ! root@DiskStation:~# nvme list Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 2J1820020553 ADATA SX6000LNP 1 128.04 GB / 128.04 GB 512 B + 0 B V9001c01 /dev/nvme0n1p1 2J1820020553 ADATA SX6000LNP 1 128.04 GB / 128.04 GB 512 B + 0 B V9001c01 /dev/nvme1n1 2J1820018995 ADATA SX6000LNP 1 128.04 GB / 128.04 GB 512 B + 0 B V9001c01 /dev/nvme1n1p1 2J1820018995 ADATA SX6000LNP 1 128.04 GB / 128.04 GB 512 B + 0 B V9001c01 Edited January 7, 2020 by Polanskiman Please use code tags when posting command line, code or logs. Quote Link to comment Share on other sites More sharing options...
T-REX-XP Posted December 4, 2019 Share #67 Posted December 4, 2019 Thank for the good news, guys. So, can you share screenshots(before/after) of speed test after the setup the cache? Thanks. Quote Link to comment Share on other sites More sharing options...
fma965 Posted December 7, 2019 Share #68 Posted December 7, 2019 (edited) Does this still work? having issues getting it working. EDIT: nvm sorted it. Edited December 7, 2019 by fma965 Quote Link to comment Share on other sites More sharing options...
DerMoeJoe Posted December 11, 2019 Share #69 Posted December 11, 2019 for me it works fine... with 2x 120gb intenso nvme ssd's in RW Cache Mode. Quote Link to comment Share on other sites More sharing options...
The Chief Posted December 12, 2019 Share #70 Posted December 12, 2019 One can also use NVMe SSD's as storage as well. Here are some details (written in Russian, but screenshots are self-explanatory). Quote Link to comment Share on other sites More sharing options...
jimmyjin1978 Posted December 24, 2019 Share #71 Posted December 24, 2019 (edited) On 12/5/2019 at 12:08 AM, T-REX-XP said: Thank for the good news, guys. So, can you share screenshots(before/after) of speed test after the setup the cache? Thanks. My steup is Gigabyte B365M Auros with E3-1235Lv5 CPU, 8GB DDR4, intel X550 10Gb LAN .The volume1 is a WD6002FRYZ 6T HDD, with two Toshiba RC500 250GB NVme SDD as Read-Write cache. Below is the write speed with cache on ( not skip continue I/O): First snap is large file (30+ GB) write test and the second is hundreds of JPG and RAW image. The little problem is it seems DSM TRIMility is poor , after several write tests ( 60+ GB data), the write cached speed dropped to 300MB/s round , and need wait a long time ( days) to recover the full 10Gb speed . In Win10 OS, these Toshiba RC500 SSD also will drop to 300MB/s write speed after a continuous write excedd 30GB, maybe this is the SSD 's SLC cache exhausted . Edited December 24, 2019 by jimmyjin1978 1 Quote Link to comment Share on other sites More sharing options...
jimmyjin1978 Posted December 25, 2019 Share #72 Posted December 25, 2019 13 hours ago, jimmyjin1978 said: My steup is Gigabyte B365M Auros with E3-1235Lv5 CPU, 8GB DDR4, intel X550 10Gb LAN .The volume1 is a WD6002FRYZ 6T HDD, with two Toshiba RC500 250GB NVme SDD as Read-Write cache. Below is the write speed with cache on ( not skip continue I/O): First snap is large file (30+ GB) write test and the second is hundreds of JPG and RAW image. The little problem is it seems DSM TRIMility is poor , after several write tests ( 60+ GB data), the write cached speed dropped to 300MB/s round , and need wait a long time ( days) to recover the full 10Gb speed . In Win10 OS, these Toshiba RC500 SSD also will drop to 300MB/s write speed after a continuous write excedd 30GB, maybe this is the SSD 's SLC cache exhausted . BTW: the then flush writen cache procedure is extremely long, from DSM you can see it is only 10MBytes/s write speed to your volume But I think that's all offical DSM behavior ,first of all , we have a Nvme Cache version Xpenology ! Thanks to @The Chief @flyride !Cheers and merry Christmas! 3 Quote Link to comment Share on other sites More sharing options...
nadiva Posted January 4, 2020 Share #73 Posted January 4, 2020 (edited) beautiful Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 INTEL SSDPEKNW020T8 1 2.05 TB / 2.05 TB 512 B + 0 B interesting syno has limit of around 440GB for cache. memory requirement is negligible so i don't get it. i dont mind using less as i keep provisioning SSD/NVMEs anyway, but would like to double it with some hack. ideally keep all hot data there forever, but it looks like this cache will be deleted after reboot. so it's quietionable how useful it will be. in my fantasy, i have it as a standalone drive, full drive encrypted, and keep HD drives idle like in opensource NAS solutions. those are the 3 features to let go in favor of DSM unparallel productivity. Edited January 7, 2020 by Polanskiman Please use code tags when posting command line, code or logs. Quote Link to comment Share on other sites More sharing options...
NooL Posted January 5, 2020 Share #74 Posted January 5, 2020 This is brilliant - Thank you so much for your work @flyride and @The Chief !! Quote Link to comment Share on other sites More sharing options...
Captainfingerbang Posted January 10, 2020 Share #75 Posted January 10, 2020 (edited) Speaking of brilliant, i think i forgot all of my linux commands in my brain. Its been so long! It appears the system detects the drive but its also giving me error. I DID manage to get the sh script moved to the proper directory though! Would someone smarter than me take a look at my terminal here to tell me what is going on? i really dont know what i need to do next ( or at all) to get nvme working. also i dont know why i am getting the "-ash:" error problem at bottom either. Baremetal DSM 6.2.2-24922 Update 4 ds918+ 1.04 with single nvme sm961 250gb and like 5 spin drives in shr. GIGABYTE B360 HD3 w/i3-8100 latest bios has 2x m.2 #1 is occupied with sm961 formatted ext4 HELP?? root@ahern2:~# cd /dev/nvme0n1 -ash: cd: /dev/nvme0n1: Not a directory root@ahern2:~# synonvme --get-location /dev/nvme0n1 Can't get the location of /dev/nvme0n1 root@ahern2:~# synonvme --get-location /dev/nvme0n1 Can't get the location of /dev/nvme0n1 root@ahern2:~# nvme list Node SN Model N amespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- - -------- -------------------------- ---------------- -------- /dev/nvme0n1 S346NY0HA14861 SAMSUNG MZVPW256HEGL-00000 1 33.31 GB / 256.06 GB 512 B + 0 B CXZ7300Q /dev/nvme0n1p1 S346NY0HA14861 SAMSUNG MZVPW256HEGL-00000 1 33.31 GB / 256.06 GB 512 B + 0 B CXZ7300Q root@ahern2:~# synonvme --is-nvme-ssd /dev/nvme0n1 It is a NVMe SSD root@ahern2:~# synonvme --m2-card-model-get /dev/nvme0n1 Not M.2 adapter card root@ahern2:~# synonvme --model-get /dev/nvme0n1 Model name: SAMSUNG MZVPW256HEGL-00000 root@ahern2:~# nvme list Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------- ------ ---------------- -------- /dev/nvme0n1 S346NY0HA14861 SAMSUNG MZVPW256HEGL-00000 1 33.31 GB / 256.06 GB 512 B + 0 B CXZ7300Q /dev/nvme0n1p1 S346NY0HA14861 SAMSUNG MZVPW256HEGL-00000 1 33.31 GB / 256.06 GB 512 B + 0 B CXZ7300Q root@ahern2:~# udevadm info /dev/nvme0n1 P: /devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1 N: nvme0n1 E: DEVNAME=/dev/nvme0n1 E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1 E: DEVTYPE=disk E: ID_PART_TABLE_TYPE=gpt E: MAJOR=259 E: MINOR=0 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=S346NY0HA14861 E: SYNO_DEV_DISKPORTTYPE=UNKNOWN E: SYNO_INFO_PLATFORM_NAME=apollolake E: SYNO_KERNEL_VERSION=4.4 E: USEC_INITIALIZED=521167 root@ahern2:~# synonvme --get-location /dev/nvme0n1 Can't get the location of /dev/nvme0n1 root@ahern2:~# synonvme --port-type-get /dev/nvme0n1 Unknown. root@ahern2:~# synodiskport -cache root@ahern2:~# ls -l /dev/mapper/cache* ls: cannot access /dev/mapper/cache*: No such file or directory root@ahern2:~# !/bin/ash -ash: !/bin/ash: event not found root@ahern2:~# /bin/ash ash-4.3# patchnvme for DSM 6.2.x ash: patchnvme: command not found ash-4.3# TARGFILE="/usr/lib/libsynonvme.so.1" ash-4.3# root ash: root: command not found ash-4.3# exit exit root@ahern2:~# cp /volume1/test/libNVMEpatch.sh /usr/local/etc/rc.d/ root@ahern2:~# synonvme --get-location /dev/nvme0n1 Can't get the location of /dev/nvme0n1 root@ahern2:~# lspci -k 0000:00:00.0 Class 0600: Device 8086:3e1f (rev 08) Subsystem: Device 1458:5000 0000:00:01.0 Class 0604: Device 8086:1901 (rev 08) Kernel driver in use: pcieport 0000:00:02.0 Class 0300: Device 8086:3e91 Subsystem: Device 1458:d000 Kernel driver in use: i915 0000:00:12.0 Class 1180: Device 8086:a379 (rev 10) Subsystem: Device 1458:8888 0000:00:14.0 Class 0c03: Device 8086:a36d (rev 10) Subsystem: Device 1458:5007 Kernel driver in use: xhci_hcd 0000:00:14.2 Class 0500: Device 8086:a36f (rev 10) Subsystem: Device 8086:7270 0000:00:16.0 Class 0780: Device 8086:a360 (rev 10) Subsystem: Device 1458:1c3a 0000:00:17.0 Class 0106: Device 8086:a352 (rev 10) Subsystem: Device 1458:b005 Kernel driver in use: ahci 0000:00:1d.0 Class 0604: Device 8086:a330 (rev f0) Kernel driver in use: pcieport 0000:00:1d.2 Class 0604: Device 8086:a332 (rev f0) Kernel driver in use: pcieport 0000:00:1d.3 Class 0604: Device 8086:a333 (rev f0) Kernel driver in use: pcieport 0000:00:1f.0 Class 0601: Device 8086:a308 (rev 10) Subsystem: Device 1458:5001 0000:00:1f.3 Class 0403: Device 8086:a348 (rev 10) Subsystem: Device 1458:a182 0000:00:1f.4 Class 0c05: Device 8086:a323 (rev 10) Subsystem: Device 1458:5001 Kernel driver in use: i801_smbus 0000:00:1f.5 Class 0c80: Device 8086:a324 (rev 10) Subsystem: Device 8086:7270 0000:01:00.0 Class 0200: Device 8086:1528 (rev 01) Subsystem: Device 15d9:0734 Kernel driver in use: ixgbe 0000:01:00.1 Class 0200: Device 8086:1528 (rev 01) Subsystem: Device 15d9:0734 Kernel driver in use: ixgbe 0000:02:00.0 Class 0108: Device 144d:a804 Subsystem: Device 144d:a801 Kernel driver in use: nvme 0000:03:00.0 Class 0106: Device 1b4b:9215 (rev 11) Subsystem: Device 1b4b:9215 Kernel driver in use: ahci 0000:04:00.0 Class 0200: Device 10ec:8168 (rev 16) Subsystem: Device 1458:e000 Kernel driver in use: r8168 0001:00:12.0 Class 0000: Device 8086:5ae3 (rev ff) 0001:00:13.0 Class 0000: Device 8086:5ad8 (rev ff) 0001:00:14.0 Class 0000: Device 8086:5ad6 (rev ff) 0001:00:15.0 Class 0000: Device 8086:5aa8 (rev ff) 0001:00:16.0 Class 0000: Device 8086:5aac (rev ff) 0001:00:18.0 Class 0000: Device 8086:5abc (rev ff) 0001:00:19.2 Class 0000: Device 8086:5ac6 (rev ff) 0001:00:1f.1 Class 0000: Device 8086:5ad4 (rev ff) 0001:01:00.0 Class 0000: Device 1b4b:9215 (rev ff) 0001:02:00.0 Class 0000: Device 8086:1539 (rev ff) 0001:03:00.0 Class 0000: Device 8086:1539 (rev ff) root@ahern2:~# ls /dev/nvm* /dev/nvme0 /dev/nvme0n1 /dev/nvme0n1p1 root@ahern2:~# udevadm info /dev/nvme0 P: /devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0 N: nvme0 E: DEVNAME=/dev/nvme0 E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0 E: MAJOR=250 E: MINOR=0 E: PHYSDEVBUS=pci E: PHYSDEVDRIVER=nvme E: PHYSDEVPATH=/devices/pci0000:00/0000:00:1d.0/0000:02:00.0 E: SUBSYSTEM=nvme E: SYNO_INFO_PLATFORM_NAME=apollolake E: SYNO_KERNEL_VERSION=4.4 E: USEC_INITIALIZED=521159 root@ahern2:~# synonvme --get-location /dev/nvme0 Can't get the location of /dev/nvme0 root@ahern2:~# root@ahern2:~# ls /dev/nvm* /dev/nvme0 /dev/nvme0n1 /dev/nvme0n1p1 root@ahern2:~# root@ahern2:~# udevadm info /dev/nvme0n1 P: /devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1 N: nvme0n1 E: DEVNAME=/dev/nvme0n1 E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1 E: DEVTYPE=disk E: ID_PART_TABLE_TYPE=gpt E: MAJOR=259 E: MINOR=0 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=S346NY0HA14861 E: SYNO_DEV_DISKPORTTYPE=UNKNOWN E: SYNO_INFO_PLATFORM_NAME=apollolake E: SYNO_KERNEL_VERSION=4.4 E: USEC_INITIALIZED=521167 root@ahern2:~# synonvme --get-location /dev/nvme0 Can't get the location of /dev/nvme0 root@ahern2:~# synonvme --get-location /dev/nvme0nlpl Can't get the location of /dev/nvme0nlpl root@ahern2:~# /dev/nvme0n1p1 -ash: /dev/nvme0n1p1: Permission denied root@ahern2:~# /dev/nvme0n1p1 -ash: /dev/nvme0n1p1: Permission denied root@ahern2:~# synonvme --get-location /dev/nvme0n1p1 Can't get the location of /dev/nvme0n1p1 root@ahern2:~# synonvme --get-location /dev/nvme0n1 Can't get the location of /dev/nvme0n1 root@ahern2:~# /dev/nvme0n1 -ash: /dev/nvme0n1: Permission denied root@ahern2:~# /dev/nvme0n1 -ash: /dev/nvme0n1: Permission denied root@ahern2:~# synonvme --get-location /dev/nvme0n1 Can't get the location of /dev/nvme0n1 root@ahern2:~# udevadm info /dev/nvme0n1 P: /devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1 N: nvme0n1 E: DEVNAME=/dev/nvme0n1 E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1 E: DEVTYPE=disk E: ID_PART_TABLE_TYPE=gpt E: MAJOR=259 E: MINOR=0 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=S346NY0HA14861 E: SYNO_DEV_DISKPORTTYPE=UNKNOWN E: SYNO_INFO_PLATFORM_NAME=apollolake E: SYNO_KERNEL_VERSION=4.4 E: USEC_INITIALIZED=521167 root@ahern2:~# udevadm info /dev/nvme0n1 P: /devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1 N: nvme0n1 E: DEVNAME=/dev/nvme0n1 E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1 E: DEVTYPE=disk E: ID_PART_TABLE_TYPE=gpt E: MAJOR=259 E: MINOR=0 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=S346NY0HA14861 E: SYNO_DEV_DISKPORTTYPE=UNKNOWN E: SYNO_INFO_PLATFORM_NAME=apollolake E: SYNO_KERNEL_VERSION=4.4 E: USEC_INITIALIZED=521167 root@ahern2:~# ^C root@ahern2:~# udevadm info /dev/nvme0n1 P: /devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1 N: nvme0n1 E: DEVNAME=/dev/nvme0n1 E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1 E: DEVTYPE=disk E: ID_PART_TABLE_TYPE=gpt E: MAJOR=259 E: MINOR=0 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=S346NY0HA14861 E: SYNO_DEV_DISKPORTTYPE=UNKNOWN E: SYNO_INFO_PLATFORM_NAME=apollolake E: SYNO_KERNEL_VERSION=4.4 E: USEC_INITIALIZED=521167 ###################DONT ASK ME WHAT I DID BELOW HERE. I HAVE NO CLUE!!! HELP#################################### root@ahern2:~# synonvme --get-location /dev/nvme0 Cant: No such file or directory root@ahern2:~# root@ahern2:~# synonvme --get-location /dev/nvme0nlpl -ash: root@ahern2:~#: command not found root@ahern2:~# Can't get the location of /dev/nvme0nlpl > root@ahern2:~# /dev/nvme0n1p1 > -ash: /dev/nvme0n1p1: Permission denied > root@ahern2:~# /dev/nvme0n1p1 > -ash: /dev/nvme0n1p1: Permission denied > root@ahern2:~# synonvme --get-location /dev/nvme0n1p1 > Can't get the location of /dev/nvme0n1p1 -ash: Cant get the location of /dev/nvme0nlpl root@ahern2:~# /dev/nvme0n1p1 -ash: /dev/nvme0n1p1: Permission denied root@ahern2:~# /dev/nvme0n1p1 -ash: /dev/nvme0n1p1: Permission denied root@ahern2:~# synonvme --get-location /dev/nvme0n1p1 Cant: No such file or directory root@ahern2:~# root@ahern2:~# synonvme --get-location /dev/nvme0n1 -ash: root@ahern2:~#: command not found root@ahern2:~# Can't get the location of /dev/nvme0n1 > root@ahern2:~# /dev/nvme0n1 > -ash: /dev/nvme0n1: Permission denied > root@ahern2:~# /dev/nvme0n1 > -ash: /dev/nvme0n1: Permission denied > root@ahern2:~# synonvme --get-location /dev/nvme0n1 > Can't get the location of /dev/nvme0n1 -ash: Cant get the location of /dev/nvme0n1 root@ahern2:~# /dev/nvme0n1 -ash: /dev/nvme0n1: Permission denied root@ahern2:~# /dev/nvme0n1 -ash: /dev/nvme0n1: Permission denied root@ahern2:~# synonvme --get-location /dev/nvme0n1 Cant: No such file or directory root@ahern2:~# root@ahern2:~# udevadm info /dev/nvme0n1 -ash: root@ahern2:~#: command not found root@ahern2:~# P: /devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1 -ash: P:: command not found root@ahern2:~# N: nvme0n1 -ash: N:: command not found root@ahern2:~# E: DEVNAME=/dev/nvme0n1 -ash: E:: command not found root@ahern2:~# E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1 -ash: E:: command not found root@ahern2:~# E: DEVTYPE=disk -ash: E:: command not found root@ahern2:~# E: ID_PART_TABLE_TYPE=gpt -ash: E:: command not found root@ahern2:~# E: MAJOR=259 -ash: E:: command not found root@ahern2:~# E: MINOR=0 -ash: E:: command not found root@ahern2:~# E: PHYSDEVBUS=pci -ash: E:: command not found root@ahern2:~# E: PHYSDEVDRIVER=nvme -ash: E:: command not found root@ahern2:~# E: PHYSDEVPATH=/devices/pci0000:00/0000:00:1d.0/0000:02:00.0 -ash: E:: command not found root@ahern2:~# E: SUBSYSTEM=block -ash: E:: command not found root@ahern2:~# E: SYNO_ATTR_SERIAL=S346NY0HA14861 -ash: E:: command not found root@ahern2:~# E: SYNO_DEV_DISKPORTTYPE=UNKNOWN -ash: E:: command not found root@ahern2:~# E: SYNO_INFO_PLATFORM_NAME=apollolake -ash: E:: command not found root@ahern2:~# E: SYNO_KERNEL_VERSION=4.4 -ash: E:: command not found root@ahern2:~# E: USEC_INITIALIZED=521167 -ash: E:: command not found Edited January 10, 2020 by Captainfingerbang Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.