2016-07-29 3 views
3

最近、インスタンスをAWSに移行する前に、pyvmomiを使用してVMWareサーバーの詳細なインベントリを開始しました。pyvmomiでインスタンス内の実際に使用されている(割り当てられた)ディスクスペースを取得する

vcenter Webインターフェイスまたはvsphereクライアントでは、インスタンスを検査してそのディスクを見ることができ、ディスクサイズ(プロビジョニングされたもの)とその使用量(使用されたストレージ)がわかります。私はすぐにインスタンスに関する情報を取得する方法を学ぶことができるサンプルのgithubのレポ(https://github.com/vmware/pyvmomi-community-samples)から

ので、(SOつまり、ドライブを取得する簡単な方法を示してでさえも疑問があります - How to get sizes of VMWare VM disks using PyVMomi)は、ディスクのサイズは自明で取得しかし、私はWeb /クライアントが表示できる実際に使用されたストレージを取得する方法を把握することはできません。

したがって、特定のインスタンスディスクの使用済み領域を取得するにはどうすればよいですか? PyVMomi経由VMから空き領域を取得するための

答えて

2

は、最初のあなたはVMのためのVMwareツールがシステムにないか、インストールされているかどうかを確認する必要があります。 VirtualMachineToolsStatus - - 「toolsNotInstalled」

  1. toolsStatus: をこれはあなたが持っていることを意味し、それが示している場合、そのインストールした場合のチェックのために、(MOBを経由して)その概要ページからごVMのゲスト情報からご確認くださいあなたのそれぞれのVMにVMwareツールをインストールするには、インストールするには、以下のリンクを参照することができます。a)https://my.vmware.com/web/vmware/details?productId=491&downloadGroup=VMTOOLS1000または、b)のhttps://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1018377

  2. toolsStatus - VirtualMachineToolsStatus - "toolsOk":これはあなたのことを意味しR VMは、すでにVMwareツールがインストールされている、とあなたはしたがって、diskPathvim.vm.GuestInfo.DiskInfoから容量空き領域プロパティ値を取得することができます。 (上記のように手動でVMware Toolsをインストールする場合は、以下が真でなければなりません)一度、上記の環境が設定されている

、次のコードを経由してあなたのVMからそれぞれの情報を取得することができます。

service_instance = None 
vcenter_host = "HOSTNAME" 
vcenter_port = NUMERIC_PORT 
vcenter_username = "USERNAME" 
vcenter_password = "PASSWORD" 
vmName = "VM_NAME"; 
try: 
    #For trying to connect to VM 
    service_instance = connect.SmartConnect(host=vcenter_host, user=vcenter_username, pwd=vcenter_password, port=vcenter_port, sslContext=context) 

    atexit.register(connect.Disconnect, service_instance) 

    content = service_instance.RetrieveContent() 

    container = content.rootFolder # starting point to look into 
    viewType = [vim.VirtualMachine] # object types to look for 
    recursive = True # whether we should look into it recursively 
    containerView = content.viewManager.CreateContainerView(
    container, viewType, recursive) 
    #getting all the VM's from the connection  
    children = containerView.view 
    #going 1 by 1 to every VM 
    for child in children: 
     vm = child.summary.config.name 
     #check for the VM 
     if(vm == vmName): 
      vmSummary = child.summary 
      #get the diskInfo of the selected VM 
      info = vmSummary.vm.guest.disk 
      #check for the freeSpace property of each disk 
      for each in info: 
       #To get the freeSPace in GB's 
       diskFreeSpace = each.freeSpace/1024/1024/1024 

あなたの問題を解決することを願っています。

+0

お礼ありがとうございます。これは本当に役に立ちます。 vmwareツールを使用しないソリューションを探していました.VMwareクライアントはプロビジョニングされた/使用されていない領域を表示することもできますが、質問ではこれを指定しませんでした。ニーズ。 – Argais

関連する問題