Kuinka ajoittaa levyjen huolto ohuille levyille, jos Windowsin TRIM on poistettu käytöstä
Summary: Windows-ympäristössä, jossa suuria tietojoukkoja poistetaan ja luodaan usein uudelleen, ohut levyasema saattaa kärsiä edeltävästä TRIM- tai UNMAP-toiminnasta, ja TRIM ("fsutil behavior set disabledeletenotify 1") on ehkä poistettava käytöstä. Tämä toimenpide voi johtaa kysymykseen siitä, miten tallennuksen tehokkuutta ylläpidetään, jos TRIM on pois päältä. ...
Instructions
Yleiskuvaus
Jos Windows-ympäristössä poistat usein suuria tietojoukkoja ja luot niitä uudelleen (esimerkiksi: Varmuuskopioi levylle), edeltävä poistotoiminto voi aiheuttaa suuren määrän UNMAP matriisin komennot. Jos kirjoitat saman levytilan uudelleen, kirjoitusteho saattaa kärsiä, koska saapuvat kirjoitukset odottavat UNMAPs jalostettavaksi. UNMAPs Palauta levytilan elementit levyjärjestelmän puolella olevaan levyvarantoon.
Käyttöjärjestelmämekanismia, joka ohjaa tätä tallennuksen tehokkuuslogiikkaa, kutsutaan "TRIM. Jos TRIM on aktiivinen, ja jos poistat lohkon tiedostojärjestelmästä, tiedostojärjestelmä (NTFS) luo metatietoja vapautuneesta tilasta ja välittää sen I/O-pinossa eteenpäin. I/O-pinon levytasolla päätetään, onko kohdelevy liitetty ATA-liitäntään. Tässä tapauksessa ATA TRIM Komento lähetetään fyysiselle levyobjektille. Jos levy on SCSI-levy, TRIM muunnetaan SCSI UNMAP.
Jos poistat saman dataosan ja kirjoitat sen uudelleen uudelleen, tämän pooliin paluumekanismin tallennuksen tehokkuus on rajallinen. Näissä olosuhteissa olet voinut poistaa käytöstä TRIM NTFS-tasolla kyseisen tuotantotyön keston ajan tai poista käytöstä TRIM kokonaan ja palauta kaikki lohkot eri aikaan manuaalisesti.
Tästä herää kysymys, miten voit varmistaa, että levyt ovat edelleen tilatehokkaita pitkällä aikavälillä?
Rajoitukset
Huomaa, että on joitakin rajoituksia, jotka on otettava huomioon ennen ratkaisun luomista.
1.
Voit käynnistää retrimin laitteessa suorittamalla defrag-komennon yleensä /L-vaihtoehdolla. Kun poistit TRIM-toiminnon käytöstä "fsutil behavior set disabledeletenotify 1," Saatat luulla, että trimmaus tai unmap poistetaan käytöstä vain poistettaessa ja että retrim toimii odotetulla tavalla. Näin ei ole. Defragin retrim-toiminto on mekanismi, joka jakaa tyhjän harvan tiedoston ja kutsuu sitten FSCTL_MOVE_FILE siirtääksesi tiedot. Lisätietoja on kohdissa "Windows Internals 7", "Part II", s. 644 ff. Tuloksena oleva käyttäytyminen merkitsee poistotoimintoa konepellin alla. Valitettavasti, jos disabledeletenotify is "1", retrim Komento onnistuu edelleen. Se ei johda unmaps.
Tämän seurauksena tallennustilan palautusjärjestyksessä on oltava aktivointivaihe TRIM ennen eheytyksen suorittamista.
2.
Lisäksi, jos olet poistanut käytöstä TRIM Aktivoi se maailmanlaajuisesti, eheytä ja deaktivoi se uudelleen, deaktivointiprosessi voi törmätä epätäydelliseen retrim-komennon suorittamiseen, vaikka komento on palannut kehotteeseen. Kun testasimme tätä laboratoriossa Windows 2019: ssä, huomasimme, että meidän oli odotettava pari sekuntia ennen asetusta disabledeletenotify kohtaan "1" uudelleen. Uskomme, että tämä on seurausta defrag komento ja optimointipalvelu taustalla.
3.
Jos ajoitat TRIM Drive Optimizerin avulla Resurssienhallinnan oletusvalikko edellyttää ajoitettua tehtävää nimeltä "ScheduledDefrag" (/Microsoft/Windows/Ehey) Tehtävien ajoituksessa. Jos muokkaat tehtävää, Aseman optimoija havaitsee tämän tosiasian ja pyytää palauttamaan oletukset, ennen kuin voit jatkaa. Jos poistat tehtävän käytöstä, voit silti suorittaa eheytyskomennot manuaalisesti, mutta et voi ajoittaa niitä.
4.
Tämä "ScheduledDefrag" -tehtävää kutsutaan myös järjestelmän ylläpidossa (Control Panel\All Control Panel Items\Security and Maintenance\Automatic Maintenance).
5.
Jos poistat aktivoinnin TRIM, UNMAP komentovirta IO-pinon alempiin kerroksiin pysähtyy välittömästi. Tämä on normaalia. Jos huomaat ajan myötä, että varattu tila vs. käytetyn tilan ero kasvaa liian suureksi, sinun on joko (1) annettava TRIM/UNMAP Komentovirta harvasta tiedostojen käsittelystä enemmän aikaa tai (2) suorita interventio useammin.
Ratkaisu
Tämän vuoksi suosittelemme, että jätät nämä järjestelmän oletusasetukset ja -tehtävät ennalleen ja luot tehtävien ajoitukseen uuden tehtävän , joka:
- Mahdollistaa
TRIM ("fsutil behavior set disabledeletenotify 0") - Toimii
defrag /l against all drives ("defrag /C /L") - Odottaa, kunnes tuloksena olevat komennot on lähetetty levyjärjestelmään
("timeout /t 60") - Poistaa
TRIM again ("fsutil behavior set disabledeletenotify 1")
HUOMAUTUS
Vaiheen 3 aikakatkaisuarvo on laboratoriotestien interpolointi. Käytä tätä lähtökohtana. Jos huomaat, että levyjärjestelmäpuolen varattujen kapasiteettiarvojen ja tiedostojärjestelmän ilmoittamien käytettyjen kapasiteettiarvojen välillä on eroja, sinun on ehkä käytettävä suurempia arvoja, kuten 300 sekuntia (5 minuuttia) tai jopa enemmän (3600; 1 tunti). Vaihtoehtoisesti saatat joutua suorittamaan tehtävän useammin. eli päivittäin viikoittaisen sijaan. Syy, miksi nämä erot voivat muodostua, selitetään edellä rajoituksissa (5).
XML-tehtävämalli
Seuraavassa on malli, jonka avulla voit tuoda sen tehtävien ajoitukseen, jotta voit käyttää sitä pohjana. Kopioi ja liitä alla oleva XML-koodi tiedostoon, aseta tiedosto määritettävän palvelinjärjestelmän ulottuville ja tuo tehtävä tehtävän tuontitoiminnolla. Alla olevaa tehtävämallia kutsutaan DellSanDiskMaintenance. Se suorittaa edellä mainitut neljä vaihetta viikoittain lauantaisin klo 20.00 (20), ja se sijoitetaan ajastimen juureen, esimerkiksi:
<?xml version="1.0" encoding="UTF-16"?> <Task version="1.6" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Source>Dell Technologies</Source> <Date>2023-07-07T09:21:50.4883878</Date> <Author>Dell Technologies</Author> <Description>This task is an example of how to optimize thin SAN drives, if TRIM is globally disabled on the system.</Description> <URI>\DellSanDiskMaintenance</URI> <SecurityDescriptor>D:AI(A;;FA;;;BA)(A;;FA;;;SY)(A;;FRFX;;;LS)(A;;FR;;;AU)</SecurityDescriptor> </RegistrationInfo> <Triggers> <CalendarTrigger> <StartBoundary>2023-07-01T20:00:00</StartBoundary> <ExecutionTimeLimit>PT2H</ExecutionTimeLimit> <Enabled>true</Enabled> <ScheduleByWeek> <DaysOfWeek> <Saturday /> </DaysOfWeek> <WeeksInterval>1</WeeksInterval> </ScheduleByWeek> </CalendarTrigger> </Triggers> <Principals> <Principal id="LocalSystem"> <UserId>S-1-5-18</UserId> <RunLevel>HighestAvailable</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>false</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>false</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession> <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine> <MaintenanceSettings> <Period>P1D</Period> <Deadline>P4D</Deadline> <Exclusive>false</Exclusive> </MaintenanceSettings> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>PT4H</ExecutionTimeLimit> <Priority>7</Priority> </Settings> <Actions Context="LocalSystem"> <Exec> <Command>%windir%\system32\fsutil.exe</Command> <Arguments>behavior set disabledeletenotify 0</Arguments> </Exec> <Exec> <Command>%windir%\system32\defrag.exe</Command> <Arguments>/C /L /U</Arguments> </Exec> <Exec> <Command>timeout</Command> <Arguments>/t 60</Arguments> </Exec> <Exec> <Command>%windir%\system32\fsutil.exe</Command> <Arguments>behavior set disabledeletenotify 1</Arguments> </Exec> </Actions> </Task>