Etiket Bulutu

Benchmark Convert_IMplicit Database High Availability Database Mirroring datawarehouse dimension table dmv Dynamic Data Masking Execution Execution Plans fact table Failover Cluster Node ekleme Failover Clustering FileStream generate script High Availability Implicit Instant File Initialization index Kinect Linux Live Query Statistics Log Shipping Mirroring object explorer object explorer details ODBC Driver pass performance performance tuning Plan Handle Planü Power View reporting services rol Row Level Security script sql serer 2016 sql server SQL Server 2008 SQL Server 2008 Log Shipping SQL Server 2012 SQL Server 2012 installation SQL Server 2012 Kurulumu SQL Server Backup SQL Server da Backup planı SQL Server da Maintenance Plans oluşturma SQL Server database mirroring SQL Server Disaster Recovery sql server dynamic management views SQL Server Failover Cluster SQL Server High Availability SQL Server Log Shipping SQL Server Maintenace Plans sql server performans SQLDIAG SQLDIAG Troubleshooting T24 Temenos truncate table t-sql unique index performance 1. Dünya savaşı istatistikleri 1456 451 ACID advanced analytics Advanced Data Analytics Affinity algı Alter index Alter table ALTER TABLE .. ALTER COLUMN Altın Oran Always On ALWAYSON AlwaysOnDemoTool amazon web services kinesis AMR analiz analysis service Ankara Antivirus apache kafka Arduino Article Assembly asymmetric audit Authentication Auto Growth Availability Group azure Azure Backup azure event hub partition azure event hubs azure event hubs servisi azure event hubs veri edinme Azure File Share Azure Fiyatlandırma Azure HDInsight Azure Hizmet Modelleri Azure ML Azure New Portal Azure Pricing Azure Queue azure sql database configuration azure sql database kullanımı azure sql database stream veriyi tutma azure sql database table partitioning Azure Storage azure stream analytics azure stream analytics dashboard azure stream analytics ölçeklendirilmesi azure stream analytics servisi Azure Table BA Backup backup encyrption backupset Bakım BASE bellek Best Practice BI Semantic Model Big Data Big User blocking blocking disable trigger blocking enable trigger Buffer Cache buffer pool Buffer Pool Extension bulk logged Buluta Veri Depolama Buluttaki Disk Business Analytics Conference business intelligence Büyük Veri Case Central Management Server certificate changed data capture Cloud Computing Cloud DR CLR Cluster clustered columnstore index Clustered Index Code Snippets Cold Purging collation column store column-level columnstore ColumnStore Indexes Compress ComputerNamePhysicalNetBIOS Concurrency Conditions Contained Database Contained Databases convert CONVERT_IMPLICIT Corruption Credentials cube DAC Dashboard Tasarımı data cleansing Data Compression Data Consistency Model data encryption data matching data mining Data Page data profiling data quality Data Services Data Warehouse Design Database database list Database Management Sistem database master key Database Mirroring Database Snapshot database trigger database-level Data-Ink Ratio datasets datasource DataZen date date dimension db_owner DBA DBCC dbcc dropcleanbuffers dbcc freeproccache DBMS dbo user DDL deadlock debugging DecryptByKey DecryptByPassPhrase deleted bitmap delta store Denali Denali SSAS deny database list deşifre detail index developer DIFFERENTIAL BACKUP DirectQuery Dirty Read Disaster Recovery Distribution Yapılandırma Distributor Distributor Agent dm_server_services DMF DMO DMV document db dosya bazlı şifreleme dqs dr Dynamic Management Function Dynamic Management Object Dynamic Management View ecrypt Effected Report Design Techniques Eğitim EncryptByKey EncryptByPassPhrase encryption endpoint Environment Variable error Error 5030 Error Log Estetik Raporlama Estimated Rows Eş Zamanlılkk Etkili Rapor Tasarlama Teknikleri Etkinlik ETL event Event Viewer except;intersect;sql execution Execution Plan export formats extended events Extended Stored Procedure Facets Failover Failover Cluster fast n execution plan FETCH NEXT FILELISTONLY FILLFACTOR File Table file-level FileStream Filter Pack Filtered Index First_Value Flat File fn_repl_hash_binary Focal Point foreignkey FORMAT Forwarded Record forwarded_record_count ftp task FULL BACKUP Full Recovery Full-Text Search functions Gartner Geocluster Gerçek Zamanlı Dashboard gestalt Golden Ratio görsel duyu group by Güvenlik ha Hadoop hafıza Hash HASHBYTES HEADERONLY headers footers Heap Hekaton hicri High Availability hijr Hiyerarşi Hybrid Cloud IaaS Index Index Scan In-Memory InMemory DW In-Memory DW InMemory OLTP In-Memory OLTP Internet of People Internet of Things IO IOT IoT nedir Isolation Level indeks index inmemory in-memory oltp internet of things isolation level istatistik istatistikler İş zekası İzolasyon Seviyesi Job json json support knowledge base kolon-satır bazlı kurulum küp Lag Lansman latch Lead linked server lock locking locking hints Log Backup Log Reader Agent Log Shipping login Lost-Update LQS Machine Learning Maintenance Management Studio matrix Max Text Replication Size mdx memory Memory Optimization Advisor Memory Optimized Table Memory Optimized Tables merge Merge Agent merge kullanımı Merge Publication Merge Replication merge type 1 slowly changing dimension merge type 1 slowly changing dimension örneği merge type 1 vs type 2 scd merge type 2 slowly changing dimension merge type 2 slowly changing dimension örneği merge type 3 slowly changing dimension merge type 4 slowly changing dimension message Microsoft Advanced Data Analytics Çözümleri microsoft azure Microsoft Bulut Microsoft Sanal Akademi Microsoft SQL Server Microsoft SQL Server 2014 Yenilikleri Microsoft SQL Server 2016 Mirror mirroring missing index Monitoring move Msdb multi_user multiversion concurrency control MVP MVP Roadshow MySnippet Named Pipes Natively Store Procedures Natively Stored Procedures Nesnelerin İnterneti Network Binding Order NoEngine Approaches nonclustered columnstore index Non-Repetable Read NoSQL NoSQL Approaches NoSQL Dünyası object explorer Odak Noktası ODBC Office 365 Offline OFFSET olap OLAP Backup OLE DB OLTP Online Index order attributes Otomatik Büyüme OVER PaaS PAD_INDEX page out page properties PAGE RESTORE PAGEIOLATCH paging parameters partition partitioning PASS PASS Summit PASS Summit 2014 Performance Performance Tuning performans performans tuning Phantom Read pivot Policies Policy Based Management Filtreleme Policy Management Power BI Power BI Dashboard Power BI Rest API power bi power view PowerBI PowerBI for Office 365 powerbi PowerMap PowerPivot PowerQuery powershell powershell ile sql yönetimi PowerView PowerView raporlarının web sayfalarına gömülmesi precon Primary Key primarykey Project Deployment Model Project Variable Protokol Proxy Proxy Account Publisher Purging on Independent Tables QL Server 2014 Yenilikleri Que Reader Agent Query Plan query store R Range Raporlama Raporlama Projeleri için Strateji Belirleme Raporlama Projelerine Hazırlık Read Committed Read Uncommitted RealTime Dashboard Rebuild RECONFIGURE RECONFIGURE WITH OVERRIDE Recovery model Relational Engine relationships Rename SSRS Database Repeatable Read Replication Replication Monitoring replikasyon report manager web site report parts reporting service reporting services reporting servis Resource Governor RESTORE Restore Database Restore Generate Restore Generate Script Restore transaction log rollback rs Rule of Thirds sa user SaaS sayfalama scd 3 demo scd karşılaştırma scd type 4 demo Scheduling Schema Comparison script Security segment elimination select into Self-Service BI Semantic Search Serializable Server Core SERVERPROPERTY Service services shared data sources shared datasets Shared Memory sharepoint Sharepoint 2010 ShowPlan Shrink simple recovery sing_user sliding window Slowly Changing Dimension snapshot Snapshot Agent Snapshot Publication Snapshot Replication Snippet snowflake sorting sp_configure sp_describe_first_result_set sp_server_diagnostics sp_spaceused sql SQL Agent Job SQL Azure sql bilgi yarışması SQL CLR SQL DIAG SQL DIAG Performans verisi toplama SQL endpoint SQL Login SQL Onculeri SQL Öncüleri sql script sql server SQL Server 2005 SQL Server 2008 SQL Server 2011 CTP3 SQL Server 2011 Denali SQL Server 2012 SQL Server 2012 CTP3 SQL Server 2012 RC SQL Server 2012 RC0 SQL Server 2012 ShowPlan Enhancements SQL Server 2012 T-SQL Enhancements SQL Server 2014 Sql Server 2014 Cardinality Estimator SQL Server 2014 Yenilikleri sql server 2016 SQL Server 2016 New Features SQL Server 2016 Yenilikleri sql server agent sql server assembly ekleme SQL Server Authentication sql server cast ve convert sql server clr integration sql server clr kullanımı sql server clr örnek sql server cluster SQL Server Code Name Denali SQL Server da Kullanıcı Yaratma SQL Server Database Project sql server dmv ve dmf sql server execution plan temizleme SQL Server Express Backup sql server fast n option örneği sql server fast n seçeneği SQL Server login sql server management stdio sql server merge into örnek sql server merge komutu sql server merge performnas sql server merge type 1 scd sql server merge type 2 scd sql server merge type 3 scd SQL Server Mobile Report Publisher SQL Server Network Interface SQL Server Onculeri SQL Server Öncüleri SQL Server Öncüleri Ankara SQL Server Performance sql server performans SQL Server Profiler SQL server recovery model SQL Server Reporting Services SQL Server Restore Generate Script SQL Server sa SQL Server Security SQL Server SQL DIAG sql server tarih dönüşüm işlemi sql server tarihsel veriler ile çalışma SQL Server User SQL Server yetki SQL Server yetkilendirme sql servera .net kodu ekleme SQL Serverda yetkilendirme nasıl SQL Serverda yetkilendirme nasıl yapılır sql to oracle linked server sql türkiye SQL User With Password sql yarışma SQLCMD sql'den oracle'a linked server SQLDIAG SQLDIAG Report SQLOS sqlsaturay SQLSaturday SQLSaturday #182 SQLSaturday #359 sqlsaturday #451 sqlserveronculeri ssas SSAS 2012 SSIS SSIS 2012 ssis SSMS SSMS Project SSMS Solution ssrs Stanby Database star schema STOPAT STOPBEFOREMARK STORAGE Storage Engine stored procedure stream analytics job subreports Subscriber Subscription subscriptions symmetric SYS sys.dm_db_index_physical_stats sys.dm_db_index_usage_stats sys.dm_db_missing_index_columns sys.dm_db_missing_index_details sys.dm_db_missing_index_group_stats sys.dm_db_missing_index_groups sys.server_principals sysadmin System Databases System View şifre şifreleme table table difference TableHasClustIndex TableHasIdentity TableHasPrimaryKey Tablet PC Tabular Mode Tabular Model TCP/IP TDE Tempdb time series Transaction Transactional Publication Transactional Replication Transparent Data Encryption trigger Troubleshooting TRY_CONVERT TRY_PARSE tsql t-sql T-SQL 2012 tsql mistakes Undocument union unionall Updatable ColumnStore İndex upgrade Veri ambarı veri edinme seçenekleri Veri Güvenliği Veri Hizmetleri Veri madenciliği Veri Mürekkep Oranı Veri Tabanı Yönetim Sistemleri Veri Tipi Veri Tutarlılık Modelleri Veri Yönetimi Evrimi verinin evrimi Veritabanı oluşturmak VERİTABANI YEDEKLEME STRATEJİLERİ veritabanı yedeklerinin şifrelenmesi Veritabanı Yöneticisi Veritabanı Yönetimi VeritPaq view any database Visual Studio VTYS web services Webcast Windows 7 Windows 8 Windows Authentication Windows Azure Windows Failover Clustering wmi WRITELOG xevents xp_sqlagent_enum_jobs YEDEKLEME STRATEJİLERİ Yedekli Çalışma Yetkilendirme Yiğit Aktan ysfkhvc yusuf kahveci Yüksek Erişilebilirlik Yüksek Süreklilik zip

Sql Server Virtualization

Ekleyen: Yavuz Filizlibay Mayasoft Dba Tarih:26.05.2016 Okunma Sayısı:1654



Virtualization, Türkçe karşılığı sanallaştırma, son dönemde çok popüler olan bir kavramdır. Sanallaştırma, bugün sıklıkla sunucu donanım kaynaklarının tek bir işletim sistemine atanması yerine, bir sanallaştırma ara katmanı (hypervisor) ile birden fazla işletim sistemine sunulması olarak kullanılır. Sanallaştırmanın ilk uygulamaları, 1960 yılında mainframe bilgisayarlarda, kaynakların farklı uygulamalara bölünmesiyle gerçekleştirilmiştir.

Son 15 yılda, sanallaştırma kullanımı artmış ve günümüzde sanallaştırmanın kullanılmadığı bir datacenter düşünmek mümkün olmayacak bir hale gelmiş, sistem uzmanlarına büyük yönetimsel esneklik ve maliyet avantajı getirmiştir. Sanallaştırma bu kadar yaygınken, Sql Server’ı sanala kurmayın gibi yanlış bir söylem de IT dünyasında yaygın bir şehir efsanesidir. Sql Server’ın hypervisor üzerine kurulmasının performans kayıplarına yol açtığı ve fiziksel sunucu üzerine kurulması tavsiye edilmektedir. Sanallaştırılması kabul edilemeyecek derecede kritik ve gerçek zamanlı işlem yapması gereken SQL sunucular bulunabilir. Fakat bu özel durum dışında bu makalede Sql Server Sanallaştırması hakkında yanlış bilinenleri ve Sql Server sanallaştırması sırasında nelere dikkat etmemiz gerektiğini anlatmaya çalışacağım.

Hypervisor, fiziksel sunucu üzerine kurulan yazılımsal sanal bir katmandır. Sanal işletim sistemleri bu hypervisor üzerine kurulur. Hypervisor, fiziksel sunucu ile sanal makinelerin arasında köprü görevi görür. Sanallaştırmada sunucu üzerine kurulan hypervisor makineye host machine, hypervisor üzerine kurulan sanal makinelere de guest machine denmektedir.

Sql Server Sanallaştırması yapılırken sık karşılaşılan hatalar, sanal makinenin yanlış konfigüre edilmesi, host sunucu kaynaklarının yanlış ölçeklendirilmesi, sanal makine performanslarının yanlış izlenmesidir. Günümüzde hypervisor limitleri istenen düzeye gelmiş olup, desteklenen işlemci ve hafıza boyutları kabul edilebilir performans değerleri sunmaktadır. Ayrıca sanallaştırma, hem maliyet hem de yönetilebilirlik açısından çok fazla fayda sağlamaktadır.

Bu makalede sizlere Vmware veya Hyper-V kurulumları veya yönetimsel konularından bahsetmeyeceğim, bu konular hakkında, konunun uzmanlarının yazdığı birçok makale vardır. Sql Server’ın sanallaştırma katmanları üzerindeki yapılandırılmasının nasıl olacağı, nasıl olması gerektiği ve Sql Server sanallaştırmasında karşılaşılan hataları en az seviyeye nasıl indirebiliriz bunları aktaracağım. Ama önce lisanslamadan biraz bahsedelim.

Sanal Sistemlerde SQL Server Lisanslaması

SQL Server, Microsoft’un Volume Licensing anlaşmaları içerisinde sattığı ürünleri arasında en pahalı olanıdır. Bu ürünün lisanslaması hakkında fikir sahibi olmak, organizasyonunuza lisanslama konusunda ciddi miktarda para kazandırmak anlamına gelir.
SQL Server lisanslaması hakkında bu makalede detaylı bilgi vermek zor fakat, sanallaştırma açısından çok önemli bir bilgi olan “Enterprise Core licensing with Software Assurance” tipinden bahsetmek önemlidir.

Ent Core modelinin sınırsız sanallaştırma özelliğini kullanmıyorsanız, her bir sanal makina için en az 4 core, yani 2 Ent Core lisansı almanız gerekir. Eğer bir fiziksel sunucu üzerinde diyelim ki 5 tane SQL Server çalıştırıyorsanız, her bir VM üzerinde tek bir core atanmış bile olsa, toplamda 20 core’luk lisans satın almanız gerekmektedir. Bu da hızlıca on binlerce dolar mertebesine ulaşacaktır. Bunun yerine, fiziksel sunucularınızı tek bir güçlü host üzerinde sanallaştırırsanız, 20 core – 10 lisans (her bir Ent Core lisansı 2 adet core lisanslamaya yarar) almak yerine, sadece fiziksel host üzerinden toplam core miktarını hesaplayıp ona göre lisans alımı yapabilirsiniz. Burada en önemli nokta, Ent Core sadece lisansını satın alıp Software Assurance eklemezseniz, bu anlattığımız çözüm geçerli olmayacaktır.
Yukarıda bahsettiğimiz, üzerinde 5 tane SQL VM çalışan host, eğer 2 işlemciye sahipse ve her işlemci üzerinde 4 tane core varsa, o zaman Ent Core w SA lisanslamada toplam lisanslamanız gereken core sayısı 8 olacaktır. 20 yerine 8 core, ciddi kazanımlar sağlamanıza yardımcı olur. Ayrıca bu şekilde lisanslama yaptığınız takdirde, bu sunucu üzerinde istediğiniz kadar sunucu performansı etkilenmediği sürece yeni sunucu eklemeniz mümkün. Aynı sunucudaki işlemci ve core sayıları değişmediği sürece, isterseniz 100 tane daha SQL Server kurun, yeni lisans satın almanız gerekmez.

Yukarıda bahsettiğimiz gibi SQL lisanslaması karmaşık bir konu ve bu makalede tüm başlıklarını incelememiz mümkün değil fakat Ent Core w SA lisanslamasını incelemenizi, sunucularınız yoğunluklarına ve iş yüklerine göre fiziksel hostlar üzerinde lisans masraflarınızı düşürmek üzere birleştirmenizi tavsiye ederim. 

Sanallaştırma Tipleri:

Sanallaştırmanın temelinde, İşlemci, Donanım ve Memory sanallaştırması bulunur. Bunlar hakkında bilgi sahibi olmalıyız ki, Sql Server Sanallaştırmasını daha iyi anlayabilelim. Sanallaştırmanın 3 farklı donanımsal temeli olduğu gibi, 3 farklı da tipi vardır bunlar;
1- Full Virtualization using Binary Translation: Sanal makinadaki işletim sistemi, sanal olduğunu bilmez. İşletim sistemi istekleri doğrudan işlemciye iletilir.
2- OS Assisted Virtualization or Paravirtualization: Sanaldaki işletim sistemi ve hypervisor, daha performanslı bir şekilde direk haberleşir. İşletim sistemindeki uygulama istekleri direk işlemciye istekte bulunur, yüksek performans sağlamaktadır. Windows 2000/XP bu tipte desteklenmemektedir.
3- Hardware Assisted Virtualization: En temel seviyedeki sanallaştırmadır. Intel VT-x ve AMD-V olarak marka bazında terimleri vardır. Yukardaki iki tiptede olduğu gibi direk işlemciye uygulamalar erişim isteği gönderir. 64-Bit işletim sistemi desteği vardır.

Aşağıdaki şekilde, sol tarafta sanallaştırma yapılmadan kullanılan bir sunucuyu, sağ tarafta ise sanallaştırma yapılmış bir sunucunun katmanlarını görmekteyiz.

SSV-1

Cpu Virtualization – İşlemci Sanallaştırması

İşlemci sanallaştırmasında, fiziksel işlemci hypervisor vasıtası ile sanal işlemcilere ayrılır. Fiziksel işlemci ile  sanal işlemciler arasında hypervisor haberleşmeyi ve yönetimini sağlar. Input/Output portların geçişi hypervisor üzerinden olur. Sanallaştırma yapılmamış X86 mimarisindeki bir işlemcinin bölümlerini inceleyelim. Vmware Whitepaper: http://www.vmware.com/files/pdf/VMware_paravirtualization.pdf 

SSV-2

X86 Mimarisi, işletim sistemine erişim seviyesine gelen kadar 4 bölüm üzerinden geçer. Kullanıcı uygulamaları Ring3 üzerinde çalışır. İşletim sistemi memory ve donanıma direk erişmek istediğinde Ring 0’ı kullanır. İşletim sisteminin talepleri direk fiziksel sunucunun donanımı üzerinde gerçekleşir. Sanallaştırma, şekildeki OS ile “Host Computer System Hardware” yani sunucu arasında bir katman oluşturarak (Hypervisor), fiziksel sunucunun donanımını yönetir.
Hypervisorler iki tiptedir;
1- Sunucu üzerine kurulan, sanal makineleri ve sunucu donanımları yöneten hypervisorler. (Vmware Esx, Hyper-V, XenServer)
2- Uygulama olarak çalışan, kişisel bilgisayarlarda kurulan hypervisorler. (Vmware Workstation, VirtualBox, VirtualPC)
Hypervisorler, işlemciye erişimi, I/O (input/output) giriş çıkış isteklerini ve memory kaynaklarını kontrol eder ve yönetirler.

Memory Virtualization – Bellek Sanallaştırması
  
SSV-3
Bellek sanallaştırmasında, işletim sistemindeki bellek direk olarak sunucu üzerindeki belleğe erişim sağlayamaz. Sanal makinadaki şekil SSV-2’deki PA – Physical Memory aracılığı ile, işletim sistemdeki bellek sunucu üzerindeki belleğe erişim sağlamaktadır.

Sanallaştırmanın Getirdiği Faydalar:

- Maliyet Avantajı: Sanallaştırmanın son yıllarda popüler olmasında en büyük etkendir. Tek bir sunucu üzerinde kaynakların paylaşımı sayesinde daha uygun maliyetli projeler çıkmaktadır. Sistem yönetimi ve lisans maliyetlerinde büyük faydalar sağlamaktadır. Doğru yapılandırılma yapılmadığı zaman ise, sanallaştırma performans kayıplarına yol açmaktadır, bu da getirdiği maliyet avantajını kaybettirmektedir.
- Enerji Tasarrufu: Daha az sunucu ile sanallaştırmaya geçildiğinde, fiziksel sunucuların tükettiği elektrik ve soğutma maliyetleri azalacaktır.
- Sistem Yönetimi: Fiziksel sunucuya oranla, işletim sistemi kurulumları ve yapılandırılmaları çok daha basittir. Bilgi Teknolojileri bölümlerine büyük kolaylıklar sağlamaktadır.
- Felaket Kurtarma Senaryolarında Kolaylık: Sanal makinaların replikasyonu, fiziksel makinalara göre çok daha kolaydır. Sanal makinalar donanımdan bağımsız çalıştıkları için, yedekleme-geri yükleme gibi işlemler fiziksel makinalara göre daha basit olmaktadır.
- Yüksek Erişebilirlik: Vmotion ve Migration özellikleri ile, çalışan bir sistemde, sistem aksamasına uğramadan yüksek erişebilirlik sunmaktadır.
- BT’nin Masraf Merkezi İmajından Kurtulması: Çoğu yerde bilgi teknolojileri veya bilgi işlem bölümleri masraf merkezi olarak görülür. Sanallaştırmanın sağladığı maliyet ve yönetimsel avantajlar ile bu imaj artık geride kalmaktadır.

Sistem Uzmanı VS Veritabanı Uzmanı:

Sanallaştırma yapılmadan önce sanal makinaların ihtiyaçlarının önceden belirlenmesi gerekir. Mevcut fiziksel bir makinada çalışan Sql Server’ın performansı izlenerek, ne kadar işlemci kullanımı olduğu, ne kadar ram ihtiyacı ve disk alanın hesaplanması gerekmektedir.

Sql Server’ın sanallaştırması iki türlü olmaktadır. Yeni bir sistem kurulumunda veya mevcut sistemin fizikselden sanala taşınma durumda. Bu iki durumda da sistem uzmanı ile veritabanı uzmanları (Dba) karşı karşıya gelmektedirler. Yapısında Dba olmayan kurumlarda ise, yazılımcılar veya  yazılım firmaları ile sistem uzmanları Sql Server konusunda çatışma yaşamaktadırlar.
Sistemci Sql Server’ı, fazla işlemci kullanmayan, işlemciden ziyade çok fazla ram ihtiyacı olan, ne kadar fazla ram olursa o kadar kullanır olarak gören ve çok fazla disk alanı isteyen bir sunucu olarak görür.

Aslında olması gereken, tek bir işlemci üzerindeki tüm çekirdekleri atamak yerine, iki işlemcinin ihtiyaç kadar olan çekirdeklerini eşit olarak atamak en ideal olan işlemci yapılandırılmasıdır. Sql Server birçok işlemi memory üzerinde yaptığından, memory boyutunun fazla olması tabiki önemlidir ama esas performans açısından memory’lerinde hızlı olması gerekmektedir. Çok yüksek miktarda uygun maliyetli memoryler yerine çok daha hızlı düşük kapasiteli ideal boyuttaki memory’ler atamak önemlidir. Gereksiz yere büyük disklere ihtiyaç yoktur. I/O değerleri yüksek performanslı diskler Sql Server’ın ihtiyaç duyduğu donanımlardandır.
Ufak gibi gözüken fakat dikkat edilmesi gereken diğer noktalar ise; Sql Server’ın kurulu olduğu sunucu üzerine başka bir uygulama kurulmamasıdır. Bu sunucunun bir application server gibi kullanılmaması gerekmektedir. Yapılan en büyük yanlışlardan biri de, sunucuya atanan memory’nin hiçbir ayar yapmadan hepsini Sql Server’un kullanımına sunmaktır. Bu gibi sunucularda sık sık hatalarla karşılaşılır. Örnek olarak 64gb’lık bir sunucunuz var, bunun 4gb’tını hpervisor için, %10’unu da Windows Server için ayırmalısınız. Sanalda bu makine için 60gb’lık ram oluşturulmalı ve Sql Server içinde de 54 gb’lık en fazla kullanacağı ram kapasitesi ayarlanmalıdır ki bu sunucu düzgün hizmet verebilsin.

Sanal Makine Kaynak Yapılandırılması:

İşlemci Yapılandırılması:

Sql Server’ın kurulacağı sanal makinanın işlemci sayısını belirlerken, ilk önce gereksinim neyi karşılıyor ise o kadar sanal işlemci (vCpu) atamak yeterli olacaktır. Fiziksel bir sunucudan aktarılan Sql Server’daki işlemci sayısı sanalda birebir aynı olduğunda, gerekli ihtiyacı karşılamayabilir. Sanal ortamda daha fazla, sanal işlemciye ihtiyaç duyabilmektedir.

Sanal ortamlarla ilk karşılaştığımızda, elimizdeki fiziksel işlemcilerden çok daha fazla sanal işlemci gördük. Ne kadar çok fazla sanal işlemci demek, o kadar çok sunucumuza iş yükü getirir. Sql Server’a bol bol sanal işlemci atadığınızda, çok daha hızlı bir Sql Server’ınız olacağı anlamına gelmez. Gereksiz yere atanan sanal işlemciler, sunucu (host) üzerinde aşırı yük getirir, bu da sunucunun isteklere yanıt vermesini geciktirir ve performansını düşürür.

Sanallaştırma ortamında işlemcilerin paylaştırılması bazen sorunlara neden olabilir. Şekil SSV-4’te, Sql server soket1 işlemcisinden çalışıyor, Sql boşa geçtiği zaman application server ile iki fiziksel işlemci paylaştırıldığından, app. Server soket1 e istek gönderebilir. Aynı zamanda Sql server çalışmaya başladığında, fiziksel soket1 üzerinde hem sql hem app. Server çalışmış olur. Bu çalışmada performans kaybına neden olmaktadır.  Cross NUMA (Non-Uniform Memory Access) diye adlandırılan problem ortaya çıkacaktır. Plan yapılmadan yapılan işlemci paylaşımlarında bu tarz durumlarla sıkça karşılaşılmaktadır.

SSV-4
Sanallaştırmada sanal makinaların kapasite boyutlarını yapılandırırken, fiziksel  işlemci soketi sayısı, işlemci başına düşen çekirdek sayıları ve memory yapılandırılmasına dikkat edilmelidir. Sanal makinaları ölçeklendirmede bazı hususlar vardır. Aşağıdaki örnekte, 2 adet fiziksel soket, her soket başına 6 çekirdek ve 96 gb toplam memory boyutumuz var. Sanal makinanımızın özellikleri de 4 çekirdek işlemciye ve 32 gb memory’e sahip bir makinadır.

Sanal makinadaki 4 çekirdek, VM host’tun bir fiziksel soketinde bulunan çekirdek sayılarından az veya eşit olduğu zaman, tüm işlemleri tek bir soket üzerinden yapar. Diğer soket üzerinden çalışma ihtiyacı duymaz, bu atamalar Hypervisor kendisi otomatik olarak yapmaktadır. Hypervisor’un bu şekilde çalışması, sanal makinanın diğer sokete ihtiyaç duymayacağından, sanal makinanın daha performanslı çalışmasını sağlamaktadır. Böyle bir yapılandırma için yapılandırma ayarlarından bir değişiklik yapılmasına gerek yoktur, Hypervisor otomatik olarak algılayarak, arka planda yapılandırmayı kendisi yapmaktadır.

SSV - 5

Eğer fiziksel soketteki çekirdeklerden daha fazla bir sanal makinamız var ise, 4 çekirdek değil de, 8 çekirdeğe sahip bir sanal makina için, yukarıda bahsettiğimiz durum gerçekleşmeyecektir. Bir fiziksel soketimizde 6 çekirdek olduğu için, sanal makina diğer 2. Fiziksel soketi de kullanacaktır. Fakat bu kullanım sırasında, hypervisor tarafında direkt olarak fiziksel sokete bir atama gerçekleşmeyecektir, sanal makina hangi CPU’ları kullanacağına karar veremez ve Co-Scheduling dediğimiz eş zamanlı CPU çalışması böyle bir yapıda bozulacaktır.
Şekil SSV – 6’da olduğu gibi, fiziksel soketteki 6 çekirdek var, sanal makinadaki çekirdek sayısı 8 olduğundan, hypervisor işlemci atamasını direk fiziksel sokete verememektedir. Cross yani çapraz bir şekilde işlemciyi kullanacaktır, cross olarak Sql Server’ın çekirdekleri kullanması best practice olarak önerilmemektedir. Sanallaştırmada, işlemci yapılandırılmasında karşımıza çıkan olumsuz durumlardan biridir.

SSV – 6

Virtual NUMA Yapılandırması

NUMA (Non-Uniform Memory Access) Türkçe’ye çevirmeye çalıştığımızda, Tekdüzen Olmayan Bellek Erişimi olarak çevirebiliriz. NUMA, bazı bellek bölümlerinin daha uzun erişim gecikme sürelerine sahip olduğu çok işlemcili tasarımlar ile kullanılan bir bilgisayar sistemi mimarisidir. Bunun nedeni, sistem belleği ve işlemcilerin birbirlerine bağlanış şeklidir. Bazı bellek bölümleri, çeşitli bağlantı dokusu türleri aracılığıyla tüm işlemciler birbirine bağlı olacak şekilde doğrudan bir veya daha fazla işlemciye bağlanır. Büyük çok işlemcili sistemler için, bu düzenleme bellek çekişmelerinin azalmasını ve sistem performansının artmasını sağlar. Sanallaştırma platformları Vmware ve Hyper-V de NUMA yapılandırılmasını desteklemektedir.

NUMA mimarisi, memory’i ve CPU’ları NUMA nodeları olarak adlandırılan gruplara böler. Sistemdeki tek işlemciler açısından, bu işlemci ile aynı NUMA nodedun da yer alan memory lokal olarak, başka bir NUMA nodedun da bulunan memory ise remote olarak bilinir. CPU’lar yerel memory’e daha hızlı erişebilir.
Vmware’de, ESX 5 ve üzeri sistemlerde, sanal makinadaki vCpu (virtual CPU) sayısı, sunucu üzerindeki fiziksel çekirdek sayısını geçtiğinde, sanal makinanın NUMA yapılandırması optimize olamamaktadır.

Vmware Esx 5 üzeri ve Hyper-V Server 2012 sistemleri, virtual NUMA nodelarının partition olarak çalıştırarak, hypervisor katmanında optimize edebilmektedir. Vmware üzerindeki sanal makinaya ait 8 vCPU veya sanal makinadaki vCPU sayısı, sunucu üzerindeki fiziksel çekirdekten daha fazla olduğu durumlarda bu optimizasyon yapılabilmektedir. Bu yapılandırmayı etkinleştirmek için konfigürasyon parametrelerine “numa.vcpu.min” ayarını eklememiz gerekmektedir.

Bu yapılandırmadan sonra, vCPU ve memory ataması virtual node’lara bölünerek, 4 vCPU’nun Fiziksel Soket 0’dan, 4 vCPU’nun da Fiziksel Soket 1’den çalışmasını sağlayacaktır. Sql Server sanal makinasını Virtual node’lara böldüğünde, Virtual Node 0’da 32 gb ram ve 4 vCPU, Virtual Node 1’de 32 gb ram ve 4vCPU olduğunu görmekteyiz. Şekil – SSV – 7

SSV – 7
Bu yapılandırmanın Esx üzerinde nasıl olduğuna bakalım, sanal makinanın Configuration Parametrelerine erişebilmemiz için, sanal makinanın kapalı olması gerekmektedir. Kapalı olan sanal makinamızın Edit Settings bölümünü açıyoruz.

SSV – 8

Options sekmesinde, General satırına tıklıyoruz. Configration Parameters bölümü sanal makinamız kapalı olduğu için aktif durumda.

SSV – 9
Add Row butonuna tıklayarak yeni bir satır ekliyoruz. Eklediğimiz satırın Name kısmına numa.vcpu.min, Value alanına da 2 yazıyoruz.

SSV – 10
Bu parametreyi girdikten sonra, SSV – 7’de gösterildiği gibi, sanal makinamızın vCPU’larını ve Memory atamalarını fiziksel soketlere ayrıştırmış olduk. Bu sayede, büyük yapıdaki sanal makinalara kurulu olan Sql Server’ların dar sanallaştırmadan kaynaklanan Cpu ve memory cross kullanımını engellemiş oluruz.

Vmware Cpu Reservation – Cpu Share

Sanal makinanız başladığı zaman, sanal makinaya ait kaynakların hepsi açıldığı gibi sanal makinaya atanmaz, ne kadar kaynak kullanacak ise, kaynak havuzundan ihtiyacı olan memory ve CPU’yu alır. Sql Server için bu yapı, istenmeyen bir yapıdır, Sql Server açıldığı andan itibaren, host üzerinden memory ve CPU’larının Sql Server sunucusuna atanması gerekmektedir.
Cpu rezervasyonu için, sanal makinanın kapalı olmasına gerek yoktur. Sanal makinanın Edit Settings’ten ayarlarına giriyoruz.


SSV-11
Resources sekmesinden CPU bölümüne geliyoruz, Reservation kısmından sunucuya ne kadar CPU rezerve edeceğimizi Mhz biriminden yazabilmekteyiz. Rezervasyonda komple çekirdek sayılarını rezerve etme gibi bir durum yerine, CPU hızlarını toplam mhz biriminden rezervasyon yapabilmekteyiz.

SSV-12
Turuncu üçgen ile gösterilen şekilde bize host üzerindeki tüm çekirdeklerin toplam hızlarını mhz biriminde göstermektedir, reservation’ı turuncu üçgene kadar getirdiğinizde, tüm CPU’ları sunucuya rezerve etmiş olursunuz, host üzerinde eğer başka sanal makinalar var ise, böyle bir yapıda çok yavaş çalışacaktır. Limit kısmından da sanal makinanın CPU hızına limit koyarak, diğer sanal makinaların CPU hızlarından kullanmamasını sağlayabilirsiniz.

Resource Allocation – Shares bölümü, eğer host üzerinde Sql Server dışında başka sunucular da var ise, bu bölümünden Sql Server işlemcilerine öncelik verebiliriz. Eğer Sql Server host üzerinde tek başına çalışıyor ise bu bölümü kullanmaya gerek yoktur. Sql Server olan bir host da, Sql Server için High share vermek daha doğru olur. CPU Shares ike Reservation’nın farkı, Reservation da Sql Server için CPU kullanımını ayırmaktadır, 8000 mhz olan bir reservation da Sql Server 8000 mhz’ini kendine ayırır. Shares de ise sanal makinaya yüksek veya düşük öncelikli CPU kullanımı verilmektedir, reservation tanımı yapılmadı ise CPU dinamik olarak sunucunun öncelik durumuna göre CPU kullanımını sağlar.

Memory Yapılandırması:

İşlemci yapılandırmasında shares ve reservation yapılandırması, memory yapılandırması içinde geçerlidir. Memory reservation ve share ayarları için, Edit Settings – Resource  sekmesindeki memory alanından düzenlemeleri yapabiliriz.

SSV-13
Vmware, host üzerinde bulunan toplam memory’nin daha fazlasını sanal makinalar için kullandırmaya izin vermektedir. Host üzerinde 64 gb memory olan bir senaryoda, 3 adet sanal makine için her sanal makinaya 24 gb memory atanabilmektedir. Böyle bir yapıda memory overcommit diye tabir edilen, atanan değerin üzerinde bir kullanıma sebep olacaktır. Bu yapılandırmanın başlıca sebebi, boşta memory olduğunda, diğer sanal makinaların boştaki memory kendisinin kullanabilmesidir. Sanal makinalarda tüm memory kullandığında ise ballooning diye tabir edilen, fiziksel memory fazlası kullanımı meydana gelecektir. Bu da memory hızlarında düşüşlere sebebiyet vermektedir.
Vmware balloning işlemini, sanal makine kurulumundan hemen sonra kurduğumuz Vmware Tools ile birlikte, Vmware Balloon Driver’ı kurmaktadır. Bu driver sahte bir memory kaynağı oluşturarak, sanal makinaya sunucu üzerinde, yeteri kadar memory varmış gibi göstermektedir. Sql Server proseslerinin hata almasındaki en büyük sebeplerden biri de memory ballooning yaşanmasıdır. Sql Server yapı itibari ile hızlı ve stabil çalışan memorylere ihtiyaç duymaktadır.
Vmware üzerinde çalışan Sql Server’ın önerilen konfigürasyonu özetle şu şekilde olmalıdır;
- Host’un sahip olduğu memory’den daha fazla memory Sql Server sunucusuna verilmemelidir.
- Host üzerinde birden çok sanal makine var ise, ve bu sanal makinalar için kullanılan memory değeri, host memory değerinden fazla olduğunda Sql Server sunucusu için memory reservation yapılmalıdır. Böylelikle Sql Server’ın kullanacağı memory ayrılmış olur, diğer sanal makinalar ile kaynak havuzundan memory’i paylaşmamış olur.
- Sql Server özelliklerinde Lock Pages in Memory seçeneği kullanılmalıdır. Bir ballooning durumunda memory baskısı en aza indirgenmiş olur.
- Sql Server’ın minimum ve maximum server memory değeri atanması halinde, buffer pool’u Sql Server yöneteceğinden bu ayar yapılmalıdır.
- Host üzerinde fiziksel iki işlemci bulunduğunda, Sql Server’ın bu işlemcileri kullanırken cross numa olarak kullanmaması için numa.vcpu.min değeri ayarlanmalıdır.

Vmware Performans İzleme

Sql Server yapılandırmasından sonra, Vmware üzerinde Sql Server’ın performansını izleyerek, Sql Server’ın host üzerindeki değerlerini gözlemleyebiliriz. İlk olarak SSH bağlantı ile Vmware’in konsoluna bağlanarak esxtop komutunu inceleyeceğiz.
Vmware konsoluna bağlanabilmemiz için Puttu programını aşağıdaki linkten indiriyoruz.
http://www.putty.org/
Putty programını açmadan, Vmware host üzerinde SSH servisinin çalışıyor olması gerekiyor, öncelikle bu servis nasıl açılır buna bakalım.
Host’un Configuration sekmesine geliyoruz, buradan Software – Security Profile bölümünü açıyoruz. Security Profile bölümünün sağ üst köşesinde bulunan Properties’e giriyoruz.

SSV-14
SSH’ın üzerine tıkladıktan sonra aşağıdaki Option bölümüne giriyoruz. Servisi start diyerek başlatıyoruz.

SSV-15
Bu ayarı tamamladıktan sonra indirdiğimiz Putty.exe programını açıyoruz. Putty programında, Host name kısmına Vmware hostun adı veya Ip adresini yazıyoruz. Connection type: SSH, Port: 22 varsayılan olarak gelmektedir.

SSV-16
Open ile SSH bağlantısını başlatıyoruz, karşımıza gelen komut satırında ilk olarak Login bilgisi sormakta, Esx hostumuzdaki kullanıcı adı ve şifreyi girerek hoşta login oluyoruz.

SSV-17
Komut satırına esxtop yazarak, Vmware’in host seviyesinde performans sayaçlarını görebilmekteyiz.

SSV-18
Bu ekranda, host üzerinde çalışan ve hypervisor işlemlerini de getirmektedir, biz sadece host üzerinde çalışan sanal makinalara bakacağımızdan SHIFT + V tuş kombinasyonuna tıklayarak, sanal makinaları ekrana getiriyoruz.

SSV-19
Esxtop değerlerini inceleyelim;
%RDY time– İşlemcinin aktif çalışma yüzdesini gösterir
%CSTP – Co-Scheduling olan işlemcilerin yüzdesel değerlerini gösterir, sanal makinalar arası işlemcilerin diğer sanal makinalar ile paylaştığı durumlarda buradaki yüzdesel değer artar.
%WAIT - %IDLE – Buradaki değerler yüksek olduğunda, CPU üzerindeki iş yüklerinin yoğun olmadığı anlamına gelir.
&MLMTD – Eğer burada bir değer yazıyor ise, sanal makine özelliklerinde CPU’ya limit verilmiştir demektir, verilen limit değerleri bu alanda çıkmaktadır.
Soru işaretine basarak ? diğer disk, memory gibi değerleri de görebiliriz.

SSV-20
Memory kullanımı

SSV-21
Klavye kısa yolları ile, d – m – c ye tıklayarak ekranlar arası geçiş yapılabilmektedir.
Sanallaştırmanın Getirdiği Kısıtlamalar

Sql Server’ın sanallaştırma üzerinde çalışmasında, performans açısından bazı sıkıntılar olduğunu makalenin başında bahsetmiştik. Bu sıkıntılar nelerdir, Sql Server’ı sanal sistemler üzerine kurduğumuzda ne gibi zorluklarla karşılaşırız bunlara bakalım.
Vmware ve Hyper-V’de sanal makinaların donanım özelliklerinde kısıtlamalar mevcuttur. Her yeni versiyonda bu değerler yükseltilsede, Sql Server iş yüklerinde belli bir limit getirmektedir. CPU ve memory atamalarında bu limitlerin dahilinde kalmak zorunda oluyoruz. Vmware Esx 6 ile bu limitler oldukça arttırılmıştır. VM başına 128 vCPU, 4 TB memory ve 62 TB disk kapasitesine izin vermektedir. Bu özelliklerden daha fazla donanım ihtiyacınız olduğunda sanallaştırma size uygun olmayacaktır.
Failover cluster yapısında, Vmware’deki shared disk ayarlarından dolayı IO sıkıntısı yaşanmaktadır. Raw Device Mappings sadece fiber channel desteği bulunduğundan farklı bağlantılar için destek verememektedir.

Vmware, storagelerde 1gb/s iSCSI kullanıldığından yoğun Sql Server iş yüklerinde dar boğaza sebebiyet verebilmektedir. Fiziksel sunucudaki direct-attached storage yapısı SAN’lere göre daha ucuz olduğundan tercih sebebi olabilmektedir.

Bu teknik kısıtlamaların yanı sıra, Vmware gibi kendine özgü bir yapısı olan bir sistemi yönetmek, sistem ekibine ekstra yük getirecektir, Windows sunucuları yönetmenin yanında sanal sistemleri de yönetmek için yetkin personele ihtiyaç duyulmaktadır. Sanallaştırma çok yaygınlaşmış olsa da, günümüzde halen birçok Sql Server fiziksel sunucularda çalıştığını unutmamak gerekir.

Bu makalede, Sql Server’ın sanal sistemlerdeki yapılandırılmasının nasıl olacağı, sanallaştırma yapılan Sql Server sunucularında yapılan yanlışlıkları anlatmaya çalıştım. Sıkça karşılaştığımız Sql Server’ın sanala geçişindeki performans kayıplarını minimize etmek açısından, Sql Server sunucularının sanallaştırmaya geçmeden önce kaynak planlamasının doğru bir şekilde yapılması gerekmektedir.
 


yorum yaz

Üye Girişi

Kullanıcı Adınız

Şifreniz

Şifremi Unuttum

Arkadaşına Tavsiye Et

Tavsiye edebilmek için siteye giriş yapmalısınız