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 makalede, Linux'ta SQL Server 2019 (15.x) ve sonraki sürümleri için kalıcı belleğin (PMEM) nasıl yapılandırıldığı açıklanır.
Genel bakış
SQL Server 2019 (15.x), kalıcı bellek kullanan birçok bellek içi özellik kullanıma sunulmuştur. Bu makale, Linux üzerinde SQL Server için kalıcı belleği yapılandırmak için gereken adımları kapsar.
Not
Aydınlanma terimi, kalıcı bellek odaklı bir dosya sistemiyle çalışmayı ifade etmek için tanıtıldı. Kullanıcı alanı uygulamalarından dosya sistemine doğrudan erişim, bellek eşleme (mmap()) kullanılarak kolaylaştırılır. Bir dosya için bellek eşlemesi oluşturulduğunda, uygulama G/Ç yığınını tamamen atlayarak yükleme/depolama yönergeleri verebilir. Bu, konak uzantısı uygulaması perspektifinden (SQLPAL'ın Windows veya Linux işletim sistemiyle etkileşim kurmasına izin veren kod) "aydınlatılmış" bir dosya erişim yöntemi olarak kabul edilir.
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
fsdax modunu seçtik ve sayfa başına meta verileri depolamak için sistem belleğini kullanıyoruz.
--map=devkullanmanızı öneririz. Bu seçenek meta verileri doğrudan ad alanında depolar.
--map=mem kullanarak meta verileri bellekte depolamak şu anda deneysel bir işlemdir.
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 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, ndctlile yapılandırıldıktan ve oluşturulduktan sonra, veritabanı dosyalarını buna yerleştirebilir veya yeni bir veritabanı oluşturabilirsiniz.
Aşağıdaki komutu kullanarak mod tempdb yapılandırıldığında SQL Server veri dosyalarını (MDFS, NDFS) ve fsdax dosyalarını bir PMEM cihazında depolayabilirsiniz. SQL Server günlük (LDFS) dosyalarını depolamak için bunu kullanmayın; çünkü işlem günlüğünün, kesim atomiklik garantileri sağlayan bir depolama birimi üzerinde olması gerekir.
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şim ve güncelleme konusunda en iyi performans için
-map=memkullanmak tercih edilir. - NVDIMM'nin kapasitesi çok büyükse (512 GB'tan fazla),
–map=dev'yi ayarlayın, bu da GÇ verimliliğini etkileyecek ve performansı engelleyecektir.
PMEM cihazlarında SQL Server günlük dosyaları için PMEM cihazlarını kesim/Blok Çevirisi Tablosu (BTT) kullanacak şekilde ayarlayın. Bu, depolama cihazlarının bu teknolojisi için SQL Server günlük dosyaları için gerekli kesimin bölünmezliğini sağlar. ayrıca iş yükü performans doğrulamaları gerçekleştirmenizi öneririz. İş yükünüz için SQL Server günlük performansını bu çözümle sınıfının en iyisi NVMe SSD'leri arasında karşılaştırabilir ve ardından gereksinimlerinizi en iyi karşılayan ve daha iyi performans sağlayan çözümü seçebilirsiniz.
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.
Not
Depolama sistemi, cihaza verilen yazmaların sistem kilitlenmeleri, arabirim sıfırlamaları ve güç hataları arasında kalıcı olacak bir ortamda tutulmasını ve ortamın donanım yedekli olmasını sağlayarak önbelleğe alınmış veya hazırlanmış yazmaların güvenli ve dayanıklı olarak kabul edilmesine olanak tanır.
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. İzleme bayrağı 3979, veritabanı ve işlem günlüğü dosyaları için zorunlu boşaltma davranışını devre dışı bırakır vewritethroughvealternatewritethroughmantığını kullanır.Veritabanı anlık görüntüleri, veritabanı tutarlılığı denetimleri için iç anlık görüntüler (
FILE_FLAG_WRITE_THROUGH), profil oluşturucu izleme dosyaları ve genişletilmiş olay izleme dosyaları gibi SQL Server'daDBCC CHECKDBkullanılarak açılan diğer dosyalar,writethroughvealternatewritethroughiyileştirmelerini kullanır.
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 Linux dağıtımlarının bazı sürümleri, veri dayanıklılığı sağlayan FUA G/Ç alt sistemi özelliği için destek sağlar. SQL Server, SQL Server iş yükleri için son derece verimli ve güvenilir G/Ç sağlamak için FUA özelliğini kullanır. Linux dağıtımına göre FUA desteği ve bunun SQL Server üzerindeki etkisi hakkında daha fazla bilgi için bkz. Linux'ta SQL Server: Zorlamalı Birim Erişimi (FUA) İç Yapıları.
SUSE Linux Enterprise Server 12 SP5, Red Hat Enterprise Linux 8.0 ve Ubuntu 18.04, G/Ç alt sisteminde FUA özelliği için destek kullanıma sunulmuştur. SQL Server 2017 (14.x) CU 6 ve sonraki sürümlerini kullanıyorsanız, SQL Server tarafından FUA ile yüksek performanslı ve verimli G/Ç uygulaması için aşağıdaki yapılandırmayı kullanmalısınız.
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)
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.
Not
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 kullanmanız gerekir. Ç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/veya donanımı
Önerilen yapılandırma:
Başlangıç parametresi olarak izleme bayrağı 3979'ı etkinleştirin.
ve
control.writethrough = 1yapılandırmak içincontrol.alternatewritethrough = 0kullanın.
Önceki koşulları karşılamayan neredeyse tüm diğer yapılandırmalar için önerilen yapılandırma aşağıdaki gibidir:
İ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.
ve
control.writethrough = 1yapılandırmak içincontrol.alternatewritethrough = 1kullanı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ışmanız gerekir. 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ü kullanıyor olmalı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ı kullanabilirsiniz.
Başlangıç parametresi olarak izleme bayrağı 3979'ı etkinleştirin.
ve
control.writethrough = 1yapılandırmak içincontrol.alternatewritethrough = 0kullanın.
İlgili içerik
- Linux'ta SQL Server nedir?
- Linux üzerinde SQL Server için en iyi performans yöntemleri ve yapılandırma yönergeleri