Release av Linux-kÀrna 7.0

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds lanseringen av kÀrnan Linux 7.0. Bland de mest anmÀrkningsvÀrda förÀndringarna: regler för anvÀndning av AI-assistenter, integration av Rust i kÀrnans huvudfunktioner, förbÀttrad prestanda för vÀxling, aktivering av PREEMPT_LAZY-lÀget som standard, stöd för filter i io_uring-operationer, ny filsystem Nullfs, infrastruktur för fserror, övervakningsverktyg för XFS, stöd för ommappning i Btrfs, aktivering av NFS 4.1 som standard och integration av post-kvantum-kryptoalgoritmen ML-DSA, aktivering av AccECN i nÀtverksunderlaget och inledande stöd för WiFi 8.

Nummer 7.0 tilldelades eftersom det i grenen 6.x hade samlats tillrÀckligt med utgÄvor för att byta det första numret (nÀr version 6.0 slÀpptes följde den direkt efter 5.19). Bytet av numrering görs av estetiska skÀl och Àr ett formellt steg som tar bort obehaget frÄn att ha ett stort antal utgÄvor i serien.

I den nya versionen ingÄr 15624 korrigeringar frÄn 2477 utvecklare, patchens storlek Àr 56 MB (Àndringarna berör 18053 filer, 704060 rader kod har lagts till, 278132 rader har tagits bort). I den föregÄende utgÄvan fanns det 15657 korrigeringar frÄn 2237 utvecklare, patchens storlek var 52 MB. UngefÀr 51% av alla Àndringar i 7.0 rör enhetsdrivrutiner, omkring 11% av Àndringarna Àr relaterade till uppdatering av hÄrdvaruspecifik kod, 14% har att göra med nÀtverksstacken, 5% med filsystemen och 3% med interna kÀrnunderkategorier.

De viktigaste nyheterna i kÀrnan 7.0 (1, 2, 3):

  • Disksubsystem, in- och utmatning och filsystem
    • Fserror-infrastrukturen har implementerats och ett API har lagts till för att hĂ€mta information om in-/utdatafel och metadataförlust vid filhantering. Den föreslagna infrastrukturen enhetliggör överföringen av felinformation till anvĂ€ndarrummet genom mekanismen fsnotify i filsystemen.
    • I XFS har nya funktioner för att övervaka tillstĂ„ndet hos filsystemet frĂ„n anvĂ€ndarutrymmet lagts till. En ioctl-operation, XFS_IOC_HEALTH_MONITOR, har introducerats, vilket returnerar en filbeskrivare genom vilken information om fel relaterade till skador pĂ„ metadata eller in-/utmatningsfel kan erhĂ„llas, samt övervaka FS-tillstĂ„nd som avmontering och nedstĂ€ngning. Dessutom har en systemd-hanterad bakgrundsprocess, xfs_healer, föreslagits, som bearbetar hĂ€ndelser om FS-tillstĂ„nd frĂ„n anvĂ€ndarutrymmet och vid behov automatiskt startar Ă„terstĂ€llningsprocedurer.
    • Filsystemet Btrfs har fĂ„tt experimentellt stöd för en struktur kallad "remap tree", som i framtiden kan anvĂ€ndas som ett mellanlager vid in- och utmatningsoperationer. Det tillagda stödet innebĂ€r att efter att data har flyttats pĂ„ lagringsenheten, istĂ€llet för att uppdatera alla relaterade strukturer, sparas de gamla och nya dataadresserna i den extra strukturen "remap tree", och vid Ă„tkomst till data maskeras adresserna. Den nya metoden presenteras som mer pĂ„litlig och flexibel samt förenklar ytterligare funktionalitetsextensioner för Btrfs.
    • Btrfs stöder direkt in-/utmatning i situationer dĂ€r blockstorleken överstiger systemets sidstorlek.
    • Den nya filsystemet "Nullfs" har lagts till, vilket kan anvĂ€ndas som en placeholder för root-filsystemet. Nullfs Ă€r alltid tomt, innehĂ„ller inga data och stöder inga Ă€ndringar. Syftet med Nullfs Ă€r att anvĂ€ndas som det initiala filsystemet för att förenkla systemets uppstart – ovanpĂ„ Nullfs monteras andra filsystem, och systemanropet pivot_root() anvĂ€nds för att vĂ€xla till root-filsystemet istĂ€llet för att rensa innehĂ„llet i initramfs och anvĂ€nda det relaterade root-filsystemet.
    • Uppdatering av filers modifieringstid har implementerats i icke-blockerande lĂ€ge. Tidigare returnerade anropet file_update_time_flags() med flaggan IOCB_NOWAIT ett fel "-EAGAIN", vilket förhindrade anvĂ€ndning av direkt skrivning i icke-blockerande lĂ€ge.
    • I filsystemerna har stöd för meddelandeblockeringar (lease) översatts till en separat valbar funktion. Som standard aktiveras inte denna mekanism pĂ„ grund av problem med filsystemen, som ursprungligen inte var avsedda för dess anvĂ€ndning. Till exempel stöds det inte av filsystemen 9p och cephfs.
    • I filsystemet EROFS (Extendable Read-Only File System), avsett för anvĂ€ndning pĂ„ partitioner som Ă€r tillgĂ€ngliga i skrivskyddat lĂ€ge, anvĂ€nds standardmĂ€ssigt LZMA-algoritmen för komprimering. Algoritmerna DEFLATE och Zstandard Ă€r nu tillgĂ€ngliga som alternativ och Ă€r inte lĂ€ngre markerade som experimentella. Dela poster i sidcache (page-cache) har implementerats för identiska filer i separata EROFS-filsystem.
    • LĂ€get laptop_mode, som sparar energi genom att skjuta upp och sammanfoga skrivoperationer pĂ„ hĂ„rddisken för att förlĂ€nga diskens sömnperiod och minska antalet uppvaknanden, har tagits bort. Detta lĂ€ge har förlorat relevans, eftersom moderna mobila enheter har hĂ„rddiskar ersatta av solid state-enheter.
    • Filsystemet F2FS har övergĂ„tt till att anvĂ€nda stora minnessidor (large folios).
    • Arbetet med drivrutinen ntfs3, utvecklad av Paragon Software, har Ă„terupptagits. Stöd för filoperationer baserade pĂ„ iomap har lagts till, alternativ som llseek SEEK_DATA/SEEK_HOLE har implementerats, och lĂ€get delalloc för fördröjd blockallokering har lagts till. Under tiden godkĂ€ndes en ny implementation av NTFS — ntfsplus, utvecklad för att ersĂ€tta ntfs3, i utvecklarlistan för kĂ€rnor i februari för inkludering i en av framtida kĂ€rnversioner.
    • Som standard Ă€r version 4.1 av NFS-protokollet (CONFIG_NFS_V4_1) aktiverad vid byggnation. ExportlĂ„sning via NFS för specialiserade pseudofilsystem, sĂ„som pidfs och nsfs, har sĂ€kerstĂ€llts. I NFSD har en experimentell möjlighet att anvĂ€nda POSIX ACL implementerats och stöd för dynamisk justering av trĂ„dpoolen beroende pĂ„ belastning har lagts till.
  • Minne och systemtjĂ€nster
    • De officiella reglerna för anvĂ€ndning av AI-assistenter och införande av automatiskt genererat innehĂ„ll har godkĂ€nts. Vid överföring av genererad kod ska den mĂ€rkas med den anvĂ€nda AI-assistentens namn genom taggen «Assisted-by». AI-assistenter fĂ„r inte lĂ€gga till taggen «Signed-off-by» — personen som överförde patchen anses vara dess författare, bĂ€r ansvar för den överförda Ă€ndringen och garanterar dess kvalitet. Utvecklare Ă„lĂ€ggs att genomföra manuell granskning av den kod som erhĂ„llits via AI och kontrollera att resultatet uppfyller licenskraven.
    • Stödet för Rust har övergĂ„tt frĂ„n experimentella funktioner till kĂ€rnans huvudfunktioner. Stödet för Rust Ă€r inte aktiverat som standard och leder inte till att Rust inkluderas bland de obligatoriska byggberoenden för kĂ€rnan.
    • Integrationen av mekanismen «Swap Table» i kĂ€rnan Ă€r slutförd, vilket ökar prestandan för bytehantering. FörbĂ€ttringen uppnĂ„s genom att minska konkurrensen om tillgĂ„ng till bytecacheminnet, effektivare sökning i cacheminnet och minska fragmenteringen. Backenden baserad pĂ„ Swap Table anvĂ€nds för cachelagring istĂ€llet för backend XArray, vilket i redis-benchmark-testet med BGSAVE ökade antalet behandlade förfrĂ„gningar med 22%.
    • Stödet för den nya utvidgningen Thread Safety Analysis i Clang 22 har lagts till, vilket möjliggör identifiering av potentiella race-tillstĂ„nd och fel orsakade av felaktig lĂ„sning vid kompilering. Utvidgningen erbjuder en serie attribut, sĂ„som GUARDED_BY(
), REQUIRES(
), RELEASE(
) och ACQUIRE(
), som gör det möjligt att markera funktioner som skyddas av lĂ„s och skilja mellan lĂ„sens verkningsomrĂ„den (definiera kontext). Vid kompilering utförs en kontroll av korrekt anvĂ€ndning av synkroniseringsprimitiver, sĂ„som mutexar, baserat pĂ„ bedömning av aktivitet eller inaktivitet i den relaterade kontexten.
    • Flaggan OPEN_TREE_NAMESPACE har lagts till i systemanropet open_tree för att förenkla konfigurationen av isolerade containrar och snabba upp start av containrar pĂ„ system med mĂ„nga monteringspunkter. PĂ„ liknande sĂ€tt som OPEN_TREE_CLONE kopierar den nya flaggan endast den angivna monteringsstrukturtrĂ€det, men istĂ€llet för en lokal filbeskrivare returnerar den en filbeskrivare i det nya namespaces för monteringspunkter dĂ€r det kopierade trĂ€det monteras ovanpĂ„ kopian av den verkliga rotfilsystemet. Flaggan OPEN_TREE_NAMESPACE efterfrĂ„gas för att undvika separat utförande av operationer som unshare(CLONE_NEWNS) och pivot_root(), som anvĂ€nds vid skapande av containrar.
    • Systemanropet rseq har fĂ„tt en mekanism för att utvidga tidskvoter (time slice), vilket möjliggör ytterligare processortid för oavbruten exekvering av kritiska sektioner. IdĂ©n Ă€r att undvika avbrott frĂ„n schemalĂ€ggaren under kritiska sektioner med en aktiv lĂ„s vilket leder till överlĂ€mnande av kontroll till andra trĂ„dar som anvĂ€nder resursen varpĂ„ lĂ„sen fortfarande Ă€r aktiva. Utvidgningen av tidskvoten görs utan ytterligare överhead, men utan strikta garantier som erbjuds vid fullstĂ€ndig prioriteringsreglering.
    • För arkitekturerna arm64, loongarch, powerpc, riscv, s390 och x86 har standardpreemptionslĂ€get i schemalĂ€ggaren Ă€ndrats frĂ„n PREEMPT_NONE till PREEMPT_LAZY. Antalet tillgĂ€ngliga lĂ€gen har reducerats frĂ„n fyra till tvĂ„ — PREEMPT_FULL och PREEMPT_LAZY (lĂ€gena PREEMPT_NONE och PREEMPT_VOLUNTARY lĂ€mnas kvar endast för arkitekturer som inte stöder PREEMPT_FULL och PREEMPT_LAZY). LĂ€get PREEMPT_LAZY tillĂ€mpar en modell för full preemption (PREEMPT_FULL) för realtime-uppgifter (RR/FIFO/DEADLINE), men fördröjer preemption av vanliga uppgifter (SCHED_NORMAL) till tickgrĂ€nsen. Denna fördröjning leder till en minskning av fallen av preemption av lĂ„sinhavare, vilket möjliggör att prestationen nĂ€rmar sig konfigurationer som anvĂ€nder modellen för frivillig preemption, dvs. PREEMPT_LAZY sparar möjligheterna för full preemption av realtime-uppgifter, men minimerar prestationsfall för vanliga uppgifter.

      Aktivering av PREEMPT_LAZY har lett till en allvarlig regression som halverar PostgreSQL-prestanda pÄ ARM64-system. För att ÄtgÀrda prestandafallet föreslÄs PostgreSQL-utvecklarna att anvÀnda alternativet PR_RSEQ_SLICE_EXTENSION för att minska sannolikheten för att lÄsÀgarna trÀngs ut.

    • Överföringen av Ă€ndringar frĂ„n Rust-for-Linux-grenen, relaterade till anvĂ€ndning av Rust som andrasprĂ„k för utveckling av drivrutiner och kĂ€rnmoduler, fortsĂ€tter. Tack vare det tidigare integrerade biblioteket "syn", som underlĂ€ttar skrivningen av komplexa makron, har storleken pĂ„ Rust-koden i kĂ€rnan kunnat minskas genom att förenkla definitionerna av befintliga procedurmakron. Möjligheterna för biblioteken kernel, macros och pin-init har utökats.
    • I det asynkrona in- och utmatningssystemet io_uring har en ny funktionalitet lagts till för att anvĂ€nda icke-cirkulĂ€ra köer (non-circular submission queue), som cachas mer effektivt i situationer dĂ€r en begĂ€ran slutförs innan Ă„terkomsten frĂ„n systemanropet.
    • I eBPF-subsystemet har binĂ€r sökning införts i mekanismen BTF (BPF Type Format), som tillhandahĂ„ller information för typkontroll i BPF-pseudokod, för att söka efter felsökningsinformation, vilket har ökat effektiviteten vid laddning av BPF-program. Stöd för implicita argument vid anrop av kfunc (kĂ€rnfunktioner som Ă€r tillgĂ€ngliga för anvĂ€ndning i BPF-program) har lagts till, definierade med flaggan KF_IMPLICIT_ARGS.
    • Koden för att stödja det inledande RAM-diskettprogrammet (initrd) baserat pĂ„ linuxrc, som lĂ€nge har utsetts som förĂ„ldrad, har tagits bort. De Ă„terstĂ„ende implementeringarna av initrd planeras att tas bort Ă„r 2027. IstĂ€llet för initrd bör initramfs anvĂ€ndas (skillnaden Ă€r att initrd placerar den initiala startmiljön i en diskavbildning, medan initramfs gör det i ett filsystem).
    • I blockanordningen zram, som anvĂ€nds för komprimerad lagring av vĂ€xlingspartitioner i minnet, har logiken för hantering av komprimerade minnessidor förĂ€ndrats vid valfri flytt av data till permanent lagring vid fyllning av tillgĂ€ngligt arbetsminne. Tidigare packades minnessidor upp innan de skrevs till den fysiska lagringsenheten, men nu sparas de som de Ă€r i komprimerad form, vilket minskar belastningen pĂ„ CPU och sparar energi vid autonom drift.
    • I verktyget timerlat, som Ă€r avsett för att mĂ€ta förseningar vid arbetet med schemalĂ€ggaren, har en alternativ "—bpf-action" lagts till för att köra BPF-program om ett definierat tröskelvĂ€rde överskrids.
    • I ftrace-systemet har instĂ€llningen "bitmask-list" lagts till för att visa bitmasker i ett lĂ€sbart format (i form av en lista av bitar, snarare Ă€n ett hexadecimalt tal). Tracefs har fĂ„tt nya funktioner för granskning av filter och triggers. Kommandot "perf sched stats" har lagts till för att samla in och visa statistik om schemalĂ€ggarens verksamhet.
    • Byggalternativen LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE och LOGO_LINUX_CLUT224_FILE har lagts till för att definiera filen med logotypbilden som kommer att visas vid kĂ€rnans boot, istĂ€llet för den vanliga logotypen med pingvinen Tux.
  • Virtualisering och sĂ€kerhet
    • I systemet för asynkron in-/utdata io_uring har möjligheten att koppla BPF-program med filter implementerats, som kontrollerar vad specifika SQE (Submission Queue Entry) operationer kan göra (liknande systemanrop i io_uring). Den tillagda funktionen Ă€r en motsvarighet till systemanropsfilter. Filtrena kan kopplas till specifika uppgifter och de Ă€rver vid skapande av andra processer efter anrop av fork(). NĂ€r aktiva filter finns kan de tillagda filtren endast stĂ€lla ytterligare begrĂ€nsningar, men inte stĂ€nga av befintliga. Den implementerade funktionen möjliggör blockering av metoder för att kringgĂ„ systemanropsfilter i sandbox-miljöer, baserat pĂ„ att utföra liknande operationer, tillhandahĂ„llna i io_uring, istĂ€llet för systemanrop.
    • I SELinux har möjligheten att styra Ă„tkomst till BPF-token lagts till, vilket tillĂ„ter oprivilegierade processer att utföra vissa privilegierade operationer med BPF, exempelvis ladda BPF-program i kĂ€rnan och skapa map-strukturer.
    • Stödet för algoritmen för digital signaturgenerering ML-DSA (CRYSTALS-Dilithium), som bygger pĂ„ gitterteori och Ă€r motstĂ„ndskraftig mot bruteforce-attacker med kvantdatorer, har lagts till. Möjligheten att anvĂ€nda ML-DSA för autentisering av kĂ€rnmoduler har tillhandahĂ„llits.
    • Möjligheten att anvĂ€nda signaturalgoritmer med SHA-1 för att signera kĂ€rnmoduler har tagits bort (stödet för att ladda signerade moduler kvarstĂ„r).
    • I NETFILTER_PKT-auditposten har fĂ€lten 'sport' och 'dport' lagts till för att inspektera nĂ€tverksportnummer, och inte bara. IP-adresser.
    • För system med RISC-V-arkitektur har stöd för Zicfiss- och Zicfilp-tillĂ€gg implementerats, vilket ger hĂ„rdvarumöjligheter för att tillĂ€mpa CFI (Control Flow Integrity) skydd, som blockerar störningar i den normala exekveringsordningen av instruktioner (control flow) till följd av exploateringar som Ă€ndrar funktionpekare lagrade i minnet.
    • I hypervisorn KVM har möjligheten att överföra information till gĂ€stsystem om processorns stöd för ERAPS (Enhanced Return Address Predictor Security) implementerats, vilket gör det möjligt att undvika vissa CPU-tillstĂ„ndsrensningsoperationer nĂ€r kontrollen Ă„terstĂ€lls frĂ„n gĂ€stsystemet till vĂ€rden. Dessutom har stöd för att knyta utrustning för prestandabevakning (PMU, Performance Monitoring Unit) till gĂ€stsystem lagts till, vilket ökar precisionen i profileringen jĂ€mfört med anvĂ€ndningen av emulerade PMU.
    • I drivrutinen för hypervisorn Hyper-V har stöd för debugfs-grĂ€nssnittet lagts till för att se statistiken över hypervisorns arbete.
  • NĂ€tverkssystemet
    • AccECN (Accurate Explicit Congestion Notification) tillĂ€gget har aktiverats som standard, vilket implementerar en förbĂ€ttrad version av ECN-tillĂ€gget och gör det möjligt för vĂ€rdar att, vid överbelastning, markera IP-paket istĂ€llet för att slĂ€nga dem, vilket ger möjlighet att identifiera uppkomsten av de första tecknen pĂ„ köbildning i kommunikationskanaler utan paketförlust. Den ursprungliga ECN-tillĂ€gget har en begrĂ€nsning som tillĂ„ter endast en överbelastningssignal per cykel av dataöverföring (RTT, Round-Trip Time, skicka begĂ€ran och ta emot svar). AccECN tar bort denna begrĂ€nsning och ger mottagaren möjlighet att skicka mer Ă€n en överbelastningsmarkering till avsĂ€ndaren i TCP-paketets rubrik. Överbelastningskontrollalgoritmer kan anvĂ€nda den erhĂ„llna informationen för att reagera mer exakt pĂ„ överbelastningar och undvika abrupta minskningar av paketöverföringsintensiteten vid mindre överbelastningar.
    • I algoritmen för hantering av nĂ€tverksköer Cake har möjligheten att hantera flera köer lagts till för att fördela belastningen över flera CPU-kĂ€rnor. CAKE-algoritmen anvĂ€nds för att minska den negativa pĂ„verkan av paketbuffring pĂ„ grĂ€nsnĂ€tverksutrustning och syftar till att uppnĂ„ maximal genomströmning och minimal fördröjning Ă€ven pĂ„ lĂ„ngsamma kommunikationskanaler.
    • I VSOCK-socketar, som anvĂ€nds för interaktion med virtuella maskiner, har stöd för nĂ€tverksnamnrymder (network namespace) lagts till.
    • En grundlĂ€ggande implementation av den framtida WiFi 8-standarden (802.11bn, Ultra High Reliability WiFi) har lagts till.
    • Optimeringar har lagts till som har ökat prestandan vid bearbetning av inkommande UDP-paket med 12% under stresstester i ett 100-gigabit-nĂ€tverk.
  • Utrustning
    • I AMDGPU-drivrutinen har stöd för IP-block, som anvĂ€nds i nya AMD GPU:er, implementerats, sĂ„som SMUIO 15.x, PSP 15.x, IH 6.1.1/7.1, MMHUB 3.4/4.2, GC 11.5.4/12.1, SDMA 6.1.4/7.1/7.11.4 och JPEG 5.3.
    • I Nouveau-drivrutinen har frekvenshanteringen förbĂ€ttrats pĂ„ system med Tegra 186+.
    • I i915-drivrutinen har grundlĂ€ggande stöd för display-IP-blocket Xe3p_LPD, som anvĂ€nds i Intel Nova Lake-P-processorer, lagts till.
    • Arbetet med drm-drivrutinen (Direct Rendering Manager) Xe för GPU:er baserade pĂ„ Intel Xe-arkitekturen, som anvĂ€nds i Intel Arc-grafikkort och integrerad grafik, har fortsatt frĂ„n och med Tiger Lake-processorerna. Stödet för Multi Queue-lĂ€get har lagts till. Komponenter som behövs för att diagnostisera GPU-hĂ€ngningar i Mesa har lagts till. Stöd för MERT-mekanismen för hantering av GPU-minnestillgĂ„ng har lagts till.
    • Integreringen av komponenter för Nova-drivrutinen för NVIDIA GPU:er som Ă€r utrustade med GSP-firmware, som anvĂ€nds frĂ„n NVIDIA GeForce RTX 2000-serien baserad pĂ„ Turing-mikroarkitekturen, har fortsatt. Drivrutinen Ă€r skriven i Rust. I den nya versionen har förberedelser gjorts för att implementera stöd för GPU:er baserade pĂ„ Turing-mikroarkitekturen och olika interna förĂ€ndringar har genomförts.
    • Stöd för kontroller och perifera enheter med flervĂ€gs SPI (Serial Peripheral Interface) har lagts till, vilket möjliggör överföring av data i flera parallella flöden.
    • En drivrutin för kombinerade Type-C-kontakter som anvĂ€nds pĂ„ enheter med Apple Silicon-chip och som kombinerar USB3-, DP-AltMode- och Thunderbolt/USB4-grĂ€nssnitt har lagts till.
    • Stöd för ljudsubsystemen i Tegra238, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S och Focusrite Forte har lagts till.
    • Stöd har lagts till för ARM-plattformar, SoC:er och enheter: Arduino UnoQ, OrangePi 6 Plus, OrangePi CM5, Anbernic RG-DS, Realtek Kent, Qualcomm Kaanapali, Mediatek Ezurio, Facebook Anacapa, Microchip LAN9668, Khadas VIM1S, QNAP TS133, i.MX952, i.MX93, i.MX94, VHIP4 EvalBoard, TQ-Systems MBLS1028A, Agilex5, Radxa CM3J, Glymur.
    • Stöd för smartphones och surfplattor har lagts till: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 xl, Microsoft Surface Pro 11.

Samtidigt har Latinamerikas stiftelse för fri programvara utvecklat en version av det helt fria kĂ€rnan 7.0 — Linux-libre 7.0-gnu, som Ă€r rensad frĂ„n element av firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndning Ă€r begrĂ€nsad av tillverkaren. I version 7.0 har rengöring av blobar av drivrutinen iwlwifi genomförts. Koden för rengöring har uppdaterats i drivrutinerna amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783, Intel catpt. Rengöring av blobnamn i dts-filer (devicetree) för ARM-chip har genomförts.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster