Igyekszem követni a MongoDB dokumentációs utasításait az LTH megfelelő konfigurálásához a gép számára a MongoDB futtatása.

Az egyik utasítás egy indításkor futó parancsfájl létrehozását tartalmazza. Sajnos sem a javasolt szkript, sem a hasonló kód át lett írva systemd szolgáltatás működik.

A probléma hibakeresésénél találkoztam egy másikkal. Amikor végrehajtom:

root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled 

a parancs Úgy tűnik, hogy sikeresen fut, de a fájl változatlan marad, ezért ha futtatom:

root@demo:/# cat /sys/kernel/mm/transparent_hugepage/enabled 

az eredeti tartalmat adja vissza:

always madvise [never] 

Megpróbáltam módosítani a fájlt a következővel: vim; a fájl mentésekor azt panaszolja, hogy az Fsync nem sikerült . Bár ezt a hibát dokumentálták , esetemben elegendő lemezterület van a / oldalon (20% felhasználva , 7 GB áll rendelkezésre.)

A parancsot sudo módban futtatom, és a fájlengedélyek megfelelőnek tűnnek:

-rw-r--r-- 1 root root 4096 ... 

A /sys könyvtár sem csak olvasható módban van telepítve , amint az látható:

root@demo:/# grep sysfs /proc/mounts sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 

Mi történik itt?

Válasz

, a fájlrendszer, amely általában a /sys fájlra van telepítve, egy speciális virtuális fájlrendszer, amely a Linux kernelhez kapcsolódik.

A benne lévő fájlok nem” A valódi fájlok a kernel adatstruktúráit képviselik, és csak meglehetősen egyszerű hozzáférési módszereket támogatnak. Ilyen fájlból való olvasás információt kér a kerneltől. Ilyen fájlba való írás arra utasítja a kernelt, hogy változtasson egy beállításon vagy hajtson végre egy műveletet.

Ezért nem sikerül a vim. Megpróbálja elérni a virtuális fájlokat a valódi fájlokra optimalizált módszerek, és ez nem támogatott a sysfs oldalon.

Az első parancsod

root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled 

már sikeres volt!

Sok sysfs “fájl”, köztük a /sys/kernel/mm/transparent_hugepage/enabled, csak akkor nyomtassa ki az aktuális beállítást, amikor elolvassa, de az összes lehetségeset kinyomtatja módokat, és zárójelek segítségével írja le, hogy a több mód közül melyik aktív.

Esetünkben a never zárójelben található, tehát a echo már aktív:

always madvise [never] 

Ha érdekli, hogy sysfs működik, erről bővebben a Wikipédián vagy a Linux kern dokumentációjában olvashat. .

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük