Megosztás a következőn keresztül:


Az Azure NetApp Files linuxos NFS-olvasási ajánlott eljárásai

Ez a cikk az Azure NetApp Files fájlrendszer-gyorsítótárának ajánlott eljárásait ismerteti.

Az NFS előre olvasható, előre jelezve kéri a blokkokat egy fájlból az alkalmazás I/O-kérései előtt. Úgy tervezték, hogy javítsa az ügyfél szekvenciális olvasási átviteli sebességét. A közelmúltig az összes modern Linux-disztribúció az olvasási értéket a csatlakoztatott fájlrendszerek rsize15-szörösének megfelelő értéknek állította be.

Az alábbi táblázat az egyes rsize csatlakoztatási beállítások alapértelmezett előreolvasási értékeit mutatja.

Csatlakoztatott fájlrendszer rsize Előre olvasható blokkok
64 KiB 960 KiB
256 KiB 3840 KiB
1024 KiB 15 360 KiB

Az RHEL 8.3 és az Ubuntu 18.04 olyan módosításokat vezetett be, amelyek negatívan befolyásolhatják az ügyfél szekvenciális olvasási teljesítményét. A korábbi kiadásoktól eltérően ezek a disztribúciók a használatban lévő csatlakoztatási lehetőségtől függetlenül rsize alapértelmezés szerint 128 KiB értékre vannak beállítva. A nagyobb előreolvasási értékkel rendelkező kiadásokról az alapértelmezett 128 KiB-vel rendelkező kiadásokra való frissítés a szekvenciális olvasási teljesítmény csökkenését tapasztalta. Az előre olvasható értékek azonban dinamikusan és tartósan felfelé hangolhatók. A SAS GRID-szel végzett tesztelés például a 15 360 KiB olvasási értéket találta optimálisnak a 3840 KiB, 960 KiB és 128 KiB értékhez képest. A pozitív vagy negatív hatás megállapításához nem végeztek elegendő tesztet 15 360 KiB-t meghaladóan.

Az alábbi táblázat az egyes jelenleg elérhető disztribúciók alapértelmezett írásvédett értékeit mutatja be.

Disztribúció Felszabadítás Előre olvasható blokkok
RHEL 8.3 128 KiB
RHEL 7.X, 8.0, 8.1, 8.2 15 X rsize
SLES 12.X – legalább 15SP2 15 X rsize
Ubuntu 18.04 – legalább 20.04 128 KiB
Ubuntu 16.04 15 X rsize
Debian Legfeljebb 10 15 x rsize

NFS-fájlrendszerenkénti írásvédettség

Az NFS előreolvasása az NFS-fájlrendszer csatlakoztatási pontján van definiálva. Az alapértelmezett beállítás dinamikusan és állandó módon is megtekinthető és beállítható. Az egyszerűség kedvéért a Red Hat által írt alábbi bash-szkriptet adták meg a nagy mennyiségű NFS fájlrendszer olvasásának megtekintéséhez vagy dinamikus beállításához.

Az olvasási folyamat NFS-csatlakoztatásonként dinamikusan definiálható az alábbi szkript használatával, vagy állandó szabályok használatával udev , az ebben a szakaszban látható módon. A csatlakoztatott NFS-fájlrendszerek írásvédett megjelenítéséhez vagy beállításához a következő szkriptet bash-fájlként mentheti, módosíthatja a fájl engedélyeit, hogy végrehajthatóvá tegye (chmod 544 readahead.shés az ábrán látható módon fusson).

Olvasási értékek megjelenítése vagy beállítása

Az aktuális előreolvasási érték megjelenítéséhez (a visszaadott érték a KiB-ben található), futtassa a következő parancsot:

   ./readahead.sh show <mount-point>

Ha új értéket szeretne beállítani az olvasáshoz, futtassa a következő parancsot:

./readahead.sh set <mount-point> [read-ahead-kb]

Example

#!/bin/bash
# set | show readahead for a specific mount point
# Useful for things like NFS and if you do not know / care about the backing device
#
# To the extent possible under law, Red Hat, Inc. has dedicated all copyright
# to this software to the public domain worldwide, pursuant to the
# CC0 Public Domain Dedication. This software is distributed without any warranty.
# For more information, see the [CC0 1.0 Public Domain Dedication](http://creativecommons.org/publicdomain/zero/1.0/).

E_BADARGS=22
function myusage() {
echo "Usage: `basename $0` set|show <mount-point> [read-ahead-kb]"
}

if [ $# -gt 3 -o $# -lt 2 ]; then
   myusage
   exit $E_BADARGS
fi

MNT=${2%/}
BDEV=$(grep $MNT /proc/self/mountinfo | awk '{ print $3 }')

if [ $# -eq 3 -a $1 == "set" ]; then
   echo $3 > /sys/class/bdi/$BDEV/read_ahead_kb
elif [ $# -eq 2 -a $1 == "show" ]; then
   echo "$MNT $BDEV /sys/class/bdi/$BDEV/read_ahead_kb = "$(cat /sys/class/bdi/$BDEV/read_ahead_kb)
else
   myusage
   exit $E_BADARGS
fi

Írásvédettség állandó beállítása NFS-csatlakoztatásokhoz

Az NFS-csatlakoztatások udev folyamatos olvasásának beállításához a szabályok az alábbiak szerint írhatók:

  1. Létrehozás és tesztelés /etc/udev/rules.d/99-nfs.rules:

        SUBSYSTEM=="bdi", ACTION=="add", PROGRAM="<absolute_path>/awk -v bdi=$kernel 'BEGIN{ret=1} {if ($4 == bdi) {ret=0}} END{exit ret}' /proc/fs/nfsfs/volumes", ATTR{read_ahead_kb}="15380"
    
  2. Alkalmazza a szabályt udev :

       sudo udevadm control --reload
    

Következő lépések