できるだけ HDD の回らない Plamo サーバを作る

[戻る]

はじめに

とうとう LANDISKの HDD が壊れた. まぁ将来こんなこともあろうかといろいろ準備していたのだが

などの理由で, x86 系で 24 時間サーバを作りたくなった.

当然 24 時間稼動するため, 静音, 省電力が望ましい. そこで当初, ATOM のマザーボードを使うことも考えたのだが, チップセットのいいのがまだ出てなく, いいのがない. そんな折, とある筋から Transmeta の TM8000 を使った PC を借り受けた. 面白そうなので, これでしばらく試用してみることにした. ディストリビューションは当然 Plamo Linux 4.03.

ちなみに CPU 1GHz, メモリ 512M, bogomips は 1992 . 消費電力はワットチェッカ計測で 17W くらいで. 試しに hdparm -y /dev/hda で 3.5 インチの HDD を止めると 12W くらいに落ちる.

以下にその時の手順を記すが, 試行錯誤した結果を思い出しながら書いているので 無駄な部分や抜け落ちた部分があるかもしれない.

手順

基本構想は

の二点.

まず試しに, インストール直後の状態で

mke2fs /dev/ram
mount -t ext2 /dev/ram /mnt
としてみる. 単純に ram ディスクができることを確認.

もっともこのままじゃ, たった 4M しかない. 将来的には ramdisk に /tmp とか置くつもりなんで, gcc のコンパイルとか考えるともう少し領域が欲しい. そこで

mke2fs /dev/ram 131072
としてみる. 運がよければば 128M の領域ができるはずだが... できない. さらに, /etc/lilo.conf に
ramdisk = 131072
の一文を加えてみる. 駄目. どうやらカーネルの再コンパイルが必要そうだ.

っという訳で, CONFIG_BLK_DEV_RAM_SIZE を 131072 に指定し, カーネルのコンパイルを行った.

以下, そのカーネル下でやってみた手順を箇条書きにする.

  1. Plamo Linux に samba や apache など諸々の設定をする.
    ちなみに入れた物は
  2. /etc/lilo.conf を以下のように記述 (赤字部分のみ重要).
    append="vga16 unicon=eucjp"
    boot = /dev/hda
    lba32
    ramdisk = 131072
    image = /zImage

    ~root = /dev/hda1
    ~label = linux
    ~read-only
  3. /ramdisk を掘る
    #mkdir /ramdisk
  4. 主要なファイルをシンボリックリンクにする
    # rm -rf /tmp
    # mkdir /ramdisk/tmp
    # ln -s /ramdisk/tmp /tmp
    # rm -rf /var/log
    # mkdir /ramdisk/var/log
    # ln -s /ramdisk/var/log /var/log
    # rm -rf /var/log
    # mkdir /ramdisk/var/log
    # ln -s /ramdisk/var/log /var/log
    # rm -rf /var/tmp
    # mkdir /ramdisk/var/tmp
    # ln -s /ramdisk/var/tmp /var/tmp
    # rm -rf /var/tmp
    # mkdir /ramdisk/var/tmp
    # ln -s /ramdisk/var/tmp /var/tmp
    # rm -rf /usr/local/samba/var
    # mkdir /ramdisk/var/samba
    # ln -s /ramdisk/var/samba /usr/local/samba/var
  5. /etc/rc.d/rc.S の適当な所 (例えば /tmp/.ICE-unix を掘る直前) に 以下のようなフレーズを追加する
    hdparm -S 120 /dev/hda
    mke2fs /dev/ram1
    mount /dev/ram1 /ramdisk

    mkdir /ramdisk/tmp
    mkdir /ramdisk/var
    chmod 755 /ramdisk/var
    chmod 1777 /ramdisk/tmp

    mkdir /ramdisk/var/tmp
    mkdir /ramdisk/var/log
    mkdir /ramdisk/var/samba
    mkdir /ramdisk/var/apache_cache
    chmod 1777 /ramdisk/var/tmp
    chmod 755 /ramdisk/var/log
    chmod 755 /ramdisk/var/samba
    chown daemon /ramdisk/var/apache_cache
    chgrp daemon /ramdisk/var/apache_cache

    mkdir /ramdisk/var/log/samba
    mkdir /ramdisk/var/log/canna
    mkdir /ramdisk/var/log/httpd
    mkdir /ramdisk/var/log/ftpd
    mkdir /ramdisk/var/log/httpd
    chmod 755 /ramdisk/var/log/samba
    chmod 755 /ramdisk/var/log/canna
    chmod 755 /ramdisk/var/log/httpd
    chmod 755 /ramdisk/var/log/ftpd
    chmod 755 /ramdisk/var/log/httpd
  6. /usr/local/apache2/conf/httpd.conf を編集し以下のようなフレーズを 追加する.
    <IfModule mod_cache.c>
    <IfModule mod_disk_cache.c>
      CacheEnable disk /
      CacheRoot /ramdisk/var/apache_cache
      CacheDefaultExpire 2592000
      CacheDirLength 4
      CacheDirLevels 4
      CacheIgnoreCacheControl On
      CacheIgnoreNoLastMod On
    </IfModule>
    </IfModule>
記憶している限りではこんなもん. なお, ramdisk にできたファイルはシャットダウン時にバックアップは取らない (一時ファイルなもんで). ログ等とりたい場合は /etc/rc.d/rc.K か何かになんか書けばいいと思う.

これにより, めったに HDD の回らない環境ができたのだが, 現状不満点が二個ある.

なにか分かったり, 書き忘れたことを思い出したら追記しようと思う.


2009.3