در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

alinazari67

حذف vm و آزاد نشدن فضا از SAN

چرا وقتی یک vmی که دیگه نیاز بهش نیست رو delete from disk میکنی،فضایی که مثلا اگه 60GB بوده به فضای freeمربوط به SAN Storage اضافه نمیشه؟

SAN Storage : HP P2000

#حذف_vm_از_esxi
لذت یادگیری با توسینسو
به عنوان شخصی که مدت هاست از سایت توسینسو استفاده می کنم باید بگم که واقعاً یکی از بهترین مرجع ها برای ارتقاء دانش شخصی هست. دوره های سایت، راهکارها و مطالب، همگی عالی هستند.

این پست توسط UNITY در تاریخ چهارشنبه, 14 خرداد 1393 حذف شده است.

دلیل: پست ارتباطی با موضوع بحث ندارد

محمد نصیری

SAN Storage رو Browse کردید ببینید فایل های VM به کلی حذف شدند یا خیر ؟ مطمئن هستید Delete From Disk رو انتخاب کردید ؟ این مورد برای من پیش اومده اما بعدا متوجه شدم که Delete From Inventory رو انتخاب کرده بودم و به همین دلیل فقط از لیست پاک شده بود ، وارد SAN Storage بشید و مطمئن بشید فایل های VM واقعا حذف شدن.با استفاده از اسکریپت زیر شما می تونید Orphaned VM های توی Datastore ها رو پیدا کنید :

function Remove-OrphanedData {
<#
.SYNOPSIS   Remove orphaned folders and VMDK files
.DESCRIPTION   The function searches orphaned folders and VMDK files
   on one or more datastores and reports its findings.
   Optionally the function removes  the orphaned folders   and VMDK files
.NOTES   Author:  Luc Dekens
.PARAMETER Datastore
   One or more datastores.
   The default is to investigate all shared VMFS datastores
.PARAMETER Delete
   A switch that indicates if you want to remove the folders
   and VMDK files
.EXAMPLE
   PS> Remove-OrphanedData -Datastore ds1
.EXAMPLE
  PS> Get-Datastore ds* | Remove-OrphanedData
.EXAMPLE
  PS> Remove-OrphanedData -Datastore $ds -Delete
#>
 
  [CmdletBinding(SupportsShouldProcess=$true)]
 
  param(
  [parameter(Mandatory=$true,ValueFromPipeline=$true)]
  [PSObject[]]$Datastore,
  [switch]$Delete
  )
 
  begin{
    $fldList = @{}
    $hdList = @{}
 
    $fileMgr = Get-View FileManager
  }
 
  process{
    foreach($ds in $Datastore){
      if($ds.GetType().Name -eq "String"){
        $ds = Get-Datastore -Name $ds
      }
      if($ds.Type -eq "VMFS" -and $ds.ExtensionData.Summary.MultipleHostAccess){
        Get-VM -Datastore $ds | %{
          $_.Extensiondata.LayoutEx.File | where{"diskDescriptor","diskExtent" -contains $_.Type} | %{
            $fldList[$_.Name.Split('/')[0]] = $_.Name
            $hdList[$_.Name] = $_.Name
          }
        }
        Get-Template | where {$_.DatastoreIdList -contains $ds.Id} | %{
          $_.Extensiondata.LayoutEx.File | where{"diskDescriptor","diskExtent" -contains $_.Type} | %{
            $fldList[$_.Name.Split('/')[0]] = $_.Name
            $hdList[$_.Name] = $_.Name
          }
        }
 
        $dc = $ds.Datacenter.Extensiondata
 
        $flags = New-Object VMware.Vim.FileQueryFlags
        $flags.FileSize = $true
        $flags.FileType = $true
 
        $disk = New-Object VMware.Vim.VmDiskFileQuery
        $disk.details = New-Object VMware.Vim.VmDiskFileQueryFlags
        $disk.details.capacityKb = $true
        $disk.details.diskExtents = $true
        $disk.details.diskType = $true
        $disk.details.thin = $true
 
        $searchSpec = New-Object VMware.Vim.HostDatastoreBrowserSearchSpec
        $searchSpec.details = $flags
        $searchSpec.Query += $disk
        $searchSpec.sortFoldersFirst = $true
 
        $dsBrowser = Get-View $ds.ExtensionData.browser
        $rootPath = "[" + $ds.Name + "]"
        $searchResult = $dsBrowser.SearchDatastoreSubFolders($rootPath, $searchSpec)
        foreach($folder in $searchResult){
          if($fldList.ContainsKey($folder.FolderPath.TrimEnd('/'))){
            foreach ($file in $folder.File){
              if(!$hdList.ContainsKey($folder.FolderPath + $file.Path)){
                New-Object PSObject -Property @{
                  Folder = $folder.FolderPath
                  Name = $file.Path
                  Size = $file.FileSize
                  CapacityKB = $file.CapacityKb
                  Thin = $file.Thin
                  Extents = [string]::Join(',',($file.DiskExtents))
                }
                if($Delete){
                  If ($PSCmdlet.ShouldProcess(($folder.FolderPath + " " + $file.Path),"Remove VMDK")){
                    $dsBrowser.DeleteFile($folder.FolderPath + $file.Path)
                  }
                }
              }
            }
          }
          elseif($folder.File | where {"cos.vmdk","esxconsole.vmdk" -notcontains $_.Path}){
            $folder.File | %{
              New-Object PSObject -Property @{
                Folder = $folder.FolderPath
                Name = $_.Path
                Size = $_.FileSize
                CapacityKB = $_.CapacityKB
                Thin = $_.Thin
                Extents = [String]::Join(',',($_.DiskExtents))
              }
            }
            if($Delete){
              if($folder.FolderPath -eq $rootPath){
                $folder.File | %{
                  If ($PSCmdlet.ShouldProcess(($folder.FolderPath + " " + $_.Path),"Remove VMDK")){
                    $dsBrowser.DeleteFile($folder.FolderPath + $_.Path)
                  }
                }
              }
              else{
                If ($PSCmdlet.ShouldProcess($folder.FolderPath,"Remove Folder")){
                  $fileMgr.DeleteDatastoreFile($folder.FolderPath,$dc.MoRef)
                }
              }
            }
          }
        }
      }
    }
  }
}
توسینسو آینده دنیا رو میسازه ... اگر تو هم بهش پیوند بخوری ... شروع کن یاد بده هر چیزی که بلدی رو ... دنیا همینجور تغییر می کنه
alinazari67

از لحاظ مطمئن بودن که مطمئن هستم...

اما نمیدونم چرا حذف نشده...

SAN رو هم که browse کنم تنها لام ها رو می بینم.

جایی هست که مشخص باشه بری و محتویات دسته بندی شده vmهایی رو که ساختی در SAN دید؟

وب سایت توسینسو

محمد نصیری

من عذرخواهی می کنم منظورم از Browse کردن SAN Storage در واقع Datastore ای بود که به ESXi متصل شده ، با توجه به ساختار فایل سیستم VMFS شما نمیتونید داخل Storage رو باز کنید البته تا جاییکه من میدونم ، آیا فضای خالی توی Datastore نمایش داده میشه و فقط در Storage این مشکل رو دارید ؟ از جهت دیگه الان چه مدت زمانی هست که اینکار رو انجام دادید و نتیجه رو ندیدید ؟

توسینسو آینده دنیا رو میسازه ... اگر تو هم بهش پیوند بخوری ... شروع کن یاد بده هر چیزی که بلدی رو ... دنیا همینجور تغییر می کنه
alinazari67

مشکل من همینه که فضای خالی در data-store نشون داده نمیشه...

امکان این هست که بشه مثلا فایل مربوط به vm-X که مربوط به سرور x هست رو در data-store دید و بشه از اونجا هم حذفش کرد؟

قبلا اصن به فکر این نبودم که که بتونم داخل و جزئیات SAN رو ببینم،فقط لام بندی و Raid کردن رو انجام دادم و Esx هم که اتومات خودش SAN رو تشخیص میده و ارتباط رو برقرار کردم

اما الان با مشکل فضا مواجهه شدم که میخوام فضا خالی کنم که مجبور به حذف یکی از سرورهایی که لازم نداشتم،کردم ولی دیدم فضایی از SAN آزاد نشده!!!!!

محمد نصیری

ببینید این مشکل ممکنه به دلیل Thin Provision بودن یا Migrate شدن VM شما به وجود اومده باشه و در کنارش مشکلات هماهنگی با LUN های Storage رو داشته باشید ، اول باید بررسی کنید که مشکلی در این میون وجود نداره ، ترجیجا به لینک زیر مراجعه کنید ، دستوراتی که داده شده رو اجرا کنید تا متوجه بشید که فضای خالی ایجاد شده یا خیر بعد از اون می تونیم بررسی های بیشتری انجام بدیم :

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2014849
توسینسو آینده دنیا رو میسازه ... اگر تو هم بهش پیوند بخوری ... شروع کن یاد بده هر چیزی که بلدی رو ... دنیا همینجور تغییر می کنه
alinazari67

اینکه فضای اون vm به چه صورات بوده، مطمئن هستم thin تعریف کردم...چون یه جورایی قاعده درست کار اینه که type فضای اختصاصی به هر vm باید به صورت thin باشه مگر در حالتی که مطمئن هستی دقیقا به همان اندازه قرار است استفاده شود یعنی بلوک استفاده دقیقا مشخصه،

مثلا فضایی که برای file server در نظر گرفتم از نوع thick بوده...

ممنون از راهنماییتون

ببینم چطور پیش میره،به نتیجه میرسم یا نه...به قولی مشکله اما امکان پذیر!!!

مهندس نصیری عزیز این اسکریپت رو در کجا باید اجرا کنیم ؟

محمد نصیری

با ssh به سرور esxi یا vcenterمتصل بشید و بعد اجرا کنید.

توسینسو آینده دنیا رو میسازه ... اگر تو هم بهش پیوند بخوری ... شروع کن یاد بده هر چیزی که بلدی رو ... دنیا همینجور تغییر می کنه
پاسخ شما
برای ارسال پاسخ خود وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....