Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server op Linux
Dit artikel beschrijft hoe persistent geheugen (PMEM) configureert voor SQL Server 2019 (15.x) en latere versies op Linux.
Overview
SQL Server 2019 (15.x) voegt ondersteuning voor persistent geheugen toe om verschillende opslagintensieve bewerkingen te versnellen.
Met een PMEM-bewust bestandssysteem geeft geheugenmapping (mmap()) gebruikersruimteapplicaties directe toegang tot bestandsgegevens. Wanneer een geheugenmap voor een bestand wordt gemaakt, kan de applicatie laad-/opslaginstructies geven die de opslaglaag omzeilen.
Note
Deze directe toegang wordt vanuit het perspectief van de hostextensie-applicatie een verlichte bestandstoegangsmethode genoemd, wat is hoe SQL Server interageert met het hostbesturingssysteem, met behulp van de SQL Platform Abstraction Layer (SQLPAL).
Dit artikel laat zien hoe je persistent geheugen configureert voor SQL Server on Linux.
Naamruimten maken voor PMEM-apparaten
De apparaten configureren
Gebruik in Linux het ndctl hulpprogramma.
- Installeren
ndctlom HET PMEM-apparaat te configureren bij het installeren van NDCTL. - Gebruik
ndctlom een naamruimte te maken. Naamruimten zijn afgewisseld over PMEM NVDIMMs en kunnen verschillende soorten toegang vanuit de gebruikersruimte bieden tot geheugenregio's op het apparaat.fsdaxis de standaardmodus en de gewenste modus voor SQL Server.
ndctl create-namespace -f -e namespace0.0 --mode=fsdax --map=dev
De fsdax modus slaat metadata per pagina op in het systeemgeheugen. De --map=dev optie wordt aanbevolen omdat het de metadata direct in de naamruimte opslaat. Metadata opslaan in het geheugen met is --map=mem experimenteel.
Gebruik ndctl om de naamruimte te verifiëren.
Voorbeelduitvoer volgt:
# ndctl list -N
{
"dev":"namespace0.0",
"mode":"fsdax",
"map":"dev",
"size":4294967296,
"sector_size":512,
"blockdev":"pmem0",
"numa_node":0
}
PMEM-apparaat maken en koppelen
Bijvoorbeeld met XFS:
mkfs.xfs -f /dev/pmem0
mount -o dax,noatime /dev/pmem0 /mnt/dax
xfs_io -c "extsize 2m" /mnt/dax
Bijvoorbeeld met ext4:
mkfs.ext4 -b 4096 -E stride=512 -F /dev/pmem0
mount -o dax,noatime /dev/pmem0 /mnt/dax
Technische overwegingen
- Blokkeringstoewijzing van 2 MB voor XFS of ext4, zoals eerder beschreven
- Onjuiste uitlijning tussen bloktoewijzing en
mmapresulteert in stille terugval naar 4 kB - Bestandsgrootten moeten een veelvoud van 2 MB zijn (modulo 2 MB)
- Schakel transparante grote pagina's (THP) niet uit (standaard ingeschakeld voor de meeste software-distributies)
Nadat je het apparaat hebt geconfigureerd ndctl , gemaakt en gemount, kun je databasebestanden erin plaatsen of een nieuwe database aanmaken.
Je kunt de SQL Server-databestanden (.mdf, ) en tempdb bestanden op een PMEM-apparaat in fsdax modus opslaan met het .ndfvolgende commando. Gebruik deze modus niet om de SQL Server log (.ldf) bestanden op te slaan, want het transactielogboek vereist opslag die sectoratomaire garanties biedt:
ndctl create-namespace -f -e namespace0.0 --mode=fsdax --map=dev
Houd rekening met de volgende punten voordat u de kaartoptie in de voorgaande opdracht instelt:
- Voor de beste prestaties bij het openen en updaten van deze NVDIMM-paginavermeldingen voor dit apparaat, gebruik
-map=mem - Als de capaciteit van de NVDIMM te groot is (groter dan 512 GB), stel
-map=devdan , wat de I/O-doorvoer beïnvloedt en de prestaties vermindert
Voor SQL Server-logbestanden op PMEM-apparaten, configureer je de PMEM-apparaten om sector-/blokvertalingstabel (BTT) te gebruiken. Deze configuratie biedt de sector-atomiciteit die SQL Server-logbestanden vereisen voor deze opslagtechnologie. Voer prestatievalidaties uit voor de werklast. Vergelijk de prestaties van de SQL Server-logboeken voor jouw werklast tussen deze oplossing en de beste NVMe SSD's, en kies vervolgens degene die het beste aan jouw wensen voldoet.
ndctl create-namespace -f -e namespace0.0 --mode= sector
Gedrag voor geforceerd leegmaken uitschakelen
Omdat PMEM-apparaten (directe I/O) veilig zijn O_DIRECT , kunt u het gedrag voor geforceerde leegmaken uitschakelen.
Note
Een opslagsysteem kan ervoor zorgen dat alle gecachte of gefaseerde schrijfopdrachten veilig en duurzaam zijn door te garanderen dat schrijfacties naar het apparaat op een medium staan dat blijft bestaan bij systeemcrashes, interface-resets en stroomstoringen, en dat het medium zelf hardware-redundant is.
Databasebestanden (
.mdf) en transactielogboekbestanden (.ndf) maken standaard geen gebruik van.ldfenwritethroughin SQL Server 2017 (14.x) CU 6 en latere versies, omdat ze het geforceerde spoelgedrag gebruiken. Trace-vlag 3979 schakelt het geforceerde flush-gedrag uit voor database- en transactielogbestanden en gebruikt dewritethroughen-logicaalternatewritethrough.Andere bestanden waarmee SQL Server opent
FILE_FLAG_WRITE_THROUGH, zoals databasesnapshots, interne snapshots voor databaseconsistentiecontroles (DBCC CHECKDB), profilertracebestanden en uitgebreide event trace-bestanden, gebruiken dewritethroughenalternatewritethroughoptimalisaties.
Zie KB 4131496 voor meer informatie over de wijzigingen die zijn geïntroduceerd in SQL Server 2017 (14.x) CU 6. Raadpleeg FUA-internals voor meer informatie over geforceerde eenheidstoegang (FUA).
"Capaciteit van het I/O-subsysteem voor SQL Server en Geforceerde eenheidstoegang (FUA)"
Sommige ondersteunde Linux-distributies implementeren geforceerde eenheidstoegang (FUA) op het niveau van het I/O-subsysteem om de duurzaamheid van gegevens te garanderen. SQL Server maakt gebruik van deze mogelijkheid om efficiënte en betrouwbare I/O-prestaties te bieden voor Linux-workloads. Zie SQL Server op Linux voor meer informatie over FUA-ondersteuning voor Linux-distributies en het effect ervan op SQL Server : Geforceerde eenheidstoegang (FUA) Internals.
Ondersteuning voor FUA in het I/O-subsysteem is geïntroduceerd in SUSE Linux Enterprise Server 12 SP5, Red Hat Enterprise Linux 8.0 en Ubuntu 18.04. Gebruik in SQL Server 2017 (14.x) CU 6 en hoger de volgende configuratie om hoog presterende en efficiënte I/O met FUA in SQL Server mogelijk te maken.
Gebruik deze aanbevolen configuratie als aan de volgende voorwaarden wordt voldaan:
SQL Server 2017 (14.x) CU 6 en latere versies
Linux-distributie en -versie die ONDERSTEUNING biedt voor FUA-functionaliteit (te beginnen met Red Hat Enterprise Linux 8.0, SUSE Linux Enterprise Server 12 SP5 of Ubuntu 18.04)
Note
Vanaf SQL Server 2025 (17.x) wordt SUSE Linux Enterprise Server (SLES) niet ondersteund.
XFS-bestandssysteem voor SQL Server-opslag, op Linux-kernel 4.18 of hoger.
ext4-bestandssysteem voor SQL Server-opslag, op Linux-kernel 5.6 of hoger.
Note
Gebruik het XFS-bestandssysteem voor het hosten van SQL Server-gegevens en transactielogboekbestanden wanneer de Linux-kernelversie lager is dan 5.6. Vanaf kernelversie 5.6 kunt u kiezen tussen XFS en ext4 op basis van uw specifieke vereisten.
Opslagsubsysteem en hardware die ondersteuning bieden voor en is geconfigureerd voor FUA-functionaliteit
Aanbevolen configuratie:
Schakel traceervlag 3979 in als een opstartparameter.
Gebruiken
mssql-confom te configurerencontrol.writethrough = 1encontrol.alternatewritethrough = 0.
Gebruik de volgende aanbevolen configuratie voor bijna alle andere configuraties die niet aan de vorige voorwaarden voldoen:
Schakel traceringsvlag 3982 in als opstartparameter (de standaardwaarde voor SQL Server in het Linux-ecosysteem) en zorg ervoor dat traceringsvlag 3979 niet is ingeschakeld als opstartparameter.
Gebruiken
mssql-confom te configurerencontrol.writethrough = 1encontrol.alternatewritethrough = 1.
FUA-ondersteuning voor SQL Server-containers die zijn geïmplementeerd in Kubernetes
De SQL Server moet permanente gekoppelde opslag gebruiken en niet
overlayfs.De opslag moet gebruikmaken van de XFS - of ext4-bestandssysteemen en moet FUA ondersteunen (ext4 biedt geen ondersteuning voor FUA op de Linux-kernel ouder dan versie 5.6). Voordat u deze instelling inschakelt, moet u contact opnemen met uw Linux-distributie- en opslagleverancier om ervoor te zorgen dat het besturingssysteem en het opslagsubsysteem ONDERSTEUNING biedt voor FUA-opties. In Kubernetes kunt u een query uitvoeren op het bestandssysteemtype met behulp van de volgende opdracht, waarbij
<pvc-name>uwPersistentVolumeClaimis:kubectl describe pv <pvc-name>Zoek in de uitvoer naar
fstypedie is ingesteld op XFS.Het werkknooppunt dat als host fungeert voor de SQL Server-pods, moet gebruikmaken van een Linux-distributie en -versie die ONDERSTEUNING biedt voor FUA-functionaliteit (te beginnen met Red Hat Enterprise Linux 8.0, SUSE Linux Enterprise Server 12 SP5 of Ubuntu 18.04).
Als aan de voorgaande voorwaarden wordt voldaan, gebruikt u de volgende aanbevolen FUA-instellingen:
Schakel traceervlag 3979 in als een opstartparameter.
Gebruiken
mssql-confom te configurerencontrol.writethrough = 1encontrol.alternatewritethrough = 0.