Azure上の仮想マシンのディスクがいっぱいになったので拡張する必要があった。
2015年6月にやったときは、「Azure上の仮想ディスクを拡張する」の手順でやろうとしたら、Windows7のPowerShellからではうまくいかずに、WindowsServer2012R2の仮想マシンを別途立て、そこから実行して拡張した。
で・・・今回、Windows7から実行できるようになっていないかを確認しつつ手順を確認していった。
参考資料
・「How to install and configure Azure PowerShell」
・「Azure 仮想マシン (IaaS VM) のディスクの拡張について」
2016年1月18日時点でのポイント
・最新版のAzure PowerShellは、Githubの「https://github.com/Azure/azure-powershell」で公開されている
・最新版はversion 1.1.0。ただし、PoewrShell 1.0,2.0環境では動かない。
・インストールは「Microsoft Web Platform Installer」による統合的なインストールか、「http://aka.ms/webpi-azps」(今日時点だとWindowsAzurePowershellGet.3f.3f.3fnew.exeがダウンロードされる)による単独インストールにて行う
(古いバージョンは勝手にアンインストールしてくれる)
・ディスク拡張時は、Aazure仮想マシンは停止している必要がある
・「Update-AzureDisk」は、ラベル名も指定しないとエラーになる。
しかも、ラベル名設定していない場合に「-Label “”」とやってもエラーになる。
「-Label ” “」とスペースでもいいので指定しなければならない
・現状の仮想ディスクのラベル名情報を確認するには「Get-AzureDisk」で行う
・以前はサブスクリプションの選択とかストレージアカウントの選択など、面倒な処理が必要だったが
省略できるようになっている。
実際にやった手順の概要
1. Microsoft Azure PowerShellを起動
2. 「Add-AzureAccount」で認証
3. 「Get-AzureVM」でAzure仮想マシン一覧を取得
PS C:\> Get-AzureVM ServiceName Name Status ----------- ---- ------ service-test webserver1 ReadyRole service-test sqlserver1 ReadyRole service-test2 webserver1 StoppedVM service-test2 sqlserver1 StoppedVM PS C:\>
4. 対象仮想マシンの仮想マシン情報を取得
「(Get-AzureVM -ServerName サービス名 -Name 仮想マシン名).VM」を実行する。
PS C:\> (Get-AzureVM -ServiceName servite-test2 -Name sqlserver1).VM AvailabilitySetName : ConfigurationSets : {Microsoft.WindowsAzure.Commands.ServiceManagement.Model.NetworkConfigurationSet} DataVirtualHardDisks : {servite-test2-sqlserver1-0-201412020519500167, servite-test2-sqlserver1-1-201412020521210099} Label : OSVirtualHardDisk : Microsoft.WindowsAzure.Commands.ServiceManagement.Model.OSVirtualHardDisk RoleName : servite-test2 RoleSize : Standard_D2 RoleType : PersistentVMRole WinRMCertificate : X509Certificates : NoExportPrivateKey : False NoRDPEndpoint : False NoSSHEndpoint : False DefaultWinRmCertificateThumbprint : ProvisionGuestAgent : True ResourceExtensionReferences : {BGInfo, IaaSAntimalware} DataVirtualHardDisksToBeDeleted : VMImageInput : PS C:\>
上記出力中の「DataVirtualHardDisks」がディスクの名前。
このAzure仮想マシンには2つのディスクが接続されている。
5. 「Get-AzureDisk -DiskName “ディスクの名前”」でディスク情報の詳細を取得
PS C:\> Get-AzureDisk -DiskName "servite-test2-sqlserver1-0-201412020519500167" AffinityGroup : AttachedTo : RoleName: sqlserver1 DeploymentName: sqlserver1 HostedServiceName: service-test2 IsCorrupted : False Label : Location : Japan West DiskSizeInGB : 200 MediaLink : https://xxxxxxxxxx.blob.core.windows.net/vhds/sqlserver1-E-drive.vhd DiskName : servite-test2-sqlserver1-0-201412020519500167 SourceImageName : OS : IOType : Standard OperationDescription : Get-AzureDisk OperationId : 2905xxxx-xxxx-xxxx-xxxx-1252bc53xxxx OperationStatus : Succeeded PS C:\>
6. 「Update-AzureDisk -DiskName “ディスク名” -ResizedSizeInGB 数値 -Label “ラベル名”」でディスクの容量指定
PS C:\> Update-AzureDisk -DiskName "servite-test2-sqlserver1-0-201412020519500167" -ResizedSizeInGB 250 -Label " " OperationDescription OperationId OperationStatus -------------------- ----------- --------------- Update-AzureDisk 9154xxxx-xxxx-xxxx-xxxx-f79f842fxxxx Succeeded PS C:\>
Get-AzureDiskで確認したときに「Label:」になにもないからといって、-Labelを指定しないと・・・
PS C:\> Update-AzureDisk -DiskName "servite-test2-sqlserver1-0-201412020519500167" -ResizedSizeInGB 250 Update-AzureDisk : 値を Null にすることはできません。 パラメーター名:parameters.Label発生場所 行:1 文字:1 + Update-AzureDisk -DiskName "servite-test2-sqlserver1-0-201412020519500167" -R ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : CloseError: (:) [Update-AzureDisk]、ArgumentNullException + FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.UpdateAzureDiskCommand PS C:\>
なにも設定されていないから「-Label “”」としても・・・
PS C:\> Update-AzureDisk -DiskName "servite-test2-sqlserver1-0-201412020519500167" -ResizedSizeInGB 250 -label "" Update-AzureDisk : パラメーター 'Label の引数を確認できません。引数が null または空です。null または空でない引数を指定して、コマンドを再度実行してください。発生場所 行:1 文字:106 + ... InGB 250 -label "" + ~~ + CategoryInfo : InvalidData: (:) [Update-AzureDisk]、ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS. UpdateAzureDiskCommand PS C:\>
と、めんどくさいです。
「-Label ” “」とスペースでもいいので、何か文字列を指定すると、コマンドが実行できます。
7. 仮想マシンの電源ON
8. OS内でファイルシステムの拡張を実行
以上で拡張が完了です。