VirtualMemory: 'value out of range' error when sizes > 1/8th of the disk
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 32/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- powershell
- Ambito
- devops, operating-systems
Direzione di ricerca
Iniziare dal punto di ingresso Set-PageFileSetting della risorsa VirtualMemory e riprodurre il problema utilizzando la configurazione fornita dell'unità D: da 8 GB, con InitialSize 4096 e MaximumSize 7000. Confrontare l'errore CIM con la soluzione alternativa basata sul registro, inclusa la conservazione delle voci PagingFiles esistenti. Il lavoro è completato quando vengono applicate impostazioni valide del file di paging superiori a un ottavo della capacità del disco senza perdere le impostazioni delle altre unità.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Details of the scenario you tried and the problem that is occurring
I'm trying to utilize Azure VM temp disks for the pagefile but due to their small size (typically 2x RAM) and a limitation in Set-CimInstance (and similar methods), it's not possible to create anything of much use (e.g. only 1Gb on an 8Gb temp drive).
For example, splitting out the offending command in Set-PageFileSetting against an 8Gb drive with sufficient free space:
$Drive = 'D:'
$InitialSize = 4096
$MaximumSize = 7000
$setParams = @{
Namespace = 'root\cimv2'
Query = "Select * from Win32_PageFileSetting where SettingID='pagefile.sys @ $Drive'"
Property = @{
InitialSize = $InitialSize
MaximumSize = $MaximumSize
}
}
Set-CimInstance @setParams
Throws the following error:
Verbose logs showing the problem
Set-CimInstance : Value out of range
At line:1 char:5
+ Set-CimInstance @setParams
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Win32_PageFileS...\pagefile.sys"):CimInstance) [Set-CimInstance], CimException
+ FullyQualifiedErrorId : HRESULT 0x8004102b,Microsoft.Management.Infrastructure.CimCmdlets.SetCimInstanceCommand
Suggested solution to the issue
All the CIM-based solutions seem to have a base class that is the underlying issue. To work around it, the only solution I've found is to directly set the registry key:
<#
.SYNOPSIS
Sets a new page file name.
.PARAMETER Drive
The letter of the drive containing the page file
to change the settings of.
.PARAMETER InitialSize
The initial size to set the page file to.
.PARAMETER MaximumSize
The maximum size to set the page file to.
#>
function Set-PageFileSetting
{
[CmdletBinding()]
param
(
[Parameter(Mandatory = $true)]
[System.String]
$Drive,
[Parameter()]
[System.Int64]
$InitialSize = 0,
[Parameter()]
[System.Int64]
$MaximumSize = 0
)
# Using Set-CimInstance fails if pagefile exceeds 1/8th of the available disk space so we're switching to using direct registry key settings.
$pageFileName = Join-Path `
-Path $driveInfo.Name `
-ChildPath 'pagefile.sys'
$value = "$pageFileName $InitialSize $MaximumSize`n" # Even though it's a Reg_SZ_Multi, it's not double-null terminated
# TODO: Fix to support other drive values
Set-ItemProperty `
-LiteralPath 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management' `
-Name 'PagingFiles' `
-Type MultiString `
-Value $value `
-Force
}
Write-Verbose -Message ($script:localizedData.SettingPageFileSettingsMessage -f $Drive, $InitialSize, $MaximumSize)
}
The above is incomplete as it does not account for any other / pre-existing settings on another drive but that shouldn't be too hard to work out given the simple data structure of the registry key.
The DSC configuration that is used to reproduce the issue (as detailed as possible)
Using a system with a D: drive that is 8Gb in size:
VirtualMemory "pagefile"
{
Type = 'CustomSize'
Drive = 'D'
InitialSize = 4096
MaximumSize = 7000
}
The operating system the target node is running
OsName : Microsoft Windows Server 2019 Datacenter
OsOperatingSystemSKU : DatacenterServerEdition
OsArchitecture : 64-bit
WindowsVersion : 1809
WindowsBuildLabEx : 17763.1.amd64fre.rs5_release.180914-1434
OsLanguage : en-US
OsMuiLanguages : {en-US}
Version and build of PowerShell the target node is running
Name Value
---- -----
PSVersion 5.1.17763.1971
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17763.1971
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Version of the DSC module that was used ('dev' if using current dev branch)
8.4.0
- Lingua principale
- PowerShell
- Stelle
- 338
- Fork
- 80
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di dsccommunity/ComputerManagementDsc
-
chore
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
chore
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
-
chore
Difficoltà 4/5 3-5 giorni Idoneità per principianti 64/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 55/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
Tutte le issue di dsccommunity/ComputerManagementDsc
Issue simili
-
update UV in dockerfileApertagood first issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
-
Additional warning optionsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
linuxserver/docker-baseimage-selkies#195 · 3 commenti ·
-
🕷️ bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
sysadminsmedia/homebox#1770 ·
I maintainer di solito rispondono entro 2 giorni
-
deployment release-lag
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
nolte/kamerplanter#2047 ·
I maintainer di solito rispondono entro 1 giorno