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:
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:
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.
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:
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:
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:
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:
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:
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:
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:
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:
Toegang tot storage wordt daarom beperkt tot bevoegde systeemgebruikers.
Linux-bestandsrechten, SELinux en VM-isolatie vormen hierbij belangrijke beveiligingslagen.
Zie ook:
| Onderdeel | Huidige situatie | |
|---|---|---|
| ๐ฅ๏ธ Virtualisatie | Proxmox VE | |
| ๐ฅ๏ธ Host | hv002 | |
| ๐ข Hosting | Override.nl / FastWebHosting.nl | |
| โก Fysieke storage | NVMe | |
| ๐ฟ Storagegebruik | Via Proxmox | |
| ๐ฅ๏ธ Minecraft | Virtuele machines | |
| ๐ Minecraft-data | /srv/minecraft/ | |
| ๐๏ธ Database | Momenteel intern op mc-proxy001 | |
| ๐พ Backups | Zie Backups | |
| ๐ Monitoring | Zie 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:
Opmerking: de exacte fysieke NVMe-configuratie van
hv002valt onder het beheer van de hostingomgeving en kan in de toekomst wijzigen.