Inhoud

๐Ÿ’พ 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:


๐Ÿ—๏ธ Huidige opslagarchitectuur

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.


โšก NVMe-storage

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:

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:

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


๐Ÿ–ฅ๏ธ Virtuele disks

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

๐Ÿ“ Minecraft-data

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.


๐ŸŒ Werelddata

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:

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


โšก Storage-performance

Voor Minecraft is niet alleen de totale opslagcapaciteit belangrijk.

Ook de prestaties van de opslag zijn relevant.

Belangrijke factoren zijn:

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 monitoring

Storage wordt periodiek gecontroleerd.

Schijfruimte

df -h

Inodes

df -ih

Block devices

lsblk

Filesystems

lsblk -f

Grootste directories

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

๐Ÿšจ Vrije ruimte

Een filesystem mag niet onbeperkt vollopen.

Wanneer een filesystem volledig volloopt kunnen onder andere:

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.


๐Ÿงน Storage opruimen

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:

Minecraft-wereldbestanden worden nooit zomaar verwijderd.

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


๐Ÿ“‹ Logs

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:

Logging maakt daarom onderdeel uit van de totale storageplanning.


๐Ÿ—„๏ธ Database

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

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

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

Bijvoorbeeld vรณรณr:

Een snapshot is echter geen vervanging voor een backup.

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


๐Ÿ—๏ธ Toekomstige storagearchitectuur

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:


๐Ÿ“ˆ Opschalen

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

VM vergroten

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

Extra virtuele disk

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.

Extra Proxmox-storage

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

Extra fysieke infrastructuur

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


๐Ÿงฑ Storage en beschikbaarheid

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.


๐Ÿ” Security

Storage kan gevoelige gegevens bevatten.

Denk bijvoorbeeld aan:

Toegang tot storage wordt daarom beperkt tot bevoegde systeemgebruikers.

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

Zie ook:


๐Ÿ“Œ Huidige situatie

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.


๐ŸŒท Uitgangspunten

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.

๐Ÿ“š Gerelateerde documentatie

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