Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server na Linuxu
Tento článek popisuje, jak nastavit perzistentní paměť (PMEM) pro SQL Server 2019 (15.x) a pozdější verze na Linuxu.
Overview
SQL Server 2019 (15.x) přidává podporu perzistentní paměti pro zrychlení několika operací náročných na úložiště.
U souborového systému s vědomím PMEM poskytuje mapování paměti (mmap()) aplikacím uživatelského prostoru přímý přístup k datům souborů. Když je pro soubor vytvořena paměťová mapa, aplikace může zadat instrukce pro načítání/uložení, které obcházejí úložnou vrstvu.
Note
Tento přímý přístup se nazývá osvícený přístup k souborům z pohledu aplikace hostitelského rozšíření, což je způsob, jakým SQL Server komunikuje s hostitelským operačním systémem pomocí SQL Platform Abstraction Layer (SQLPAL).
Tento článek vám ukáže, jak nastavit perzistální paměť pro SQL Server on Linux.
Vytvořte obory názvů pro zařízení PMEM
Konfigurace zařízení
V Linuxu použijte nástroj ndctl.
- Nainstalujte
ndctlpro konfiguraci zařízení PMEM s instalací NDCTL. - K vytvoření oboru názvů použijte
ndctl. Názvové prostory jsou prokládány napříč NVDIMM PMEM a mohou poskytovat různé typy přístupu z uživatelského prostoru k paměťovým oblastem na zařízení.fsdaxje výchozí a požadovaný režim pro SQL Server.
ndctl create-namespace -f -e namespace0.0 --mode=fsdax --map=dev
Režim ukládá fsdax metadata na stránku do systémové paměti. Tato --map=dev možnost je doporučena, protože ukládá metadata přímo do jmenného prostoru. Ukládání metadat do paměti s je --map=mem experimentální.
K ověření oboru názvů použijte ndctl.
Ukázkový výstup je následující:
# ndctl list -N
{
"dev":"namespace0.0",
"mode":"fsdax",
"map":"dev",
"size":4294967296,
"sector_size":512,
"blockdev":"pmem0",
"numa_node":0
}
Vytvoření a připojení zařízení PMEM
Například s XFS:
mkfs.xfs -f /dev/pmem0
mount -o dax,noatime /dev/pmem0 /mnt/dax
xfs_io -c "extsize 2m" /mnt/dax
Například s ext4:
mkfs.ext4 -b 4096 -E stride=512 -F /dev/pmem0
mount -o dax,noatime /dev/pmem0 /mnt/dax
Technické aspekty
- Přidělení bloku 2 MB pro XFS nebo ext4, jak je popsáno výše
- Nesprávné zarovnání mezi přidělením bloku a
mmapvede k tichému návratu na 4 kB - Velikosti souborů by měly být násobkem 2 MB (modulo 2 MB)
- Nezakazujte transparentní obrovské stránky (THP) (ve výchozím nastavení jsou ve většině distribucí povoleny).
Poté, co zařízení nakonfigurujete, vytvoříte a namontujete ndctl , můžete do něj vložit databázové soubory nebo vytvořit novou databázi.
Datové soubory SQL Server (.mdf, ) a tempdb soubory můžete uložit na zařízení PMEM v fsdax režimu pomocí následujícího .ndfpříkazu. Tento režim nepoužívejte k ukládání souborů SQL Server log (.ldf), protože transakční log vyžaduje úložiště poskytující sektorové atomické záruky:
ndctl create-namespace -f -e namespace0.0 --mode=fsdax --map=dev
Před nastavením možnosti mapování v předchozím příkazu mějte na paměti následující body:
- Pro nejlepší výkon při přístupu a aktualizaci těchto položek NVDIMM pro toto zařízení použijte
-map=mem - Pokud je kapacita NVDIMM příliš velká (více než 512 GB), nastavte
-map=dev, což ovlivňuje propustnost I/O a snižuje výkon
Pro SQL Server log soubory na PMEM zařízeních nakonfigurujte PMEM zařízení tak, aby používala sektor/Block Translation Table (BTT). Tato konfigurace poskytuje sektorovou atomicitu, kterou SQL Server logové soubory vyžadují pro tuto technologii úložiště. Provádějte validace výkonu pracovní zátěže. Porovnejte výkon logů SQL Server pro vaši pracovní zátěž mezi tímto řešením a špičkovými NVMe SSD a poté vyberte ten, který nejlépe vyhovuje vašim potřebám.
ndctl create-namespace -f -e namespace0.0 --mode= sector
Zakázat vynucené vyprázdnění
Vzhledem k tomu, že zařízení PMEM jsou bezpečné pro O_DIRECT (přímé I/O operace), můžete zakázat vynucené vyprázdnění.
Note
Úložný systém může zajistit, že jakékoli cacheované nebo fázované zápisy jsou bezpečné a odolné tím, že garantuje, že zápisy do zařízení budou umístěny na médiu, které přetrvává i přes pády systému, resety rozhraní a výpadky napájení, a že samotné médium je hardwarově redundantní.
Soubory databáze (
.mdfa.ndf) a transakčního protokolu (.ldf) ve výchozím nastavení nepoužívajíwritethroughaalternatewritethroughv SQL Serveru 2017 (14.x) CU 6 a novějších verzích, protože používají chování vynuceného vyprázdnění. Trace flag 3979 deaktivuje nucené vyčištění pro databázové a transakční logové soubory a používá logikuwritethroughandalternatewritethrough.Další soubory, které SQL Server otevírá s
FILE_FLAG_WRITE_THROUGH, jako jsou snímky databáze, interní snímky pro kontrolu konzistence databáze (DBCC CHECKDB), profilerové trace soubory a rozšířené event trace soubory, využívajíwritethroughoptimalizace aalternatewritethrough.
Další informace o změnách zavedených v SQL Serveru 2017 (14.x) CU 6 naleznete v článku KB 4131496. Další informace o vnitřních mechanismech vynuceného přístupu k jednotce (FUA) naleznete v FUA mechanismy.
Funkce I/O subsystému SQL Server a vynucený přístup k jednotkám (FUA)
Některé podporované linuxové distribuce implementují vynucený přístup k jednotce (FUA) na úrovni subsystému vstupně-výstupních operací, aby se zajistila stálost dat. SQL Server tuto funkci využívá k zajištění efektivního a spolehlivého výkonu vstupně-výstupních operací pro linuxové úlohy. Další informace o podpoře FUA napříč linuxovými distribucemi a jejím účinkem na SQL Server najdete v tématu SQL Server v Linuxu: Interní informace o vynuceném přístupu k jednotce (FUA).
Podpora FUA v subsystému vstupně-výstupních operací byla zavedena v systému SUSE Linux Enterprise Server 12 SP5, Red Hat Enterprise Linux 8.0 a Ubuntu 18.04. V SQL Serveru 2017 (14.x) CU 6 a novějších verzích použijte následující konfiguraci k povolení vysoce výkonných a efektivních vstupně-výstupních operací s FUA na SQL Serveru.
Tuto doporučenou konfiguraci použijte, pokud jsou splněny následující podmínky:
SQL Server 2017 (14.x) CU 6 a novější verze
Distribuce a verze Linuxu, která podporuje funkci FUA (počínaje verzí Red Hat Enterprise Linux 8.0, SUSE Linux Enterprise Server 12 SP5 nebo Ubuntu 18.04)
Note
Od verze SQL Server 2025 (17.x) se nepodporuje SUSE Linux Enterprise Server (SLES).
Systém souborů XFS pro úložiště SQL Serveru v linuxovém jádru 4.18 nebo novějších verzích.
Systém souborů ext4 pro úložiště SQL Serveru v linuxovém jádru 5.6 nebo novějších verzích.
Note
Systém souborů XFS slouží k hostování souborů SQL Serveru a souborů transakčních protokolů, pokud je verze jádra Linuxu nižší než 5.6. Počínaje jádrem verze 5.6 si můžete vybrat mezi XFS a ext4 na základě vašich konkrétních požadavků.
Subsystém úložiště a hardware, který podporuje a je nakonfigurovaný pro funkce FUA
Doporučená konfigurace:
Povolte příznak trasování 3979 jako spouštěcí parametr.
Slouží
mssql-confke konfiguracicontrol.writethrough = 1acontrol.alternatewritethrough = 0.
Pro téměř všechny ostatní konfigurace, které nesplňují předchozí podmínky, použijte následující doporučenou konfiguraci:
Povolte příznak trasování 3982 jako spouštěcí parametr (což je výchozí hodnota pro SQL Server v ekosystému Linuxu) a ujistěte se, že příznak trasování 3979 není povolený jako spouštěcí parametr.
Slouží
mssql-confke konfiguracicontrol.writethrough = 1acontrol.alternatewritethrough = 1.
Podpora FUA pro kontejnery SQL Serveru nasazené v Kubernetes
SQL Server musí používat trvalé připojené úložiště, a nikoli
overlayfs.Úložiště musí používat systémy souborů XFS nebo ext4 a měly by podporovat FUA (ext4 nepodporuje FUA v linuxovém jádru starším než verze 5.6). Před povolením tohoto nastavení ve spolupráci s dodavatelem linuxové distribuce a úložiště se ujistěte, že operační systém a subsystém úložiště podporují možnosti FUA. V Kubernetes můžete zadat dotaz na typ systému souborů pomocí následujícího příkazu, kde
<pvc-name>je vašePersistentVolumeClaim:kubectl describe pv <pvc-name>Ve výstupu vyhledejte
fstype, která je nastavená na XFS.Pracovní uzel hostující pody SQL Serveru by měl používat distribuci a verzi Linuxu, která podporuje funkci FUA (počínaje red hat Enterprise Linuxem 8.0, SUSE Linux Enterprise Serverem 12 SP5 nebo Ubuntu 18.04).
Pokud jsou splněny předchozí podmínky, použijte následující doporučená nastavení FUA:
Povolte příznak trasování 3979 jako spouštěcí parametr.
Slouží
mssql-confke konfiguracicontrol.writethrough = 1acontrol.alternatewritethrough = 0.