Skip to content

[HOWTO] Verschlüsseltes NAS aufsetzen

Verschoben ROCKPro64
  • Nachdem wir nun mit btrfs das Raid1 fertig eingerichtet haben, brauchen wir nun "Subvolumes".

    "Subvolumes" kann man sich wie Partitionen vorstellen, nur viel flexibler. Dann schauen wir uns das mal in der Praxis an.

    Erstellung

    In den Pfad wechseln

    cd /mnt/btrfs
    

    Dann das Subvolume erstellen.

    btrfs subvolume create daten
    

    Das sieht dann so aus.

    rock64@rockpro64:/mnt/btrfs$ ls -la
    total 20
    drwxr-xr-x 1 rock64 rock64   10 Sep  5 21:04 .
    drwxr-xr-x 3 root   root   4096 Sep  2 10:34 ..
    drwxrwxr-x 1 rock64 rock64   24 Sep  5 21:04 daten
    

    Snapshot erstellen

    btrfs subvolume snapshot daten snapshots/05_09_2018/
    

    In diesem Beispiel würde vom Subvolume daten ein Snapshot erstellt und dieser im Subvolume snapshots/05_09_18 abgelegt.

    Jetzt mal kurz zu diesen Snapshots, die machen eine Momentaufnahme des aktuellen Subvolumes. Das ist z.B. bei einem Server sinnvoll, den man umfangreich umkonfigurieren will/muss. Vorher vom funktionierenden System einen Snapshot machen und ran an die Arbeit. Geht was richtig schief, den Snapshot wieder herstellen - fertig!

    Ich sehe da jetzt für mein NAS keine sinnvolle Anwendung für. Benutzen tue ich das btrfs eigentlich auch nur, weil @tkaiser meinte ein Raid1 ohne Datenverifizierung ist Müll.

    Btrfs Datei-Selbstheilung

    Bei traditionellen Speichersystemen können Fehler auftreten, die komplett unbemerkt bleiben und zu fehlerhaften Daten führen, die ohne Warnung oder Fehlermeldung an Anwendungen gesendet werden. Um diese Fehler zu vermeiden, stellt Btrfs Prüfsummen für Daten und Metadaten bereit, erzeugt zwei Kopien der Metadaten und verifiziert dann die Prüfsummen bei jedem Leseprozess. Wenn eine Abweichung (schleichende Datenkorruption) erkannt wurde, kann das Btrfs-Dateisystem mithilfe der Metadatenspiegelung beschädigte Dateien (schleichende Datenkorruption) automatisch erkennen und fehlerhafte Daten mittels der unterstützten RAID-Volumes, einschließlich RAID 1, RAID 5, RAID 6, RAID 10, F1 und SHR, wiederherstellen.

    Quelle: https://www.synology.com/de-de/dsm/Btrfs

    Da man ein NAS mit Raid1 NICHT als Backup betrachten darf brauchen wir noch was um die Daten zu sichern.

    Ein Paar Btrfs Befehle

    Subvolume auflisten

    rock64@rockpro64:/mnt/btrfs$ sudo btrfs subvolume list /mnt/btrfs/
    ID 258 gen 23 top level 5 path daten
    ID 259 gen 24 top level 5 path snapshots
    ID 260 gen 25 top level 259 path snapshots/05_09_2018
    

    Snapshot löschen

    rock64@rockpro64:/mnt/btrfs$ sudo btrfs subvolume delete snapshots/05_09_2018/
    Delete subvolume (no-commit): '/mnt/btrfs/snapshots/05_09_2018'
    

    Subvolume löschen

     rock64@rockpro64:/mnt/btrfs$ sudo btrfs subvolume delete snapshots
     Delete subvolume (no-commit): '/mnt/btrfs/snapshots'
    

    Kurzes Fazit

    Ich brauche für das NAS keine Snapshot Funktionalität, so das ich auch kein Subvolume bräuchte. Man kann ja auch so in dem Filesystem die Daten speichern.

    Aufpassen, Btrfs ist für mich völliges Neuland 🙂 Aber ohne probieren, lerne ich nix 😉

    Quellen:

    https://kneit.in/2015/09/17/brtfs-raid-on-dmcrypt.html
    https://wiki.ubuntuusers.de/Befehle_Btrfs-Dateisystem/

  • Mal was sinnvolles 😉

    Script in /usr/local/sbin erstellen mit dem Namen crypt.sh

     #!/bin/bash
     ###############################################################################$
     #       Autor: Frank Mankel
     #       Verschlüsseltes BTRFS Raid1 einbinden!
     #
     #       Hardware:
     #       ROCKPro64v2.1
     #       PCIe SATA Karte
     #       2St. 2,5 Zoll HDD Platten a 2TB
     #
     #       Software:
     #       bionic-minimal 0.7.9
     #       Kontakt: xxxxx@gmail.com
     #
     ###############################################################################$
     
     #Passwörter abfragen
     cryptsetup open /dev/sda1 btrfs_pool0
     cryptsetup open /dev/sdb1 btrfs_pool1
     
     #Raid1 mounten
     mount /dev/mapper/btrfs_pool0 /mnt/btrfs
    

    Ausführbar machen

     sudo chmod +x /usr/local/sbin/crypt.sh
    

    Nun kann man nach dem Booten das Script aufrufen und das Btrfs Raid1 entsperren und direkt mounten. Da man sowieso die Passwörter eingeben muss, ist ein Autostart überflüssig. Man sitzt ja dann sowieso vor der Kiste 😉

  • Meine dritte HDD soll an USB3 und dient als Backup Medium. Auch diese HDD ist verschlüsselt.

    HDD partitionieren

    rock64@rockpro64v_2_1:~$ sudo fdisk /dev/sda
    [sudo] password for rock64: 
    
    Welcome to fdisk (util-linux 2.31.1).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    
    Command (m for help): q
    

    Ihr kennt das ja mittlerweile 😉

    Cryptsetup

    rock64@rockpro64v_2_1:~$ sudo cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sda1
    
    WARNING!
    ========
    This will overwrite data on /dev/sda1 irrevocably.
    
    Are you sure? (Type uppercase yes): YES
    Enter passphrase for /dev/sda1: 
    Verify passphrase: 
    

    HDD öffnen

    rock64@rockpro64v_2_1:~$ sudo cryptsetup open /dev/sda1 backup
    Enter passphrase for /dev/sda1: 
    

    Filesystem auf der HDD anlegen

    rock64@rockpro64v_2_1:~$ sudo mkfs.ext4 /dev/mapper/backup
    mke2fs 1.44.1 (24-Mar-2018)
    Creating filesystem with 244189878 4k blocks and 61054976 inodes
    Filesystem UUID: 064d504b-c199-43da-8594-c3023905afdd
    Superblock backups stored on blocks: 
    	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
    	102400000, 214990848
    
    Allocating group tables: done                            
    Writing inode tables: done                            
    Creating journal (262144 blocks): done
    Writing superblocks and filesystem accounting information: done  
    

    HDD mounten

    rock64@rockpro64v_2_1:~$ sudo mount /dev/mapper/backup /media
    

    Besitzer ändern

    Jetzt besitzt Root die HDD, ändern auf rock64

     rock64@rockpro64v_2_1:/media$ sudo chown -R rock64:rock64 /media
    
  • Aufpassen!

    Die dritte HDD war ja jetzt sda

    In unserem Script haben wir vorher sda & sdb benutzt. Das ist jetzt etwas verschoben. Nun sind die beiden HDDs an der SATA Karte sdb & sdc ! Das Script dementsprechend ändern!

     #Passwörter abfragen
     cryptsetup open /dev/sdb1 btrfs_pool0
     cryptsetup open /dev/sdc1 btrfs_pool1
    
  • Nach dem booten crypt.sh ausführen als Root!

    Ergebnis

     rock64@rockpro64v_2_1:~$ df -h
     Filesystem               Size  Used Avail Use% Mounted on
     udev                     992M     0  992M   0% /dev
     tmpfs                    200M  512K  199M   1% /run
     /dev/mmcblk1p7            29G  1,4G   26G   5% /
     tmpfs                    996M     0  996M   0% /dev/shm
     tmpfs                    5,0M  4,0K  5,0M   1% /run/lock
     tmpfs                    996M     0  996M   0% /sys/fs/cgroup
     /dev/mmcblk1p6           112M  4,0K  112M   1% /boot/efi
     tmpfs                    200M     0  200M   0% /run/user/1000
     /dev/mapper/backup       916G   77M  870G   1% /mnt/backup
     /dev/mapper/btrfs_pool0  1,9T  108M  1,9T   1% /mnt/btrfs
    

    crypt.sh

     #!/bin/bash
     ###############################################################################$
     #       Autor: Frank Mankel
     #       Verschlüsseltes BTRFS Raid1 einbinden!
     #
     #       Hardware:
     #       ROCKPro64v2.1
     #       PCIe SATA Karte
     #       2St. 2,5 Zoll HDD Platten a 2TB
     #
     #       Software:
     #       bionic-minimal 0.7.9
     #       Kontakt: frank.mankel@gmail.com
     #
     ###############################################################################$
     
     #Passwörter abfragen
     cryptsetup open /dev/sda1 backup
     cryptsetup open /dev/sdb1 btrfs_pool0
     cryptsetup open /dev/sdc1 btrfs_pool1
     
     #Backup mounten
     mount /dev/mapper/backup /mnt/backup
     
     #Raid1 mounten
     mount /dev/mapper/btrfs_pool0 /mnt/btrfs
    

    hdparm.conf

     #HDDs schlafen legen nach 20 Minuten (240*5=1200Sek.=20Min.)
     #Raid1 Disk1
      /dev/disk/by-id/ata-ST2000LM015-2E8174_ZDZ2MY9W {
      # mult_sect_io = 16
      # write_cache = off
      # dma = on
      spindown_time = 10
      }
     
     #Raid1 Disk2
      /dev/disk/by-id/ata-ST2000LM015-2E8174_ZDZ2MZ1W {
      # mult_sect_io = 16
      # write_cache = off
      # dma = on
      spindown_time = 10
      }
     
     #HDDs schlafen legen nach 20 Minuten (240*5=1200Sek.=20Min.)
     #HDD Backup
      /dev/disk/by-id/ata-HGST_HTS541010A9E680_JD1028CC043USV {
      # mult_sect_io = 16
      # write_cache = off
      # dma = on
      spindown_time = 10
      }
    
  • Das NAS muss natürlich auch schön auf unserem Haupt-PC eingebunden werden. Dafür nutze ich den NFS-Server. Die Ubuntu Anleitung passt und ist sehr gut.

    NFS-Server (NAS)

    Installation

     sudo apt-get install nfs-kernel-server
    

    Konfiguration

    sudo nano /etc/exports
    

    Datei exports

     # /etc/exports: the access control list for filesystems which may be exported
     #               to NFS clients.  See exports(5).
     #
     # Example for NFSv2 and NFSv3:
     # /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
     #
     # Example for NFSv4:
     # /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
     # /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
     #
     /mnt/btrfs        192.168.3.213(rw,sync,no_subtree_check,no_root_squash)
     /mnt/btrfs        192.168.4.213(rw,sync,no_subtree_check,no_root_squash)
    

    Die Verzeichnisse im Netz bekannt machen

     sudo exportfs -ra 
    

    Danach kann der Rechner 192.168.3.213 auf das NAS zugreifen.

    NFS Client (PC)

    Installation

     sudo apt-get install nfs-common 
    

    Mountpunkte anzeigen

     showmount -e NFS_SERVER 
    

    Ausgabe

     frank@frank-MS-7A34:~$ showmount -e 192.168.3.207
     Export list for 192.168.3.207:
     /mnt/btrfs 192.168.4.213,192.168.3.213
    

    In /etc/fstab eintragen

     sudo nano /etc/fstab
    

    Datei fstab

    Folgende Zeile eintragen

     192.168.3.207:/mnt/btrfs  /media/NAS_neu      nfs     rw      0       0 
    

    Verzeichnis für den Mountpunkt erzeugen

     sudo mkdir /media/NAS_neu
    

    Einbinden

     sudo mount -a
    

    Das NAS wird jetzt beim Neustart des PC's automatisch eingebunden.

  • Heute mal den aktuellen Kernel installiert.

     sudo apt-get update
     sudo apt-cache search linux-image
     sudo apt-get install linux-image-4.4.138-1094-rockchip-ayufan-gf13a8a9a4eee
    

    Danach Neustart. Kernel war ok.

    rock64@rockpro64v_2_1:~$ uname -a
    Linux rockpro64v_2_1 4.4.138-1094-rockchip-ayufan-gf13a8a9a4eee #1 SMP Thu Aug 9 20:29:55 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
    

    Nach dem ersten Neustart bestand mein Raid 1 nur noch aus einer Platte. Ursache aktuell unbekannt - ich werde beobachten 😉 Ein Neustart hat das Problem gelöst. 🤔

    Anmerkung

    Für cryptsetup kam heute ein Update !?!?!

  • Mainline 4.18.x testen

    Um meine aktuelle Installation nicht zu zerstören 🙂 , habe ich das eMMC-Modul auf eine SD-Karte kopiert.

    sudo dd if=/dev/mmcblk1 of=/dev/mmcblk0 bs=4M
    

    Danach von SD-Karte starten. Danach den Mainline installieren.

    wget https://github.com/ayufan-rock64/linux-mainline-kernel/releases/download/4.18.0-rc8-1060-ayufan/linux-headers-4.18.0-rc8-1060-ayufan-g45828c4db727_4.18.0-rc8-1060-ayufan_arm64.deb
    wget https://github.com/ayufan-rock64/linux-mainline-kernel/releases/download/4.18.0-rc8-1060-ayufan/linux-image-4.18.0-rc8-1060-ayufan-g45828c4db727-dbg_4.18.0-rc8-1060-ayufan_arm64.deb
    wget https://github.com/ayufan-rock64/linux-mainline-kernel/releases/download/4.18.0-rc8-1060-ayufan/linux-image-4.18.0-rc8-1060-ayufan-g45828c4db727_4.18.0-rc8-1060-ayufan_arm64.deb
    sudo dpkg -i *.deb
    

    So, danach ist der Mainline installiert. Nach einem Reboot sollte er den Mainline Kernel laden. Seltsamerweise funktioniert das nicht !?!?!?!?! Das Problem ist mir schon mal begegnet. Das passiert in folgender Kombination.

    • eMMC-Modul gesteckt
    • Jumper eMMC-Modul gesetzt
    • SD-Karte gesteckt

    Es startet immer der Kernel 4.4.x Erst wenn ich das eMMC-Modul und den Jumper entferne bootet die SD-Karte mit dem neu installierten Mainline-Kernel. Der Grund dafür will sich mir im Moment nicht erschließen. 😟

    Gut, aber erst mal egal. Wollte sowieso nur mal eben meine NAS-Installation mit dem Mainline-Kernel testen.

    rock64@rockpro64v_2_1:~$ uname -a
    Linux rockpro64v_2_1 4.18.0-rc8-1060-ayufan-g45828c4db727 #1 SMP PREEMPT Thu Aug 9 19:41:21 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
    
  • Nach einigen Wochen ist mir folgendes aufgefallen.

    [202489.629073] BTRFS info (device dm-1): read error corrected: ino 0 off 226903093248 (dev /dev/mapper/btrfs_pool1 sector 443170104)
    [203929.223855] BTRFS error (device dm-1): parent transid verify failed on 226742059008 wanted 1461 found 937
    [203929.240824] BTRFS info (device dm-1): read error corrected: ino 0 off 226742059008 (dev /dev/mapper/btrfs_pool1 sector 442855584)
    [203929.241124] BTRFS info (device dm-1): read error corrected: ino 0 off 226742063104 (dev /dev/mapper/btrfs_pool1 sector 442855592)
    [203929.241391] BTRFS info (device dm-1): read error corrected: ino 0 off 226742067200 (dev /dev/mapper/btrfs_pool1 sector 442855600)
    [203929.241630] BTRFS info (device dm-1): read error corrected: ino 0 off 226742071296 (dev /dev/mapper/btrfs_pool1 sector 442855608)
    [203930.278570] BTRFS error (device dm-1): parent transid verify failed on 226761359360 wanted 1461 found 942
    [203930.289002] BTRFS info (device dm-1): read error corrected: ino 0 off 226761359360 (dev /dev/mapper/btrfs_pool1 sector 442893280)
    [203930.289286] BTRFS info (device dm-1): read error corrected: ino 0 off 226761363456 (dev /dev/mapper/btrfs_pool1 sector 442893288)
    [203930.289551] BTRFS info (device dm-1): read error corrected: ino 0 off 226761367552 (dev /dev/mapper/btrfs_pool1 sector 442893296)
    [203930.289802] BTRFS info (device dm-1): read error corrected: ino 0 off 226761371648 (dev /dev/mapper/btrfs_pool1 sector 442893304)
    [203931.145319] BTRFS error (device dm-1): parent transid verify failed on 226895413248 wanted 1465 found 877
    [203931.161445] BTRFS info (device dm-1): read error corrected: ino 0 off 226895413248 (dev /dev/mapper/btrfs_pool1 sector 443155104)
    [203931.161823] BTRFS info (device dm-1): read error corrected: ino 0 off 226895417344 (dev /dev/mapper/btrfs_pool1 sector 443155112)
    [203950.975864] BTRFS error (device dm-1): parent transid verify failed on 227301457920 wanted 1405 found 901
    [203950.987880] repair_io_failure: 2 callbacks suppressed
    [203950.987891] BTRFS info (device dm-1): read error corrected: ino 0 off 227301457920 (dev /dev/mapper/btrfs_pool1 sector 443948160)
    [203950.988165] BTRFS info (device dm-1): read error corrected: ino 0 off 227301462016 (dev /dev/mapper/btrfs_pool1 sector 443948168)
    [203950.988611] BTRFS info (device dm-1): read error corrected: ino 0 off 227301466112 (dev /dev/mapper/btrfs_pool1 sector 443948176)
    [203950.988863] BTRFS info (device dm-1): read error corrected: ino 0 off 227301470208 (dev /dev/mapper/btrfs_pool1 sector 443948184)
    [203950.989766] BTRFS error (device dm-1): parent transid verify failed on 227302096896 wanted 1406 found 901
    [203950.995493] BTRFS info (device dm-1): read error corrected: ino 0 off 227302096896 (dev /dev/mapper/btrfs_pool1 sector 443949408)
    [203950.995909] BTRFS info (device dm-1): read error corrected: ino 0 off 227302100992 (dev /dev/mapper/btrfs_pool1 sector 443949416)
    [203950.996144] BTRFS info (device dm-1): read error corrected: ino 0 off 227302105088 (dev /dev/mapper/btrfs_pool1 sector 443949424)
    [203950.996368] BTRFS info (device dm-1): read error corrected: ino 0 off 227302109184 (dev /dev/mapper/btrfs_pool1 sector 443949432)
    [288883.929514] BTRFS error (device dm-1): parent transid verify failed on 226904064000 wanted 1468 found 886
    [288883.981621] BTRFS info (device dm-1): read error corrected: ino 0 off 226904064000 (dev /dev/mapper/btrfs_pool1 sector 443172000)
    [288883.981948] BTRFS info (device dm-1): read error corrected: ino 0 off 226904068096 (dev /dev/mapper/btrfs_pool1 sector 443172008)
    [288883.982198] BTRFS info (device dm-1): read error corrected: ino 0 off 226904072192 (dev /dev/mapper/btrfs_pool1 sector 443172016)
    [288883.982422] BTRFS info (device dm-1): read error corrected: ino 0 off 226904076288 (dev /dev/mapper/btrfs_pool1 sector 443172024)
    [290355.228294] BTRFS error (device dm-1): parent transid verify failed on 47972352 wanted 1435 found 465
    [290355.253785] BTRFS info (device dm-1): read error corrected: ino 0 off 47972352 (dev /dev/mapper/btrfs_pool1 sector 93696)
    [290355.254197] BTRFS info (device dm-1): read error corrected: ino 0 off 47976448 (dev /dev/mapper/btrfs_pool1 sector 93704)
    [290355.254491] BTRFS info (device dm-1): read error corrected: ino 0 off 47980544 (dev /dev/mapper/btrfs_pool1 sector 93712)
    [290355.254779] BTRFS info (device dm-1): read error corrected: ino 0 off 47984640 (dev /dev/mapper/btrfs_pool1 sector 93720)
    [290355.724110] BTRFS error (device dm-1): parent transid verify failed on 47988736 wanted 1435 found 465
    [290355.726153] BTRFS info (device dm-1): read error corrected: ino 0 off 47988736 (dev /dev/mapper/btrfs_pool1 sector 93728)
    [290355.726481] BTRFS info (device dm-1): read error corrected: ino 0 off 47992832 (dev /dev/mapper/btrfs_pool1 sector 93736)
    [290355.726805] BTRFS info (device dm-1): read error corrected: ino 0 off 47996928 (dev /dev/mapper/btrfs_pool1 sector 93744)
    [290355.727127] BTRFS info (device dm-1): read error corrected: ino 0 off 48001024 (dev /dev/mapper/btrfs_pool1 sector 93752)
    [290357.696648] BTRFS error (device dm-1): parent transid verify failed on 55083008 wanted 1435 found 466
    [290357.712434] BTRFS info (device dm-1): read error corrected: ino 0 off 55083008 (dev /dev/mapper/btrfs_pool1 sector 107584)
    [290357.712853] BTRFS info (device dm-1): read error corrected: ino 0 off 55087104 (dev /dev/mapper/btrfs_pool1 sector 107592)
    [290357.715877] BTRFS error (device dm-1): parent transid verify failed on 55689216 wanted 1435 found 466
    [290357.726721] BTRFS error (device dm-1): parent transid verify failed on 105234432 wanted 1435 found 902
    [290357.752836] BTRFS error (device dm-1): parent transid verify failed on 105283584 wanted 1435 found 902
    [290357.756527] BTRFS error (device dm-1): parent transid verify failed on 105316352 wanted 1435 found 902
    [290358.732055] BTRFS error (device dm-1): parent transid verify failed on 105332736 wanted 1435 found 902
    [290358.738171] BTRFS error (device dm-1): parent transid verify failed on 105349120 wanted 1435 found 902
    [290368.774814] BTRFS error (device dm-1): parent transid verify failed on 283131904 wanted 1435 found 911
    [290368.790327] repair_io_failure: 26 callbacks suppressed
    [290368.790339] BTRFS info (device dm-1): read error corrected: ino 0 off 283131904 (dev /dev/mapper/btrfs_pool1 sector 552992)
    [290368.790683] BTRFS info (device dm-1): read error corrected: ino 0 off 283136000 (dev /dev/mapper/btrfs_pool1 sector 553000)
    [290368.790983] BTRFS info (device dm-1): read error corrected: ino 0 off 283140096 (dev /dev/mapper/btrfs_pool1 sector 553008)
    [290368.791265] BTRFS info (device dm-1): read error corrected: ino 0 off 283144192 (dev /dev/mapper/btrfs_pool1 sector 553016)
    [290374.976655] BTRFS error (device dm-1): parent transid verify failed on 283148288 wanted 1435 found 911
    [290374.982507] BTRFS info (device dm-1): read error corrected: ino 0 off 283148288 (dev /dev/mapper/btrfs_pool1 sector 553024)
    [290374.982832] BTRFS info (device dm-1): read error corrected: ino 0 off 283152384 (dev /dev/mapper/btrfs_pool1 sector 553032)
    [290374.983131] BTRFS info (device dm-1): read error corrected: ino 0 off 283156480 (dev /dev/mapper/btrfs_pool1 sector 553040)
    [290374.983419] BTRFS info (device dm-1): read error corrected: ino 0 off 283160576 (dev /dev/mapper/btrfs_pool1 sector 553048)
    [290394.470089] BTRFS error (device dm-1): parent transid verify failed on 290963456 wanted 1435 found 911
    [290394.519792] BTRFS info (device dm-1): read error corrected: ino 0 off 290963456 (dev /dev/mapper/btrfs_pool1 sector 568288)
    [290394.520183] BTRFS info (device dm-1): read error corrected: ino 0 off 290967552 (dev /dev/mapper/btrfs_pool1 sector 568296)
    [290394.520522] BTRFS info (device dm-1): read error corrected: ino 0 off 290971648 (dev /dev/mapper/btrfs_pool1 sector 568304)
    [290394.520851] BTRFS info (device dm-1): read error corrected: ino 0 off 290975744 (dev /dev/mapper/btrfs_pool1 sector 568312)
    [290394.535021] BTRFS error (device dm-1): parent transid verify failed on 314458112 wanted 1435 found 911
    [290394.768369] BTRFS info (device dm-1): read error corrected: ino 0 off 314458112 (dev /dev/mapper/btrfs_pool1 sector 614176)
    [290394.768892] BTRFS info (device dm-1): read error corrected: ino 0 off 314462208 (dev /dev/mapper/btrfs_pool1 sector 614184)
    [290394.769218] BTRFS info (device dm-1): read error corrected: ino 0 off 314466304 (dev /dev/mapper/btrfs_pool1 sector 614192)
    [290394.769529] BTRFS info (device dm-1): read error corrected: ino 0 off 314470400 (dev /dev/mapper/btrfs_pool1 sector 614200)
    [375198.754150] BTRFS error (device dm-1): parent transid verify failed on 353206272 wanted 1435 found 912
    

    Ich habe keine vernünftige Lösung dafür im Netz gefunden, so das ich dieses RAID heute auflöse.

  • Da btrfs bei mir ja nicht so der Bringer war, Fehler im Image vom Kamil?, Fehler in btrfs? Ich weiß es nicht, also weg damit! Da ich das NAS noch richtig produktiv genutzt hatte, waren die Daten schnell gesichert. Danach das NAS neugestartet, nun sind die beiden Platten nicht mehr gemountet und wir können damit arbeiten.

    ACHTUNG! Ich bitte wie immer darum, das Gehirn ab hier einzuschalten! Sonst droht Datenverlust!

    Aus Sicherheitsgründen gebe ich hier die Laufwerke so an = sdX1

    Das X bitte entsprechend austauschen!


    Die beiden Platten mit

    sudo fdisk /dev/sdX
    

    neu einrichten. Alte Partition weg, neu einrichten usw. Im Detail gehe ich hier jetzt nicht drauf ein. Ich gehe davon aus, das das bekannt ist.

    Der Plan

    raid_pool0 = sdX1 = /dev/mapper/raid_pool0
    raid_pool1 = sdX1 = /dev/mapper/raid_pool1

    Verschlüsseln

    sudo cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdX1
    sudo cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdX1
    

    Platten entschlüsseln

    sudo cryptsetup open /dev/sdX1 raid_pool0
    sudo cryptsetup open /dev/sdX1 raid_pool1
    

    RAID1 anlegen

    sudo mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/mapper/raid_pool0 /dev/mapper/raid_pool1 
    
    sudo mkfs.ext4 /dev/md0
    

    Script zum Entschlüsseln und Mounten crypt.sh

    #!/bin/bash
    ###############################################################################$
    #       Autor: Frank Mankel
    #       Verschlüsseltes Raid1 einbinden!
    #
    #       Hardware:
    #       ROCKPro64v2.1
    #       PCIe SATA Karte
    #       2St. 2,5 Zoll HDD Platten a 2TB
    #
    #       Software:
    #       bionic-minimal 0.7.9
    #       Kontakt: frank.mankel@gmail.com
    #
    ###############################################################################$
    
    #Passwort abfragen
    echo "Passwort eingeben!"
    read -s password
    echo "Bitte warten......"
    
    #Passwörter abfragen
    echo -n $password | cryptsetup open /dev/sdX1 raid_pool0 -d -
    echo -n $password | cryptsetup open /dev/sdX1 raid_pool1 -d -
    
    #Raid1 mounten
    mount /dev/md0 /mnt/raid
    
    echo "Laufwerke erfolgreich gemountet!"
    

    Bis jetzt sieht das Raid ok aus, ich werde das die nächsten Tage mal ein wenig im Auge behalten.

     [   82.430293] device-mapper: uevent: version 1.0.3
     [   82.430430] device-mapper: ioctl: 4.39.0-ioctl (2018-04-03) initialised: dm-devel@redhat.com
     [  108.196397] md/raid1:md0: not clean -- starting background reconstruction
     [  108.196401] md/raid1:md0: active with 2 out of 2 mirrors
     [  108.240395] md0: detected capacity change from 0 to 2000260497408
     [  110.076860] md: resync of RAID array md0
     [  110.385099] EXT4-fs (md0): recovery complete
     [  110.431715] EXT4-fs (md0): mounted filesystem with ordered data mode. Opts: (null)
     [57744.301662] md: md0: resync done.
    

  • NodeBB - 2.8.13 & 3.1.3 Security Release

    NodeBB
    1
    0 Stimmen
    1 Beiträge
    59 Aufrufe
    Niemand hat geantwortet
  • Flatpak Paket zurückrollen

    Linux
    1
    0 Stimmen
    1 Beiträge
    58 Aufrufe
    Niemand hat geantwortet
  • GoAccess - Visual Web Log Analyzer

    Verschoben Linux
    1
    0 Stimmen
    1 Beiträge
    110 Aufrufe
    Niemand hat geantwortet
  • VSCodium - Meldungen trailing-whitespaces

    Linux
    1
    0 Stimmen
    1 Beiträge
    113 Aufrufe
    Niemand hat geantwortet
  • Portainer - NodeBB Container erstellen

    Linux
    1
    0 Stimmen
    1 Beiträge
    319 Aufrufe
    Niemand hat geantwortet
  • Der 3. ROCKPro64

    ROCKPro64
    3
    0 Stimmen
    3 Beiträge
    939 Aufrufe
    FrankMF

    Nachdem ich jetzt mein NAS neu gemacht habe, schauen wir mal, was die Chinesen geliefert haben. Bestellt hatte ich

    ROCKPro64 v2.1 2GB RAM Kühlkörper Netzteil 3A USB-Adapter für eMMC-Modul

    Endlich habe ich mal an den USB-Adapter für das eMMC-Modul gedacht 🙂

    0_1540029624802_IMG_20181020_115348_ergebnis.jpg

    Was ist mir aufgefallen? Das Versionsdatum ist neu (siehe oben) Die PCIe NVMe Karte ist neu

    Bei der PCIe NVMe Karte liegt eine Abstandshülse aus Messing und eine winzig kleine Schraube bei. Damit bekomme ich aber nicht die NVMe-SSD befestigt. Ich habe dann gemurkst 😉 Da sollte Pine64 unbedingt nachbessern!

    So sieht das dann zusammengebaut aus.

    0_1540029756582_IMG_20181020_115425_ergebnis.jpg

    0_1540029767082_IMG_20181020_115438_ergebnis.jpg

    Da ich ein paarmal gelesen hatte, das Leute Probleme mit dem PCIe NVMe Adapter hatten, direkt als erstes mal ein Test ob das reibungslos funktioniert.

    Sys rock64@rockpro64:/mnt$ uname -a Linux rockpro64 4.4.132-1075-rockchip-ayufan-ga83beded8524 #1 SMP Thu Jul 26 08:22:22 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux lspci rock64@rockpro64:/mnt$ sudo lspci -vvv [sudo] password for rock64: 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 238 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: 00000000fee30040 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 128 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 L1 Enabled; RCB 64 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 Kernel driver in use: pcieport 01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961 (prog-if 02 [NVM Express]) Subsystem: Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961 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 237 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/32 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 128 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 L1 Enabled; 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=8 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

    Da sieht alles gut aus. x4 alles Bestens!

    iozone rock64@rockpro64:/mnt$ sudo iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 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 20 10:08:28 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 63896 108269 91858 95309 32845 73173 102400 16 123393 236653 273766 275807 118450 199130 102400 512 471775 570571 484612 496942 441345 575817 102400 1024 544229 642558 508895 511834 486506 647765 102400 16384 1044520 1100322 1069825 1092146 1089301 1086757 iozone test complete.

    Das sieht nicht optimal aus, schau ich mir später an. Das hier soll nur ein kurzer Test sein ob das Board rennt 🙂

    Nachdem ich mittlerweile zwei ROCKPro64 im "produktiven" Einsatz habe, war es immer sehr mühsam mal eben was zu testen. Man will die anderen ja nicht immer ausmachen, dran rumhantieren usw. Deswegen jetzt der dritte, der im Moment dann die Rolle des Testkandidaten einnimmt. Ab sofort kann ich wieder nach Lust und Laune, neue Images testen usw.

  • ROCKPro64 - SD-Karte

    Hardware
    1
    0 Stimmen
    1 Beiträge
    536 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - kein WLan-Modul möglich?

    ROCKPro64
    4
    0 Stimmen
    4 Beiträge
    2k Aufrufe
    FrankMF

    Heute, 5 Monate später, kann ich bestätigen das WLan möglich ist 🙂 Getestet auf einem ROCKPro64 v2.1 mit 2GB RAM.

    Eine Vorabversion von Recalbox machte es das erste Mal für mich möglich das WLan zu benutzen. Bericht

    Und PCIe ist abgeschaltet im dts File.

    pcie-phy { compatible = "rockchip,rk3399-pcie-phy"; #phy-cells = <0x0>; rockchip,grf = <0x15>; clocks = <0x8 0x8a>; clock-names = "refclk"; resets = <0x8 0x87>; reset-names = "phy"; status = "disabled"; phandle = <0x8b>; }; pcie@f8000000 { compatible = "rockchip,rk3399-pcie"; #address-cells = <0x3>; #size-cells = <0x2>; aspm-no-l0s; clocks = <0x8 0xc5 0x8 0xc4 0x8 0x147 0x8 0xa0>; clock-names = "aclk", "aclk-perf", "hclk", "pm"; bus-range = <0x0 0x1f>; max-link-speed = <0x2>; linux,pci-domain = <0x0>; msi-map = <0x0 0x89 0x0 0x1000>; interrupts = <0x0 0x31 0x4 0x0 0x0 0x32 0x4 0x0 0x0 0x33 0x4 0x0>; interrupt-names = "sys", "legacy", "client"; #interrupt-cells = <0x1>; interrupt-map-mask = <0x0 0x0 0x0 0x7>; interrupt-map = <0x0 0x0 0x0 0x1 0x8a 0x0 0x0 0x0 0x0 0x2 0x8a 0x1 0x0 0x0 0x0 0x3 0x8a 0x2 0x0 0x0 0x0 0x4 0x8a 0x3>; phys = <0x8b>; phy-names = "pcie-phy"; ranges = <0x83000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x1e00000 0x81000000 0x0 0xfbe00000 0x0 0xfbe00000 0x0 0x100000>; reg = <0x0 0xf8000000 0x0 0x2000000 0x0 0xfd000000 0x0 0x1000000>; reg-names = "axi-base", "apb-base"; resets = <0x8 0x82 0x8 0x83 0x8 0x84 0x8 0x85 0x8 0x86 0x8 0x81 0x8 0x80>; reset-names = "core", "mgmt", "mgmt-sticky", "pipe", "pm", "pclk", "aclk"; status = "disabled";

    Also bleibt weiterhin ungeklärt, ob auch beides zusammen möglich ist. Also gleichzeitig das WLan-Modul und eine PCIe Karte.