Opdatering af firmware til diskdrev i Windows Server 2016 (TP4)

Med Windows Server 2016 satte vi os op for at løse et kundesmertepunkt, som vi havde observeret over tid: opdateringer af disk-firmware. Vores egen erfaring har vist, at SSD'er kræver mere hyppige firmwareopdateringer end andre lagerenheder. At kræve, at en lagringsplacering er offline for sådanne vedligeholdelsesoperationer, påvirker vores kunder og de applikationer, de ønsker at køre, negativt.

Goal

Det langsigtede mål er at tilvejebringe en mekanisme, der muliggør opdatering af disk-firmware uden nedetid på applikationen, når den kører på Storage Spaces.

Bemærk: Teknisk forhåndsvisning 4 (TP4) omfatter API'er og Windows PowerShell cmdlets, der hjælper dig med at opdatere individuelle disk-firmware. Koordinering for at afbøde en indvirkning på I / O arbejdsbyrde er endnu ikke til stede. Firmware opdateringer er en risikabel vedligeholdelsesoperation, og du bør kun udføre dem efter grundig test af systemadministratorens nye firmware billede.

Første skridt

For at sikre almindelig enhedsadfærd begyndte vi ved at definere nye og nuværende valgfrie hardware lab kit (HLK) krav til SAS, SATA og NVMe enheder. Disse krav beskriver, hvilke kommandoer en SATA-, SAS- eller NVMe-enhed skal understøtte for at kunne opdateres med firmware ved hjælp af disse nye, Windows-native PowerShell-cmdlets. For at understøtte disse krav er der en ny HLK-test for at kontrollere, om leverandørprodukter understøtter de rigtige kommandoer og få dem implementeret i fremtidige revisioner. Her er links til de forskellige krav:

PowerShell cmdlets

De to cmdlets tilføjet til Windows Server 2016 er:

  • Get-StorageFirmwareInformation
  • Opdatering-StorageFirmware

Den første cmdlet giver dig detaljerede oplysninger om enhedens funktioner, firmwarebilleder og revisioner. I dette tilfælde indeholder maskinen kun en enkelt SATA SSD med 1 firmware slot. Her er et eksempel:

PS C:> Get-PhysicalDisk | Get-StorageFirmwareInformation

UnderstøtterUpdate: True

NumberOfSlots: 1

ActiveSlotNumber: 0

SlotNumber: {0}

IsSlotWritable: {True}

FirmwareVersionInSlot: {J3E16101}

PS C:>

Bemærk: SAS-enheder vil altid rapportere "SupportsUpdate" som "True", da der ikke er nogen mulighed for udtrykkeligt at spørge enheden til støtte for disse kommandoer.

Den anden cmdlet giver administratoren mulighed for at opdatere drevets firmware med en billedfil. Du skal hente denne billedfil direkte fra OEM eller drevleverandøren.

Disken vil først indlæse det nye firmwarebillede til et internt opbevaringsområde. Mens dette sker, fortsætter I / O typisk. Billedet aktiveres efter download. Under denne tid vil disken ikke kunne reagere på I / O-kommandoer, da en intern nulstilling forekommer. Dette betyder, at der ikke vil blive serveret data fra denne disk under opdateringen. En applikation, der åbner data på denne disk, skal vente på et svar, indtil firmwareopdateringen er afsluttet. Her er et eksempel på cmdletet i aktion:

PS C:> $ pd | Update-StorageFirmware -ImagePath C:[Email protected] -SlotNumber 0

PS C:> $ pd | Get-StorageFirmwareInformation

UnderstøtterUpdate: True

NumberOfSlots: 1

ActiveSlotNumber: 0

SlotNumber: {0}

IsSlotWritable: {True}

FirmwareVersionInSlot: {[Email protected]}

PS C:>

Da disse cmdlets kan bruges via PowerShell, er det også muligt at scripte deres brug.

Bemærk: Drev udfører typisk ikke I / O-anmodninger, når de aktiverer et nyt firmware-billede. Hvor længe et drev tager for at aktivere, afhænger af dets design og den type firmware, du opdaterer. Vi har observeret opdateringstider fra færre end 5 sekunder til mere end 30 sekunder.

Dette bestemte drev udførte firmwareopdateringen inden for ~ 5.8 sekunder, som vist her:

PS C:> Mål-kommando {$ pd | Update-StorageFirmware -ImagePath C: FirmwareJ3E16101.enc -SlotNumber 0}

Dage: 0

Timer: 0

Protokol: 0

Sekunder: 5

Millisekunder: 791

Flåter: 57913910

TotalDays: 6.70299884259259E-05

TotalTimer: 0.00160871972222222

TotalMinutes: 0.0965231833333333

TotalSekunder: 5.791391

TotalMilliseconds: 5791.391

Ofte stillede spørgsmål

  • Kan jeg opdatere firmware på min SAN via denne mekanisme?
    • Nej - SAN'er har normalt deres egne værktøjer og grænseflader til sådan vedligeholdelsesoperationer. Denne nye mekanisme er beregnet til direkte tilknyttet opbevaring, såsom SATA-, SAS- eller NVMe-enheder.
  • Vil dette arbejde på enhver lagerenhed?
    • Dette vil fungere på drev, der implementerer de korrekte kommandoer i deres firmware. Cmdlet Get-StorageFirmwareInformation viser, om et drevs firmware faktisk understøtter de korrekte kommandoer (for SATA / NVMe), og HLK-testen tillader leverandører og OEM'er at teste denne adfærd.
  • Hvoraf får jeg firmwarebilledet?
    • Du bør hente firmware direkte fra din OEM- eller drevleverandør og ikke downloade den fra andre parter.
  • Vil dette arbejde på grupperede diske?
    • Cmdlets kan også udføre deres funktion på grupperede diske, men husk på, at der ikke findes nogen orkestration i TP4 for at begrænse I / O-indflydelsen på løbende arbejdsbyrder. Generelt er det bedst at udføre opdateringer til disk firmware, når der ikke er nogen, eller bare en minimal arbejdsbyrde på de underliggende diske.
  • Hvad sker der, når opdateringen mislykkes?
    • Opdateringen kan mislykkes af forskellige grunde, nogle af dem er: 1) Drevet understøtter ikke de korrekte kommandoer til Windows for at opdatere firmwaren. I dette tilfælde aktiveres det nye firmware-billede aldrig, og drevet fortsætter med at fungere med det gamle billede. 2) Billedet kan ikke downloades til eller anvendes til dette drev (version mismatch, corrupt image, ...). I dette tilfælde forventes drevet at mislykkes aktiveringskommandoen. Igen skal det gamle firmware-billede fortsætte med at fungere.
    • Hvis drevet ikke svarer efter en firmwareopdatering, risikerer du sandsynligvis en fejl i selve firmware-firmwaren. Derfor skal alle firmwareopdateringer først testes i et laboratoriemiljø, inden de sættes i produktion.

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.