2.2 Implement server storage
2.2.2 Implement simple, mirror, and parity storage layout options for disks or enclosures
2.2.4 Configure Tiered Storage
2.2.5 Configure iSCSI target and initiator
2.2.7 Configure Datacenter Bridging (DCB)
2.2.8 Configure Multi-Path IO (MPIO)
2.2.9 Determine usage scenarios for Storage Replica
2.2.1 Configure storage pools
Windows Server 2016 kommer med en lagringsteknologi kalt Storage Spaces. Med Storage Spaces kan man kombinere mange ulike fysiske disker til å lage en Storage Pool som man så kan opprette virtuelle disker fra. Man kan fjerne eller legge til disker i poolen som man ønsker. Dette minner mye om SAN og NAS, men krever mindre investering og kunnkap for å sette opp og administrere.
For å administrere Storage Spaces benytter man Server Manager. For å kunne legge til disker i en storage pool må de være online og initialisert, men uten noen volum på. For å opprette en storage pool navigerer man til Server Manager > File and Storage services > Storage Pools > Tasks > New Storage Pool...Velg et navn for poolen.
Velg diskene som skal inngå i poolen.Trykk så videre og Create. Man kan se den nye poolen i Server Manager under Storage Pools.
2.2.2 Implement simple, mirror, and parity storage layout options for disks or enclosures
Når man har opprettet en Storage Pool kan man opprette så mange virtuelle disker fra den som man ønsker, så lenge samlet størrelse ikke overskrider poolen sin størrelse. Når man oppretter virtuelle disker kan man velge mellom forskjellige Storage Layout for å øke feiltoleransen. Man kan også velge mellom tynn eller tykk provisjonering (samme som dynamic og fixed for VHD). Merk at man med tynn provisjonering kan angi større diskstørrelse en det er tilgjengelig i poolen.
NB. Ikke forveksl Storage Spaces virtuelle disker med VHD(X) disker; det er to forskjellige teknologier. I PowerShell bruker man modulen Storage Spaces og cmdlets med substantiv VirtualDisk til å administrere virtuelle disker i Storage Spaces.
Man oppretter en virtuell disk ved å navigere til Server Manager > File and Storage services > Storage Pools > Virtual Disks > Tasks > New Virtual Disk...
Velg en storage pool å opprette disken fra.
Gi disken et navn og velg storage layout:
- Simple: Ingen feiltoleranse, all plassen blir brukt til lagring, gir mest lagring for pengene
- Mirror: All data blir skrevet/speilet til to eller tre disker slik at man ikke mister data om en disk ryker. Kan beskytte mot at to disker ryker om man bruker minst fem disker. Gir feiltoleranse, men man må betale to til tre ganger så mye for lagringsplassen (mirroring gir bare 1/2 eller 1/3 av lagringskapasiteten til poolen til tilgjengelig kapasitet på disken). Har liten innvirkning på ytelse.
- Parity: Data stripes over tre eller flere disker sammen med paritetsinformasjon. Paritetsinformasjonen brukes til å gjenopprette data hvis en disk ryker. Påvirker ytelse mer en mirroring, men gir mer lagringskapasitet for pengene enn mirroring. For å beskytte mot at to disker ryker må man ha minst 7 disker.
Velg så tynn eller tykk provisjonering, og spesifiser størrelse på disken.
Trykk på Confiirm og disken opprettes. Høyreklikk på disken og velg New Volume... for å opprette et volum.
En annen måte å tilby feiltoleranse i Storage Spaces er å konfigurere en Hot Spare, en innbytterdisk, som tar over hvis en disk ryker i en pool, slik at lagringskapasiteten forblir den samme i poolen, og man kan da gjenoppbygge data. Man kan konfigurere en disk som Hot Spare ved å legge den til i poolen og velge Allocation: Hot Spare.
For mer om feiltoleranse i Storage Spaces kan man lese her: https://docs.microsoft.com/en-us/windows-server/storage/storage-spaces/storage-spaces-fault-tolerance
NB. Om man konfigurerer Storage Spaces i PowerShell så får man enda mer granulert kontroll over innstillingene, og man får alternativer man ikke får i Server Manager.
2.2.3 Expand storage pools
Man kan utvide en Storage Pool ved å legge til flere disker. Naviger til Server Manager > File and Storage services > Storage Pools > høyreklikk på poolen > Add Physical Disk...
Velg disk som skal legges til og trykk OK.
Man kan se at størrelsen på poolen øker under Capacity.
2.2.4 Configure Tiered Storage
I Storage Spaces kan man konfigurere det som kalles Tiered Storage, som gjør at man kan bruke disker med høy ytelse for de mest brukte filene, og disker med lav ytelse til filer som ikke blir brukt så ofte. Dette krever at man har både SSD disker og HDD disker i samme storage pool. Man kan huke av for Tiered Storage når man oppretter en virtuell disk fra en storage pool. Da må man også velge størrelse for henholdsvis Faster Tier og Standard Tier, i stedet for en total diskstørrelse. Flytting av data mellom SSD og HDD skjer sømløst i bakgrunnen.
Når man legger til disker vil Windows forsøke å sjekke om det er HDD eller SSD disker. Bruker man VHD(X) disker i Hyper-V kan det hende at Windows ikke klarer å detektere om det er SSD eller HDD. Da kan man bruke følgende PowerShell kommando til å sette disktype:
# UniqueId kan man finne med Get-PhysicalDisk
Set-PhysicalDisk -UniqueId 6002248068AB16261846CD4EDA8570F3 -MediaType [SSD|HDD]
Man kan spesifisere at visse filer alltid skal ligge på en bestemt tier med PowerShell:
Set-FileStorageTier [-DesiredStorageTierFriendlyName | -DesiredStorageTierUniqueId]
NB. Merk at hvis man skal ha både Tiered Storage og feiltoleranse så må man ha nok disker til å støtte både feiltoleranse på SSD og HDD. Dvs. at ved Two-way Mirroring så trenger man 2 stk. SSD og 2.stk HDD.
2.2.5 Configure iSCSI target and initiator
iSCSI er en teknologi som lar servere og lagringsenheter utveksle SCSI traffic over vanlig IP nettverk. Dette er et mye rimeligere og enklere alternativ til SAN (med fiber) for SMB bedrifter. iSCSI består av to komponenter; initiators og targets. En iSCSI Initiator er en klient (hardware eller software) som initierer iSCSI trafikk til lagrinsenheten på vegne av operativsystemet. Hardware-basert initiator er som regel en host bus adapter (HBA); et utvidelseskort som består av både SCSI host adapter og Ethernet adapter. Fordelen med hardware-basert initiator er at den avlaster prosessoren litt. Software-basert initiator følger med i Windows Server 2016 i form av modulen iSCSI Initiator, og benytter Ethernet adapteret for kommunikasjon. iSCSI Target kan være hardware eller software, og er integrert i lagringsenheten. Den mottar SCSI kommandoer fra iSCSI Initiator, og sender de videre til et logical unit number (LUN). Et LUN kan være en hel disk, en del av en disk eller en rekke med disker. Windows Server 2016 inkluderer en iSCSI Target i form av rollen iSCSI Target Server som er en del av File and Storage Services.
Opprette et iSCSI Target
For å opprette et iSCSI Target må man installere rollen, her ved PowerShell:
Install-WindowsFeature -Name FS-iSCSITarget-Server -IncludeManagementTools
Man kan så opprette en iSCSI virtuell disk og et iSCSI Target i Server Manager > File and Storage Services > iSCSI > iSCSI Virtual Disks > Tasks > New iSCSI Virtual Disk...Velg på hvilket volum disken skal opprettes, og velg navn på disken.
Oppgi størrelse på disken og om den skal være fixed, dynamic eller differentiell.
Velg New iSCSI target.
Gi det nye iSCSI target et navn.
Velg hvilke maskiner (iSCSI Initiator) som kan aksessere iSCSI Target.
Man kan velge å sette opp autentisering av initiator og/eller target, men det er valgfritt.
Trykk videre og Create.
Bruke en iSCSI Initiator
For å koble til et target med iSCSI Initiator navigerer man til Server Manager > Tools > iSCSI Initiator
Under Quick Connect legg inn ip adresse til target og trykk på Quick Connect... og Done.
Target vil da dukke opp under Discovered targets.
Man kan da gå til Disk Management og se iSCSI disken som har dukket opp.
Fordi den nylig er opprettet er den offline. Man kan ta den online, initialisere den, og lage volum som med en vanlig disk.
2.2.6 Configure iSNS
Å aksessere iSCSI Targets med ip adresse kan fort bli knotete i større miljøer med mange Initiators og Targets. Internet Storage Name Service (iSNS) løser dette med å registrere adresser til initiators og targets med hjelp av spørringer fra iSNS klienter. Windows Server 2016 inkluderer iSNS som en feature. iSNS består av fire komponenter:
- iSNS protokoll (iSNSP): Protokoll for alle spørringer og trafikk mellom iSNS server og klienter
- iSNS klienter: En komponent i iSCSI Initiator og Target som registrere informasjon om seg selv på en iSNS server, og spør etter informasjon om andre klienter
- iSNS server: Mottar og prosesserer registreringsforespørsler og spørringer fra klienter, og slår opp i iSNS database
- iSNS database: All iSNS informasjon lagres i en egen database på iSNS server
Man kan installere iSNS server med PowerShell:
Install-WindowsFeature -Name iSNS
Når installert vil iSNS server automatisk registrere alle iSCSI Targets på nettverket. Initiators må man registrere manuelt.
For å registrere en iSCSI Initiator manuelt navigerer man til Server Manager > Tools > iSCSI Initiator > Discovery > iSNS Servers > Add Server...
Skriv inn ip adressen til iSNS server.
Targets på nettverket vil bli listet opp under Server Manager > Tools > iSNS Server > Targets > Discovered Targets
2.2.7 Configure Datacenter Bridging (DCB)
Utfordringen med å ha SAN og LAN på samme nettverk er at SAN liker dårlig pakketap, som er normalt på Ethernet. TCP/IP har mekanismer for å håndtere pakketap, men de fungerer dårlig med SAN som ønsker en kontinuerlig uavbrutt strøm med pakker. Pakketap øker i takt med at båndbredden fylles. For å omgå problemet har man utviklet Datacenter Bridging (DCB) som er en serie med standarder som definerer mekanismer for flytkontroll og administrasjon av båndbredde på nettverk med flere trafikktyper.
Windows Server 2016 inkluderer en implementasjon av DCB som lar oss allokere en spesifikk mengde båndbredde til forskjellige typer nettverkstrafikk. Det kan installeres som en feature med PowerShell:
Install-WindowsFeature -Name Data-Center-Bridging
Men merk at for å implementere DCB i nettverket krever det spesialisert hardware i tillegg. For at servere skal kunne bruke DCB må de ha converged nettverksadaptere (CNA) som støtter DCB, i tillegg må lagringsenheten/SAN støtte DCB.
DCB implementasjonen i WIndows Server 2016 inkluderer en modul kalt DcbQos som kan brukes til å administrere DCB.
# Sett DCBX Willing bit
# Sørger for at konfigurasjon av CNA kun kan settes lokalt
Set-NetQosDcbxSetting -Willing 0
# Lage trafikk klasser
# Man kan hA opp til 8 klasser
New-NetQosTrafficClass -Name "SMB klasse" -Priority 2 -BandwidthPercentage 60 -Algorithm ETS
# Lag QoS policyer
# Bruker -iSCSI for å treffe iSCSI trafikk
New-NetQosPolicy -Name "iSCSI Policy" -iSCSI -PriorityValue8021Action 2
# Aktivere Priority-based Flow Control (PFC) for en angitt prioritet
Enable-NetQosFlowControl -Priority 3
New-NetQosPolicy støtter følgende predefinerte filter:
I tillegg støtter den:
- AppPathNameMatchCondition: Filtrerer trafikk generert av kjørbare filer (.exe)
- IPDstPortMatchCondition: Filtrerer trafikk basert på en spesifisert destinasjonsport
- IpDstPrefixMatchCondition: Filtrerer trafikk basert på destinasjon IP adresse
2.2.8 Configure Multi-Path IO (MPIO)
Multi-Path I/O (MPIO) er en feature i Windows Server 2016 som lar en server, som er koblet til iSCSI, Fibre Channel eller Serial Attached SCSI (SAS), falle tilbake til alternative ruter gjennom nettverket om en tilkobling skulle feile. Kommando for å installere MPIO feature med PowerShell:
Install-WindowsFeature -Name Multipath-IO
For å implementere MPIO må man ha to komponenter til på plass:
- Device Specific Module (DSM): Alle netverksadaptere eller HBA på server som kobler til SAN må ha DSM. DSM som følger med i MPIO featuren er kompatibel med mange enheter, men noen kan kreve egen hardware-spesifikk DSM fra leverandør.
- Redundant network components: Både server, nettverk og lagringsenhet må ha redundante komponenter som byr på flere veier gjennom nettverket. Server bør ha minst 2 nettverkskort, koblet til hvert sitt nett og hver sine svitsjer. MPIO støtter inntil 32 redundante veier gjennom nettet.
Når man har installert featuren kan man administrere MPIO via Server Manager > Tools > MPIO
Man kan se DSM under MPIO Devices. Etter installasjons ligger kun DSM fra Microsoft der. For å installere tredjeparts DSM kan man gå til fanen DSM Install og installere DSM man har lastet ned lokalt.
iSCSI enheter dukker ikke opp før man slår på Add support for iSCSI devices under Discover Multi-Paths.
NB. Enheter identifiseres med deres hardware ID som består av 8 tegn leverandør id (VID), og 16 tegn produkt id (PID). IDen kalles noen ganger VID/PID.
Oppdage enheter
Windows bruker normalt Plug and Play (PnP) for å oppdage og identifisere nye lagringsenheter. Med MPIO vil det hver gang en lagringsenhet blir lagt til, bli skannet for tilgjengelige DSM som korresponderer med enheten. MPIO verifiserer at enheten er aktiv og klar for data. Når PnP detekterer enheten gjennom en annen nettverksadapter, vil MPIO/DSM identifisere det og opprette en multipath gruppe som kan adresseres med en enkelt Id.
DSM policyer
I tillegg til failover kan MPIO også utføre lastbalansering ved å alternere hvilken rute trafikken sendes til SANet. Microsoft sin DSM støtter følgende policyer:
- Failover: En path er primær, mens andre er backup. Svitsjer fra primær til backup ved feil.
- Failback: Samme som failover, men flytter tilbake til primær når den er oppe igjen.
- Round Robin: Man kan velge flere primære pather som DSM vil alternere mellom, samt en backup
- Dynamic Least Queue Depth: DSM velger den ruten som har færrest stående forespørsler
- Weighted Path: Tilgjengelige paths blir tilegnet en vektet prioritet, hvor DSM alltid vil velge pathen med lavest tall (høyest prioritet)
2.2.9 Determine usage scenarios for Storage Replica
Storage Replica (SR) er en Windows Server 2016 Datacenter feature som kan replikere volum, både synkront og asynkront. SR er ment som en proaktiv forberedelse til katastrofer og til å gjenopprette data etter katastrofen inntreffer. Lagringsenhetene som replikeres kan stå i samme maskin, i hvert sitt datasenter eller i hver sin by.
- Synkron replikering: Data skrives til to destinasjoner samtidig, før applikasjonen får beskjed om at det er skrevet. Dette krever en rask forbindelse mellom de to volumene, og vil ikke resultere i tap av data om man må svitsje over til replikaen.
- Asynkron replikering: Data skrives til en destinasjon og applikasjonen får beskjed om det umiddelbart. Så replikeres det til replikaen, og og det avstemmes mellom replikaene når det er ferdig, men applikasjonen får ikke beskjed. Dette passer når man har en treg forbindelse mellom volumene, og vil ikke kunne garantere at data er lik på begge replikaene ved en failover.
Storage Replica er designet til å fungere i tre forskjellige scenarier:
- Server til server: Synkron eller asynkron replikering mellom lokale og delte volumer mellom to servere. Failover gjøres manuelt.
- Cluster til cluster: Samme som server til server, men mellom klynger med servere
- Stretch cluster: Samme som cluster til cluster, men bare mellom asynkrone clustere. Støtter automatisk failover.
SR tilbyr kun ev-veis replikering, fra en kilde til en destinasjon. Når man konfigurerer replika blir destinasjonsvolum automatisk avmontert, slik at det ikke er tilgjengelig for brukere. Hvis man skal ta en failover så må man gå inn i destinasjonen og fjerne replikeringspartnerskapet. Da blir volumet tilgjengelig igjen.
Storage Replica er ment som en forbedring av Distributed FIle System (DFS), som er fil-basert og bare asynkron. SR bruker SMB versjon 3 for kommunikasjon, som inkluderer features som multichannel link aggregation, data encryption og digitale signaturer.
2.2.10 Implement Storage Replica for server-to-server, cluster-to-cluster, and stretch cluster scenarios
Implementering av Storage Replica krever nøye planlegging og mange forutsetninger.
SR må installeres som en feature:
# FS-FileServer er kun nødvendig for å kunne kjøre kommandoen Test-SRTopology
Install-WindowsFeature -Name Storage-Replica, FS-FileServer -IncludeManagementTools -Restart
Selve opprettelsen av partnerskapet gjøres med en enkelt PowerShell kommando mot slutten av prosessen:
New-SRPartnership
Forberede infrastrukturen
Følgende må være på plass på serverene som inngår i replikeringen:
- Windows Server 2016 Datacenter
- Minimum 2GB RAM, helst 4GB
- Egen lagringsinfrastruktur (bare server til server kan bruke interne disker, de andre kan f.eks. bruke iSCSI, Fibre Channel SAN eller SAS). Anbefales å bruke en blanding av SSD og HDDer.
- Opprette minst to virtuelle disker med Storage Spaces, en for logger og en for data.
- SSD bør brukes til disken med logger
- Alle de fysiske diskene som brukes til data må ha samme sektorstørrelse, og alle brukt til logger må ha samme sektorstørrelse.
- Alle diskene må bruke GPT
- Kan ikke bruk systemdisken til replikering
- Volumene som skal replikeres må ha lik størrelse (minst 9 GB)
- Data volumene kan bruke tiered storage, mirrored eller parity disker.
- Nettverket må ha tilstrekkelig hastighet og båndbredde, med omtrent 5 ms round-trip latency for å supportere synkron replikering
- Medlem av ADDS domene
- Brannmur (åpne i begge retninger)
- Internet Control Message Protocol
- SMB (port 445 og 5445)
- Web Services Management, WS-MAN (port 5985)
Teste Storage Replica topologien
Man kan teste topologien med en PowerShell kommando som sjekker mange forutsetninger, foretar ytelsestester og genererer en HTML rapport.
Test-SRTopology -SourceComputerName ServerA -SourceVolumeName F: -SourceLogVolumeName E: -DestinationComputerName ServerB -DestinationVolumeName F: -DestinationLogVolumeName E: -DurationInMinutes 30 -ResultPath C:\temp
Ideel tid å teste på er når kildeserveren arbeider under normal belastning.
Konfigurere cluster
Opprett to normale cluster, og konfigurer de til å ha full tilgang til hverandre. Dette gjøres i PowerShell:
GrantSRAccess -ComputerName ServerA -Cluster ClusterA
GrantSRAccess -ComputerName ServerB -Cluster ClusterB
For et stretch cluster må man lage kildedisken til et Cluster Shared Volume (CSV). Dette gjøres med PowerShell:
Add-ClusterSharedVolume
Opprette Storage Replica partnerskap
Når alt er klart kan man opprette replikeringspartnerskapet:
New-SRPartnership -SourceComputerName ServerA -SourceRGName Gruppe1 -SourceVolumeName F: -SourceLogVolumeName E: -DestinationComputerName ServerB -DestinationRGName Gruppe2 -DestinationVolumeName F: -DestinationLogVolumeName E:
Når man kjører kommandoen vil initiel synkronisering starte, noe som kan ta sin tid avhengig av størrelsen på volumene. For å overvåke prosessen kan man kjøre:
# Sjekk hendelsesloggen
Get-WinEvent -ProviderName Microsoft-Windows-StorageReplica -MaxEvents 40
# Sjekk status på partnerskapet
Get-SRGroup
# Test failover når synkroniseringen er ferdig
Set-SRPartnership -NewSourceComputerName ServerB -SourceRGName Gruppe2 -DestinationComputerName Server -DestinationRGName Gruppe1