2010年12月8日水曜日

VirtualBoxで仮想ディスクのサイズを減らしてみた(2)

前回からの続きです。

・swap領域をゼロクリアする

不要なファイルの削除が終わったので、ここからはシングルユーザーモードに移行して作業を続けます。次に実行するのはswap領域のゼロクリアです。

仮想マシンのメモリに余裕があってswap領域をほとんど使っていないような場合でも、ゲストOSでシステムのハイバネートを実行していれば、メモリイメージがswap領域に書き込まれます。

一度swap領域に書き込まれた内容は、明示的に消去しない限りそのまま残っていますので、それをゼロクリアすることで仮想ディスクのサイズを減らすことが可能です。

ただし、正確に言えばここでゼロクリアするのはswap領域ではなく、swapパーティション(またはswapファイル)全体です。

swapパーティション全体をゼロクリアすれば、スーパーブロックやswapヘッダもその対象になりますが、そこにはパーティションのUUIDやラベルが記録されています。

最近のLinuxは使用するswap領域をUUIDやラベルで判断するようになっていますので、ゼロクリアした後に元のUUIDやラベルを付け直しておかないと、swap領域として使用されなくなる場合があります。

それを避けるため、手順としては、wipefsコマンドで調べたUUIDとラベルをあらかじめメモしておいて、パーティション/ファイル全体をddコマンドを使ってゼロクリアした後にmkswapコマンドでUUIDやラベルを含めてswap領域として初期化することになります。

swapヘッダには他にもページサイズやswapバージョン等が記録されていますが、ページサイズはカーネル次第ですし、最近のカーネルはバージョン1のswap領域しか利用できなくなったので、メモする必要はありません。

なお、複数のOSでswapパーティションを共有している場合や、パーティションのサイズだけを後から変更してパーティションテーブルに誤った情報が記録されているような場合、swapパーティション全体をゼロクリアすることで問題が発生することがあります。

VirtualBoxの仮想ディスクでそのような運用をしていることはあまり無いだろうとは思いますが、心当たりがある方は一応ご注意ください。

2010年12月3日金曜日

VirtualBoxで仮想ディスクのサイズを減らしてみた(1)

VirtualBoxの仮想ディスクは、容量を減らすために「可変サイズのストレージ」を選択していても、そのファイルサイズがゲストOSが実際に使用している容量以上のサイズになることがあります。

これは、ゲストOS上で仮想ディスクに一度作成したファイルを削除した場合、ゲストOSはファイルを削除したことで空き容量が増えたと報告しますが、仮想ディスクにはそのファイルのデータが残ったままになっているからです。

結果として、ゲストOS上でファイルの作成と削除を繰り返すと、ゲストOSが実際に使用している容量とは無関係に、仮想ディスクが最大サイズまで消費され続けるようなことになりかねません。

この問題を解決するために、仮想ディスクに記録されている削除されたファイルのデータ部分をゼロクリアで初期化してから、VirtualBoxのVBoxManageツールを使って仮想ディスクのファイルサイズを減らす方法がTipsとして知られています。

上記の話はVirtualBoxのマニュアルにも記載されているので、作業の手順自体は以前から知っていたのですが、実行する必要には迫られなかったので実際に試してみたことはありませんでした。

しかし最近になって、どこぞのVPSのバックアップの際にバックアップファイルのサイズを減らす必要が発生するんじゃないかなーという予感が何となくしてきた(予感なので根拠は特にありません)ので、その練習代わりにこの作業を試してみることにしました。

尚、今回作業を実行した環境は、

  • ホストOS:Mac OS X 10.6.5
  • ゲストOS:Ubuntu 10.10 Desktkop Edition
  • 仮想化ソフトウェア:Oracle VM VirtualBox for Mac OS X Ver.3.2.12 r68302

という構成です。

ホストOSはWindowsであっても、作業手順はあまり変わらないと思いますが、ゲストOSはUbuntuのバージョンが変わっただけでも手順が変わってくることがありますので、実際に試してみようと考えていらっしゃる方はご注意ください。

仮想化ソフトウェアであるVirtualBoxの方は、バージョンが多少違っていても問題ありません……と言いたいところなのですが、VBoxManageツールのコマンドは結構コロコロ変わりますので、バージョンが異なる場合はマニュアルで確認しておくことをオススメします。

実際の作業はイカの通りです。

2010年11月29日月曜日

【追記あり】SONYのSNAP SDKをインストールしてみた(3)

2010/11/30 23:55追記
田中俊光さんのその後の調査によって、SNAPは始まったばかりのプロジェクトでもアクティブなプロジェクトでもなかったことが判明しています。下記の内容については特に修正はしていませんが、読者の方にはSNAPプロジェクトについての誤解を防ぐために田中さんのエントリ「お詫びと訂正:SONYのSNAPについて」を先に読んでおくことを強くオススメします。

まずは前回の訂正から

前回、私は「SNAPエミュレーター」と記載したのですが、実際には田中さんからの指摘があったように、SNAPシミュレーターの間違いでした。申し訳ありません。


2010年11月27日土曜日

【追記あり】SONYのSNAP SDKをインストールしてみた(2)

2010/11/30 23:55追記
田中俊光さんのその後の調査によって、SNAPは始まったばかりのプロジェクトでもアクティブなプロジェクトでもなかったことが判明しています。下記の内容については特に修正はしていませんが、読者の方にはSNAPプロジェクトについての誤解を防ぐために田中さんのエントリ「お詫びと訂正:SONYのSNAPについて」を先に読んでおくことを強くオススメします。

前回からの続きで、Mac OS XでSNAP SDKに含まれるSNAPエミュレーターを実際に実行してみます。

SNAPエミュレーターはSNAP SDKがインストールされたUbuntu 9.10からしか起動できないので、Mac OS X上で動かしたい場合は、Ubuntu 9.10が動作する仮想マシンを用意して、そこにSNAP SDKをインストールしてからSNAPエミュレーターを起動することになります。

仮想化ソフトウェアとしてはSONY側ではVMWare PlayerとVirtualBoxの動作を確認済みのようですが、今回は私が使い慣れているという理由でVirtualBoxを選択しました。

【追記あり】SONYのSNAP SDKをインストールしてみた(1)

2010/11/30 23:55追記
田中俊光さんのその後の調査によって、SNAPは始まったばかりのプロジェクトでもアクティブなプロジェクトでもなかったことが判明しています。下記の内容については特に修正はしていませんが、読者の方にはSNAPプロジェクトについての誤解を防ぐために田中さんのエントリ「お詫びと訂正:SONYのSNAPについて」を先に読んでおくことを強くオススメします。

田中俊光さんのblogの「SONYのSNAPはGNUstepベース」で紹介されていたSNAP SDKに興味があったので、試しにインストールしてみる事にしました。
今のところ作業の途中なので最終的に失敗するかもしれませんが、あしからず。

2010年11月21日日曜日

書籍『ミニスカ宇宙海賊5 白銀の救難船』

先週から引いてた風邪がようやく直った模様。

今回の風邪はまず喉の痛み、鼻水、痰の順で症状が現れたが、熱はほとんど無いので風邪薬を飲みつつあまり騒がないようにして何とか回復。

今日はリハビリを兼ねて散歩していたのだが、発売日が過ぎていた事を思い出して購入したのがこの本。

表紙カバーの折り癖がちゃんとついてないらしく、カバーが勝手に外れそうになるので重しを載せて保管中。(店頭でも外れかけてた)

奥付によれば印刷製本は株式会社光邦。

ミニスカ宇宙海賊5 白銀の救難船 (朝日ノベルズ)
笹本祐一
朝日新聞出版
売り上げランキング: 83

2010年11月10日水曜日

Mercurial 1.7

Mercurial 1.7がリリースされて一週間程経ったのでそろそろインストールしてみようかと思ったのだけど、1.7ではリポジトリのフォーマットに変更があったとのことなので、MercurialEclipseが対応するまではアップデートを見送る予定。