Jump to content

mgutt

Moderators
  • Posts

    11,356
  • Joined

  • Last visited

  • Days Won

    124

Everything posted by mgutt

  1. Do the disks spindown after they woke up or do they stay spinning?
  2. Example log output: Script Starting Apr 20, 2021 00:30.01 Full logs for this script are available at /tmp/user.scripts/tmpScripts/forcespindown/log.txt Spin down Disk 4 although it is already in STANDBY state to force icon change in Unraid WebGUI... has been spun down. Error: As the Disk already was in STANDBY state, this should not happen! Spin down Disk 6 although it is already in STANDBY state to force icon change in Unraid WebGUI... was already spun down. Spin down Disk 3 although it is already in STANDBY state to force icon change in Unraid WebGUI... was already spun down. Spin down Disk 10 although it is already in STANDBY state to force icon change in Unraid WebGUI... was already spun down. Spin down Disk 1 although it is already in STANDBY state to force icon change in Unraid WebGUI... was already spun down. Spin down Disk 0 although it is already in STANDBY state to force icon change in Unraid WebGUI... was already spun down. Skip Disk 8 as it is in ACTIVE state, but we read some bytes to force icon change in Unraid WebGUI. Spin down Disk 2 although it is already in STANDBY state to force icon change in Unraid WebGUI... was already spun down. Script Finished Apr 20, 2021 00:30.08
  3. Also ich habe massig versucht, konnte aber nicht herausfinden wie Unraid den Status einer Disk prüft, was dann das Kommando für den Spindown auslöst. Daher habe ich ein Script entwickelt, das hoffentlich das Problem löst: https://forums.unraid.net/topic/106508-force-spindown-script/ Der Langzeit-Test steht jetzt noch aus. Kann ja nicht sein, dass ich mir jetzt teure Ultrastar kaufen muss. 🙈
  4. After my my Western Digital WD180EDFZ disks did not spindown (while usual WD Ultrastar disks work flawlessly) I wrote this script to obtain the different power modes (which aren't checked by Unraid) and I found out that some disks are randomly lying (!) like returning "STANDBY" while they are spinning! What the script does: It checks if the icon in the Unraid WebGUI has the correct color (active / standby) and corrects it if necessary It checks the spin down state of Disks that claim to be in STANDBY Note: This is done by repeating Unraid's spin down command. Regarding my measurements, this re-execution lowers the power consumption even more. I think because the SATA ports itself were not in standby after the first spindown command. Option: Spindown disks that are in the advanced idle modes "IDLE_B" and "IDLE_C" Note: Some disks aren't spinning although they return these states. It optionally sets the spindown timer of the disk's firmware Note: Its set and removed every 32 minutes if the disk stays active. This trick helps as some disks ignore the first try. Donate? 🤗 Manual: - This script should be executed by the "CA User Scripts" plugin which can be installed through "Apps" - Use the custom cron schedulde */15 * * * * to execute it every 15 minutes - Check the "Settings" inside the script #!/bin/bash # ##################################### # Script: Advanced disk spindown v0.4 # Description: Monitors disks power modes, spins down disks and corrects # Unraid's WebGUI icon if necessary. # Author: Marc Gutt # # Changelog: # 0.4 # - complete rewrite # - icon is now only corrected if necessary # - measure execution time of spin up command as well # - reading bytes through dd is replaced by Unraid's spinup command # # ######### Settings ################## # set to "1" to enable spinning down disk if power mode is IDLE_A idle_b_spindown=1 # set to "1" to enable spinning down disk if power mode is IDLE_B idle_c_spindown=1 # set to "1" to enable spindown timer through "smartctl -s standby,241 /dev/sdb". "241" means 30 minutes advanced_spindown=0 # ##################################### # # ######### Script #################### # make script race condition safe if [[ -d "/tmp/${0///}" ]] || ! mkdir "/tmp/${0///}"; then exit 1; fi; trap 'rmdir "/tmp/${0///}"' EXIT; # loop through devices for devpath in /dev/sd?; do runtime="" # obtain disk id and name devname=${devpath: -3} diskid=$(grep -oP "(?<=rdevName\.)[0-9]+(?==${devname})" /proc/mdstat) # skip non-array disks if [[ -z $diskid ]]; then continue fi diskname=$(grep -zoP "(?<=name=\")[a-z0-9]+(?=\"\ndevice=\"${devname})" /var/local/emhttp/disks.ini | tr -d '\0') if [[ -z $diskname ]]; then echo "Diskname of Disk ${diskid} (${devname}) not found!" continue fi # obtain power mode devinfo=$(smartctl -n standby -i $devpath) modes=( IDLE_A IDLE_B IDLE_C STANDBY ACTIVE UNKNOWN ) for mode in "${modes[@]}"; do if [[ $devinfo == *"${mode}"* ]]; then break fi done # obtain WebGUI icon icon=$(sed -e "/device=\"${devname}\"/,/fsStatus/!d" /var/local/emhttp/disks.ini) if [[ $icon == *"green-blink"* ]]; then icon="STANDBY" elif [[ $icon == *"green-on"* ]]; then icon="ACTIVE" else icon="UNKNOWN" fi echo -n "${diskname} (${devname}), ${mode} mode, ${icon} icon" general_mode="STANDBY" if [[ ${mode} == *"IDLE_"* ]] || [[ ${mode} == "ACTIVE" ]]; then general_mode="ACTIVE" fi # icon correction if [[ ${general_mode} != ${icon} ]]; then echo -n " (wrong)" # update icon if [[ $general_mode == "ACTIVE" ]]; then start=$(date +%s) /usr/local/sbin/emcmd cmdSpinup=${diskname} end=$(date +%s) runtime=$((end-start)) # as the disk is active it should already spin if [[ $runtime -gt 1 ]]; then echo -n ", Warning: Unexpected spin up while icon correction!" fi else start=$(date +%s) /usr/local/sbin/emcmd cmdSpindown=${diskname} end=$(date +%s) runtime=$((end-start)) # as the disk is in standby mode it should already stand still if [[ $runtime -gt 1 ]]; then echo -n ", Warning: Unexpected spin down while icon correction!" fi fi echo -n ", Icon has been corrected." else echo -n " (correct)" fi # spin down disk although it is already in STANDBY mode as some disks are lying regarding their spinning state if [[ $mode == "STANDBY" ]] && [[ -z $runtime ]]; then # runtime is only empty if icon correction wasn't necessary echo -n ", Check spin down state" start=$(date +%s) /usr/local/sbin/emcmd cmdSpindown=${diskname} end=$(date +%s) runtime=$((end-start)) # as the disk is in standby mode it should already stand still if [[ $runtime -gt 1 ]]; then echo -n ", Warning: Disk unexpectedly spun down!" else echo -n ", Good: Disk already stands still." fi fi # spin down disks that are in advanced idle modes if [[ $mode == "IDLE_B" ]] && [[ $idle_b_spindown == "1" ]] || [[ $mode == "IDLE_C" ]] && [[ $idle_c_spindown == "1" ]]; then # runtime is only empty if icon correction wasn't necessary echo -n ", Check spin down state" start=$(date +%s) /usr/local/sbin/emcmd cmdSpindown=${diskname} end=$(date +%s) runtime=$((end-start)) # as the disk is in standby mode it should already stand still if [[ $runtime -gt 1 ]]; then echo -n ", Good: Spin down was successful!" else echo -n ", Warning: Unexpected stagnant disk, sent to STANDBY!" fi fi # set spindown timer (some disks need it) last_spindown="/tmp/ForceSpindown${diskid}.last" if [[ $advanced_spindown == "1" ]]; then if [[ $mode == "IDLE_A" ]]; then # Remove spindown timeout (some disks react only on the second try) if [[ -f ${last_spindown} ]]; then time_last=$(stat -c %Y ${last_spindown}) time_expired=$((time_last+1920)) # 1920 = 32 minutes time_now=$(date +%s) if [[ $time_expired -lt $time_now ]]; then echo -n ", removed spindown timer" smartctl -n standby -q errorsonly -s standby,off $devpath rm ${last_spindown} fi # Set spindown timeout else echo -n ", set spindown timer" smartctl -n standby -q errorsonly -s standby,241 $devpath # 241 = 30 minutes touch ${last_spindown} fi fi # remove spindown timer elif [[ -f ${last_spindown} ]]; then last_spindown="/tmp/ForceSpindown${diskid}.last" smartctl -q errorsonly -s standby,off $devpath rm ${last_spindown} echo -n ", removed spindown timer" fi echo "" done Execute this to manually spin down all disks: for dev in /dev/sd?; do /usr/local/sbin/emcmd cmdSpindown="$(grep -zoP "(?<=name=\")[a-z0-9]+(?=\"\ndevice=\"${dev: -3})" /var/local/emhttp/disks.ini | tr -d '\0')"; done
  5. Du musst detaillierter schreiben. Du hast ja einen Nextcloud und einen NPM Container. Von welchem der beiden Container sprichst du, wenn du von br0 sprichst und welche IPs hast du ausprobiert? Also die von NPM, die von Nextcloud oder beide? Ich hatte dir ja hier zB erklärt, dass es wichtig ist, dass die DuckDNS die IPv4 vom VPS Server bekommt und die IPv6 von NPM: https://forums.unraid.net/topic/102481-nextcloud-mit-dsl-lite-öffentlich-verfügbar-machen/page/3/?tab=comments#comment-949177 Der letzte Punkt ist das was du jetzt schon mal machen solltest. Was für IPs sind bei DuckDNS hinterlegt? Ist es die IPv6 von NPM und die IPv4 vom VPS? Ich vermute, dass die IPv4 noch stimmt, aber die IPv6 nun nicht mehr passt, weil sich die von NPM geändert hat. Das kann durchaus nach einem Container-Update, Internetanschluss-Neuverbindung oder Server-Neustart der Fall sein. Genau deswegen schrieb ich im letzten Absatz auch das: Du brauchst also ein Script, dass a) die IPv6 vom NPM Container ausliest und dann den Ducks-DNS Updatelink aufruft. zB alle 5 Minuten. Probier mal bitte dieses Kommando im WebTerminal, ob da IPv6 Adresse des NPM Containers bei herauskommt: docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' NginxProxyManager Ich muss dann den genauen Aufbau wissen. Die IPv6 kannst du gerne überschreiben.
  6. Alles ist möglich. Was man noch testen könnte, wäre einen LAN-Port physisch an die Mac VM zuzuweisen. Das reduziert ebenfalls maßgeblich die CPU Last. Hat dein Board zufällig mehrere LAN-Ports? Falls nein könntest du darüber nachdenken einen USB-Hub mit LAN-Buchse zu kaufen und den durchzuschleifen. Hat auch den Vorteil, dass man spontan andere USB Geräte an den Hub anschließen kann (die man ja sonst einzeln durchschleifen müsste, bevor man die VM startet).
  7. Dann musst du die erst mit "touch /boot/config/smb-extra.conf" erstellen (oder installiere kurz den Recycle Bin, der erstellt die auch ). Danach kannst du sie mit dem Config File Editor bearbeiten. Hier ein Beispiel, wo ich den Share "Marc" auf Disk 8 für meinen User "marc" freigegen habe: Das nutze ich bewusst nicht, weil der User dann wirklich alles auf der Disk verändern kann. Einschließlich neue Shares hinzufügen, da ein Ordner im Root der Disk immer einem Share entspricht. Starte mal das WebTerminal und führe "htop" aus. Dann wiederholst du die Übertragung und machst mal einen Screenshot von der Auslastung der Prozesse. Kommt mir Spanisch vor. Die Netzwerkverbindung an sich ist aber stabil? Teste am besten mal mit einem SFTP Client über SSH, ob du damit bei voller Bandbreite Dateien fehlerfrei übertragen kannst.
  8. Vermutlich hat der Nextcloud Container eine neue IPv6 bekommen? Wie hast du die IPv6 überhaupt deiner DDNS Domain zugewiesen?
  9. Ok, das ist ein Problem. Ich dachte erst an einen Bug, aber auch nach einem Server-Reboot geht keine der Elements schlafen: Es erfolgt allerdings auch kein Spindown Versuch von Unraid: Nur die Parity (0) wird heruntergefahren: Da ich noch 6.8.3 verwende, kann es nicht mit dem Bug zusammenhängen, der ja in 6.9 aufgetreten ist. Das muss mit dem Modell zu tun haben. Aktuell versuche ich das zu analysieren, in dem ich das Kommando laufen lasse: while true; do pid=$(pgrep 'smartctl' | head -1); if [[ -n "$pid" ]]; then cat /proc/${pid}/cmdline; strace -t -p "$pid"; fi; done Dafür musste ich über das Nerd-Pack die Pakete "elfutils-0.176-x86_64-1.txz" und "strace-4.26-x86_64-1.txz" installieren. Ziel ist es herauszufinden wann Unraid das Kommando "smartctl" ausführt und was die jeweilige Platte dann antwortet. Wenn ich das im Groben herausgefunden habe, werde ich das Kommando ändern, so dass ich nur Ergebnisse für die Parität und Disk1 erhalte. Dann mache ich einen Abgleich. Leider konnte ich bisher nicht herausfinden wie Unraid den letzten Zugriff auf die Platte prüft. Weiß das jemand? Denn ich gehe davon aus, dass Unraid von der Platte hier andere Informationen zurück bekommt, als von der normalen Ultrastar.
  10. Hauptsache man geht positiv durchs Leben ^^ Ne Mal im Ernst. Bei einem Freund haben sie eingebrochen und alles was in Richtung PC / TV ging wurde mitgenommen. Ist doch auch logisch. Die Dinge mit Wert. Sogar seine Backupplatten haben sie mitgenommen. So eine 10TB Platte kostet ja auch was. Und Feuer... Ja da kommt es drauf an. Meistens zerstört das Löschwasser der Feuerwehr das was das Feuer nicht zerstört hat.
  11. Was bei ZFS nicht der Fall ist: https://unix.stackexchange.com/questions/530968/adding-disks-to-zfs-pool
  12. SMB Einstellungen auf Active Directory umstellen und in der smb-extra.conf fügst du einen Share mit dem Pfad zu deinem ZFS Array hinzu. Denke schon, dass das geht. Warum aber kein BTRFS RAID5? Ja, du kannst ja mehrere Pools hinzufügen. Jeder kann einen eigenen RAID Typ besitzen. Nur ist dein Vorhaben nicht wirklich sicher (Server brennt / wird geklaut = alles weg). Denk an die 3-2-1 Backup Regel. Ist das nicht genau das was Pi-Hole macht oder verstehe ich die Frage falsch?
  13. Diese aktiven Kabel übertragen leider nur ein Protokoll. Also USB 2.0 Signale gehen dann einfach nicht durch, wenn es ein aktives USB 3.0 Kabel ist. Ob jetzt ein USB 3.0 Hub das Problem umgehen könnte, wäre eine interessante Frage. Also ob der das dann in 3.0 unwandelt?! Ich konnte leider auch nicht herausfinden was eigentlich so eine Maus / Tastatur spricht. Also ob die USB 2.0 sprechen oder vielleicht sogar nur USB 1.1 ?! Kann ich leider nicht sagen. Am besten mal nach deinen Lieblingsspielen + Unraid + Banned suchen. Beispiel: https://amp.reddit.com/r/unRAID/comments/hzxkk8/a_word_of_warning_regarding_gaming_in_a_vm/ Also alles mit BattleEye ist wohl ein Problem.
  14. Das geht bestimmt auch. Einfach mit User Scripts erstellen und dann liegt das ja unter /tmp. Und Scripte ausführen kann man so: bash /tmp/.../script.sh Hangel dich einfach mal mit "ls -la /tmp" bzw "ls -la /tmp/subdir" durch das Verzeichnis bis du das Script gefunden hast.
  15. Es gibt aktive Kabel. Oder suche einfach nach "30m USB Kabel". Dann findest du die richtigen. Pro Kabel werden da grob 100 € fällig. Also auch für DP. Bedenke aber, dass du USB3.0 und USB2.0 separat verlegen musst. Die gibt es nicht für beides. Darauf hatte Linus keine Lust und hat eine über 1000 € teure Box gekauft. Siehe dieses Video: Denk aber dran, dass nicht alle Spiele als VM laufen wollen. Manche denken dann, dass du cheaten willst.
  16. Würde mich wundern, wenn das Installieren von Apps Unraid zum Absturz bringt. Stell das bitte so ein, dass die Logs auf den USB Stick geschrieben werden und falls das noch mal passiert, postest du deine Systemlogs. Da stehen dann evtl Fehler drin.
  17. Ist das Feld nur eine Zeile oder wo ist das Problem? Dann könntest du mehrere Kommandos denke ich mit Semikolon hintereinander packen.
  18. Das hatte ich doch die Tage irgendwo gepostet.... Nur wo ^^
  19. Und woran lags? Board, BIOS oder Stick?
  20. Gibt immer wieder so Specials. Hier Unlimited Disk für 329 €: https://billing.owncube.com/store/9-years-owncube Ich habe das und das SLA3 Paket gekauft. EDIT: Sorry, sehe gerade, dass ich oben falsch verlinkt hatte ^^
  21. Ich nutze https://owncube.com/index_de.php, kann aber nicht sagen, dass ich mit denen zufrieden wäre. Die Performance ist stark schwankend und ich habe immer wieder Uploads, die nicht erfolgreich durchgeführt werden. Außerdem mag ich grundsätzlich keine Cloud wo man das Dateiänderungsdatum nicht ändern kann. Wobei das ja mittlerweile leider bei so ziemlich allen möglichen so ist. Ich habe ja schon mal überlegt noch einen Server bei meiner Mutter hinzustellen und den zu vermieten. Ob das lohnt? ^^
  22. Dann wirst du ein anderes Problem haben. Bei ihm wurde der Stick nämlich gar nicht erst vom Tool erkannt und er musste den Stick von Hand einrichten. Probier vielleicht mal einen anderen Stick. Vielleicht hat der eine Macke.
  23. Jede Domain braucht eine eigene Config-Datei. Die sind doch meine ich als Muster schon im SWAG-Verzeichnis oder nicht? Einfacher ginge es aber, wenn du auf den NGINX Proxy Manager umstellst. Der hat eine WebGUI:
  24. Der Nutzer hatte den selben Fehler und hat ihn wohl gelöst, in dem er den Stick UEFI-fähig gemacht hat: https://forums.unraid.net/topic/90082-usb-creator-not-seeing-usb-drive/?tab=comments#comment-953604 Hast du den Stick manuell installiert oder mit dem Creator Tool? Ist das BIOS auf Legacy oder UEFI eingestellt?
  25. Grundsätzlich sollte man davon ausgehen, dass jede Software und jedes Betriebssystem gehackt werden kann. Aus dem Grund sollte man sich an die 3 2 1 Backup Regel halten. 3 Kopien, 2 verschiedene Medien und 1 externer Standort. Ich habe zB lokal ein Backup der wichtigsten Daten innerhalb des Arrays, was ich aber nur als Root-Nutzer einsehen kann. Dann habe ich extern einen Server bei einem Freund stehen, der auf meinen Server nur lesend zugreifen kann. Mein Server kann wiederum nicht auf den externen Server zugreifen. Und zuletzt sichern beide Server in die Cloud. Käme es nun zu dem Fall, dass mein lokaler Server eine Sicherheitslücke hätte, würden die Daten vernichtet. Hätte der Angreifer dann die Möglichkeit sogar auf die Cloud zu kommen, wären auch die Daten evtl weg. Meine letzte Instanz ist dann der externe Server. Andersherum könnte ein Angreifer beim Freund den Server zerlegen. Der kann bei mir aber nur lesend zugreifen. Auch hier wäre ich sicher. Auch eine Möglichkeit ist das Sichern auf USB Laufwerke, die man im Wechsel absteckt und im Spind auf der Arbeit aufbewahrt und auch dort immer nur austauscht. Auch dann hat man sein externes Backup. Angriffe verhindern kann man schon mal, in dem man seinen Server nicht über das Internet bereitstellt. Will man zB unterwegs Filme über Emby/Jellyfin/Plex schauen, könnte man das über einen VPN Tunnel machen. Will man aber zB Nextcloud auch für Dritte verfügbar machen, müsste man dagegen direkten Zugang ermöglichen. Hier wäre es dann denkbar nur bestimmte IPs zuzulassen. zB nur welche aus Deutschland. Außerdem könnte man überlegen, dass der Nextcloud Container vom restlichen Netzwerk isoliert wird. Entweder über VLAN (Managed Switch) oder spezielle Kommandos: https://forums.unraid.net/topic/101603-vlan-und-isolierung-von-docker-containern/ Das würde aber nur verhindern, dass der Angreifer auch das restliche Netzwerk angreift. Gäbe es eine Lücke in Docker, also dem Container-System, könnte der Angreifer auch auf Unraid selbst zugreifen. Lokal könnte man den Server absichern, in dem man sich niemals mit einem PC auf dem Server anmeldet, mit dem man auch ins Internet geht. Oder mit einem Endgerät, dem man am meisten vertraut. Ich würde da zB einem Tablet eher vertrauen als einem Windows PC, da die meisten Viren für Windows PCs geschrieben werden. Das dient dann dem Schutz gegen einen Trojaner, der versucht deinen Root-Login zu stehlen. Tatsächlich vermisse ich an dieser Stelle eine 2-Faktor-Authentifizierung in Unraid. Auch könnte man im Unraid Server alle Dienste schließen, die man nicht benötigt. Ich habe zB SSH, Telnet usw deaktiviert. Wenn Dienste deaktiviert werden, sind die Ports dazu auch dicht. Muss ich doch mal per SSH drauf, mache ich das immer nur temporär auf. Schlussendlich lauscht der Server also nur noch auf Port 80 und 443. Über diese Ports stellt er dann die Unraid WebGUI zur Verfügung. Das kannst du prüfen, in dem du mit einem Port Scanner über Windows deinen Server scannst. Natürlich hilft das nicht, wenn Unraid mal eine Sicherheitslücke besitzen sollte. zB könnte es eine im Nginx Webserver geben, der die WebGUI bereitstellt. Der Angreifer hätte dann Root-Zugang zum Server. Aus dem Grund machen auch Virenscanner keinen Sinn. Sie kennen die Lücken eh nicht, denn wenn sie bekannt wären, gäbe es ja ein Update für Unraid (oder Nginx). In Windows sieht das anders aus. Da soll dich ein Virenscanner davor schützen, dass du eine Anwendung installierst. Also eigentlich schützt dich der Virenscanner vor dich selbst. In Unraid installierst du dagegen nicht mal eben so eine verseuchte App. Dafür müsstest du auf die Kommandozeile gehen und entsprechende Befehle eingeben. Und eine Firewall brauchst du wie gesagt nicht, weil ein Betriebssystem nur auf den Ports lauscht, wo auch ein Dienst hinter steht. Also keine Software, kein offener Port. Ist bei Windows übrigens auch so, aber Windows hat standardmäßig einige Ports offen und es gab immer mal wieder Möglichkeiten darüber ins System einzubrechen. Die beliebtesten Wege sind aber nach wie vor Lücken im Browser oder den Nutzer dazu zu animieren eine verseuchte Software zu installieren. Hier ein Beispiel wie Angreifer in der Vergangenheit mal Linux Server übernommen haben, egal welches Linux installiert war: https://de.wikipedia.org/wiki/Heartbleed Oder hier bei Windows Servern: https://de.wikipedia.org/wiki/Code_Red_(Computerwurm)
×
×
  • Create New...