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