Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server Linux rendszeren
Ez a cikk bemutatja, hogyan lehet konfigurálni tartós memóriát (PMEM) az SQL Server 2019 (15.x) és későbbi verziókhoz Linuxon.
Overview
Az SQL Server 2019 (15.x) tartós memória támogatást ad hozzá több tárolóigényes művelet felgyorsításához.
Egy PMEM-tudatos fájlrendszernél a memória leképezés (mmap()) közvetlen hozzáférést biztosít a felhasználói tér alkalmazásainak a fájladatokhoz. Amikor egy fájlhoz memóriatérképet készítenek, az alkalmazás betöltési/tárolási utasításokat adhat ki, amelyek megkerülik a tárolóréteget.
Note
Ezt a közvetlen hozzáférést a host kiterjesztési alkalmazás nézőpontjától megvilágosodt fájlhozzáférési módszernek nevezik, amely így működik az SQL Server és a host operációs rendszer közötti interakció, az SQL Platform Absztrakciós Réteg (SQLPAL) segítségével.
Ez a cikk bemutatja, hogyan konfigurálhatod az állandó memóriát SQL Server on Linux-hoz.
Névterek létrehozása PMEM-eszközökhöz
Az eszközök konfigurálása
Linuxon használja a ndctl segédprogramot.
- Telepítse az
ndctl-t a PMEM-eszköz konfigurálásához. - Névtér létrehozása
ndctlhasználatával. A névterek összefonódva helyezkednek el a PMEM NVDIMM-ek között, és különböző típusú felhasználói tér hozzáférést biztosíthatnak az eszköz memóriarégióihoz.fsdaxaz SQL Server alapértelmezett és kívánt módja.
ndctl create-namespace -f -e namespace0.0 --mode=fsdax --map=dev
A fsdax mód oldalonként tárolja a rendszermemóriában lévő metaadatokat. Ez --map=dev az opció azért ajánlott, mert közvetlenül a névtérben tárolja a metaadatokat. A metaadatok memóriában való tárolása a(z) --map=mem használatával kísérleti jellegű.
A névtér ellenőrzéséhez használja a ndctl.
A mintakimenet a következő:
# ndctl list -N
{
"dev":"namespace0.0",
"mode":"fsdax",
"map":"dev",
"size":4294967296,
"sector_size":512,
"blockdev":"pmem0",
"numa_node":0
}
PMEM-eszköz létrehozása és csatlakoztatása
Például XFS-sel:
mkfs.xfs -f /dev/pmem0
mount -o dax,noatime /dev/pmem0 /mnt/dax
xfs_io -c "extsize 2m" /mnt/dax
Például az ext4-zel:
mkfs.ext4 -b 4096 -E stride=512 -F /dev/pmem0
mount -o dax,noatime /dev/pmem0 /mnt/dax
Technikai szempontok
- 2 MB-os blokklefoglalás XFS-hez vagy ext4-hez a korábban leírtak szerint
- A blokkok kiosztása és
mmapközötti eltérés észrevétlen visszaállást eredményez 4 KB-ra - A fájlméreteknek 2 MB többszörösének kell lenniük (modulo 2 MB)
- Ne tiltsa le az átlátszó nagy oldalakat (THP) (alapértelmezés szerint engedélyezve van a legtöbb disztribúcióban)
Miután ndctl konfiguráltad, létrehoztad és csatlakoztattad az eszközt, adatbázisfájlokat helyezhetsz bele, vagy létrehozhatsz egy új adatbázist.
Az SQL Server adatfájljait (.mdf, .ndf) és a tempdb fájlokat egy PMEM-eszközön, fsdax módban tárolhatja a következő paranccsal. Ne használd ezt a módot az SQL Server napló (.ldf) fájlok tárolására, mert a tranzakciónapló olyan tárhelyet igényel, amely szektoratomi garanciákat nyújt:
ndctl create-namespace -f -e namespace0.0 --mode=fsdax --map=dev
Mielőtt beállítja a térképbeállítást az előző parancsban, tartsa szem előtt a következő pontokat:
- Az eszköz ezen NVDIMM-oldalbejegyzéseinek eléréséhez és frissítéséhez a legjobb teljesítmény érdekében használja a következőt:
--map=mem - Ha az NVDIMM kapacitása túl nagy (meghaladja az 512 GB-ot), állítsd
--map=devbe , ami befolyásolja az I/O áteresztőképességet és csökkenti a teljesítményt
Az SQL Server PMEM-eszközökön tárolt naplófájljaihoz konfigurálja a PMEM-eszközöket szektor-/blokkszintű fordítási tábla (BTT) használatára. Ez a konfiguráció biztosítja azt a szektoratomiságot, amelyet az SQL Server naplófájlok igényelnek ehhez a tárolótechnológiához. Végezze el a munkaterhelés teljesítményének ellenőrzését. Hasonlítsa össze az SQL Server napló teljesítményét a munkaterheléséhez ezen megoldás és a legjobb kategóriás NVMe SSD-k között, majd válaszd ki azt, amelyik leginkább megfelel az igényeidnek.
ndctl create-namespace -f -e namespace0.0 --mode=sector
Kényszerített kiürítési viselkedés letiltása
Mivel a PMEM-eszközök O_DIRECT (közvetlen I/O) biztonságosak, letilthatja a kényszerített kiürítési viselkedést.
Note
A tárolórendszer azáltal biztosíthatja, hogy a gyorsítótárban lévő vagy átmenetileg tárolt írási műveletek biztonságosak és tartósak legyenek, hogy garantálja: az eszközre irányuló írási műveletek olyan adathordozón helyezkednek el, amely rendszerösszeomlások, interfész-visszaállítások és áramkimaradások esetén is megőrzi az adatokat, és maga az adathordozó hardveresen redundáns.
Az adatbázis- (
.mdf- és.ndf) és tranzakciónapló (.ldf) fájlok alapértelmezés szerint nem használnakwritethroughésalternatewritethroughaz SQL Server 2017 (14.x) CU 6-os és újabb verzióiban, mert a kényszerített kiürítési viselkedést használják. A 3979-es nyomkövetési jelző letiltja az adatbázis- és tranzakciónapló-fájlok kényszerített kiírási működését, és awritethroughésalternatewritethroughlogikát használja.Az SQL Server által a
FILE_FLAG_WRITE_THROUGHhasználatával megnyitott egyéb fájlok, például az adatbázis-pillanatképek, az adatbázis-konzisztencia ellenőrzéséhez használt belső pillanatképek (DBCC CHECKDB), a Profiler-nyomkövetési fájlok és a kiterjesztett események nyomkövetési fájljai awritethroughésalternatewritethroughoptimalizációkat használják.
Az SQL Server 2017 (14.x) CU 6-ban bevezetett változásokról további információt KB 4131496című cikkben talál. A kényszerített egységhozzáférés (FUA) belső működéséről további információt a FUA belső működésecímű cikkben talál.
SQL Server és a kényszerített egységelérés (FUA) I/O-alrendszerbeli képessége
Egyes támogatott Linux-disztribúciók az I/O alrendszer szintjén implementálják a Forced Unit Access (FUA) rendszert az adatok tartósságának biztosítása érdekében. Az SQL Server ezzel a képességgel hatékony és megbízható I/O-teljesítményt nyújt Linux-számítási feladatokhoz. További információ a LINUX-disztribúciók FUA-támogatásáról és az SQL Serverre gyakorolt hatásáról : SQL Server on Linux: Forced Unit Access (FUA) Internals.
A FUA támogatása az I/O-alrendszerben a SUSE Linux Enterprise Server 12 SP5, a Red Hat Enterprise Linux 8.0 és az Ubuntu 18.04 rendszerben jelent meg. Az SQL Server 2017 (14.x) CU 6-os és újabb verzióiban az alábbi konfigurációval engedélyezheti a magas teljesítményt és a hatékony I/O-t a FUA-val az SQL Serverben.
Az alábbi feltételek teljesülése esetén használja ezt az ajánlott konfigurációt:
SQL Server 2017 (14.x) CU 6 és újabb verziók
A FUA-képességet támogató Linux-disztribúció és verzió (a Red Hat Enterprise Linux 8.0-tól, a SUSE Linux Enterprise Server 12 SP5-től vagy az Ubuntu 18.04-től kezdve)
Note
Az SQL Server 2025 -től (17.x) kezdődően a SUSE Linux Enterprise Server (SLES) nem támogatott.
Az SQL Server Storage XFS fájlrendszere a Linux kernel 4.18-ás vagy újabb verzióiban.
az SQL Server Storage ext4 fájlrendszere linuxos kernel 5.6-os vagy újabb verzióiban.
Note
Használja az XFS fájlrendszert SQL Server-adatok és tranzakciós naplófájlok üzemeltetéséhez, ha a Linux kernel verziója kisebb, mint 5.6. A kernel 5.6-os verziójától kezdve választhat az XFS és az ext4 között a megadott követelmények alapján.
A FUA-képességeket támogató és konfigurált tárolási alrendszer és hardver
Ajánlott konfiguráció:
Engedélyezze a 3979 nyomkövetési jelzőt indítási paraméterként.
Használja a
mssql-confacontrol.writethrough = 1és acontrol.alternatewritethrough = 0konfigurálásához.
Szinte minden olyan konfiguráció esetében, amely nem felel meg az előző feltételeknek, használja az alábbi ajánlott konfigurációt:
Engedélyezze a 3982 nyomkövetési jelzőt indítási paraméterként (amely a Linux-ökoszisztémában az SQL Server alapértelmezett beállítása), és győződjön meg arról, hogy a 3979-as nyomkövetési jelző nincs engedélyezve indítási paraméterként.
Használja a
mssql-confacontrol.writethrough = 1és acontrol.alternatewritethrough = 1konfigurálásához.
A Kubernetesben üzembe helyezett SQL Server-tárolók FUA-támogatása
Az SQL Servernek tartósan csatolt tárolót kell használnia, és nem
overlayfs.A tárolónak az XFS-t vagy az ext4 fájlrendszereket kell használnia, és támogatnia kell a FUA-t (az ext4 nem támogatja a FUA-t a Linux kernelen az 5.6-os verziónál korábbi verziókban). A beállítás engedélyezése előtt működjön együtt a Linux disztribúciós és tárolási szállítójával annak érdekében, hogy az operációs rendszer és a tárolóalrendszer támogatja a FUA-beállításokat. A Kubernetesen az alábbi paranccsal kérdezheti le a fájlrendszer típusát, ahol
<pvc-name>aPersistentVolumeClaim:kubectl describe pv <pvc-name>A kimenetben keresse meg a
fstype-t, amely XFS-re van beállítva.Az SQL Server-podokat üzemeltető feldolgozó csomópontnak olyan Linux-disztribúciót és verziót kell használnia, amely támogatja a FUA-képességet (a Red Hat Enterprise Linux 8.0-tól, a SUSE Linux Enterprise Server 12 SP5-től vagy az Ubuntu 18.04-től kezdve).
Ha a fenti feltételek teljesülnek, használja az alábbi ajánlott FUA-beállításokat:
Engedélyezze a 3979 nyomkövetési jelzőt indítási paraméterként.
Használja a
mssql-confacontrol.writethrough = 1és acontrol.alternatewritethrough = 0konfigurálásához.