Hallo Leute!
Ich habe mir einen kleinen Homeserver eingerichtet, auf dem ich zahlreiche Serverapplikationen laufen hab (nginx, php, mysql,teamspeak, ftp, samba, ....).
Aus Performancegründen läuft das System auf einer SSD (/dev/sda
).
Nebenbei benutze ich den Rechner als Datengrab / Archiv, indem ich zwei klassische Festplatten à 5TB angeschlossen habe (/dev/sdb
und /dev/sdc
). Diese sind im RAID-1 miteinander verbunden, um die Ausfallsicherheit zu erhöhen. Auf das Archiv greife ich lediglich selten (etwa alle 5-10 Tage ein mal) zu. Ich würde die Platten gerne bedarfsgerecht mounten, und in der Zwischenzeit sollen sie aus Stromspargründen und Gründen der Abnutzung gerne schlafen.
Konfiguration:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | admin@homeserver:/$ df Filesystem 1K-blocks Used Available Use% Mounted on [...] /dev/vg1000/lv 4683780588 2427901136 2255879452 52% /Archive admin@homeserver:/$ cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] md1 : active raid1 sdb1[2] sdc1[1] 4878939456 blocks super 1.2 [2/2] [UU] [...] unused devices: <none> admin@homeserver:/$ sudo mdadm --misc --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Sun Mar 22 13:52:22 2020 Raid Level : raid1 Array Size : 4878939456 (4652.92 GiB 4996.03 GB) Used Dev Size : 4878939456 (4652.92 GiB 4996.03 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Sat Jun 6 12:34:20 2020 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Number Major Minor RaidDevice State 2 8 21 0 active sync /dev/sdb1 1 8 37 1 active sync /dev/sdc1 |
Leider ist es so, dass über die klassische Stromsparroutine (hdparm -S
) die Platten niemals einschlafen, und bei forciertem Standby (hdparm -Y
) sofort wieder erwachen. Ich habe viel Debugging betrieben um zu schauen, welche Applikation die Platten immer wieder aufwachen lässt, doch ist es bei der Fülle der Progamme (und deren zahlreiche IO-Operations) ein Kampf gegen Windmühlen. Zudem: bei Neuinstallation von Software würde man wieder am Anfang stehen.
Ich bin ziemlich schnell zur Erkenntnis gekommen, dass man die Platten nur sicher bei laufendem System über einen längeren Zeitraum in den Standby schicken kann, indem man sie un-mounted und für den Kernel unsichtbar macht.
1 2 3 4 5 | admin@homeserver:/$ sudo umount /Archive # Unmount filesystem on the disk. admin@homeserver:/$ sudo vgchange -an # Deactivate any LVM groups. 0 logical volume(s) in volume group "vg1000" now active admin@homeserver:/$ sudo hdparm -Y /dev/sdb admin@homeserver:/$ sudo hdparm -Y /dev/sdc |
Sogar nach diesen Schritten ist es so, dass die beiden HDDs sofort nach dem Schlafenlegen wieder aufwachen. Deshalb habe ich sie mit den folgenden Befehlen unregistered...
1 2 | admin@homeserver:/$ sudo echo 1 > /sys/block/sdb/device/delete admin@homeserver:/$ sudo echo 1 > /sys/block/sdc/device/delete |
Die Platten fahren runter, die /dev/
Einträge sind nicht mehr verfügbar und kein Programm kann die Platten wieder erwecken, bis man sie mit echo 0 - 0 > /sys/class/scsi_host/hostX/scan
wieder einbindet. Problem: nachdem man das RAID-1 wieder aktiviert erscheint das Array nun als degraded und muss neu syncronisiert werden. Insgesamt also keine gute Lösung.
Fragen: - Gibt es eine elegantere Lösung, die Platten längerfristig schlafen zu legen, ohne das RAID-1 Array zu desyncronisieren? - Gibt es alternative Möglichkeiten, den Zugriff auf die Platten zu blockieren, sodass sie schlafen?
Falls weitere Informationen benötigt werden, kann ich diese gerne nachreichen!
Bearbeitet von rklm:
Syntaxhighlighting "console"