Skip to content

ROCKPro64 - Samsung 970 NVMe M.2 500GB

Hardware
  • Wie Ihr wisst, habe ich ein System mit einer NVMe SSD (960 EVO 256GB). Die tauschen wir heute mal aus.

    Auf der SSD liegt das / Verzeichnis. Als erstes sichern wir es mal auf eine angeschlossene 1TB HDD.

    rock64@rockpro64v2_0:~$ sudo dd if=/dev/nvme0n1 of=/mnt/backup/nvme.img bs=4MB
    488397168+0 records in
    488397168+0 records out
    250059350016 bytes (250 GB, 233 GiB) copied, 5064,37 s, 49,4 MB/s
    

    Danach schalten wir das System mal aus - Hardware umbauen 🙂 Hardware ist drin. Jetzt brauchen wir irgendeine SD-Karte die bootet. Die vorhandene ist ja so geändert, um das Rootverzeichnis von der NVMe-Karte zu laden. Wenn da nichts liegt, scheitert der Bootvorgang.

    0_1539449260298_970_EVO_ergebnis.jpg

    ROCKPro64 gestartet. HDD mounten.

    sudo mount /dev/sda1 /mnt
    

    Dort liegt das Image nvme.img Das muss jetzt auf die NVMe-Karte.

    rock64@rockpro64:/mnt$ sudo dd if=/mnt/nvme.img of=/dev/nvme0n1 bs=4MB
    62514+1 records in
    62514+1 records out
    250059350016 bytes (250 GB, 233 GiB) copied, 2508.21 s, 99.7 MB/s
    

    bs=4MB hatte ich oben, beim Sichern, vergessen 😞 Und ich wunder mich, das das so lange dauert. Der Befehl oben ist entsprechend korrigiert. Nachdem dd fertig ist , schalten wir den ROCKPro64 wieder aus.

    sudo shutdown now
    

    Wenn ich jetzt keinen Denkfehler habe, muss nach Einsetzen der alten SD-Karte das System wieder ordentlich starten und / auf der NVMe-Karte liegen.

    So, das System ist gestartet. Beim Booten hat es etwas gedauert.

     [    4.156794] nvme nvme0: pci function 0000:01:00.0
     [    4.156866] pci 0000:00:00.0: enabling device (0000 -> 0002)
     [    4.156889] nvme 0000:01:00.0: enabling device (0000 -> 0002)
     [    4.174140] rockchip-drm display-subsystem: fb0:  frame buffer device
     [    4.187450] [drm] Initialized rockchip 1.0.0 20140818 for display-subsystem on minor 0
     [    4.328531] nvme nvme0: missing or invalid SUBNQN field.
     [    4.329557] nvme nvme0: Shutdown timeout set to 8 seconds
    

    Aber, ich habe keine Ahnung was hier los war. Auf alle Fälle ist es gestartet. Mal nachsehen.....

    rock64@rockpro64v2_0:~$ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    udev            1,9G     0  1,9G   0% /dev
    tmpfs           388M  600K  387M   1% /run
    /dev/nvme0n1    229G  8,3G  209G   4% /
    tmpfs           1,9G     0  1,9G   0% /dev/shm
    tmpfs           5,0M     0  5,0M   0% /run/lock
    tmpfs           1,9G     0  1,9G   0% /sys/fs/cgroup
    /dev/mmcblk0p6  112M   28K  112M   1% /boot/efi
    /dev/sda1       916G  448G  423G  52% /mnt/backup
    tmpfs           388M     0  388M   0% /run/user/1000
    

    Aber, ein kleines Problem. Ich habe es erwartet. Das / Verzeichnis ist zu klein, die NVMe-Karte hat eine Kapazität von 500GB. Dann mal ran...

    Ausschalten

    sudo shutdown now
    

    Wieder die SD-Karte wechseln. Starten. Überblick verschaffen...

    sudo fdisk -l
    

    Danach

    rock64@rockpro64:~$ resize2fs /dev/nvme0n1
    resize2fs 1.44.1 (24-Mar-2018)
    open: Permission denied while opening /dev/nvme0n1
    rock64@rockpro64:~$ sudo resize2fs /dev/nvme0n1
    resize2fs 1.44.1 (24-Mar-2018)
    Please run 'e2fsck -f /dev/nvme0n1' first.
    
    rock64@rockpro64:~$ sudo e2fsck -f /dev/nvme0n1
    e2fsck 1.44.1 (24-Mar-2018)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    TEST: 119622/15269888 files (0.2% non-contiguous), 3375893/61049646 blocks
    
    rock64@rockpro64:~$ sudo resize2fs /dev/nvme0n1
    resize2fs 1.44.1 (24-Mar-2018)
    Resizing the filesystem on /dev/nvme0n1 to 122096646 (4k) blocks.
    The filesystem on /dev/nvme0n1 is now 122096646 (4k) blocks long.
    

    Ganz ehrlich, ich war nicht so sehr davon überzeugt das das so geht. Aber, wieder runtergefahren, SD-Karte gewechselt und neugestartet. Und, was sehen wir - es geht! 🙂

    rock64@rockpro64v2_0:~$ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    udev            1,9G     0  1,9G   0% /dev
    tmpfs           388M  596K  387M   1% /run
    /dev/nvme0n1    458G  8,3G  426G   2% /
    tmpfs           1,9G     0  1,9G   0% /dev/shm
    tmpfs           5,0M     0  5,0M   0% /run/lock
    tmpfs           1,9G     0  1,9G   0% /sys/fs/cgroup
    /dev/mmcblk0p6  112M   28K  112M   1% /boot/efi
    /dev/sda1       916G  448G  423G  52% /mnt/backup
    tmpfs           388M     0  388M   0% /run/user/1000
    

    Mal geschaut ob meine Testinstallation von Grav läuft, das macht sie aber nicht. Bad Gateway 😞 Aber, durchs schrauben an meinem Rootserver habe ich ein wenig gelernt. Bad Gateway, da läuft php7.2-fpm nicht. Nachschauen...

    rock64@rockpro64v2_0:/var/www$ /etc/init.d/php7.2-fpm reload
    [....] Reloading php7.2-fpm configuration (via systemctl): php7.2-fpm.service==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
    Authentication is required to reload 'php7.2-fpm.service'.
    Authenticating as: rock64,,, (rock64)
    Password: 
    ==== AUTHENTICATION COMPLETE ===
    php7.2-fpm.service is not active, cannot reload.
     failed!
    

    Gut, mein Tipp war richtig 😉

    rock64@rockpro64v2_0:/var/www$ /etc/init.d/php7.2-fpm start
    [....] Starting php7.2-fpm (via systemctl): php7.2-fpm.service==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
    Authentication is required to start 'php7.2-fpm.service'.
    Authenticating as: rock64,,, (rock64)
    Password: 
    ==== AUTHENTICATION COMPLETE ===
    . ok 
    

    Tada, Grav läuft wieder. Puh, Glück gehabt LOL Warum der Dienst jetzt automatisch nicht gestartet ist, schau ich mir dann nochmal in Ruhe an. So zum Abschluss noch ein iozone

    rock64@rockpro64v2_0:~$ sudo iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 
    [sudo] password for rock64: 
    	Iozone: Performance Test of File I/O
    	        Version $Revision: 3.429 $
    		Compiled for 64 bit mode.
    		Build: linux 
    
    	Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
    	             Al Slater, Scott Rhine, Mike Wisner, Ken Goss
    	             Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
    	             Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
    	             Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
    	             Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
    	             Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer,
    	             Vangel Bojaxhi, Ben England, Vikentsi Lapa.
    
    	Run began: Sat Oct 13 19:43:42 2018
    
    	Include fsync in write timing
    	O_DIRECT feature enabled
    	Auto Mode
    	File size set to 102400 kB
    	Record Size 4 kB
    	Record Size 16 kB
    	Record Size 512 kB
    	Record Size 1024 kB
    	Record Size 16384 kB
    	Command line used: iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
    	Output is in kBytes/sec
    	Time Resolution = 0.000001 seconds.
    	Processor cache size set to 1024 kBytes.
    	Processor cache line size set to 32 bytes.
    	File stride size set to 17 * record size.
                                                                  random    random     bkwd    record    stride                                    
                  kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread
              102400       4    95100   147179   162994   163810    65968   145612                                                          
              102400      16   305346   416036   434489   439211   223259   409552                                                          
              102400     512  1068025  1085160  1041962  1071879  1013621  1107267                                                          
              102400    1024  1106597  1148071  1061018  1093176  1064151  1150121                                                          
              102400   16384   958333  1455274  1470250  1534968  1534037  1447219                                                          
    
    iozone test complete.
    

    Und zum Schluß noch ein lspci

    rock64@rockpro64v2_0:~$ sudo lspci -vvv
    00:00.0 PCI bridge: Rockchip Inc. RK3399 PCI Express Root Port Device 0100 (prog-if 00 [Normal decode])
    	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    	Latency: 0
    	Interrupt: pin A routed to IRQ 255
    	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
    	I/O behind bridge: 00000000-00000fff
    	Memory behind bridge: fa000000-fa0fffff
    	Prefetchable memory behind bridge: 00000000-000fffff
    	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
    	BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
    		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
    	Capabilities: [80] Power Management version 3
    		Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0+,D1+,D2-,D3hot+,D3cold-)
    		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
    	Capabilities: [90] MSI: Enable- Count=1/1 Maskable+ 64bit+
    		Address: 0000000000000000  Data: 0000
    		Masking: 00000000  Pending: 00000000
    	Capabilities: [b0] MSI-X: Enable- Count=1 Masked-
    		Vector table: BAR=0 offset=00000000
    		PBA: BAR=0 offset=00000008
    	Capabilities: [c0] Express (v2) Root Port (Slot+), MSI 00
    		DevCap:	MaxPayload 256 bytes, PhantFunc 0
    			ExtTag- RBE+
    		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
    			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
    			MaxPayload 256 bytes, MaxReadReq 512 bytes
    		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
    		LnkCap:	Port #0, Speed 5GT/s, Width x4, ASPM L1, Exit Latency L0s <256ns, L1 <8us
    			ClockPM- Surprise- LLActRep- BwNot+ ASPMOptComp+
    		LnkCtl:	ASPM Disabled; RCB 128 bytes Disabled- CommClk-
    			ExtSynch- ClockPM- AutWidDis- BWInt+ AutBWInt+
    		LnkSta:	Speed 5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
    		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
    			Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
    		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
    			Control: AttnInd Off, PwrInd Off, Power+ Interlock-
    		SltSta:	Status: AttnBtn- PowerFlt- MRL+ CmdCplt- PresDet- Interlock-
    			Changed: MRL- PresDet- LinkState-
    		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
    		RootCap: CRSVisible-
    		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
    		DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Via message ARIFwd+
    		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled ARIFwd-
    		LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
    			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
    			 Compliance De-emphasis: -6dB
    		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
    			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
    	Capabilities: [100 v2] Advanced Error Reporting
    		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
    		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
    		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
    		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
    		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
    		AERCap:	First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
    	Capabilities: [274 v1] Transaction Processing Hints
    		Interrupt vector mode supported
    		Device specific mode supported
    		Steering table in TPH capability structure
    
    01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a808 (prog-if 02 [NVM Express])
    	Subsystem: Samsung Electronics Co Ltd Device a801
    	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
    	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    	Latency: 0
    	Interrupt: pin A routed to IRQ 230
    	NUMA node: 0
    	Region 0: Memory at fa000000 (64-bit, non-prefetchable) [size=16K]
    	Capabilities: [40] Power Management version 3
    		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
    		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
    	Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
    		Address: 0000000000000000  Data: 0000
    	Capabilities: [70] Express (v2) Endpoint, MSI 00
    		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
    			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0.000W
    		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
    			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset-
    			MaxPayload 256 bytes, MaxReadReq 512 bytes
    		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
    		LnkCap:	Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L0s unlimited, L1 <64us
    			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
    		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
    			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
    		LnkSta:	Speed 5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
    		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Not Supported
    		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
    		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
    			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
    			 Compliance De-emphasis: -6dB
    		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
    			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
    	Capabilities: [b0] MSI-X: Enable+ Count=33 Masked-
    		Vector table: BAR=0 offset=00003000
    		PBA: BAR=0 offset=00002000
    	Capabilities: [100 v2] Advanced Error Reporting
    		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
    		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
    		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
    		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
    		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
    		AERCap:	First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
    	Capabilities: [148 v1] Device Serial Number 00-00-00-00-00-00-00-00
    	Capabilities: [158 v1] Power Budgeting <?>
    	Capabilities: [168 v1] #19
    	Capabilities: [188 v1] Latency Tolerance Reporting
    		Max snoop latency: 0ns
    		Max no snoop latency: 0ns
    	Capabilities: [190 v1] L1 PM Substates
    		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
    			  PortCommonModeRestoreTime=10us PortTPowerOnTime=10us
    		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
    			   T_CommonMode=0us LTR1.2_Threshold=0ns
    		L1SubCtl2: T_PwrOn=10us
    	Kernel driver in use: nvme