A Modal gyorsabb fájlrendszert épített virtuális gépeihez

A Modal új fájlrendszer-stackkel gyorsítja VM Sandboxes környezetét. A vállalat a virtio-fs teljesítményproblémái után blokkeszköz-alapú megközelítésre váltott, miközben megtartotta az ImageFS lusta betöltését.
- A Modal VM Sandboxes szolgáltatásához új fájlrendszer-stacket fejlesztett.
- A virtio-fs alatt a rekurzív chown több mint egy percig tartott, szemben a korábbi négy másodperccel.
- A virtio-blk-alapú megközelítésben a chown körülbelül 2,1 mikroszekundumot vett igénybe.
- Az ImageFS-blk megtartja a modal.Image kompatibilitását és a lusta betöltést.
- A fájlok metaadatait a vendég ext4 fájlrendszere kezeli, a gazdagép pedig blokkokat szolgáltat.
Az ImageFS adta a konténerek sebességét
A Modal 2022 áprilisában mutatta be az ImageFS-t, egy konténerekhez készült, elosztott, lusta betöltésű fájlrendszert. A rendszer induláskor csak a szükséges metaadatokat tölti le, majd egy Rust-alapú FUSE-szerveren keresztül teszi elérhetővé azokat a konténer számára.
A fájlok tartalma többrétegű, tartalomcímkézett gyorsítótárból érkezik. A rendszer helyi memóriát, regionális CDN-eket és globális blobtárolót is használ, emellett előre betölti a várhatóan szükséges adatokat. A Modal szerint ennek is köszönhető, hogy konténerei hidegindítása egy másodpercnél rövidebb lehet.
A vállalat a VM Sandboxes fejlesztésekor ugyanezt az élményt akarta biztosítani virtuális gépekben is. A konténerek közvetlenül hozzáférhetnek a gazdarendszer ImageFS-éhez, a virtuális gépek vendégkernelje azonban nem. A Modal ezért először a virtio-fs technológiát használta hídként a vendég és a gazdagép között.
Gyors indulás, lassabb fájlműveletek
A virtio-fs segítségével a VM-ek ugyanazokból a modal.Image lemezképekből indultak, mint a konténerek, és megkapták a lusta betöltést, a többrétegű gyorsítótárazást, valamint a rövid hidegindítást. A használat közbeni teljesítmény azonban jelentősen romlott.
A Modal mérései szerint egy rekurzív chown művelet végrehajtási ideje négy másodpercről több mint egy percre nőtt. A pnpm install és a bun install körülbelül háromszor lassabb lett, a ripgrep teljesítménye pedig drasztikusan visszaesett.
A szintetikus mérések alapján a stat virtio-fs alatt kétszer lassabb volt, a chown pedig több mint hatszor rosszabb eredményt mutatott. Egyetlen chown három oda-vissza kommunikációt igényelt a vendég és a gazdagép között, miközben a virtiofsd hat gazdarendszerbeli rendszerhívást végzett. A Modal mérésében ez műveletenként 99 mikroszekundumot jelentett.
A blokkeszköz lett az új irány
A probléma oka a fájlok metaadataiban keresendő. A nevek, tulajdonosok, jogosultságok és más attribútumok kezeléséhez a virtio-fs a virtuális gépen kívüli rendszerhez fordul. Ez minden metaadat-műveletnél további köröket jelent a vendég és a gazdagép között.
A Modal ezért úgy alakította át a megközelítést, hogy a fájlrendszer teljes egészében a vendégkernelen belül működjön. A gazdagép ebben a modellben csak bájtokat tárol, és szükség esetén blokkokat ad át a vendégnek. Ezt a feladatot a virtio-fs blokkos megfelelője, a virtio-blk látja el.
A Linux ext4 fájlrendszere a vendégkernelen belül értelmezi a metaadatokat, így a chown művelethez nem kell külső rendszerhívásokat indítani. A Modal mérése szerint a virtio-blk-alapú megoldásban egy chown körülbelül 2,1 mikroszekundumot vett igénybe az ext4 naplójába történő írásig. A változások kötegelt, aszinkron módon kerülnek továbbításra, így több száz vagy több ezer fájlművelet költsége egyetlen blokkparancs mögé rejthető.
Az ImageFS-blk az eddigi tulajdonságokat viszi tovább
A blokkeszköz önmagában gyorsabbá tette a VM fájlrendszerét, de a Modalnak az ImageFS kompatibilitását és lusta betöltését is meg kellett tartania. A hagyományos, mkfs.ext4 -d alapú lemezkép-készítés ehhez nem volt megfelelő, mivel az ext4-formázáshoz előre elérhetővé kellett volna tenni a teljes tartalmat.
A vállalat ezért az ext4 metaadatait maga állítja elő. Ezek az inode-ok tartalmazzák többek között a fájl jogosultságait, méretét és az adatblokkok tartományait. A rendszer csak a szükséges fájlmetaadatokat tölti be előre, az ext4-lemezkép többi része pedig ritkán kiosztott marad. A fájlok tényleges blokkjai csak akkor érkeznek meg, amikor a vendég olvasni kezdi őket.
Az ImageFS-blk nevű gazdagépes démon a blokk-kéréseket az ImageFS fájladataihoz kapcsolja. Így a VM Sandboxes megőrizheti a modal.Image lemezképekkel való kompatibilitást és a lusta betöltést, miközben a fájlrendszer metaadat-műveletei a vendégkernelen belül maradnak.
Modal: Building fast filesystems for VMs


