Önskar hjälp med förbättra "disk-konfigurationen" på min server för bättre prestanda

Permalänk
Medlem

Önskar hjälp med förbättra "disk-konfigurationen" på min server för bättre prestanda

För ca 3 år sen så gick jag över från att köra en QNAP-NAS till att skaffa en form av server då jag fick för mig att prestandan inte skulle räcka till för de saker jag hade planerat. Utan erfarenhet av att sätta upp en server så fick jag ändå saker att rulla, men nu några år senare tycker jag mig se tendenser på att jag kanske borde tänka om vad gäller vissa saker. Och där behöver jag nog lite tips för att få det bra.

Hårdvaran som servern kör är egentligen vanlig PC-grejer (Asrock Z370-planka, 8700k-CPU, 32 GB RAM). Som operativ installerade jag Ubuntu 18.04 LTS, som efter det uppdaterats till 20.04 LTS, vilket körs på en 256 GB M2-sticka. För lagring har jag 2 WD Red som körs i Raid 1, vilket jag sen gör en "intern backup" på till ytterligare en WD Red som sitter i servern. Tanken var att ha en lagring på annan ort också, men dit har jag inte kommit mer än i tanken.

Summerat vad gäller diskar är alltså
M2-sticka: OS
2xHDD i Raid 1: Dockers och lagring av data
HDD: Intern backup av dockers och lagrad data

Allt som körs på servern görs i form av dockers och de som jag kör är Home Assistant, deconz, zwavejs2mqtt, mqtt, grafana, influxdb, Frigate NVR, deepstack & doubletake (bildanalys från kameror), unifi-controller, glances, plex, nextcloud, sonarr, radarr, sabnzbd, letsencrypt. Allt detta jobbar mot mina diskar i Raid 1.

Inget av det jag kör är superkrävande för CPU och RAM (har en Google Coral TPU för bildanalys), men diskarna går tungt ibland och jag får i perioder vad jag tolkar som höga värden för CPU_IOWAIT. Det syns ju förstås bara om man är inne och kollar loggar, i praktiken så är det väl när sabnzbd packar upp saker som det märks tydligast för det tar otroligt lång tid jämfört med att ladda ner grejerna. Men allt jobbar mot samma diskar i Raid 1 vilket säkert förklarar det.

Det jag går och funderar över är om jag borde tänka om hur jag gör min lagring. Jag funderar på om jag borde skaffa mig en SSD och låta alla dockers köra där. Eventuellt även köra lagring av data (bilder och dylikt) där. Sen backa upp den till mina diskar i Raid. Den sista disken kanske inte ens behövs längre, eller så lägger jag all filer för Plex-servern där så att när sabnzbd packar upp så kan den läsa och skriva på två olika diskar.

Det jag tänker är alltså.
M2-sticka: OS
SSD: Dockers och lagring av data
HDD i Raid 1: Backup av dockers och lagrad data
HDD: Eventuellt lagring av video-filer för Plex-servern.

Tänker jag rätt eller har ni några andra tips?

Permalänk
Medlem

Verkar som att du kan köra en SSD cache till din lagringsvolym.
Det borde ju snabba upp saker och ting rejält.

Permalänk
Medlem

Du skriver inte vad för typ av raid du kör, men jag skulle gissa att det är LVM eller mdraid?
Kör du LVM så kan du använda en cache device för både läs och skriv, tänk bara på att om du använder en (1) disk som skriv-cache så tappar du det som inte hunnit flushas till backing disk ännu. https://wiki.archlinux.org/title/LVM#Cache
För mdraid kan du kolla på bcache, men jag hade övervägt att konvertera bort från md till något annat. LVM och mdraid kör idag samma kod för RAID, så finns inga nackdelar med att köra LVM över mdraid.
Själv kör jag BTRFS utan cache devices, även där är det bcache som gäller, men om jag skaffar cache devicer någon gång kommer jag också gå över till ZFS istället.

Permalänk
Medlem

Läs #19064181 angående mina erfarenheter av bcache - kör inte writeback om du verkligen inte har behov av det och om det ändå görs - se till att det är väldigt välprovad SSD-märke/modell för jobbet - typ enterprise-version av SSD...

Med för BTRFS fungerande deduplicerinsprogrammet 'Bees' och Bcachade disken fylld med diskimages kommer man ganska snabbt se om använda SSD pallar trycket eller blir utkastad - kör i writethrough och writearound så blir du i alla fall inte av med filsystemet när SSD tackar för sig i testet - kraschen brukar ske inom 12-16 timmar deduplicering med SSD:n utkastad av OS för att den inte längre ger respons på minutnivåer (syns med dmesg) om den har TRIM-tabell/FTL-layer trubbel med många små accesser hela tiden...

Räkna med att du får göra en secure erase på SSD:n efteråt innan den visar sin forna jag när det gäller skriv och läsprestanda efter att den har kraschat i testet, fulla zerofill, fyllning med slumptal och användning av TRIM/discard på hela disken kan behövas göra i många omgångar innan knutarna i trim-tabellen/FTL-lagret har löst upp sig och man återfår fulla prestandan, vissa som Samsung 830 repar sig aldrig innan en secure erase är utförd...

En sak till, se till att bcache synkar sig med backenddisken med ganska täta intervaller - default gör den inte detta alls någonsin vilket i praktiken gör att all filsystemmetadata bara ligger på SSD och bara gamla bitar som inte accessat på mycket lång tid är utträngd och ligger ute på snurrdisken och vid SSD-krasch så är data på backenddisken inte räddningsbart om man har kört i writeback-mode.

För övrigt står det hos 'bees' hemsida numera att det kan fungerar illa med bcache pga. firmware-problem på själva använda SSD:erna av vissa modeller och tillverkare - men det kom långt efter jag själv upptäckte det...

Hur eller hur en SSD/NVMe som inte överlever testet med 'bees' är inget man vill ha som SSD i en bcache-lösning eller annan cachelösning ändå - för latenta fel som dyker upp när man minst behöver det vill man helst undvika...

Permalänk
Medlem

Tack för alla svar. Även om det direkt blev djupt vatten för mig

Får väl erkänna att jag bara gick på nån standard-konfig för raid. Kommer inte ens ihåg hur jag gjorde, men jag gissar att jag gjorde det via BIOS. Min raid-disk heter md126 och kör jag 'cat /proc/mdstat' så får jag vad som ser ut som relevant data, så jag antar att jag har mdraid.

Ni verkar ju alla tre inne på att cache för mina raid-diskar är en lösning på problemet, så det är säkert det rätta sättet att göra det på. Vet inte om jag bara tolkar det hela negativt, eller är feg, men det känns lite läskigt att börja pilla med raid-partitionen som all min data ligger på. Har iofs en intern backup om det skulle skita sig. Men det kanske inte är några konstigheter att ändra typ av cache?

Om det inte redan framkommit så är jag inte någon ubuntu eller server-expert. Att börja pilla med cache är säkert rätt väg att gå, men jag tycker inte det verkar helt straight forward med att få till en bra/säker/stabil SSD-cache för min raid. Skulle tro att jag behöver läsa på en hel del för att förstå vilka val jag har och vad jag behöver göra. Vilket tar tid. Plus tiden för att göra det (fast det kanske är enkelt gjort, vad vet jag?). Kanske finns någon guide på nätet, men då får man ju inte alltid koll på varför man gör saker.

Lösningen som jag nämnde i första posten, dvs att behålla OS på M2-stickan, lägga till en SSD-disk där jag kör mina dockers och datalagring på, sen köra backup av docker-data och datalagring på raid-enheten och videor för min plex-server på den sista disken. Spontant tänker jag att det borde snabba upp saker en hel del, även om jag förstår att raid-prestandan kommer att vara samma som den är idag, men jag blir ju mindre beroende av just raid-prestandan med den lösningen. Och det skulle vara lättare för mig att sätta upp. Är det en dum lösning?

Permalänk
Medlem
Skrivet av FredrikN:

Tack för alla svar. Även om det direkt blev djupt vatten för mig

Får väl erkänna att jag bara gick på nån standard-konfig för raid. Kommer inte ens ihåg hur jag gjorde, men jag gissar att jag gjorde det via BIOS. Min raid-disk heter md126 och kör jag 'cat /proc/mdstat' så får jag vad som ser ut som relevant data, så jag antar att jag har mdraid.

Ni verkar ju alla tre inne på att cache för mina raid-diskar är en lösning på problemet, så det är säkert det rätta sättet att göra det på. Vet inte om jag bara tolkar det hela negativt, eller är feg, men det känns lite läskigt att börja pilla med raid-partitionen som all min data ligger på. Har iofs en intern backup om det skulle skita sig. Men det kanske inte är några konstigheter att ändra typ av cache?

Om det inte redan framkommit så är jag inte någon ubuntu eller server-expert. Att börja pilla med cache är säkert rätt väg att gå, men jag tycker inte det verkar helt straight forward med att få till en bra/säker/stabil SSD-cache för min raid. Skulle tro att jag behöver läsa på en hel del för att förstå vilka val jag har och vad jag behöver göra. Vilket tar tid. Plus tiden för att göra det (fast det kanske är enkelt gjort, vad vet jag?). Kanske finns någon guide på nätet, men då får man ju inte alltid koll på varför man gör saker.

Lösningen som jag nämnde i första posten, dvs att behålla OS på M2-stickan, lägga till en SSD-disk där jag kör mina dockers och datalagring på, sen köra backup av docker-data och datalagring på raid-enheten och videor för min plex-server på den sista disken. Spontant tänker jag att det borde snabba upp saker en hel del, även om jag förstår att raid-prestandan kommer att vara samma som den är idag, men jag blir ju mindre beroende av just raid-prestandan med den lösningen. Och det skulle vara lättare för mig att sätta upp. Är det en dum lösning?

Cache kräver att du bygger om hela raiden på något sätt, i ditt fall hade jag snarare gått på ditt senare förslag och köpt en till SSD istället.

Permalänk
Skrivet av FredrikN:

För ca 3 år sen så gick jag över från att köra en QNAP-NAS till att skaffa en form av server då jag fick för mig att prestandan inte skulle räcka till för de saker jag hade planerat. Utan erfarenhet av att sätta upp en server så fick jag ändå saker att rulla, men nu några år senare tycker jag mig se tendenser på att jag kanske borde tänka om vad gäller vissa saker. Och där behöver jag nog lite tips för att få det bra.

Hårdvaran som servern kör är egentligen vanlig PC-grejer (Asrock Z370-planka, 8700k-CPU, 32 GB RAM). Som operativ installerade jag Ubuntu 18.04 LTS, som efter det uppdaterats till 20.04 LTS, vilket körs på en 256 GB M2-sticka. För lagring har jag 2 WD Red som körs i Raid 1, vilket jag sen gör en "intern backup" på till ytterligare en WD Red som sitter i servern. Tanken var att ha en lagring på annan ort också, men dit har jag inte kommit mer än i tanken.

Summerat vad gäller diskar är alltså
M2-sticka: OS
2xHDD i Raid 1: Dockers och lagring av data
HDD: Intern backup av dockers och lagrad data

Allt som körs på servern görs i form av dockers och de som jag kör är Home Assistant, deconz, zwavejs2mqtt, mqtt, grafana, influxdb, Frigate NVR, deepstack & doubletake (bildanalys från kameror), unifi-controller, glances, plex, nextcloud, sonarr, radarr, sabnzbd, letsencrypt. Allt detta jobbar mot mina diskar i Raid 1.

Inget av det jag kör är superkrävande för CPU och RAM (har en Google Coral TPU för bildanalys), men diskarna går tungt ibland och jag får i perioder vad jag tolkar som höga värden för CPU_IOWAIT. Det syns ju förstås bara om man är inne och kollar loggar, i praktiken så är det väl när sabnzbd packar upp saker som det märks tydligast för det tar otroligt lång tid jämfört med att ladda ner grejerna. Men allt jobbar mot samma diskar i Raid 1 vilket säkert förklarar det.

Det jag går och funderar över är om jag borde tänka om hur jag gör min lagring. Jag funderar på om jag borde skaffa mig en SSD och låta alla dockers köra där. Eventuellt även köra lagring av data (bilder och dylikt) där. Sen backa upp den till mina diskar i Raid. Den sista disken kanske inte ens behövs längre, eller så lägger jag all filer för Plex-servern där så att när sabnzbd packar upp så kan den läsa och skriva på två olika diskar.

Det jag tänker är alltså.
M2-sticka: OS
SSD: Dockers och lagring av data
HDD i Raid 1: Backup av dockers och lagrad data
HDD: Eventuellt lagring av video-filer för Plex-servern.

Tänker jag rätt eller har ni några andra tips?

Håll det enkelt men använd bra grejer, är mitt förslag.
Om du inte har behov av större mängder diskplats än vad som får plats på en ensam disk, kör en disk per volym istället för RAID och satsa på bra backup istället.

Helt rätt tänkt med SSD för VM-/containerändamål. Köper du en enterprise-SSD med power loss protection kan du köra vilket filsystem som helst på den; XFS eller EXT4 om du bara vill få ut rå prestanda; ZFS eller möjligen btrfs om du vill ha lite mer möjligheter på bekostnad av lite prestanda.
Om du verkligen vill köra RAID hemma är min personliga åsikt att rätt väg framåt är ett HBA-kort och ZFS för dina datadiskar. Innan du sätter ZFS i "produktion", läs på en del om att trimma in systemet för dina behov; särskilt med tanke på blockstorlek beroende av vad du använder varje filsystem till. Jim Salter på Ars Technica har en del nyttiga artiklar både där och på sin privata blogg.

Cachedisk på SSD är i min erfarenhet kontraproduktivt jämfört med att bara stoppa mer RAM i datorn: du har sannolikt inte hundratals eller tusentals användare som värmer upp din cache så du har större nytta än nackdel av den vid läsning, och du förvarar troligen inte skrivintensiva saker på mekanisk disk så du skulle ha nytta av skrivcache på SSD.

Permalänk
Medlem

Återigen, tack för svaren.

Då blir det att fixa en SSD då

Kanske borde överväga att slopa RAIDen också. I ärlighetens namn vet jag inte ens hur jag skulle göra för att återställa data om den ena speglade disken skulle gå sönder :S .

Permalänk
Medlem

En RAID i en köpeNAS är oftast utformad att du kan ta ut den gamla trasiga disken och sätta in en ny - minst lika stor disk (och är rensad på MBR/UEFI-sektorer om det är redan använd disk) så startar synkningen automagiskt.

Bra och regelbunden backuprutin (med revision/generationsbackupper på helst mer än en lagringsställe/media-set så att man kan gå tillbaka några generationer om man tex. fått sin lagrings filer utbytta mot ransomware-krypterade dito) och inte krav på 24/7 upptid utan kan klara av till 1 dygns nedtid (för backupåterställning) så är det ofta en mer datasäker metod än en RAID.

Problemet med RAID är att många tror att det också är en backup och struntar i backuprutiner helt. - och en RAID skyddar inte mot ransomware eller användarfel[1] då katastrofen sker lika fort och nära synkront på båda diskarna samtidigt!.

[1] med BTRFS över RAID och tex. bakgrundsprogram som snapper som gör dagliga snapshot dolt och skrivskyddat (och utan att ta extra diskplats) så kan man förvisso ha en viss skydd mot ransomware - tex. Synology plus-modeller kan man får sådant om man slår på det - men hjälper inte om själva NAS:en blir kapad på root/admin-nivå vilket är det som hänt numera på de flesta stora köpeNAS-tillverkarna - alltså regelbunden backup på media som är urkopplad vid förvaring mellan backupperna behöver man ändå ha då och då för att det inte skall bli full dataförlust den dagen när angreppet sker...

Permalänk
Medlem

En följdfråga på att skaffa en SSD:

Mitt moderkort (ASRock Z370M-ITX/AC) har bara en M2-plats som redan är upptagen. Alternativen för SSD-disk är då antingen en 2.5" SSD via SATA eller M2-sticka via PCIe-adapter. Vilken väg hade ni gått?

PCIe-platsen på mitt moderkort är gen 3 x16 så finns ju mer prestanda där, men frågan är om jag vinner nåt på det i praktiken. Prismässigt ligger ju t.ex. Samsung 870 EVO 1 TB (SATA) på ca 1200 kr och Samsung 970 EVO 1 TB (M2) på ca 1300 kr. M2 kräver adapter för typ 3-400 kr så prismässigt kanske 4-500 kr mer (motsvarar 30-40 %).

M2 med adapter är ju lockande, men prestandaökningen kanske aldrig märks i praktiken? Och brukar PCIe till M2-adaptrar vara strulfria?