Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Linux üzerinde SQL Server
Bu makale, SQL Server 2019 (15.x) ve sonraki sürümler için Linux'ta kalıcı bellek (PMEM) yapılandırmasının nasıl yapılacağını açıklar.
Overview
SQL Server 2019 (15.x), depolama yoğun işlemleri hızlandırmak için kalıcı bellek desteği ekler.
PMEM'e duyarlı bir dosya sisteminde, bellek eşleme (mmap()) kullanıcı alanı uygulamalarına dosya verilerine doğrudan erişim sağlar. Bir dosya için bellek haritası oluşturulduğunda, uygulama depolama katmanını atlayan yükleme/depolama talimatları verebilir.
Note
Bu doğrudan erişim, ana uzantı uygulamasının bakış açısından aydınlanmış dosya erişim yöntemi olarak adlandırılır; SQL Server'ın ana işletim sistemi ile SQL Platform Soyutlama Katmanı (SQLPAL) kullanılarak nasıl etkileşime girdiğidir.
Bu makale, Linux üzerinde SQL Server için kalıcı belleği nasıl yapılandıracağınızı gösteriyor.
PMEM cihazları için ad alanları oluşturma
Cihazları yapılandırma
Linux'ta ndctl yardımcı programını kullanın.
-
ndctlPMEM cihazını yapılandırmak için NDCTL yükleme'yi kurun. - Ad alanı oluşturmak için
ndctlkullanın. Ad alanları, PMEM NVDIMM'ler arasında kesişir ve cihazdaki bellek bölgelerine farklı türlerde kullanıcı alanı erişimi sağlayabilir.fsdaxSQL Server için varsayılan ve istenen moddur.
ndctl create-namespace -f -e namespace0.0 --mode=fsdax --map=dev
Mod, fsdax sayfa başına meta verileri sistem belleğinde saklar. Bu --map=dev seçenek, meta verileri doğrudan isim alanında sakladığı için önerilir. Meta verilerin belleğe --map=mem depolanması deneyseldir.
Ad alanını doğrulamak için ndctl kullanın.
Örnek çıktı aşağıdaki gibidir:
# ndctl list -N
{
"dev":"namespace0.0",
"mode":"fsdax",
"map":"dev",
"size":4294967296,
"sector_size":512,
"blockdev":"pmem0",
"numa_node":0
}
PMEM cihazı oluşturma ve bağlama
Örneğin , XFS ile:
mkfs.xfs -f /dev/pmem0
mount -o dax,noatime /dev/pmem0 /mnt/dax
xfs_io -c "extsize 2m" /mnt/dax
Örneğin, ext4 ile:
mkfs.ext4 -b 4096 -E stride=512 -F /dev/pmem0
mount -o dax,noatime /dev/pmem0 /mnt/dax
Teknik olarak dikkat edilmesi gereken konular
- Daha önce açıklandığı gibi XFS veya ext4 için 2 MB'lık ayırmayı engelle
- Blok ayırma ile
mmaparasındaki yanlış hizalama, 4 KB'a kadar sessiz geri dönüşle sonuçlandı - Dosya boyutları 2 MB'ın katı olmalıdır (mod 2 MB)
- Saydam büyük sayfaları (THP) sakın devre dışı bırakmayın (çoğu dağıtımda varsayılan olarak etkindir).
Cihazı yapılandırmak, oluşturmak ve monte etmek için kullandıktan ndctl sonra, veritabanı dosyalarını içine yerleştirebilir veya yeni bir veritabanı oluşturabilirsiniz.
SQL Server veri dosyalarını (.mdf, .ndf) ve tempdb dosyalarını bir PMEM cihazında fsdax modda şu komutla depolayabilirsiniz. Bu modu SQL Server log (.ldf) dosyalarını depolamak için kullanmayın, çünkü işlem günlüğü sektör atomik garantileri sağlayan depolama gerektirir:
ndctl create-namespace -f -e namespace0.0 --mode=fsdax --map=dev
Yukarıdaki komutta eşleme seçeneğini ayarlamadan önce aşağıdaki noktaları aklınızda bulundurun:
- Bu cihaz için bu NVDIMM sayfa girişlerine erişirken ve güncellerken en iyi performansı almak için
-map=mem - Eğer NVDIMM'nin kapasitesi çok büyükse (512 GB'dan fazla), , ayarlayın
-map=dev; bu da I/O verimliliğini etkiler ve performansı düşürür
PMEM cihazlarında SQL Server log dosyaları için, PMEM cihazlarını sektör/Blok Çeviri Tablosu (BTT) kullanacak şekilde yapılandırın. Bu yapılandırma, SQL Server log dosyalarının bu depolama teknolojisi için ihtiyaç duyduğu sektör atomikliğini sağlar. İş yükü performans doğrulamaları yapın. Bu çözüm ile en iyi sınıf NVMe SSD'ler arasındaki iş yükünüz için SQL Server günlük performansını karşılaştırın ve ardından ihtiyaçlarınıza en uygun olanı seçin.
ndctl create-namespace -f -e namespace0.0 --mode= sector
Zorlamalı temizleme davranışını devre dışı bırakma
PMEM cihazları O_DIRECT (doğrudan G/Ç) güvenli olduğundan, zorlamalı temizleme davranışını devre dışı bırakabilirsiniz.
Note
Bir depolama sistemi, önbelleklenmiş veya aşamalı yazımların güvenli ve dayanıklı olmasını sağlayabilir; çünkü cihaza yazmaların sistem çökmeleri, arayüz sıfırlamaları ve güç kesintileri arasında devam eden bir ortamda yer almasını ve ortamın kendisinin donanım yedekli olmasını garanti eder.
Veritabanı (
.mdfve.ndf) ve işlem günlüğü (.ldf) dosyaları, SQL Server 2017 (14.x) CU 6 ve sonraki sürümlerinde varsayılan olarakwritethroughvealternatewritethroughkullanmaz, çünkü bunlar zorlamalı temizleme davranışını kullanır. İz bayrağı 3979, veritabanı ve işlem logu dosyaları için zorunlu temizleme davranışını devre dışı bırakır ve vealternatewritethroughve mantığını kullanırwritethrough.SQL Server'ın açıldığı
FILE_FLAG_WRITE_THROUGHdiğer dosyalar, örneğin veritabanı anlık görüntüleri, veritabanı tutarlılığı kontrolleri için dahili anlık görüntüler (DBCC CHECKDB), profiler iz dosyaları ve genişletilmiş olay izleme dosyaları, vealternatewritethroughoptimizasyonlarını kullanırwritethrough.
SQL Server 2017 (14.x) CU 6'da sunulan değişiklikler hakkında daha fazla bilgi için bkz. KB 4131496. Zorlamalı birim erişimi (FUA) dahili özellikleri hakkında daha fazla bilgi için bkz. FUA dahili özellikleri.
SQL Server ve Zorlamalı Birim Erişimi (FUA) I/O alt sistemi özelliği
Desteklenen bazı Linux dağıtımları, veri dayanıklılığını sağlamak için G/Ç alt sistemi düzeyinde Zorlamalı Birim Erişimi (FUA) uygular. SQL Server, Linux iş yükleri için verimli ve güvenilir G/Ç performansı sağlamak için bu özelliği kullanır. Linux dağıtımları genelinde FUA desteği ve FUA'nın SQL Server üzerindeki etkisi hakkında daha fazla bilgi için bkz. Linux üzerinde SQL Server: Zorlamalı Birim Erişimi (FUA) İç Yapısı.
G/Ç alt sisteminde FUA desteği SUSE Linux Enterprise Server 12 SP5, Red Hat Enterprise Linux 8.0 ve Ubuntu 18.04'te kullanıma sunulmuştur. SQL Server 2017 (14.x) CU 6 ve sonraki sürümlerinde, SQL Server'da FUA ile yüksek performanslı ve verimli G/Ç'yi etkinleştirmek için aşağıdaki yapılandırmayı kullanın.
Aşağıdaki koşullar karşılanırsa bu önerilen yapılandırmayı kullanın:
SQL Server 2017 (14.x) CU 6 ve sonraki sürümleri
FUA özelliğini destekleyen Linux dağıtımı ve sürümü (Red Hat Enterprise Linux 8.0, SUSE Linux Enterprise Server 12 SP5 veya Ubuntu 18.04 ile başlayarak)
Note
SQL Server 2025(17.x) tarihinden itibaren SUSE Linux Enterprise Server (SLES) desteklenmez.
Linux çekirdek 4.18 veya sonraki sürümlerde SQL Server depolama için XFS dosya sistemi.
Linux çekirdek 5.6 veya üzeri sürümlerde SQL Server depolaması için ext4 dosya sistemi.
Note
Linux çekirdek sürümü 5.6'dan düşük olduğunda SQL Server verilerini ve işlem günlüğü dosyalarını barındırmak için XFS dosya sistemini kullanın. Çekirdek sürüm 5.6'dan başlayarak, özel gereksinimlerinize göre XFS ile ext4 arasında seçim yapabilirsiniz.
FUA özelliğini destekleyen ve yapılandırılan depolama alt sistemi ve donanım
Önerilen yapılandırma:
Başlangıç parametresi olarak izleme bayrağı 3979'ı etkinleştirin.
mssql-conf'ıcontrol.writethrough = 1vecontrol.alternatewritethrough = 0'yi yapılandırmak için kullanın.
Önceki koşulları karşılamamış diğer tüm yapılandırmalar için aşağıdaki önerilen yapılandırmayı kullanın:
İzleme bayrağı 3982'yi başlangıç parametresi (Linux ekosistemindeki SQL Server için varsayılan değerdir) olarak etkinleştirin ve izleme bayrağı 3979'un başlangıç parametresi olarak etkinleştirilmediğinden emin olun.
mssql-conf'ıcontrol.writethrough = 1vecontrol.alternatewritethrough = 1'yi yapılandırmak için kullanın.
Kubernetes'te dağıtılan SQL Server kapsayıcıları için FUA desteği
SQL Server,
overlayfsdeğil kalıcı bağlı depolama kullanmalıdır.Depolamanın XFS veya ext4 dosya sistemlerini kullanması ve FUA'yı desteklemesi gerekir (ext4 , Sürüm 5.6'dan önceki Linux çekirdeğinde FUA'yı desteklemez). Bu ayarı etkinleştirmeden önce, işletim sistemi ve depolama alt sisteminin FUA seçeneklerini desteklediğinden emin olmak için Linux dağıtım ve depolama satıcınızla birlikte çalışın. Kubernetes'te aşağıdaki komutu kullanarak dosya sistemi türünü sorgulayabilirsiniz; burada
<pvc-name>sizinPersistentVolumeClaim:kubectl describe pv <pvc-name>Çıktıda XFS olarak ayarlanmış
fstype'ı arayın.SQL Server podlarını barındıran çalışan düğümü, FUA özelliğini destekleyen bir Linux dağıtımı ve sürümü kullanmalıdır (Red Hat Enterprise Linux 8.0, SUSE Linux Enterprise Server 12 SP5 veya Ubuntu 18.04 ile başlayarak).
Yukarıdaki koşullar karşılanırsa, aşağıdaki önerilen FUA ayarlarını kullanın:
Başlangıç parametresi olarak izleme bayrağı 3979'ı etkinleştirin.
mssql-conf'ıcontrol.writethrough = 1vecontrol.alternatewritethrough = 0'yi yapılandırmak için kullanın.