SSD to USB Adapter review + benchmark: asus vs inateck vs Beikell (NOT BELKIN)
vs vs
the idea:
- problem: the motherboard has only 2x internal NVMe connectors and on a dual boot system:
- GNU Linux occupies NVMe0
- Windows occupies NVMe1
- demand for fast storage has grown due to heavy use of virtualization
- so the idea is to use: USB 3.0 connected NVMe extension disk to store large kvm vm qcow2 disk files without sacrifice too much reliability and speed
ideally in the future, motherboards should have (at least) 4x NVMe connectors at good speeds.
for this just as USB-SATA adapters an USB-NVMe adapter had to be found.
Rog Strix Arion by ASUS:
- the pros:
- makes NVMe work like an USB Stick
- it says “initialize your blank ssd before use” (the terms NVMe and SSD start to get confusing)
- but it is also possible to read an already “initialized” (partition table, formatted) NVMe
- but it might be not the ideal choice for that use, more USB-Stick-NVMe kind of use
- fast
- solid heavy metal casing that distributes heat (those NVMe chips can become pretty hot)
- nice LED light show
- makes NVMe work like an USB Stick
- cons:
- open and closing it could be less of an effort
how to open this thing?
the user needs a pin.
hm…. and this won an Design Award in 2020?
Imho this makes things too complicated, as if there is no pin, there is no possibility to easily swap NVMes in and out of the NVMe-USB adapter.
benchmark performance:
USB 3.0 connected, it is fast. no doubt about it. ~430MBytes/sec kind of fast.
<- those values most likely include file RAM caching.
but depending on the NVMe it might be less…
time /scripts/bench/bench_harddisk.sh === harddisk sequential write and read bench v1 === starting test on the device that holds the current directory the user is in no need to run it as root ========== writing 3GB of zeroes ========== 0+1 records in 0+1 records out 2147479552 bytes (2,1 GB, 2,0 GiB) copied, 5,87549 s, 365 MB/s real 0m5,919s user 0m0,000s sys 0m1,927s ========== reading 6GB of zeroes ========== 0+1 records in 0+1 records out 2147479552 bytes (2,1 GB, 2,0 GiB) copied, 4,94441 s, 434 MB/s real 0m4,993s user 0m0,000s sys 0m2,000s ========== tidy up remove testfile ========== real 0m10,983s user 0m0,001s sys 0m3,997s
So Asus planned for the user to install an NVMe and then use it like a USB Stick (no user will ever change the FlashChips of an USB Stick?)
also closing the device seems to be pretty hard… as the mechanism does not want to snap (again, this actually WON an design award? “The looks are great, who cares if it works” kind of award?)
Ok it is possibly, that the case closes properly with other NMVes, but the KINGSTON SA2000M81000G (some parts of it might be “too high”?) X-D
Inateck M.2 NVMe 2 USB Adapter
update: 2024-01: no failure yet, intense testing for 6 months and it does its job.
so bought the “inateck” adapter for half the price of the ASUS Adapter.
- 10 Gbit/s
- USB 3.2 Gen 2
- Type C & Type A Cable included (nice!)
- while changing NVMes is also not sooo comfortable (detaching/attaching cooling pad and metal plate, but simply with the bush of an button (orange square above) it can be opened)
- at least this time the NVMe “fit’s in”
- the speed is 2x twice as fast as the ASUS Adapter…
# copy large file benchmark du -BM /media/user/vms_on_nvme_usb/vms/kvm/very-large-test-file.qcow2 36270M /media/user/vms_on_nvme_usb/vms/kvm/very-large-test-file.qcow2 # -BM prints sizes in units of 1,048,576 bytes # in GBytes echo "scale=5; 36270/1024"|bc 35.41992 # copy file with "Inateck M.2 NVMe 2 USB Adapter" to internal NVMe via dd # with oflag=direct ensures no caching is used time dd if=/media/user/vms_on_nvme_usb/vms/kvm/very-large-test-file.qcow2 of=/home/user/vms/very-large-test-file.qcow2 bs=4M iflag=direct oflag=direct status=progress 38030868480 bytes (38 GB, 35 GiB) copied, 114.107 s, 333 MB/s # in GBytes echo "scale=5; 38030868480/1024/1024/1024"|bc 35.41900 # verify that all bits were copied correctly from A to B # internal NVMe time sha512sum /home/user/vms/very-large-test-file.qcow2 e9608147885148b2da3443ccb1d6b618b74cbe23c296f1289399d78bc77d9a6ad06533ad976364e69aba89856619cafc35924e839773360d7ac64ab21a459813 /home/user/vms/very-large-test-file.qcow2 real 1m19.164s # in seconds echo "scale=5; (1*60)+19.164"|bc 79.164
# same NVMe but connected via "Inateck M.2 NVMe 2 USB Adapter" time sha512sum /media/user/vms_on_nvme_usb/vms/kvm/very-large-test-file.qcow2 e9608147885148b2da3443ccb1d6b618b74cbe23c296f1289399d78bc77d9a6ad06533ad976364e69aba89856619cafc35924e839773360d7ac64ab21a459813 /media/user/vms_on_nvme_usb/vms/kvm/very-large-test-file.qcow2 # yes they are still the same file real 2m8.522s # in seconds echo "scale=5; (2*60)+8.522"|bc 128.522 # so the same NVMe internal connected is echo "scale=5; 128.522/(79.164/100)"|bc +162.34904% faster # using the basic dd benchmark from here time /scripts/bench/bench_harddisk.sh === harddisk sequential write and read bench v1 === starting test on the device that holds the current directory the user is in no need to run it as root ========== writing 3GB of zeroes ========== 0+1 records in 0+1 records out 2147479552 bytes (2.1 GB, 2.0 GiB) copied, 6.71935 s, 320 MB/s real 0m6.723s ========== reading 6GB of zeroes ========== 0+1 records in 0+1 records out 2147479552 bytes (2.1 GB, 2.0 GiB) copied, 5.14096 s, 418 MB/s real 0m5.145s ========== tidy up remove testfile ========== real 0m11.945s
update:
bought the (same?) NVMe Inateck adapter again… it is based on:
lsusb -vvv|less Bus 003 Device 005: ID 0bda:9210 Realtek Semiconductor Corp. RTL9210 M.2 NVME Adapter Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 3.20 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 9 idVendor 0x0bda Realtek Semiconductor Corp. idProduct 0x9210 RTL9210 M.2 NVME Adapter bcdDevice 20.01 iManufacturer 1 Realtek iProduct 2 RTL9210B-CG
Beikell M.2 NVMe 2 USB Adapter
the assembly was without problems. it is a USB-C to USB-C and a USB-C to USB-A cable included.
this time a different NVMe was used:
it is a “China” adaptation of the usually-high-quality-brand US-electronics-brand “Belkin”, this is the device on amazon.
Chipset wise it is exactly the same as Inateck’s adapter:
dmesg [24590.669969] usb 2-2: new SuperSpeed USB device number 4 using xhci_hcd [24590.707707] usb 2-2: New USB device found, idVendor=0bda, idProduct=9210, bcdDevice=20.01 [24590.707714] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [24590.707716] usb 2-2: Product: Best USB Device [24590.707717] usb 2-2: Manufacturer: ULT-Best [24590.707718] usb 2-2: SerialNumber: XXXX [24590.802901] scsi host8: uas [24591.206599] scsi 8:0:0:0: Direct-Access KINGSTON SKC3000D2048G 1.00 PQ: 0 ANSI: 6 [24591.226000] sd 8:0:0:0: Attached scsi generic sg4 type 0 [24591.228579] sd 8:0:0:0: [sdd] 4000797360 512-byte logical blocks: (2.05 TB/1.86 TiB) [24591.229878] sd 8:0:0:0: [sdd] Write Protect is off [24591.229880] sd 8:0:0:0: [sdd] Mode Sense: 37 00 00 08 [24591.232456] sd 8:0:0:0: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [24591.233811] sd 8:0:0:0: [sdd] Preferred minimum I/O size 512 bytes [24591.233814] sd 8:0:0:0: [sdd] Optimal transfer size 33553920 bytes # Beikell is using the same chipset as Inateck # so it will (probably) performance wise be the same lsusb Bus 002 Device 006: ID 0bda:9210 Realtek Semiconductor Corp. RTL9210 M.2 NVME Adapter time /scripts/bench/bench_harddisk.sh === harddisk sequential write and read bench v1 === starting test on the device that holds the current directory the user is in no need to run it as root ========== writing 3GB of zeroes ========== 0+1 records in 0+1 records out 2147479552 bytes (2.1 GB, 2.0 GiB) copied, 6.80264 s, 316 MB/s real 0m6.817s ========== reading 6GB of zeroes ========== 0+1 records in 0+1 records out 2147479552 bytes (2.1 GB, 2.0 GiB) copied, 5.13901 s, 418 MB/s real 0m5.143s ========== tidy up remove testfile ========== total: real 0m12.025s # writing from internal NVMe to Beikell time dd if=/home/user/vms/very-large-test-file.qcow2 of=/media/user/vms/very-large-test-file.qcow2 bs=4M iflag=direct oflag=direct status=progress 38030868480 bytes (38 GB, 35 GiB) copied, 143.375 s, 265 MB/s real 2m23.383s # is it still the same file? # also compare read performance internal vs external (usb) time sha512sum /home/user/vms/very-large-test-file.qcow2 e9608147885148b2da3443ccb1d6b618b74cbe23c296f1289399d78bc77d9a6ad06533ad976364e69aba89856619cafc35924e839773360d7ac64ab21a459813 /home/user/vms/very-large-test-file.qcow2 real 1m19.156s echo "scale=5; (1*60)+19.156"|bc 79.156 time sha512sum /media/user/vms/very-large-test-file.qcow2 e9608147885148b2da3443ccb1d6b618b74cbe23c296f1289399d78bc77d9a6ad06533ad976364e69aba89856619cafc35924e839773360d7ac64ab21a459813 /media/user/vms/very-large-test-file.qcow2 real 2m33.448s echo "scale=5; (2*60)+33.448"|bc 153.448 # internal connected is echo "scale=5; 153.448/(79.156/100)"|bc +193.85517% faster
liked this article?
- only together we can create a truly free world
- plz support dwaves to keep it up & running!
- (yes the info on the internet is (mostly) free but beer is still not free (still have to work on that))
- really really hate advertisement
- contribute: whenever a solution was found, blog about it for others to find!
- talk about, recommend & link to this blog and articles
- thanks to all who contribute!