1

AmazonEC2やCloudLayerなどのクラウドコンピューターを使用しています。HDパフォーマンスがボトルネックです。

CloudLayerから得たヒントの1つは、5 GBの大きなファイルでファイルシステムを拡張して、ディスクに書き込むたびにファイルシステムを拡張する必要がないようにすることでした。このPowershellスクリプトを作成しましたが、これによりnull値が作成されるため、ハイパーバイザーが基になるファイルシステムファイルを実際に拡張するかどうかはわかりません。

それが機能したことをどのように検証できますか?

#Find all local drives
get-psdrive -PSProvider 'FileSystem' | where {$_.Root -like '?:\'} | foreach {
    $msg1 = "Drive " + $_.Name + " has " + $_.Free + " bytes"
    Write-Host $msg1        

    #Create a file the size of the empty space on the drive.
    $fileNameAndPath = $_.Root + 'BIG_TEMP_FILE_DELETE_THIS.dat'
    $f = new-object System.IO.FileStream $fileNameAndPath, Create, ReadWrite
    $f.SetLength($_.Free)
    $f.Close()
}

彼らの説明:

自分のワークステーションで仮想化を試したことがあれば、CCIはフラットファイルを使用してファイルシステムの内容(.vdx)を保存します。VMの作成時に、仮想ドライブの最大サイズを指定しますが、フラットファイルまたは.vdxは、OSのインストールに必要なスペースと同じ大きさであり、さらにスペースが必要になると、それに応じてフラットファイルが大きくなります。

フラットファイルに追加のスペースを割り当てて作業する仮想ホストの数が少ない場合、書き込みは非常に迅速かつ透過的に行われますが、共有ストレージメディアに書き込む場合は、コンテンツを書き込む前に追加のスペースを割り当てます。ディスクへの書き込みは、読み取りと書き込みのパフォーマンスにはるかに大きな影響を及ぼします。

フラットファイルにスペースを事前に割り当てることでパフォーマンスを向上させることができます。これは、システムの使用率が低い場合(約5GB)にドライブに大きなファイルを書き込んでから、作成したファイルを削除することで実現されます。これにより、フラットファイルがテストファイルに比例して大きくなり、それを削除すると、使用できるスペースが再び解放されます。

これで、ストレージメディアを使用するときに、ハイパーバイザーは、仮想ドライブへの書き込みを同時に試行しながら、SANに追加のスペースを割り当てる時間を無駄にする必要がなくなります。

4

1 に答える 1

1

ファイルが何かで満たされていることを確認することが心配な場合は、バイト配列を簡単に初期化でき、.NET は初期化されたバイトが 0 に設定されることを保証します。これを使用して、実際のデータをディスクに書き出すことができます。

# write 4K worth of data at a time
$bufSize = 4096
$bytes = New-Object byte[] $bufSize
$file = [System.IO.File]::Create("C:\big.raw")
# write the first block out to accommodate integer division truncation
$file.Write($bytes, 0, $bufSize)
for ($i = 0; $i -lt $_.Free; $i = $i + $bufSize) { $file.Write($bytes, 0, $bufSize) }
$file.Close()
于 2011-03-22T16:39:45.733 に答える