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 konfigurálható az SQL Server 2019 (15.x) és újabb verzióinak állandó memóriája (PMEM) Linuxon.
Áttekintés
Az SQL Server 2019 (15.x) számos memóriabeli funkciót vezetett be, amelyek állandó memóriát használnak. Ez a cikk a Linuxon futó SQL Server állandó memóriájának konfigurálásához szükséges lépéseket ismerteti.
Jegyzet
A megvilágosodás kifejezést azért vezették be, hogy közvetítse az állandó memóriatudatos fájlrendszerrel való munka fogalmát. A fájlrendszerhez való közvetlen hozzáférést a felhasználói térbeli alkalmazásokból a memórialeképezés (mmap()) segítségével lehet megkönnyíteni. Egy fájl memórialeképezésének létrehozásakor az alkalmazás terhelési/tárolási utasításokat adhat ki az I/O-verem teljes megkerülésével. Ez egy "korszerű" fájlelérési módszer a gazdagép-bővítmény alkalmazás szempontjából (ez az a kód, amely lehetővé teszi az SQLPAL számára, hogy kapcsolatba léphessen a Windows vagy Linux operációs rendszerrel).
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ódot választottuk, és rendszermemóriát használunk a laponkénti metaadatok tárolására. A --map=devhasználatát javasoljuk. Ez a beállítás közvetlenül a névtérben tárolja a metaadatokat. A metaadatok tárolása a memóriában a --map=mem használatával jelenleg 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 az eszközt konfigurálta ndctl, létrehozta és csatlakoztatta, elhelyezheti benne az adatbázisfájlokat, vagy létrehozhat egy új adatbázist.
Az SQL Server-adatfájlokat (MDFS, NDFS) és tempdb fájlokat egy PMEM-eszközön tárolhatja, ha az alábbi paranccsal konfigurálva van a mód fsdax. Ne használja ezt az SQL Server-naplófájlok (LDFS) tárolására, mivel a tranzakciónaplónak olyan tárolón kell lennie, amely szektorszintű atomi garanciákat biztosít:
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özhöz tartozó NVDIMM-oldalbejegyzések eléréséhez és frissítéséhez a legjobb teljesítményt a
-map=memhasználata nyújtja. - Ha az NVDIMM kapacitása túl nagy (nagyobb, mint 512 GB), állítsa be a
–map=dev, amely hatással lenne az IO átviteli sebességére, és rontaná a teljesítményt
A PMEM-eszközökön lévő SQL Server-naplófájlok esetében konfigurálja a PMEM-eszközöket, hogy szektor/blokk fordító táblázatot (BTT) használjanak. Ez biztosítja az SQL Server-naplófájlok szükséges szektorszintű atomiságát ehhez a tárolóeszköz-technológiához. Azt is javasoljuk, hogy végezze el a számítási feladatok teljesítményellenőrzését. Összehasonlíthatja a számítási feladat SQL Server-naplójának teljesítményét a megoldás és az osztályon belüli legjobb NVMe SSD-k között, majd kiválaszthatja az igényeinek leginkább megfelelő megoldást, és jobb teljesítményt nyújt.
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.
Jegyzet
A tárolórendszer gondoskodik arról, hogy a gyorsítótárazott vagy szakaszos írások biztonságosnak és tartósnak minősüljenek, garantálva ezzel, hogy az eszközre kiadott írások olyan adathordozón legyenek tárolva, amely a rendszer összeomlásai, a felület alaphelyzetbe állítása és az áramkimaradások között megmarad, és maga a adathordozó hardverredundá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 nyomkövetési jelző letiltja az adatbázis- és tranzakciónapló-fájlok kényszerített kiürítési viselkedésének használatát, és awritethroughésalternatewritethroughlogikát alkalmazza.Az SQL Server
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ések belső pillanatképei (DBCC CHECKDB), a profilkészítő nyomkövetési fájlok és a kiterjesztett eseménykövetési fájlok awritethroughésalternatewritethroughoptimalizálásokat 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 kényszerített egységhozzáférés (FUA) I/O-alrendszer képessége
A támogatott Linux-disztribúciók bizonyos verziói támogatják a FUA I/O alrendszer képességeit, ami biztosítja az adatok tartósságát. Az SQL Server a FUA-képességgel rendkívül hatékony és megbízható I/O-t biztosít az SQL Server számítási feladataihoz. További információ a Linux-disztribúció 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 SUSE Linux Enterprise Server 12 SP5, a Red Hat Enterprise Linux 8.0 és az Ubuntu 18.04 az I/O-alrendszerben támogatja a FUA-képességeket. Ha AZ SQL Server 2017 (14.x) CU 6-os és újabb verzióit használja, az alábbi konfigurációt kell használnia az SQL Server által a FUA-val történő magas teljesítményű és hatékony I/O-implementációhoz.
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)
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.
Jegyzet
Az XFS fájlrendszert kell használnia SQL Server-adatok és tranzakció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/vagy hardver
Ajánlott konfiguráció:
Engedélyezze a 3979 nyomkövetési jelzőt indítási paraméterként.
A és
control.writethrough = 1konfigurálásához használjacontrol.alternatewritethrough = 0.
Szinte minden olyan konfiguráció esetében, amely nem felel meg az előző feltételeknek, az ajánlott konfiguráció a következő:
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.
A és
control.writethrough = 1konfigurálásához használjacontrol.alternatewritethrough = 1.
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ónál). A beállítás engedélyezése előtt együtt kell működnie 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ási 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 azt a
fstype-t, amely XFS értékre 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, az alábbi ajánlott FUA-beállításokat használhatja.
Engedélyezze a 3979 nyomkövetési jelzőt indítási paraméterként.
A és
control.writethrough = 1konfigurálásához használjacontrol.alternatewritethrough = 0.