VMware PlayerでFreeBSDをインストールした話のつづき。
今回、ports用に、ディスクを増設してみました。
なぜ、そんなことをするかというと・・・
portsは、やたらとディスク容量を食うんです。
- たとえば、うちのFreeBSDな自宅サーバで、/usr/portsの容量をみると・・・456MB使ってます。てゆーか、今調べてみて、自分でびっくりしました。
- portsで使うソースファイル類が、/usr/ports/distfilesにおかれていますが、調べてみたら・・・1.7G使っていました。ハァ・・・
- これ以外に、portsをコンパイルするとき、コンパイル作業用にディスク容量を食います。xorgとかは、たくさん使います。openofficeに至っては、普通の人はコンパイルしてはいけない、相当なもの好きだけかも
- portsnapを使うと、/usr/portsへ展開される元ファイルが、/var/db/portsnap以下に置かれています。調べてみたところ、55MB使っていました。
環境により程度の差はあるでしょうが、少なくとも500MBほどの領域が、ports関係に費やされています。こういうディスクの消費量ってのは、FreeBSDでバイナリpackageを使っていたり、Fedoraとかdebianとか使っている場合には、もともと、消費されるはずのないディスク容量です。
というわけで、portsに関するmy結論。
- ディスク容量は気にしない、メモリたくさんのってる、CPUパワーもそこそこある、
- もしくは、ぼけーっと長時間待てるだけの忍耐力がある、
- すべてのソフトウェアは、俺用にカスタマイズしてコンパイルしないと、気がすまない
- ソフトウェアの使い方を調べるために、マニュアルを読んだり、googleで情報を探すよりは、ソースコードを読んだほうがてっとりばやい
- そういう人たちだけ、FreeBSDをインストールして、そしてportsを使ってください
ということではないかと(半分まじめな話)。
あと、VMwareでの仮想ディスクイメージのサイズも、個人的に気にしています。仮想ディスクファイルを、USBメモリにコピーしたり、WebDAVの共有フォルダにコピーして、、あちこちに持っていって使えたら便利かも?と考えているのです(実際にはやってませんけど)。そういう場合、ports関連のファイルまで持ち歩く必要はないので、通常OSを動かすのに必要なファイルだけを集めたファイルシステムと、portsのようにたまにしか使わないファイルをいれておくファイルシステムと、ディスクを分けておくといいんじゃないかな?
ちなみに、LinuxをインストールしてVMware toolsが入っていると、shrinkという操作を行うと、仮想ディスクイメージファイルの中、使われていない領域(ゲストOSでファイルを削除した場合などにできるんだと思う)をけずって、*.vmdkファイルのサイズを小さくできます。
■VMwareなFreeBSDに、仮想ディスクを増設する方法
手順は、
- 仮想ディスクイメージファイルの作成
- vmxファイルの書き換え
- FreeBSDで、ディスクの初期化&設定
というような流れになります。
■仮想ディスクイメージファイルの作成
いつもと同じように、QEMUの、qemu-imgコマンドで作成します。
たとえば、容量8GBの仮想ディスクを、disk-1.vmdkというファイル名で作成する場合。
qemu-img create -f vmdk disk-1.vmdk 8G
詳しくは、以下などを参照。
■vmxファイルの編集
ディスクを増やすには、「ideX:X」というのを書き足していきます。
ide0:0が、IDEのprimary master、ide0:1がprimary slave、ide1:0がsecondary master、ide1:1がsecondary slaveということのようです。
たとえば、以下は、HDDが3台、CDドライブが1台の設定です。
ide0:0.present = "TRUE"
ide0:0.fileName = "FreeBSD-Disk.vmdk"ide0:1.autodetect = "FALSE"
ide0:1.present = "TRUE"
ide0:1.fileName = "disk-1.vmdk"ide1:0.autodetect = "FALSE"
ide1:0.present = "TRUE"
ide1:0.deviceType = "atapi-cdrom"
ide1:0.fileName = "Q:"
ide1:0.startConnected = "TRUE"ide1:1.autodetect = "FALSE"
ide1:1.present = "TRUE"
ide1:1.fileName = "disk-2.vmdk"
VMwareのBIOSメニューでは、こんな風に表示されます。
ゲストOSのFreeBSDでは、dmesgでは、こんな風に表示されます。
freebsd# dmesg | grep '^ad.*VMware'
ad0: 4096MB <VMware Virtual IDE Hard Drive/00000001> [8322/16/63] at ata0-master
UDMA33
ad1: 8192MB <VMware Virtual IDE Hard Drive/00000001> [17753/15/63] at ata0-slave
UDMA33
ad3: 8192MB <VMware Virtual IDE Hard Drive/00000001> [17753/15/63] at ata1-slave
UDMA33
atacontrol listコマンドでも見ることができます。
freebsd# atacontrol list
ATA channel 0:
Master: ad0 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
Slave: ad1 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
ATA channel 1:
Master: acd0 <VMware Virtual IDE CDROM Drive/00000001> ATA/ATAPI revision 4
Slave: ad3 <VMware Virtual IDE Hard Drive/00000001> ATA/ATAPI revision 4
■FreeBSDで、ディスクの初期化&設定
ディスクの初期化方法は、VMwareに限った方法ではなくて、本物のFreeBSDマシンに本物のディスクを増設する場合も、同じです。
要するに、fdiskでスライスを作成し、disklabelでパーティションを作成すればOKなんですが・・・簡単な方法は、sysinstallコマンドを使う方法です。sysinstallは、FreeBSDをインストールするときに使う、あのツールです。
rootでログインして、sysintallを実行します。大昔のFreeBSDでは、sysinstallは、/stand/sysintallにありましたが、今では、/usr/sbin/sysinstallになっています。
sysinstall Main Menuで、Configureを選択します。
Fdiskを選択します。
初期化するディスクを選択します。間違えて、今使っているディスクを選ばないように(もしかすると、間違えて使用中のディスクを選んでしまっても、書き込み時に失敗するような気がしますが、保障はしません)。
Cキーを押して、Create Sliceします。
そのままOKを選び、ディスクの全容量をFreeBSDに割り当てます。
165のままでOKです。
こんなかんじになります。
Qキーを押します。ここでWキーを押すと、書き込むんじゃねー、と警告メッセージが表示されます。LabelのところでWキーを押しなさい、とのことです。そうだったのか・・・知らなかった。
boot managerはいらないので、standard MBRにしときます。
「Select Drive(s)」に戻ってきたら、Cancelを選びます。
「FreeBSD Configuration Menu」で、今度はLabelを選びます。
Cキーを押して、Create
パーティションの容量を指定
partition typeには、当然FSを選びます。
マウント先を選びます。たとえば/disk2
こんなかんじになります。
Wキーを押して、書き込みます。
警告メッセージがでます。Yesを選びます。
これで、ディスクが初期化されて、すでにマウントまでされています。
CancelとかExitを選んで、sysintallを終了し、dfで見てみると、こんなかんじになります。
freebsd# df /disk2
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad3s1d 8121778 4 7472032 0% /disk2
● 自動的にマウントされるようにする
このままでは、FreeBSDを再起動すると/disk2はマウントされません。/etc/fstabに書き足して、/disk2が自動的にマウントされるようにします。
ちょっとマニアックな?方法。mount -pで、/etc/fstabの形式で表示されるので、こういうふうにすると・・・
freebsd# mount -p | grep /disk2 >> /etc/fstab
/etc/fstabを見てみると、/disk2の行が追加されました。
freebsd# cat /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
/dev/ad3s1d /disk2 ufs rw 2 2
以上で、ディスクの増設作業はおしまい。
あと、必要なら、/usr/portsとか/var/db/portsnapを、増設したディスクへ移動し、シンボリックリンクを張っておけばよいでしょう。
たとえば、/var/db/portsnap/を、/disk2/以下へ移動させるには、こんなかんじでできます。
freebsd# cd /var/db/
freebsd# tar cf - portsnap | tar xf - -C /disk2/
freebsd# rm -rf portsnap
freebsd# ln -s /disk2/portsnap .
freebsd# ls -l portsnap
lrwxr-xr-x 1 root wheel 15 Jan 29 23:21 portsnap -> /disk2/portsnap
/usr/portsをtarで移動させるのは、ファイル数も多く大仕事なので、いっそのこと、すべて削除して、portsnap extractしてしまったほうがてっとりばやいかもしれません。
きょう、コンパイルがコンパイルっぽい話した。
返信削除もしくはここでコンパイルの初期に失敗しなかった?