technische-infrastructuur:storage

๐Ÿ’พ Storage

Storage vormt een belangrijk onderdeel van de Tulpencraft-infrastructuur.

Minecraft is sterk afhankelijk van snelle en betrouwbare opslag. Niet alleen de serverbestanden zelf staan op disk, maar ook werelddata, chunks, plugins, configuraties, logs en eventuele backups.

Binnen Tulpencraft wordt onderscheid gemaakt tussen:

  • ๐Ÿ’ฟ fysieke NVMe-opslag op de Proxmox-host;
  • ๐Ÿ–ฅ๏ธ virtuele disks van de Tulpencraft-VM's;
  • ๐Ÿ“ filesystems binnen de VM's;
  • ๐ŸŒ Minecraft-werelddata;
  • ๐Ÿ“‹ logs en configuraties;
  • ๐Ÿ’พ backups.

Tulpencraft draait momenteel als virtuele infrastructuur op de Proxmox-node hv002.

De Proxmox-host beschikt over NVMe-storage, waardoor de virtuele machines van Tulpencraft gebruikmaken van snelle onderliggende opslag.

De huidige architectuur is:

๐Ÿ–ฅ๏ธ Fysieke Proxmox-host
โ””โ”€โ”€ hv002
    โ”‚
    โ””โ”€โ”€ โšก NVMe storage
         โ”‚
         โ”œโ”€โ”€ ๐Ÿ–ฅ๏ธ mc-proxy001
         โ”‚   โ”œโ”€โ”€ Velocity
         โ”‚   โ”œโ”€โ”€ Lobby
         โ”‚   โ”œโ”€โ”€ Database
         โ”‚   โ””โ”€โ”€ overige netwerkdiensten
         โ”‚
         โ”œโ”€โ”€ ๐ŸŽฎ Survival VM
         โ”‚
         โ”œโ”€โ”€ ๐ŸŽฏ Events VM
         โ”‚
         โ””โ”€โ”€ โž• toekomstige Tulpencraft VM's

De fysieke storage wordt door Proxmox aan de VM's beschikbaar gesteld als virtuele opslag.

Tulpencraft schrijft niet rechtstreeks naar de fysieke NVMe-disks van hv002.

De Minecraft-servers zien hun opslag als virtuele disks die door Proxmox aan de betreffende VM worden aangeboden.


De huidige Proxmox-host hv002 maakt gebruik van NVMe-opslag.

Dit is gunstig voor Tulpencraft omdat Minecraft regelmatig veel kleine lees- en schrijfacties uitvoert.

Vooral de volgende activiteiten kunnen veel storage-I/O veroorzaken:

  • chunkgeneratie;
  • chunkloading;
  • wereldsaves;
  • wereldgeneratie;
  • grote WorldEdit-operaties;
  • backups;
  • databaseactiviteiten;
  • pluginactiviteiten.

NVMe biedt hierbij doorgaans aanzienlijk lagere latency en hogere I/O-prestaties dan traditionele HDD-opslag.

De exacte fysieke configuratie van de NVMe-opslag, zoals:

  • aantal NVMe-drives;
  • merk en model;
  • RAID-configuratie;
  • controller;
  • filesystem;
  • Proxmox-storagebackend;

wordt niet door Tulpencraft beheerd en wordt daarom niet als onderdeel van de Tulpencraft-configuratie vastgelegd.


Iedere Tulpencraft-VM krijgt รฉรฉn of meerdere virtuele disks.

Binnen de VM ziet Linux deze bijvoorbeeld als:

/dev/sda
/dev/sdb

De exacte device-namen zijn afhankelijk van de virtuele hardwareconfiguratie.

De opslag volgt vervolgens de Linux-opbouw:

Virtuele disk
     โ”‚
     โ–ผ
Partitie
     โ”‚
     โ–ผ
Filesystem
     โ”‚
     โ–ผ
Mountpoint
     โ”‚
     โ–ผ
Applicatie

De Minecraft-data wordt binnen Tulpencraft onder:

/srv/minecraft/

geplaatst.

Een server kan bijvoorbeeld bestaan uit:

/srv/minecraft/survival/
โ”œโ”€โ”€ world/
โ”œโ”€โ”€ world_nether/
โ”œโ”€โ”€ world_the_end/
โ”œโ”€โ”€ plugins/
โ”œโ”€โ”€ config/
โ””โ”€โ”€ logs/

Hierdoor blijft de applicatiedata duidelijk gescheiden van de overige systeemdirectories.


Minecraft-werelden bestaan uit een groot aantal chunkbestanden.

Bij een Survival-server kan de opslag daardoor blijven groeien naarmate spelers nieuwe gebieden ontdekken.

De omvang wordt onder andere bepaald door:

  • aantal spelers;
  • hoeveelheid verkende chunks;
  • wereldgrenzen;
  • Nether-gebruik;
  • The End;
  • gegenereerde structuren;
  • plugins;
  • mapgeneratie;
  • gebruiksduur.

Daarom wordt niet alleen gekeken naar de huidige hoeveelheid vrije ruimte, maar ook naar de groeisnelheid van de werelddata.


Voor Minecraft is niet alleen de totale opslagcapaciteit belangrijk.

Ook de prestaties van de opslag zijn relevant.

Belangrijke factoren zijn:

  • latency;
  • IOPS;
  • throughput;
  • queue depth;
  • filesystem performance;
  • virtualisatie-overhead;
  • storage contention.

De NVMe-opslag van hv002 biedt hiervoor een sterke basis.

Dit is met name relevant wanneer meerdere VM's tegelijkertijd actief zijn. Niet alleen Tulpencraft maakt immers gebruik van de fysieke host.


Storage wordt periodiek gecontroleerd.

df -h
df -ih
lsblk
lsblk -f
sudo du -xh /srv/minecraft --max-depth=1 | sort -h

Voor een specifieke server:

sudo du -xh /srv/minecraft/survival --max-depth=1 | sort -h

Een filesystem mag niet onbeperkt vollopen.

Wanneer een filesystem volledig volloopt kunnen onder andere:

  • Minecraft niet meer schrijven;
  • logs niet meer worden bijgewerkt;
  • werelddata niet meer worden opgeslagen;
  • databases problemen krijgen;
  • services crashen;
  • updates mislukken.

Ook op Proxmox-niveau kan een volledig gevulde storage problemen veroorzaken voor meerdere VM's.

Storagecapaciteit wordt daarom beschouwd als een operationele resource die actief bewaakt moet worden.


Bij ruimteproblemen wordt eerst vastgesteld waar de ruimte naartoe gaat.

df -h

Daarna bijvoorbeeld:

sudo du -xh / --max-depth=1 2>/dev/null | sort -h

En specifiek voor Minecraft:

sudo du -xh /srv/minecraft --max-depth=2 | sort -h

Mogelijke oorzaken zijn:

  • werelddata;
  • oude backups;
  • oude logs;
  • crash reports;
  • tijdelijke bestanden;
  • oude plugins;
  • ongebruikte serverbestanden.

Minecraft-wereldbestanden worden nooit zomaar verwijderd.

Eerst wordt vastgesteld wat de bestanden zijn en of ze daadwerkelijk niet meer nodig zijn.


Minecraft produceert logbestanden die eveneens opslagruimte gebruiken.

Bijvoorbeeld:

/srv/minecraft/<server>/logs/

Een logdirectory kan worden gecontroleerd met:

du -sh /srv/minecraft/*/logs

Naast Minecraft-logs bestaan er onder andere:

  • systemd journal logs;
  • audit logs;
  • SELinux logs;
  • pluginlogs;
  • applicatielogs.

Logging maakt daarom onderdeel uit van de totale storageplanning.


De huidige Tulpencraft-database draait intern op:

mc-proxy001

De database gebruikt daarmee eveneens storage van deze VM.

In de huidige ontwikkelfase is dit bewust eenvoudig gehouden.

Wanneer Tulpencraft groeit, kan de database worden afgesplitst naar een eigen VM.

Bijvoorbeeld:

mc-proxy001
โ”œโ”€โ”€ Velocity
โ””โ”€โ”€ Lobby
 
        +
 
mc-db001
โ””โ”€โ”€ MySQL / MariaDB

Hierdoor kunnen databasebelasting, opslag en backups onafhankelijker worden beheerd.


Backups mogen bij voorkeur niet uitsluitend op dezelfde storage blijven staan als de VM die wordt geback-upt.

Bij een probleem met de onderliggende storage kunnen anders zowel productiegegevens als backups worden geraakt.

Gewenste situatie:

๐Ÿ–ฅ๏ธ Tulpencraft VM
       โ”‚
       โ–ผ
๐Ÿ’พ Backup
       โ”‚
       โ–ผ
๐Ÿ“ฆ Aparte backup-opslag

De concrete backupstrategie wordt beschreven op:


Snapshots kunnen nuttig zijn vรณรณr grote wijzigingen aan VM's.

Bijvoorbeeld vรณรณr:

  • systeemwijzigingen;
  • migraties;
  • configuratiewijzigingen;
  • upgrades.

Een snapshot is echter geen vervanging voor een backup.

Snapshots gebruiken bovendien extra storagecapaciteit en moeten daarom niet onbeperkt worden bewaard.


Wanneer Tulpencraft verder groeit, kan de infrastructuur verder worden opgesplitst.

Een mogelijke toekomstige architectuur:

                ๐Ÿ–ฅ๏ธ Proxmox Node
                       โ”‚
              โšก NVMe storage
                       โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚              โ”‚              โ”‚
        โ–ผ              โ–ผ              โ–ผ
   mc-proxy001    mc-db001       mc-lobby001
        โ”‚
        โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                       โ”‚
                        ๐Ÿ–ฅ๏ธ Game server node
                                       โ”‚
                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                    โ”‚                  โ”‚                  โ”‚
                    โ–ผ                  โ–ผ                  โ–ผ
               Survival             Events           SkyBlock

Afhankelijk van de benodigde resources kan dit worden uitgevoerd op:

  • รฉรฉn krachtige Proxmox-node;
  • meerdere Proxmox-nodes;
  • een afzonderlijke game-servernode;
  • of een combinatie van fysieke en virtuele servers.

Wanneer de beschikbare storage onvoldoende wordt, zijn verschillende opties mogelijk:

De virtuele disk kan worden uitgebreid wanneer de onderliggende Proxmox-storage hiervoor voldoende capaciteit heeft.

Een extra virtuele disk kan worden gebruikt voor bijvoorbeeld:

/srv/minecraft/

Dit kan nuttig zijn om Minecraft-data los te koppelen van het operating system.

Wanneer de fysieke host onvoldoende capaciteit heeft, kan extra storage worden toegevoegd of kan worden gemigreerd naar een andere storageomgeving.

Bij verdere groei kan Tulpencraft uiteindelijk gebruikmaken van eigen fysieke infrastructuur.


Storage is onderdeel van de totale beschikbaarheid van Tulpencraft.

Een storageprobleem kan zich bijvoorbeeld ontwikkelen als:

๐Ÿ’พ Storageprobleem
       โ”‚
       โ–ผ
๐Ÿ“€ I/O-fouten
       โ”‚
       โ–ผ
๐Ÿ–ฅ๏ธ VM-problemen
       โ”‚
       โ–ผ
๐ŸŽฎ Minecraft-problemen

Daarom wordt storage niet alleen als capaciteitsprobleem gezien, maar ook als onderdeel van beschikbaarheid en continuรฏteit.


Storage kan gevoelige gegevens bevatten.

Denk bijvoorbeeld aan:

  • databasebestanden;
  • configuraties;
  • logs;
  • spelersgegevens;
  • pluginconfiguraties;
  • backups.

Toegang tot storage wordt daarom beperkt tot bevoegde systeemgebruikers.

Linux-bestandsrechten, SELinux en VM-isolatie vormen hierbij belangrijke beveiligingslagen.

Zie ook:


OnderdeelHuidige situatie
๐Ÿ–ฅ๏ธ VirtualisatieProxmox VE
๐Ÿ–ฅ๏ธ Hosthv002
๐Ÿข HostingOverride.nl / FastWebHosting.nl
โšก Fysieke storageNVMe
๐Ÿ’ฟ StoragegebruikVia Proxmox
๐Ÿ–ฅ๏ธ MinecraftVirtuele machines
๐Ÿ“ Minecraft-data/srv/minecraft/
๐Ÿ—„๏ธ DatabaseMomenteel intern op mc-proxy001
๐Ÿ’พ BackupsZie Backups
๐Ÿ“Š MonitoringZie Monitoring & logging

De fysieke NVMe-configuratie van hv002 wordt verder niet gedetailleerd gedocumenteerd, omdat deze onderdeel is van de hostingomgeving van Override.nl / FastWebHosting.nl.


Binnen Tulpencraft gelden voor storage de volgende uitgangspunten:

  1. ๐Ÿ’พ Storage moet voldoende capaciteit hebben voor groei.
  2. โšก Storage-performance is belangrijk voor Minecraft.
  3. ๐Ÿšจ Filesystems worden niet bewust volledig gevuld.
  4. ๐ŸŒ Minecraft-werelddata wordt niet zonder controle verwijderd.
  5. ๐Ÿ’พ Backups worden bij voorkeur op afzonderlijke storage bewaard.
  6. ๐ŸงŠ Snapshots zijn geen backups.
  7. ๐Ÿ–ฅ๏ธ VM-storage wordt beheerd vanuit Proxmox.
  8. ๐Ÿ“Š Storagegebruik wordt gemonitord.
  9. ๐Ÿ” Storage wordt volgens least-privilege beveiligd.
  10. ๐Ÿ“ˆ Bij groei wordt tijdig opgeschaald.

Opmerking: de exacte fysieke NVMe-configuratie van hv002 valt onder het beheer van de hostingomgeving en kan in de toekomst wijzigen.

  • technische-infrastructuur/storage.txt
  • Laatst gewijzigd: 2026/08/23 11:06
  • door rroethof