2010/05/17(月)省電力マシンで Ubuntu 10.04 Server セットアップメモ
- 省電力なハードウェア
- インストール
- 最初にしたこと
- rootとwheel
- 日本向けパッケージの追加
- 固定IP
- 雑多な設定
- その他パッケージ
- tmpfs
- コンソール画面の解像度設定
- コンソールの日本語表示
- RT8111Dドライバのインストール
- 物理バックアップ
以前の資料。
- ML115 G1/Ubuntu 8.04 LTS Serverセットアップメモ
- Linuxでmdadmを使ったソフトウェアRAIDの構築・管理メモ
- Postfix + Dovecot on Ubuntu 8.04 LTS設定メモ
Canonのじゃじゃ馬プリンタ(CAPTプリンタ)がなければFreeBSDでも入れたかったところですが。今回は最初からUTF-8環境で構築したため文字コード周りは楽でした。
省電力なハードウェア
ハードウェアに興味ない方は読み飛ばしてください(苦笑)
マザーボード | Foxconn H55MXV(BIOS-upでAHCI対応) |
---|---|
CPU | intel Core i3-530 (2.93GHz/2Core/HT/4MB cache) |
メモリ | 4GB(2GBx2) - UMAX Cetus DCDDR3-4GB-1333*1 |
HDD | Seagate 1TB 7200rpm SATA HDD / ST31000528AS |
電源 | Antec EA-380D Green |
どこかで見たことあるような構成です。定番すぎて面白みはないですね。
- Athlonファンなので今回はあえてIntel。カーネルにパッチ充てたくないのが本音(笑)*2
- HDDもたまにはHitachi/IBM以外ということで、WDの低消費電力なGreenPowerもいいかなと思ったのですがいかんせん故障報告が多いため、ファームバグも落ち着いたSeagateにしました。*3
- BIOS設定は C1E, EIST, C-STATE Technologyなど省電力関連はすべてEnable等に設定。
- 消費電力は35W(Linux起動時のアイドル)に落ち着きました。うち12WはHDDの消費電力ですので優秀な方でしょう。*4
以前のサーバ8.04LTS@ML115G1はもう期限切れでアップデートが必要でしたが、HDD増やしたい、カーネルにパッチ充てたくない、消費電力が多くて不満という3拍子揃ったためマシン置き換え。サーバ性能アップは全く求めてないのに……。*5
負荷がかかっても+10Wぐらいで優秀です。
インストール
初めDesktop版のCDを焼いたのですが、インストール時にRAIDを構成するためにはServer版でないといけないらしい。ということで、やり直し。
オフィシャルからDownload Ubuntu Server Editionを選択。もちろん64bit版(amd64版)を落としました。
マシンにCD-ROMが付いて無いので、一番楽そうなUSBメモリから入れる方法を取りました。UbuntuのCDイメージをダウンロードし、UNetbootinというツールを使ってUSBメモリに書きこみます。bootローダーを書き込むためにAdministratorで実行しましょう*6。FATフォーマットされていれば、既にあるファイルを消さなくて大丈夫でした。このツールは色々なものをUSB起動できるようで便利そうです。
ブートメニューで「default」を選ぶとCDが認識できませんと言わるため「install」を選ぶとよいようです((これに気付かずエキスパートを選んだために面倒なことに……。結局この記事の資料的価値を鑑みてInstallから入れなおしました(汗))。インストール時の作業は割愛。もちろんサーバコンポーネントは何も入れてません(苦笑)
パーティション
マウント | デバイス | 容量 | 説明 |
---|---|---|---|
/ | /dev/md0 | 4G | RAID1。/dev/sd*1 |
/tmp | /dev/md1 | 1G | RAID1。/dev/sd*2 |
swap | /dev/md2 | 4G | RAID1。/dev/sd*3 |
/var | /dev/md3 | 8G | RAID1。/dev/sd*5 |
/usr | /dev/md4 | 16G | RAID1。/dev/sd*6 |
/home | /dev/md5 | 950G | Nilfs2 on RAID1。/dev/sd*7 |
以前の500GBから1TBにしました。/homeが増えて/varを減らした以外はそのまま。
最初にしたこと
とりあえず「sudo apt-get install openssh-server」して、あとはTeraTermから作業しました。
- /etc/ssh/sshd_config の "PermitRootLogin" は相変わらず Yes なので No に設定。
rootとwheel
前と一緒なので概要だけ
$ sudo su # passwd
wheelを導入。
# vi /etc/pam.d/su ↓pam_wheel.so を有効化
auth required pam_wheel.so group=adm
wheel(ホイール)とは、wheelグループに所属する場合のみ su でrootになれる機能。この場合 adm グループの人のみ su を許可します。
いつもならsudo自体を無効にするところですが、KDEがまともに使えなくなるので*7、sudo を adm グループのみにするターゲットのパスワードを要求するように変更。
# vi /etc/sudoers
Defaults env_reset,targetpw
%adm ALL=(root) ALL
# ほかはコメントアウト
日本向けパッケージの追加
# wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | apt-key add - # wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | apt-key add - # wget https://www.ubuntulinux.jp/sources.list.d/lucid.list -O /etc/apt/sources.list.d/ubuntu-ja.list # apt-get update
固定IP
/etc/network/interfaces
auto eth0 iface eth0 inet static address 192.168.1.20 netmask 255.255.255.0 gateway 192.168.1.1 # mtu 9000
MTUはJumboFrame用。よく分からない場合はコメントアウトのままに。
雑多な設定
- 「EDITOR=vi」を設定し、/usr/bin/vi を /bin にコピー*8
- 日本向けパッケージの追加
- IPv6を無効に。/etc/sysctl.conf に
net.ipv6.conf.all.disable_ipv6=1
- upstart化が進んで起動は早くなりましたが、update-rc.d や sysv-rc-conf などは効かないような感じです(未検証)。
- ローカールパスワードとSambaパスワードはデフォルト不一致になった模様
- PostgreSQLは --no-locale で再初期化する。
/usr/lib/postgresql/8.x/bin/initdb -D /home/postgres --encoding=UTF8 --no-locale
- PostgreSQLのpgstat.statの記録を /tmp(tmpfs)に移動。
- fstabのオプションに noatime を追加してアクセス時刻記録を止める。*9
- デーモン停止時の参考資料(ただしCentOS)
- BIOS時計をローカルタイムに設定していて9時間ずれてしまう場合は /etc/default/rcS で「UTC=no」に設定。
その他パッケージ
開発環境 # apt-get install build-essential Zmodem等での転送 # apt-get install lrzsz runlevelの設定 # apt-get install sysv-rc-conf 日本語のman # apt-get install manpages-ja
tmpfs
/tmpをメモリキャッシュに変更しました。fstabに
tmpfs /tmp tmpfs defaults,size=256M 0 2 tmpfs /var/tmp tmpfs defaults,size=256M 0 2
と記述。
コンソール画面の解像度設定
Linuxカーネルに新しく実装されたDRM/KMS(Direct Rendering Management/Kernel Mode-Setting)というものがありまして、X.Orgが行っていた解像度管理をKernelで行うことでX環境とコンソールでシームレスな画面切り替えを可能にする機構があります。
2.6.30以降こいつがディフォルトでonになってるわけですが、modprobeと同時に高解像度に勝手に切り替えてくれるため画面が広すぎて(UXGA)コンソールが使い物にならない。X.orgの解像度管理をカーネルに移すのはいいですが解像度が設定の情報がまるでみつからなくて苦労しました。
約2日格闘した上*10、分かった結論はカーネル起動時のパラメータvideo=xxxで設定可能ということでした。
(例) video=800x600 video=800x600-16 video=800x600-32@60
i915やinteldrmfbのフレームバッファを指定する方法ではうまく行きません(「video=i915:800x600」等はダメ)。Radeon等でも同じように設定できます。
Ubuntu 10.04の場合、この変更は /etc/default/grub の GRUB_CMDLINE_LINUX に設定して、update-grub します。
# vi /etc/default/grub # update-grub
そもそもフレームバッファが有効にならない場合
カーネルのコンパイルオプション等で標準ではフレームバッファがonにならない(KMSが無効に設定されている)場合は、次のカーネルブートオプションを更に追加します。
i915.modeset=1 # i915/Coreシリーズ内蔵の場合 radeon.modeset=1 # radeonの場合 nouveau.modeset=1 # nvidiaの場合
もしくは /etc/modprobe.d 以下に適当なファイルを作って次のように書きます。
options i915 modeset=1
Debian GNU/Linux squeeze(Debian 6.0)にてこの症状に見舞われました。
ちなみに、1ではなく0にすれば強制的に無効にできます。
コンソールの日本語表示
jfbterm が exit すると画面が死んでくれるので*11、fbtermを入れました。
# apt-get install fbterm unifont
このままだとフォントが見づらいので、fbtermを1度起動し終了。ホームディレクトリにある .fbtermrc を編集して、次のように変更しました。
font-names=mono,unifont font-size=16
jfbtermよりも扱い易い印象。i915の場合、KMS(modeset=1)が有効でないと fbterm はまともに動かない印象でした。
RT8111Dドライバのインストール
RealtekのRTL8111Dが乗っているのですが、一応使えるものの異なるドライバが認識し微妙な問題が起こるようです。こちらのサイトを参考に正しいRTL8168D/RTL8111Dドライバを入れました。
# cd /usr/src # tar jxvf r8168-8.00xx.00.tar.bz2 # cd r8168-8.00xx.00/ # make clean modules # make install # depmod -a
R8169なドライバをロードさせないためブラックリストに登録。
/etc/modprobe.d/blacklist.conf
blacklist r8169
カーネル起動用ファイルシステムの更新
# update-initramfs -u
ネットワークパフォーマンスが向上し、MTU=9000も通るようになりました。
RTL8169/8110なNICも同時に乗ってる場合はblacklistしてしまうとそちらを自動認識しなくなるため、rc.localあたりでmodprobe r8169してください。
問題はカーネルアップデート時に再コンパイルが必要なことですが……。この問題を避けるにはdkmsを使った自動更新を検討してください。
物理バックアップ
物理的に別のHDDを付けてバックアップを取るようにしました。
#!/bin/sh DIR=/backup /bin/mount $DIR /usr/bin/rsync -auv --delete --exclude "/files/movie" --exclude "/lost+found" /home/ $DIR /bin/umount $DIR # spindown /sbin/hdparm -Y /dev/sdc
電気の無駄なのでバックアップ用HDDは通常時スピンダウンしています。
/backup は fstab に書い設定してあります。
# backup hdd mount point UUID=6236975e-60f1-4c5c-a0f5-2916db571e88 /backup ext4 noauto 0 2
noautoがポイントです。
このスクリプトファイルを root の crontab に登録し、月2~3回バックアップを取るようにしました。