「VMware」カテゴリーアーカイブ

VMware Workstation Pro ディスク肥大化の対応

VMware Workstation Proで仮想マシンを使っているとディスクが肥大化していることがある。
VM内で確認するとそれ程ディスク容量を消費していないのに、ホスト側で確認するとアレこの容量なんじゃ?という感じです。

このような場合には、diskをshrinkすることでストレージ容量を削減することが可能です。

何故この様な状態が発生するかというと、ファイルシステムにおけるセクタの使い方にあるのではないかと想像されます。

イメージ的にはデフラグが発生していると、使っているない場所までディスク領域としてファイルに残されるのでしょう。
通常、ファイルの書き換えを行うと既存のデータを上書きするのではなく、空領域に更新データを書き込んでセクタを置き換えている動きをファイルシステムが行います。
その結果、空いた領域がそのままVMのディスク上に残った状態が発生しているのもと推察されます。

これをshrinkコマンドを使ってスリム化することが可能です。

では、実際に取り掛かります。

下準備

VMware Workstation Proのshrinkは、VM内で行います。
まずは確認を行うため、以下のコマンドを実行してみましょう。

# vmware-toolbox-cmd disk list

通常、このコマンドを実行した際に得られる内容は各ディスクのリストです。
ここではLinux上で確認していますので、こんな感じでディスクの一覧が表示されます。

/
/boot
/home

ただし、スナップショットを取っている場合などにはディスクの情報が得られず、以下のようなメッセージが表示されます。

ディスクの圧縮はこの仮想マシンでは無効になっています。

リンクされたクローン、リンクされたクローンの親、
事前割り当て済みのディスク、スナップショット、またはその他の要因により、圧縮は無効になっています。
詳細については、ユーザー マニュアルを参照してください。

shrinkを行う際には、スナップショットを全て削除する必要があります。
適宜、スナップショットを削除してから再度コマンドを実行してください。

ここまでが下準備です。

shrinkを行う

VMware Workstation ProのVM設定画面では、ストレージに対してデフラグ(Defragment Disk)や拡張(Expand Disk)や圧縮(Compact Disk)を行うことが出来ますが、未使用領域をクリアにしてスリム化するにはshrinkコマンドを実行することになります。

VMがファイルへの書き込みなどを頻繁に行っている状態では不整合が生じる場合もありえますので、できればバックアップを取るなども検討してみると良いでしょう。

その上で、以下コマンドを実行してshrinkを行います。

# vmware-toolbox-cmd disk shrink /home
圧縮プロセス中に表示されるディスク領域に関する警告はすべて無視してください。
進行状況: 100 [===========>]

ディスクの圧縮が完了しました。

Linuxの場合、/bootは殆どの場合、元々の容量が少く書き換え頻度も少ないので影響は殆どありません。
容量が大きく書き換え頻度が多いディスクを対象にshrinkを行うことで、大きな効果が得られます。

また、仮想ディスクを1本で賄っている場合には、出来るだけ大きなディスクから順番に作業を行うことで作業時間を短縮できると思われます。

個々の環境によって異なりますが、ディスクの肥大化が進んだ状態では割り当てられているディスクの容量程度まで肥大化が進みます。
shrinkを実行すると、実際に使用しているディスク容量の約1.5倍程度の容量にスリム化してくれるでしょう。

今回実施した環境では、全体容量221GBに対し21GBまでスリム化出来ていましたので効果は絶大です!

ディスクの肥大化は時間経過に影響される傾向があります。

余談

ここで少し余談です。
これは想像の域を脱しませんが、こう考えると私の場合すっきりしました。

近年好まれて使用されているSSDは、書込み寿命があります。
書込み寿命の回数や容量については割愛しますが、ファイルを書き換える際、常に同じ領域を書き換えると同一記憶素子が劣化すると考えられます。
そのため、ディスク内の書き換えを行う際には、ディスク全体を満遍なく使用するために書き換える領域を全体に振り分けて少しでも寿命を長くしようとする動きを行います。

これに対して、VM上におけるディスクは物理的なディスクではなく、ファイルとして存在しておりファイルの容量が肥大化することに繋がると考えられます。

よって、書き換えが発生するVMのディスクは肥大化を回避することは出来ません。

将来的に、この仕組みは考慮されるべきであると考えられますが、現状では、この書き換えによるファイルの肥大化が発生しますので、システムによりその周期は異なるものの定期的なディスクメンテナンスを実施することで、実質的なストレージ容量の肥大化を防ぐ必要があるように考えられます。

クラウドシステムなどにおいて、この対策がどのように行われているかは、個々の仮想化環境に依ってことなり、VMwareによって構築されている環境であっても、shrinkなどを実施することが望まれることは無いと考えられますが、デフラグなどを無くすことでファイルアクセスの効率化や動作の安定を考慮する際には考えるべきポイントなのかも知れませんね。
とは言え、クラウドまで考えると厳しいので、まずは自分の環境で確認を行うことが望ましいかと思います。

VMware Workstation Pro アンインストール

ちょっと不具合がありまして、VMware Workstation Proをアンインストールしようとした時のメモです。

こちらの記事を参考にしました。

https://docs.vmware.com/jp/VMware-Workstation-Player-for-Linux/16.0/com.vmware.player.linux.using.doc/GUID-0F7D2C5C-2B5C-4857-9166-A0B3B0C72B5F.html

こちらの記事では、VMware Workstation Playerのアンインストールコマンドがあり、プロダクトを指定する必要があることが判りました。

でも、正式なプロダクト名が分からないので、ヘルプを表示します。

# vmware-installer --help
Usage: vmware-installer [options]

VMware Installer

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit

  Manage:
    Install or uninstall products

    -i FILE, --install-bundle=FILE
                        Install bundle from FILE
    --install-component=FILE
                        Install a component
    --uninstall-component=NAME
                        Force uninstallation of a component
    -u NAME, --uninstall-product=NAME
                        Uninstall a product
    -r, --resolve-system
                        Force the system to resolve the current state
    --register-file=COMPONENT_NAME (config|regular) FILE
                        Register a file in the database
    -x DIR, --extract=DIR
                        Extract the contents of the bundle into DIR
    -p DIR, --prefix=DIR
                        Set a custom install location

  Information:
    Look up information on installed products

    -l, --list-products
                        List installed products
    -t, --list-components
                        List the installed components
    -L COMPONENT, --list-files=COMPONENT
                        List files for a given component
    -S FILE, --find-file=FILE
                        List components and files matching the given pattern

  Settings:
    Set and retrieve settings

    -g COMPONENT KEY, --get-setting=COMPONENT KEY
                        Get setting
    -s COMPONENT KEY VALUE, --set-setting=COMPONENT KEY VALUE
                        Set setting
    -d COMPONENT KEY, --delete-setting=COMPONENT KEY
                        Delete setting

  Options:
    --deferred-gtk      Install the product silently, and configure the
                        product in first launch
    --console           Use the console UI
    --custom            Allow customization of the install, including file
                        locations. Only apply to console UI.
    --regular           Displays questions that have no good defaults
                        (Default)
    --required          Displays only questions absolutely required
    -I, --ignore-errors
                        Ignore component script errors
    --eulas-agreed      Agree to the EULA

プロダクトリストを出すオプションを指定してコマンドを実行します。

# vmware-installer -l
Product Name         Product Version     
==================== ====================
vmware-workstation   16.0.0.16894299

赤で示した部分がプロダクト名なので、以下のコマンドでアンインストールを行います。
バックアップとかは事前に確認してくださいね。

# vmware-installer -u vmware-workstation
All configuration information is about to be removed. Do you wish to
keep your configuration files? You can also input 'quit' or 'q' to
cancel uninstallation. [yes]: yes

Uninstalling VMware Installer 3.0.0
    Deconfiguring...
[######################################################################] 100%
Uninstallation was successful.

ということで完了です。