ESXiのシンディスクサイズの削減

ESXiの使用を開始したとき、非常に大きなシンディスクが原因でディスク領域が不足するという問題に遭遇しました。 通常、ESXiでドライブを拡張することは、縮小するよりもはるかに簡単なので、小さいディスクを作成する方が適切です。 しかし、まだディスクを削減する必要がある場合はどうすればよいでしょうか? さらに、Acronisが認識しないサーバー上のLVMパーティションによって状況が悪化し、パーティションのサイズを変更できませんでした。

私が使用した方法を説明します。



ステージ1)仮想マシン内のディスクを削減する

まず、仮想マシン自体の内部のディスクを減らす必要があります。これには、Acronisディスクディレクター、Paragonパーティションマネージャー、Windowsの組み込みディスク管理ユーティリティなど、多くのユニバーサルプログラムがあります。 これらのプログラムはどれも役に立たなかったため、LinuxおよびLiveCDツールを使用する必要がありました。



1)まず、livecd linuxから起動する必要があります。centos7を使用しました。仮想マシンを起動するには、ESCキーを押して起動メニューを表示します。



2)LVMセクションをアクティブ化する

vgchange -ay
      
      





3)アクティブ化された論理ボリュームを確認します

 lvscan
      
      





4)ファイルシステムの確認

 fsck -fy /dev/test/root fsck -fy /dev/test/home
      
      





5)ファイルシステムのサイズを小さくする

 resize2fs /dev/test/home 20G
      
      







6)ボリュームのサイズをファイルシステムのサイズまで縮小する

 lvreduce -L 20G /dev/test/home
      
      







この場所を別のボリュームに追加することもできます。

これを行うには:



ルートボリュームを増やします。

 lvextend -L +10G /dev/test/root
      
      





ルートボリューム上のファイルシステムのサイズをボリュームのサイズまで増やします。

 resize2fs /dev/test/root
      
      





7)ファイルシステムの整合性を再度チェックします

 fsck -fy /dev/test/root fsck -fy /dev/test/home
      
      





8)次に、仮想マシンを起動して、すべてが正しく機能することを確認できます

 df -h
      
      







ステージ2)プロビジョニングスペースの削減。



10)仮想マシンをオフにします

11)ESXiがインストールされている物理サーバーにSSH経由で接続します

12)VMファイルvmdkが保存されているディレクトリに移動します(パスはvSphereグラフィカルクライアントの仮想ディスクのプロパティにあります)。 持ってる

 cd /vmfs/volumes/datastore1*/ cd VM_name/
      
      





ディレクトリは同様の構造になっています。

仮想マシンのディレクトリ構造
/ vmfs /ボリューム/ 53114b32-24d88d5a-2cbe-0025b500004f / MTS-SCPortal-TEST3#ls -l

合計19810320

-rw-r-r-- 1ルートルート27 Dec 20 20:46 VM_name-0b1f4705.hlog

-rw ------- 1ルートルート6442450944 2月2日08:24 VM_name-0b1f4705.vswp

-rw ------- 1ルートルート147102629888 2月2日08:28 VM_name-flat.vmdk

-rw ------- 1ルートルート8684 2月2日08:25 VM_name.nvram

-rw ------- 1ルートルート507 2月2日08:25 VM_name.vmdk

-rw-r-r-- 1ルートルート0 Dec 20 20:14 VM_name.vmsd

-rwxr-xr-x 1ルートルート3584 2月2日08:25 VM_name.vmx

-rw ------- 1 root root 0 Feb 2 08:24 VM_name.vmx.lck

-rw-r-r-- 1ルートルート273 Dec 20 20:14 VM_name.vmxf

-rwxr-xr-x 1ルートルート3584 2月2日08:25 VM_name.vmx〜

-rw ------- 1ルートルート3424256 2月2日08:24 vmmcores-1.gz

-rw-r-r-- 1ルートルート240722 12月20日20:46 vmware-1.log

-rw-r-r-- 1ルートルート1252287 2月2日08:24 vmware-2.log

-rw-r-r-- 1ルートルート43555 2月2日08:24 vmware-3.log

-rw-r-r-- 1ルートルート151873 2月2日08:25 vmware.log

-rw ------- 1ルートルート122683392 2月2日08:24 vmx-VM_name-186599173-1.vswp

/ vmfs /ボリューム/ 53114b32-24d88d5a-2cbe-0025b500004f / VM_name#



13)catまたはviコマンドを使用して、拡張子が* .vmdkの構成ファイルの内容を表示します。

 cat VM_name.vmdk
      
      





仮想マシン構成ファイルの内容例
#ディスク記述子ファイル

バージョン= 1

エンコーディング= "UTF-8"

CID = 829544ab

parentCID = ffffffff

isNativeSnapshot = "no"

createType = "vmfs"



#エクステントの説明

RW 44000000 VMFS "VM_name-flat.vmdk"



#ディスクデータベース

#DDB



ddb.adapterType = "lsilogic"

ddb.geometry.cylinders = "17884"

ddb.geometry.heads = "255"

ddb.geometry.sectors = "63"

ddb.longContentID = "c78bccbfd4724f0ee20a1ef2829544ab"

ddb.thinProvisioned = "0"

ddb.uuid = "60 00 C2 98 20 ac 05 4a-e5 39 e4 40 e8 a2 d8 d0"

ddb.virtualHWVersion = "8"



14)vmdkディスクサイズは、#Extent descriptionセクション(RW文字の後)で設定されます。 たとえば、この値を変更して、ディスクサイズを20 GBに設定し、41943040(20 GB * 1024 * 1024 * 1024/512)を設定します

 vi VM_name.vmdk
      
      





念のため、上記の方法で計算されたサイズ(41943040(20 GB * 1024 * 1024 * 1024/512))よりも少し大きい値を設定しました。

15)仮想マシンを複製または移行するために残ります。その後、新しいディスクサイズが表示されます。



プロビジョニングを変更せずにシンディスクを物理的に削減

また、ゼロブロックを削除して、仮想マシンのファイルサイズのみを縮小することもできます。

これを行うには:

1)仮想マシン内のすべての未使用スペースをゼロで埋める必要があります。 ディスクの未使用領域のサイズに応じてファイルを作成し、削除します。

 cat /dev/zero > /file cd / rm file
      
      





2)上記のようにSSHを介してESXiコンソールに接続し、仮想マシンのあるディレクトリに移動します。

3)ハイパーバイザーのコンソールには、ゼロブロックを消去してシンディスクの物理サイズを削減できる特別なユーティリティがあります。

これは、ESXiサーバーコンソールで-Kスイッチを使用して実行します(--punchzeroスイッチも使用できます)。

 vmkfstools -K VM_name.vmdk
      
      





-Kスイッチで起動されたvmkfstoolsユーティリティは、通常のディスク(zeroedthickまたはeagerzeroedthick)をクリーニングブロックがゼロのシンディスクに変換し、それに応じてvmdkのサイズを縮小することもできます。



PSこの記事が誰かに役立つことを願っています。 いずれにせよ、シンディスクのサイズを正確に削減することができるようになるまで、私は多くの時間を費やしました。



All Articles