- 2012年頃に苦し紛れで実施。今となってはもう使わない方法。次のようなシェルを用意し、子ホストで動作させる。
## -------------------------------------------------------------------------
## Script Name :
## Created by : T.Naritomi
## on : 2012.08.31
## Updated by :
## on :
## Parameters :
## Return Code : 0=Normal End
## Comments : shrink hdd image for vmware. count = ((availableSize) / 20480) - 1
## -------------------------------------------------------------------------
## ---detail----------------------------------------------------------------
TMP_FILE=zero.fil
LOG_FILE=$0.log
rm -f ${LOG_FILE}
dd if=/dev/zero of=/${TMP_FILE} bs=20971520 count=870 >> ${LOG_FILE}
sync ; sync ; sync ; rm -f /${TMP_FILE} >> ${LOG_FILE}
dd if=/dev/zero of=/var/${TMP_FILE} bs=20971520 count=930 >> ${LOG_FILE}
sync ; sync ; sync ; rm -f /var/${TMP_FILE} >> ${LOG_FILE}
exit
- dfコマンドで取得したマウントポイント単位でcount値をできるだけ空き領域サイズの計算値に近づける。/dev/zeroを空き領域に書き込んでおき、OS停止させたら親ホストのvmwareからshrinkさせる。
- ゼロ値化:子OSのroot権限で以下を実行する。
# dd if=/dev/zero of=00temp bs=20971520 count=nnn
【count=nnn計算式】
nnn= ( 使用可能サイズ[kb] / 20480[kb] ) -1
(nnnの小数部をカットして整数値とする)
[kb]:キロバイト
- 例えば「df」コマンドの出力が以下だったとする。
# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/sda1 20125340 4351292 14751740 23% /
none 247348 620 246728 1% /dev
none 253964 236 253728 1% /dev/shm
none 253964 112 253852 1% /var/run
none 253964 0 253964 0% /var/lock
この場合「nnn」は、
nnn = ( 14751740 / 20480 ) -1
≒ 719
となるので、
# dd if=/dev/zero of=ZEROtemp bs=20971520 count=719
を実行する。(ディスク容量不足の警告が出る)これで、OS用に「約20Mバイト」残してあとは「ゼロ値化」ファイル”ZEROtemp”で埋まる。実行終了後、すぐに「ゼロ値化」ファイル”00temp”を削除する。
# rm ZEROtemp
コメント