OFmizzare SQL Server in ambien virtualizza
Transcript
OFmizzare SQL Server in ambien virtualizza
O"mizzare SQL Server in ambien0 virtualizza0 Danilo Dominici SQL Server MVP SolidQ Chi sono • Consulente, Trainer, Speaker, Autore • Uso SQL Server dalla versione 6.5 • MicrosoA MVP e MCT • Data PlaBorm Specialist @ SolidQ • DBA SQL Server e VMWare admin @ Regione Marche • Co-‐leader del PASS Global Italian Virtual Chapter hMp://globalitalian.sqlpass.org Agenda • Considerazioni generali sulla virtualizzazione • Best pracRces Che cos’è la virtualizzazione • Con il termine virtualizzazione si indica la possibilità di creare un disposiRvo o una risorsa virtuale, uRlizzabile in maniera analoga all’equivalente risorsa fisica. • Se ci riferiamo ad un server virtuale, ci sRamo riferendo ad un disposiRvo virtuale sul quale sono installaR un sistema operaRvo e diverse applicazioni, che l’utente uRlizza esaMamente come se il server fosse fisico. Perché virtualizzare? • Consolidamento/riduzione dei server fisici • Facilità di manutenzione • vMoRon/Live MigraRon dela VM quando ho bisogno di fare manutenzione dell’host fisico • Minori cosR per • Hardware • spazio occupato • condizionamento Perché NON virtualizzare • Se il sistema è già saturo, i benefici della virtualizzazione sono limitaR a: • Manutenibilità del server virtuale • HA/DR del sistema di virtualizzazione (VmoRon o Live migraRon, DRS) • Ma le prestazioni in questo caso non migliorano virtualizzando L Ma SQL Server virtuale è supportato? • VMWare • hMp://support.microsoA.com/kb/897615 • Server VirtualizaRon ValidaRon Program (SVVP) • VMware Customer Support Statement and TSANet • hMp://vmware.com/support/policies/ms_support_statement.html • Hyper-‐V • hMp://support.microsoA.com/kb/956893 Prima di virtualizzare • Analizzare il workload corrente • Per conoscere come va il sistema PRIMA • Per capire come sta andando il sistema DOPO • ProgeMare il virtuale • Leggere ATTENTAMENTE tuMa la documentazione • Manuali del vendor, blog • Scegliere il percorso di virtualizzazione più adaMo • Nuova installazione • Physical-‐to-‐Virtual (P2V) Prima di virtualizzare • Pianificare in ogni deMaglio: ² RequisiR “business”: SLA, RPO, RTO ² Definire una baseline dell’aMuale carico di lavoro ² SRmare la crescita del carico di lavoro in un certo periodo di tempo ² IdenRficare i requisiR del sistema di I/O ² CaraMerisRche dello storage ² Versioni del soAware ² Licenze (possono determinare l’architeMura generale) ² Tipo di carico di lavoro (OLTP, Batch, Data warehouse) ² Account necessari per l’installazione e di servizio ² Strategie High Availability ² Strategie per il backup e recovery Definire una baseline • Quali caraMerisRche prestazionali deve avere il mio vSQL (CPU, memoria, IO, rete) ? • • • • Media giornaliera di uRlizzo Picchi giornalieri di uRlizzo Picchi orari Picchi periodici (mensili, semestrali o annuali) • LegaR ad esempio al ciclo di business (faMurazione, reporRsRca, etc) Definire una baseline (con0nua) • Strumentazione: • • • • • Performance monitor di Windows SQL Profiler/SQL Trace/Extended Events Database Engine Tuning Advisor Dynamic Management Views (DMVs) VMWare • Capacity Planner • ESXTOP • Hyper-‐V Performance Counter • EstraMe da PAL (hMp://pal.codeplex.com) Definire una baseline Monitorare le prestazioni dell’I/O • SQLIO • E’ un tool per determinare la capacità dell’I/O • Specifico per dischi SAN • Può generare diversi Rpi di I/O • • • • LeMura/ScriMura Random/Sequenziale Thread mulRpli Diversa dimensione dei blocchi leo/scrio • Impostare la dimensione del file di test almeno a x2/x4 volte la dimensione della cache della SAN Definire una baseline Monitorare le prestazioni dell’I/O • Verificare i paMern di uRlizzo del disco specifici di SQL Server Tipo di I/O Dimensione blocco Threads/queue Che cosa simula LeMura/scriMura random 8K # cores / files File daR OLTP ScriMura sequenziale 60K 1 / 32 TransacRon log LeMura sequenziale 512K 1 / 16 Table scan ScriMura sequenziale 256K 1 / 16 Bulk load LeMura random 32K # cores / 1 SSAS workload LeMura sequenziale 1MB 1 / 32 Backup ScriMura random 64K-‐256K # cores / files Checkpoint Definire una baseline Monitorare le prestazioni dell’I/O • AutomaRzzare la raccolta di informazioni da SQLIO • POSH-‐SQLIO di Gianluca Hotz • Esportare su Excel e visualizzare in forma grafica • Vari tools free disponibili • Es. script Powershell di Jonathan Kehayias Come virtualizzare? Nuova installazione o P2V • • • • Nuova installazione Equivale ad una migrazione side-‐by-‐side, quindi maggior controllo su ogni step URle se devo fare l’upgrade della versione di SQL Server DownRme minimo Può richiedere nuovo hardware Physical-‐to-‐Virtual • E’ la “fotocopia” della macchina fisica • Non devo riconfigurare SQL Server… • …ma devo riconfigurare l’hardware virtuale • Eliminare i vecchi drivers • Eliminare i vecchi devices • DownRme maggiore Come virtualizzare? VM mul0ple o istanze mul0ple Più VM Più Istanze • Migliore isolamento delle risorse • Migliore sicurezza e gesRone delle patch • Migliore controllo sulle performance • Minori cosR di licensing in alcuni scenari • Non è possibile isolare le risorse da hypervisor • Non è possibile isolare il S.O. STORAGE, CPU, MEMORIA BEST PRACTICES Profilo energe0co BIOS • Per default, viene impostato a “bilanciato” o “risparmio energeRco” • In un host che ospita SQL Server va impostato a “massime prestazioni” Thin/thick provisioning & Block zeroing VMWARE • Il thin provisioning permeMe di risparmiare spazio nello storage allocando solo lo spazio occupato • …ma le performance degradano progressivamente • URlizzare dischi «Thick Eager Zeroed» per il massimo delle performance • Impostare in questo modo i dischi per: • Database • Log • Tempdb Thin/thick provisioning & Block zeroing VMWARE • Come configurarlo • Se la VM è accesa • URlizzando lo Storage VmoRon • FormaMando il disco SENZA la formaMazione veloce • Se la VM è spenta • Inflate del disco (da vCenter) • URlizzando il comando vmkfstools • • • • kb.vmware.com (arRcolo 1011170) vmkfstools –D «VM.vmdk» (se tbz=0 à eagerzeroedthick) vmkfstools –k «VM.vmdk» (converte a eagerzeroedthick) Occhio alle performance: alto carico sulla san (senza vAAI) Paravirtual SCSI (PVSCSI) VMWARE • Gli adapter PVSCSI sono pensaR per elevaR volumi di I/O • Maggiore troughput (fino al 10-‐15%) • Minore carico sulla CPU (fino al 30% in meno) • Sono più adao ad ambienR SAN • Per uRlizzarli: • Aggiungere un nuovo disco e posizionarlo su un canale SCSI diverso da quello di default (Es: 1:0) • Modificare le proprietà del controller aggiunto da VMWare selezionando VMWare Paravirtual Smart layout ☺ LSILOGIC adapter O.S. VMWARE 5.x SQL SERVER VM DATI PVSCSI adapter LOG TEMPDB Snapshot Based backups SQL Server Backups Block alignment • I blocchi hanno offset iniziale differente • Questo comporta fino a tre leMure per ciascun blocco VMDK • L’allineamento risolve il problema • AutomaRco… • A parRre da Windows Server 2008 • Se il disco virtuale viene configurato da vCenter • Ma è sempre meglio controllare J • hMp://bit.ly/BYUg4 Instant File Ini0aliza0on SQL Server • Quando SQL Server crea un database o espande un file (daR o log) • Alloca lo spazio sul disco • Riempie di zeri il file o la porzione di esso che viene allocata • Consuma tempo e risorse • La Instant File IniRalizaRon consente, SOLO per i files daR (mdf e ndf) di allocare lo spazio senza effeMuare l’inizializzazione • Con benefici evidenR in termini di tempo e risorse! Instant File Ini0aliza0on: come a"varla? SQL Server • Aggiungere al service account di SQL Server il permesso Perform Volume Maintenance Task in Local Security Policy • Per default solo Administrators • SQL Server riempie con zeri il i files durante la creazione/ espansione e blocca le scriMure finché non ha terminato • Richiede il restart quando aggiunto ed il reboot se rimosso Posizionamento TempDB SQL Server • Isolare il tempdb dagli altri database • Creare files mulRpli per il tempdb • MicrosoA consiglia 1 file daR per CPU • hMp://technet.microsoA.com/library/Cc966534 • Meglio ancora: • Fino a 8 core: un file daR per core • Più di 8 core: parRre da 8 file daR ed incrementare se c’è latch contenRon • hMp://technet.microsoA.com/library/Cc966545 • TF 1118 per allocare full extent agli oggeo del tempdb Hyperthreading • I processori con Hyper-‐threading aovo duplicano il numero di processori visR dal sistema • Quindi un sistema con 4 core + HT à 8 core • E quindi 8 core à 8 vCPU • Ma 4 core con HT sono uguali a 8 core ? • No, generalmente circa il 120% del numero di core • Quindi nel nostro sistema con 4 core à 5 vCPU • Su sistemi criRci • Il rapporto deve essere 1:1 tra core fisici e vCPU NUMA • Non-‐Uniform Memory Access • Oomizza i problemi di performance quando più processori accedono alla stessa memoria fisica, separando la memoria per ciascun nodo NUMA • Ciascun processore ha la sua memoria “dedicata” • L’accesso alla memoria “remota” di un altro nodo è possibile, ma costosa NUMA • Per prestazioni oomali, ciascuna VM non dovrebbe estendersi su più nodi NUMA • Esempio: • 2 processori fisici = 2 nodi NUMA • 128 GB di RAM • Ogni nodo NUMA ha max 64GB di RAM • Quindi ciascuna VM non deve superare i 64GB • Tools per elenco nodi NUMA • Coreinfo di Sysinternals • CPU history nel Task Manager Source: Frank Denneman NUMA • In vSphere 5 possiamo usare vNUMA • Abilitato su VM con vCPU > 8 • Occorre modificare il parametro: numa.vcpu.maxPerVirtualNode = xxx • E’ disabilitato se aovo Hot Add • Dipende dalla configurazione socket/core del server • vSphere 5.5 Resource Management Guide NUMA • Su Hyper-‐V può essere modificato il parametro “Maximum NUMA nodes allowed on as socket” • NON può essere uRlizzato insieme alle funzionalità di Dynamic Memory Memoria • La quanRtà di memoria assegnata alla VM dipende da: • • • • • Memoria totale dell’host Memoria disponibile dell’host ReservaRons LimiR definiR dall’amministratore DRS (Vmware) / Dynamic Memory (Hyper-‐V) Ges0one dinamica della memoria • VMWare Balloon Driver • Installato con i VMWare Tools • Serve a comunicare alla VM lo stato di pressione di memoria dell’host • In questo modo il sistema operaRvo guest si occupa di allocare o deallocare le pagine di memoria necessarie Ges0one dinamica della memoria • Hyper-‐V 3.0 Dynamic Memory • Installato con gli IntegraRon Services (di Hyper-‐V J) • Non fa overcommit • Tranne durante lo Smart Paging (swapping temporaneo sul disco quando l’host non ha memoria per coprire la Startup RAM) Consigli pra0ci • Evitare l’overcommit della memoria • Se proprio si deve, monitorarne l’uRlizzo • Per SQL Server criRci riservare la memoria per evitare ballooning o swapping • Posizionare server “simili” sullo stesso host, per beneficiare del Transparent Page Sharing (TPS) • Dimensionare la memoria della VM ad un valore pari o inferiore alla memoria max del nodo NUMA (eviRamo il remote memory access) Consigli pra0ci • Assegnare il permesso “Lock Pages in Memory” all’account di servizio di SQL Server • Trace flags all’avvio per uRlizzare l’allocazione di pagine Large Page AllocaRons ( /x /T661 /T834 ) Jumbo frames • I Jumbo frames sono paccheo ethernet con carico superiore a 1500 bytes • Possono trasportare fino a 9000 bytes • Il Network Packet Size di default è 4096. • Posso portare a 8192 bytes solo se tuMo lo stack di rete supporta i Jumbo frames Consigli pra0ci • URlizzare VMXNET3 • Riduce l’uRlizzo della CPU dell’host fisico • Richiede l’installazione dei VMWare Tools sul server virtuale • Separare fisicamente il traffico di rete • SQL Server / VmoRon o Live MigraRon / Service Console • URlizzare più schede di rete ed il NIC teaming per oMenere performance e ridondanza • Minimo di 4 NICs per host • vSphere 5+ supporta più nic per il vMoRon Links uRli RISORSE SQL Server 2012/2014 • Hardware and SoAware Requirements for Installing SQL 2012 • Hardware and SoAware Requirements for Installing SQL 2014 • SQL Server 2012 Upgrade Guide VMWare • Virtualizing MicrosoA SQL Server on VMWare vSphere • Achieving 1 Million I/O vSphere 5.0 • VirtualizaRon arRcles by David Klee Hyper-‐V 3.0 • Virtualizing SQL Server with Windows Server 2012 & Hyper-‐V • Hyper-‐V Dynamic Memory: ExplanaRon and RecommendaRons • Kevin Remde’s 20+ days of Server VirtualizaRon • Keith Mayer’s vSphere 5.5 vs Hyper-‐V 3.0 Tools per il monitoring dell’I/O • SQLIO • • • • • SQLIO Disk Subsystem Benchmark Tool Choosing what SQLIO tests to Run SAN performance tuning with SQLIO POSH-‐SQLIO di Gianluca Hotz SQLIO to Excel charts script di Jonathan Keyahias • CrystalDiskMark • IOmeter • SQLIOSim Q & A Arrivederci al prossimo webinar