Quantcast
Channel: 揮発性のメモ2
Viewing all articles
Browse latest Browse all 110

VirtualBoxで fstrimコマンドを使う

$
0
0

fstrimコマンドとは

fstrimコマンドは SSDなどに使用し、ディスクの未使用領域をちゃんと削除して 新規の書き込み速度を向上させたりするのに使うコマンド。

未使用領域はそのままだと 未使用なだけでゴミデータが残ってるので、仮想ディスクのイメージをエクスポートするときに そのゴミを見てしまうので圧縮効率がダダ下がりになってしまう。
初期化することで 圧縮が効率良く効くようになる。

zerofreeではなぜダメか

zerofreeコマンドもあるけど、これは書き込み可でマウントしている領域を処理できないので、アンマウントするか書込み不可でremountするのが必須になる。
そのため、 ルートディレクトリをきれいにするのが非常に面倒くさい。


VirtualBoxで使えるようにする

fstrimはそのままではVirtualBoxでは使えない。

# fstrim -v /
fstrim: /: 破棄の操作が未対応です

# LANG=C fstrim -v /
fstrim: /: the discard operation is not supported

VirtualBoxのハードディスクイメージのdiscard機能がオフになっているため。


VirtualBox - PIB
ここを参考に、discard機能を有効にする

VBoxManage.exe storageattach "HOGE2"--storagectl SATA --port0--device0--discard on

対応状況の確認

うまくいけば、discard機能がonになる。確認は次のコマンドでできる

> VBoxManage.exe showvminfo HOGE2
Name:                        HOGE2
Groups:                      /
Guest OS:                    Fedora (64-bit)(中略)
SATA (0, 0): D:\VirtualBox\VMs\HOGE2\HOGE2.vdi (UUID: ef0114a5-37e3-4216-92ed-0f9b3706d626)(discards unused blocks)

(discards unused blocks) というのが付いてたら成功。

HOGE2.vbox ファイルでも確認できる

<StorageController name="SATA"type="AHCI"PortCount="1"useHostIOCache="true"Bootable="true"IDE0MasterEmulationPort="0"IDE0SlaveEmulationPort="1"IDE1MasterEmulationPort="2"IDE1SlaveEmulationPort="3"><AttachedDevice discard="true"type="HardDisk"hotpluggable="false"port="0"device="0"><Image uuid="{ef0114a5-37e3-4216-92ed-0f9b3706d626}"/></AttachedDevice></StorageController>

discard="true"というのが付いてたら成功。

fstabの編集

fstabに discard オプションをつけると discard がやっと有効になる

/dev/mapper/fedora-root /      xfsdefaults,discard0 0

,discard を追記する


fstrimコマンドの使い方

Manpage of FSTRIM

# fstrim -v /
/: 8.9 GiB (9564991488 バイト) に切り揃えました

でかいファイル、でかいディレクトリの見つけ方

sortコマンドで 16Mや255Kなど ヒューマンに優しい数値をソートする - 揮発性のメモ2

$ sudo du-x-h /* 2>/dev/null | sort-hr | head -n20

これで見つけて削除してまたfstrimみたいな


Viewing all articles
Browse latest Browse all 110

Trending Articles