プロフィール

メインメニュー

最近の記事

カテゴリー

カレンダー
2012年5月
« 4月    
 123456
78910111213
14151617181920
21222324252627
28293031  

アーカイブ

2004年の日記

ケータイ版URL

http:://toyao.net/xoops/
modules/wordpress/

  カテゴリー ‘Linux’ のアーカイブ
ITに関すること、草野球のことなど。
3月
2012
19

NFSクライアントのuid/gidが4294967294になる問題

LinuxサーバとLinuxクライアントの間でNFSのファイル共有をしているのですが、クライアント側でちゃんとuid/gidが表示されないことに気が付きました。
解決法をメモしておきます。
 
環境:
NFSサーバ:Debian 7.0 wheezy
      nfs-common,nfs-kernel-server:1.2.5-4
NFSクライアント:Debian 7,0 (wheezy)
      nfs-common,nfs-kernel-server:1.2.2-5
 
NFSクライアントにおいて、NFSマウントしているディレクトリに移動してみると、以下のようにuidとgidが4294967294になっています。
 
 

# ls -l
合計 109556
-rw-r--r--  1 4294967294 4294967294       281 2010-08-29 16:08 QRcode.png
-rw-r--r--  1 4294967294 4294967294      1454 2010-05-30 20:15 admin.php
-rw-r--r--  1 4294967294 4294967294       761 2010-05-30 20:15 backend.php
-rw-r--r--  1 4294967294 4294967294     18571 2010-05-30 20:15 banners.php
drwxrwxrwx  3 4294967294 4294967294      4096 2012-03-19 13:32 cache
drwxr-xr-x  8 4294967294 4294967294      4096 2012-03-19 13:32 class
drwxr-xr-x  3 4294967294 4294967294      4096 2012-03-19 13:32 core

 
NFSクライアントの
/etc/default/nfs-common
を以下の設定にして再起動したら解消されます。
 

NEED_IDMAPD=yes

 
 
参考
Ubuntu日本語フォーラム / nfsでマウントできてファイルも見えますが、uidとgidが ”4294967294″ になってしまう
 
NFSv4Howto – Community Ubuntu Documentation

3月
2012
9

さくらのクラウドをMacでファイル共有する。netatalkでおk

さくらのクラウドを先日申し込みまして、もっかガシガシ構築中です。
 
Windowsにはsambaというファイル共有ツールがあります。これでLinuxとWindows間のファイル共有している人は多いと思います。Macも同様にファイル共有のためのツールnetatalkがあり、これをLinuxに導入することによりMacのサーバー間ファイル共有プロトコルであるAFP(Apple Filing Protocol)通信が実装され、ファイルサーバとして利用することができます。netatalkの情報はsambaに比べてあまり無いみたいなのでご紹介したいと思います。
 
MacはWindowsネットワークに接続できる機能がありますので、sambaを使ってサーバー間のファイル共有はできますが、Mac用のネットワークプロトコルを使った方が体感的に転送速度が良い(気がする)し、画像などはサムネイルDBが自動で作られますので、プレビューなど見るときに快適です。要するにnetatalkの方がMacとの親和性がsambaより良いです。
 
環境:
さくらのクラウド CentOS 5.7 (64bit)
netatalk 2.2.2
クライアントはMac OS X Lion (10.7)
 

avahiの設定

まず、avahiを有効にする必要があります。これはネットワーク上のサービスホストを見つけるために必要なモジュールで、Bonjourに似た機能を提供します。DHCP、DNS、プリンタやファイルの共有などをするときに必要です。
 
avahiはすでに導入済みですが、起動時OFF設定になっているので、ONにします。
 

# 設定確認(変更前)
chkconfig --list |grep avahi
avahi-daemon    0:off   1:off   2:off   3:off   4:off   5:off   6:off
avahi-dnsconfd  0:off   1:off   2:off   3:off   4:off   5:off   6:off

# 起動時ONにする
chkconfig avahi-daemon on
chkconfig avahi-dnsconfd on

# 設定確認(変更後)
chkconfig --list |grep avahi
avahi-daemon    0:off   1:off   2:on    3:on    4:on    5:on    6:off
avahi-dnsconfd  0:off   1:off   2:on    3:on    4:on    5:on    6:off

 
CentOSのrunlevelは3なので、3:on になっていれば良いです。
 
 

openssl, libgcryptの設定

openssl, libgcryptはすでに導入済みでしたが、libgcrypt-develだけ入ってなかったのでインストールしました。
Mac OS X Lion から接続する場合はlibgcrypt-develは必須です。これによりLionで必須のdhx2が使えるようになります。
 

# libgcrypt-devel(64bit)導入
yum install libgcrypt-devel.x86_64

# opensslの導入確認
yum list |grep openssl
openssl.i686                             0.9.8e-20.el5_7.1.0.1.centos  installed
openssl.x86_64                           0.9.8e-20.el5_7.1.0.1.centos  installed
openssl-devel.x86_64                     0.9.8e-20.el5_7.1.0.1.centos  installed

# libgcryptの導入確認
yum list |grep libgcrypt
libgcrypt.i386                           1.4.4-5.el5                   installed
libgcrypt.x86_64                         1.4.4-5.el5                   installed
libgcrypt-devel.x86_64                   1.4.4-5.el5                   installed
libgcrypt-devel.i386                     1.4.4-5.el5                   base

 
 

BerkleyDBインストール

BerkleyDBはCentOSのパッケージに入っていないので、ソースからビルドします。
ここからダウンロードします
Oracle Berkeley DB Downloads
 
私はBerkeley DB 5.3.15.tar.gz, with AES encryption (34M) md5
をダウンロードしました。
oracleのサインオンが必要です。
 

# サーバー上で展開し、インストール
tar xvzf db-5.2.28.tar.gz
cd db-5.3.15/build_unix
../dist/configure
make
make install

 
/usr/local/BerkeleyDB.5.3/
にインストールされます。
 
 

netatalkインストール

netatalkもCentOSのパッケージに入ってないので、ソースからビルドします。
ここからダウンロード
Netatalk – Networking Apple Macintosh through Open Source
 
私はnetatalk-2.2.2.tar.bz2
をダウンロードしました。
 

# 展開してインストール
tar xvjf netatalk-2.2.2.tar.bz2
cd netatalk-2.2.2
./configure --enable-redhat-sysv --with-bdb=/usr/local/BerkeleyDB.5.3
make
make install

 
以上で必要なモジュールがインストール出来ました。
 
 

netatalkの設定

netatalkの設定を行います。
 
/usr/local/etc/netatalk/Applevolume.default 編集
権限とか文字コードとかの設定をします。
ここでは、user1ユーザのみ接続を許可する設定にしています。

 :DEFAULT: options:upriv,usedots cnidscheme:dbd maccharset:MAC_JAPANESE volcharset:UTF8 dperm:0755 fperm:0644 ea:auto allow:user1

 
どのディレクトリを共有するかの設定もこのファイルです。
デフォルトで
~
だけ書かれていると思いますが、これはユーザのホームディレクトリが共有対象になっていることになります。
これ以外に、例えば/var/www を “www”という名前で共有し、特定のネットワークにのみ接続を許可したい場合は以下のようになります。

/var/www                "www"       allowd_hosts:192.168.0.0/24

 
/usr/local/etc/netatalk/netatalk.conf の編集
これは必須ではありませんが、AFPサーバー名をここで設定できます。

ATALK_NAME='SakuraCloud'

 
/usr/local/etc/netatalk/afpd.conf の編集
コメント化されているこの行を有効にします。

 - -tcp -noddp -uamlist uams_dhx.so,uams_dhx2.so -nosavepassword

 

# avahiの afpd.serviceを新規作成
cat /etc/avahi/services/afpd.service
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>
<name>CommunityLink AFP Server</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
</service-group>

 
[参考]netatalkをLion対応する
netatalk 近状 (2.2.0を正式リリースすべきか):HAT blog
http://hatx.blog.so-net.ne.jp/netatalk_status
 
 
iptables の編集
netatalkはPort548を使います。もしファイアウォールを設定している場合は、
/etc/sysconfig/iptables を編集し、port 548を空けておいてください。
 
 

サービス起動

avahi-daemonの起動

/etc/init.d/avahi-daemon start

 
もしこのときdbusのエラーが出る場合: (/var/log/messagesでdbusのエラーが出ているとき)
/etc/avahi/avahi-daemon.conf を編集し、

enable-dbus=no

とします。
 
[参考] avahi-daemon.conf(5): avahi-daemon config file – Linux man page
http://linux.die.net/man/5/avahi-daemon.conf
 
 
netatalk 起動

/etc/init.d/netatalk start

 
サーバー起動時にnetatalkを起動する設定。

chkconfig netatalk on

 
 

接続確認l

Finderのメニューで[移動] → [サーバーへ接続] で接続します。
afp://ユーザ名@ホスト名
の形式です。
 
120309-0002.png
 
 

うまく動かない場合

asip-status.plコマンドで、netatalkのバージョンやサポートしている認証方法が表示できます。
Lionから接続する場合は、UAMsのところに”DHX2″が含まれていることを確認してください。

asip-status.pl localhost

AFP reply from localhost:548
Flags: 1  Cmd: 3  ID: 57005
Reply: DSIGetStatus
Request ID: 57005
Machine type: Netatalk2.2.2
AFP versions: AFP2.2,AFPX03,AFP3.1,AFP3.2,AFP3.3
UAMs: DHX2,DHCAST128
Volume Icon &amp;amp;amp;amp; Mask: exist
Flags: SupportsCopyFile,DontAllowSavePwd,SupportsServerMessages,SupportsServerSignature,SupportsTCP/IP,SupportsSrvrNotifications,SupportsOpenDirectory,SupportsUTF8Servername,SupportsUUIDs,SupportsSuperClient
Server name: SakuraCloud

Network address: xxx.xxx.xxx.xxx (TCP/IP address)
UTF8 Servername: SakuraCloud

 
 
 
[参考]CentOS 5.6 に netatalk 2.1.5 をインストール – Debian GNU/Linux 3.1 on PowerMac G4
http://d.hatena.ne.jp/paraches/20110424
 
[参考]Netatalk and Samba
http://www003.upp.so-net.ne.jp/hat/netatalk/andsamba.html

2月
2012
7

KVMをバージョンアップして、ゲストOS(Windows)が起動しなくなったときの解決法

kvmをバージョンアップしたら、ゲストOS(Windows)が起動しなくなりました。
解決法が見つかりましたのでメモしておきます。
 
環境:
debian (wheezy)
qemu-kvm 1.0+dfsg-7
libvirt-bin 0.9.8-2
 
ゲストOSはWindows7
 
仮想マシンマネージャからゲストOS(Windows)を起動したら、一瞬立ち上がるのですがすぐに停止してしまいます。
LinuxのゲストOSは問題なく立ち上がるので、Windowsのみ起こる現象だと思います。
 
コマンドから
virsh start Windows.img
としても同じで、すぐに停止してしまいます。
 
/var/log/libvirt/qemu/ の下にログが出ています。
問題の部分は以下

2012-02-06 12:34:30.405+0000: starting up
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin HOME=/ /usr/bin/kvm -S -M pc-0.12 -cpu qemu32 -enable-kvm -m 4000 -smp 4,sockets=4,cores=1,threads=1 -name Windows7_32_9 -uuid 80dc1752-fb5f-cd38-cf69-9bccf0628c5e -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/Windows7_32_9.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime -no-shutdown -drive file=/var/lib/libvirt/images/Windows7_32_9.img,if=none,id=drive-ide0-0-0,format=raw -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=2 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0,bootindex=1 -netdev tap,fd=18,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:aa:2c:0c,bus=pci.0,addr=0×3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -usb -device usb-tablet,id=input0 -vnc 0.0.0.0:2,password -vga std -device AC97,id=sound0,bus=pci.0,addr=0×4 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0×5
Domain id=46 is tainted: high-privileges
char device redirected to /dev/pts/5
kvm: /tmp/buildd/qemu-kvm-1.0+dfsg/memory.c:1239: memory_region_add_subregion_common: Assertion `!subregion->parent’ failed.

 
 
-M pc-0.12 のところ(マシンタイプ)を上げたらうまくいきました。
具体的には、
/etc/libvirt/qemu にあるxmlファイルを編集します。

&lt;br/&gt;
  &lt;os&gt;
    &lt;type arch='i686' machine='pc-0.12'&gt;hvm&lt;/type&gt;
    &lt;boot dev='cdrom'/&gt;
    &lt;boot dev='hd'/&gt;
  &lt;/os&gt;

“pc-0.12″ を “pc-0.14″に変更し、virsh defineで反映させます。
virsh define Windows.xml
 
参考:
fedora-virt – Re: [fedora-virt] Start guest from cli? – msg#00066 – 2012-01
http://mailinglist-archive.com/fedora-virt/2012-01/00066-Re+fedoravirt+Start+guest+from+cli

4月
2011
8

toyao.netサーバを移行しました

年末年始に新しいパーツを購入して、自宅のサーバー環境を刷新しようと意気込んでいたのですが、あまり時間が取れず途中になっておりました。
正月に仮想環境までは作っていたのですが、その中身を移行できておらず、4月になってようやく全部移行できました。
サーバーの中身の引越しとか設定作業とか、PCケースの入れ替えなどで丸3日くらいかかりました。
 
新しく買ったパーツを含む、新サーバーのスペック。4代目のtoyaoサーバ
【新規購入】CPU:Inetel Core i7 950 Box(コア数8) ¥23,980
【新規購入】マザーボード:SABERTOOTH X58 ¥17,818
【新規購入】メモリ:SUPERTALENT WB160T12G9 (DDR3 PC3-12800 4GB 3枚組) ¥14,980
【新規購入】HDD:日立 0S02602 (2TB SATA300 7200) ¥9,980 × 2
【流用】グラボ:WinFast PX6800 TDH (PCIExp 256MB)
【流用】ケース:ANTEC SOLO
OS :Debian GNU/Linux testing(wheezy)
 
今まで使用していたサーバのスペック(3代目toyao)
2007/9に稼働開始
CPU :Athlon64x2 4200+
マザーボード:ASUS A8N-SLI Premium
メモリ:DDR400 2GB
HDD:250GB×2(mirror)、300GB×1
グラボ:ASUS EAX1550 TD 256M
ケース:ANTEC SOLO
OS :Debian GNU/Linux 4.0r1
 
物理的なリソースは新サーバで強化されましたが、WebServerは仮想化しているので、単純に新旧の性能比較はできません。
まぁでも旧マシンは5年くらい前のパーツなので、それと比べて性能が退化していることは無いとは思いますが…
 
201104082312.jpg
 
 
仮想環境を作るまでの道のりは以下参照。
KVMでWindowsとLinuxの仮想化はじめます
KVM仮想環境の構築 その1
KVM仮想環境の構築 その2
KVM仮想環境の構築 その3
 
 
NICを2つ用意しました
1つのNICをすべてのOSで共有するとNICがボトルネックになりそうな気がしたので、PCI ExpressのNICを1つ追加しました。
 
NFSとsambaでHOST OS⇔GUEST OS間を共有
ファイルは一元管理したいので、HOST OSにほとんど集めました。
WebコンテンツもHOST OS側に置き、GUEST OSであるWebServer側からNFSでファイルを参照するようにしました。
WebServerのローカルにファイルを置いたときよりもパフォーマンス的には悪化すると思いますが、現状としてはそんなに影響でてないみたいです。
NFSの通信で時間がかかるようならばまた考え直そうと思います。
ファイルをHOST側に置きたかったのは、万が一GUEST OSのVMファイルが壊れてもファイルは救えるからです。
 
MySQL DBはWebサーバと同じマシンに
DBのリソースはWebServer内に置いています。これだとVMファイルが壊れたらDBデータも消えてしまうことになるので心配なのですが、DBで使っているファイルをHOST側に置くのはなんとなくカッコ悪い感じがしたのでそのままにしています。
どういう風にDBデータを管理したらいいのかここは検討の余地ありかな…
 
Webのレスポンスについて
はっきり原因がよく分かっていませんが、XOOPSコンテンツの応答レスポンスが悪いようです。
現時点ではphp5.2までしか対応していないXOOPS2.1.8のバージョンのままで動かしており、phpの実行エラーが出まくっているのが原因かも知れません。
php5.3に対応しているXOOPSのバージョンに上げれば済む話なのですが、XOOPSのサイトをたくさん運用しているので全部バージョンアップするのめんどいです。ぼちぼちやっていきます。
 
GUEST OSのディスクタイプ
KVMのGUEST OSを作るときに、ディスクのタイプをraw形式かqcow2形式かを選べます。
raw形式は全領域を固定で割り当てるrawノンスパースファイルと、ディスクを使用した分だけ割り当て、ディスク領域を節約できるrawスパースファイルがあります。
前者の方がアクセス速度が出るみたいなので、WebServerはrawノンスパースファイルにして固定ディスク領域を割り当てています。
 
[参考]KVMでの3つの仮想イメージ形式 – noBLOG
http://orangesooda.com/no/2011/02/kvm.html
 
WebServer以外のGUEST OS
Windows XPは主にIE6検証用の環境として作りました。他の用途としてはDRMの解(ry
あと、php5.1環境が欲しいのでCentOSをインストールしようかと思っています。
5.1を使っているレンタルサーバもまだまだ多いです。5.1の環境でテストしたら思わぬ不具合が見つかったりするので、phpのソフトを配布するときはぜひとも5.1でのテストを実施しておきたいところです。
 
断捨離:物理マシンが1つ減りました
2台の物理マシンを1台の仮想マシンにリプレースしたのでマシンが1台余ったのですが、多分、うちの母の事務所で第二の人生を送ることになると思います。
僕が社会人になったときに購入したWindows98マシンを未だ現役で使っているという事務所なので…
IBM Aptivaは10年使っても大丈夫!
 
HDDは500GBくらいのが何個か余ったけど、これは処分かな…
僕のデスク周りはコード類がかなりすっきりし、騒音もかなり抑えられてめっちゃ快適になりました。

1月
2011
16

KVM仮想環境の構築 その3

KVM仮想環境構築その1、その2に続き、今回はKVMの使用感について書きます。
 
過去のエントリ:
KVM仮想環境の構築 その1
KVM仮想環境の構築 その2
 
 

他のパソコンからゲストOSへリモートログインする

ホストOSとゲストOSの間の通信はもともとVNC通信で行われています。
VNCによる通信は一般的にリモートログインで使われているので、KVMでは特になにも機能を追加しなくてもゲストOSにリモートログインすることができます。
デフォルトでは、同一マシン上にあるホストOSとゲストOSの間の通信しか許可しない設定になっていますが、この設定を変えてやると外部端末からゲストOSにアクセスできるようになります。
[参考]No route to … » Blog Archive » KVMで外部からのVNCアクセスを設定
 
 

 
 
/etc/libvirt/qemu.conf

vnc_listen =”0.0.0.0″
vnc_password = “password”

 
そしてlibvirt再起動。

/etc/init.d/libvirt-bin restart

 
こんな感じでMacBookからゲストOSにアクセスできます。
MacのVNCクライアントはChicken of the VNCを使いました。定番のVNCクライアントらしいです。使い勝手も良いです。
 
 
まず、Mac OS X ネイティブ環境はこんなの
IMG_0732.JPG
 
 
VNCでゲストOSのWindows7にリモートログインしたところ
IMG_0730.JPG
 
 
VNCでゲストOSのDebianにリモートログインしたところ
IMG_0735.JPG
 
 
801.11nの無線LAN環境下でもかなり快適に動作しました。
このMacBookで、どんなOSも自由に操作できるようになった利便性は大きいです。
 

動作状況まとめ

ホストOS環境:
debian(squeeze)
qemu-kvm 0.12.5
 

ゲストOS=Windows XP (64bit)

・USB認識OK。USBメモリ、マウスなどは認識した。
・音は出る。
・VirtIO導入可能。
 

ゲストOS=Windows 7 (32bit)

・USB認識OK。USBメモリ、マウスなどは認識した。
・音は出る。(ac97)
・VirtIO導入可能。
・シャットダウン時にブルースクリーンになり再起動されてしまう問題がでた。
 [コントロールパネル]→[システム]→[システムの詳細設定]→[詳細設定]→起動と回復の[設定]
 のシステムエラー時「自動的に再起動する」のチェックをOFFにするととりあえず再起動はしなくなった。
 libvertのエラーログには何も問題は出ておらず、Windows側だけの問題と思われるが原因不明。
 

ゲストOS=Windows 7 (64bit)

・USB認識せず。
・音が出ない。
・VirtIO導入可能。(7用のドライバが無いが、Vista用のドライバで認識した)
 
 

ゲストOSのWindowsの使用感

・VirtIOを使うとディスクIOやネットワークは思ったより速い!。
 特にイライラせずファイルコピーとかネットワークは使えてます。
 物理PCを使うのと感覚的にはあまり差はないかも。
 ネットワーク経由のファイルコピーもそんなにひっかかる感じではないです。
 
・マウスの追随はけっこういいと思います。マウス操作はあまりストレスありません。
 
・動画再生はコマ落ちしてカクカクするのであまりおすすめできません。
 ビデオ編集をWindowsでやろうと思ってたんですがこれは諦めざるをえません。
 MacBookがあるからそっちでやるかなーと思ってます。年に数回しかやらないし。
 
・再起動が速い。物理デバイスがないのでBIOSのチェック時間が短縮できるのが効いているんだと思います。
 
あとは、仮想OSの一般的なメリットですが、こんな恩恵が受けられます。
・OSの起動/停止がリモートで行える。
・メモリやCPUのリソース配分を後から変更可能
・テスト環境用にお手軽にOSをインストールできる。
 
 
Windows 7(64bit)をインストールした直後、再起動したときの動画です。
こんなに速いとは思ってなかったのでちょっと驚きでした。

1月
2011
13

KVM仮想環境の構築 その2

KVM仮想環境の構築 その1に引き続きKVM環境を構築しています。
いろいろと分からないことも多いし、KVMの開発自体がまだ発展途上ということもありちゃんと動いてくれず苦労しています。
たくさんつまづきながらやってます。正月から3日がかりでやっとゲストOSが動くようになりました。
 
前回はホストOSとしてDebian(Squeeze)をネットワークインストールするところまでやりました。
いよいよKVMをインストールします。
 
 

KVMのインストール

KVMについてはここが参考になります。
@IT:KVMの導入と基本的な使い方
debian(squeeze)に以下のパッケージをインストールします。
qemu-kvm : KVM本体。lennyではkvmパッケージでしたが、sqeezeから名前がqemu-kvmに変更されています。
bridge-util : Ethernetをブリッジするパッケージです。
デフォルト設定ではゲストOSを仮想環境内LANで動くようになっていますが、ホストOSと同じ物理ネットワーク上のIPを振りたいなら入れておく必要があると思います。
virt-manager : GUIの管理マネージャ。
 
bridge-utilのインストールについてはpythonのアップデートも必要かも?。v2.6が必要とか言われました。
 
 

rootではなく一般ユーザで仮想マシンを動かしたい

一般ユーザ(user1とします)で仮想マシンを操作したい場合は、user1をlibvirtグループに含めます。

adduser user1 libvirt

virt-managerを一般ユーザで動作させるためにはいったんホストOSの再起動が必要でした。
[参考]KVM – Debian Wiki(英語)
 
 

仮想マシンマネージャの使い方

これで一般ユーザのデスクトップから仮想マシンマネージャが動くようになります。このマネージャを通じてゲストOSの起動などKVMをコントロールできます。
gnomeの[アプリケーション]→[システムツール]→[仮想マシンマネージャ]で起動します。
201101042115.jpg
 
仮想マシンマネージャの使い方はここがおすすめ。
アクセラと+αな生活 : Ubuntu 9.10 で KVM を使ってみる。
 
 

ゲストOS:Windows7の導入

Windows7 64bit版をインストールしてみました。
インストールCDは無事認識しましたので作業は順調に行くと思われましたが、インストールの途中で再起動をした時に立ち上がってこない…
どうやらHDDから起動に失敗しているようで、こんなメッセージが出ます。
 

Starting SeaBIOS (version 0.5.1-20100825_131917-polaris)
Booting from Hard Disk…

 
はじめは仮想環境で使われているSeaBIOSがおかしいのかなと思っていましたが、そうではなくWindowsがMBRをちゃんと書いていなかったのが問題だったようです。
ここ経由でこのページの手順通りにやってなんとかHDD起動できるようになりました。
MBR – Restore Windows 7 Master Boot Record – Windows 7 Forums(英語)
 
サウンドドライバはKVM付属のac97でもes1370でも認識しませんでした。つまり音が鳴りません…orz
ここによるとac97は認識するとか書いてあるんですが。たぶんWindows7 32bit版の話でしょう。
しかもUSBメモリ認識しないし。
Windows7の32bit版だとこれらの問題もなく使えているという報告を見かけましたが、64bit版をインストールした限りだとまだいろいろおかしいです。
64bit版を安定して使えるようになるにはもうちょっとKVMの開発が進むのを待った方が良いかも知れません。
 
IMG_0725.JPG
 

VirtIOをインストール

ゲストOSがWindowsの場合は、準仮想化ドライバVirtIOを導入したほうが速くなります。
ファイルIOやネットワークを準仮想化し高速化してくれるドライバです。
[参考]絶対無糖 (Zettai Non Sugar): KVM で、Virtio Windows 用ドライバを試してみる
 
VirtIOを入れるとどれくらい速くなるかはこのページが参考になります。倍くらい速度が違うので、
ぜひ入れておいた方がいいです。
[参考]本気で使いたいユーザのためのLinux KVM活用法:第2回 Linux KVMで動かすWindows |gihyo.jp
 
ここからWindows用のVirtIOドライバをダウンロードします。
“Download Latest VirtIO Win drivers from Fedora”と書いてあるリンクです。
 
NICドライバはNetKVMフォルダの下にあります。
VirtIOディスクは、SCSIドライバとしてviostorディレクトリの下のドライバを指定します。
 

結局WindowsXPを使うことにしました

音がでないWindowsなんて悲しすぎるので、Windows7は諦めて、WindowsXPをインストールしました。
Vistaは操作性が悪く今まで使いにくい思いをしてきたので、もう使いません。
WindowsXP 64bit版のゲストOSは概ねうまく動いている感じです。
USBメモリやUSBマウスも認識しました。たぶんだいたいのUSBデバイスは大丈夫なんじゃないかと思います。
WindowsXPでも最初は音が鳴らず悩んでましたが、ここの情報に助けられました。これで解決。
 
KVM(Kernel based Virtual Machine)を語れ

/var/log/libvirt/qemu の下のログ見たら QEMU_AUDIO_DRV = none で起動してた
→ /etc/libvirt/qemu.conf の vnc_allow_host_audio を 1 にして /etc/init.d の libvirt-bin を restart する
 
/var/log/libvirt/qemu の下のログで ALSA lib が cannot find card ’0′ とか Failed to open ‘default’ とか言う
→ /etc/libvirt/qemu.conf の user を root にして /etc/init.d の libvirt-bin を restart する

 
 

ネットワークの設定

ゲストOSをインストールすると、ネットワークはバーチャルなネットワークセグメントで動くわけですが、それだと何かと不便です。
現在ある物理ローカルネットワーク上に仮想マシンも置いた方がいろいろ便利なので、ネットワーク構成を変更します。
そのためには、ホストOSのeth0にブリッジ機能をもたせ、仮想OSに対してネットワークアドレスの変更なしで通信をパススルーするようにします。
[参考]
kvm を使う – 文書の形
Debian GNU/Linux 5.0 – KVM + QEMU – インストール : Server World
libvirt: Wiki: Networking(英語)
 
ネットワークを仮想ネットワークではなくブリッジ経由にする設定方法はこれらの情報で分かったのですが、これは新規にゲストOSをインストールするときの話でした。
すでに作成済みのゲストOSを、あとからブリッジ経由に変更する方法がいまいち分かりませんでした。
仮想マシンマネージャのメニューを見ても変更できる風ではなく、どうやらGUIからは変更できない感じでした。
 
なので以下を参考にして、/etc/libviert/qemu/ 下のxmlファイルのinterfaceセクションを手で書き換えました。
hnakamur’s blog: CentOSのKVMのゲストOSに2枚目のネットワークカードを追加
 
こんな感じで苦労しつつもなんとかWindows環境のゲストOSを動かすことができたのでした。

11月
2010
3

MacとLinux(Debian)の間でNFSによるファイル共有をしようとしたときの備忘録

はまったのでメモ。
 
結論として、
NFSによるファイル共有はできたんだけど、root権限でファイルを置くことができないトラブルに遭遇。
NFSサーバーはLinux(Debian)で、クライアント側はMacという環境で、Macからファイルを置こうと思ってもサーバーにカレントユーザ(ID:501)の権限でしかファイルを置けない。
root権限でどんなファイルでも扱えるようにどうにかしたかったんだけど解決策見えず。
 
基本的には、NFSサーバ側の/etc/exports にno_root_squashオプションをつければNFSクライアント側からはrootでアクセスできるはずなんだが…
[参考]『NFSサーバの設定』|とあるSEのきまぐれ日記
http://ameblo.jp/kyon-tiger/entry-10437529410.html
 
調べたこと:
 

NFSサーバ:Linux(Debian)側

nfs-commonパッケージにバグがあるらしい。
 
NFS and no_root_squash – cannot write as root – permission denied – linux.debian.user | Google グループ
http://groups.google.co.jp/group/linux.debian.user/browse_thread/thread/b351bc304ec1f2dc
これによると、nfs-common 1.1.2-6 にダウングレードする必要がある。
現在使っているのはテスト版(squeeze)の1.2.2-4。
これを安定版(lenny)の1.1.2-6lenny2にダウングレードした。
たぶんnfs-kernel-severも1.1.2にしとく必要がある。
 
しかし、これだけではダメで、クライアント側のmountも設定変更が必要。
 

NFSクライアント側

mount時のオプションに
sec=sys
を明示的につける必要がある。
#492970 – nfs-common 1:1.1.3-1 client disallows access to files/directories where it should allow access – Debian Bug report logs
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=492970
 
例:

mount -t nfs -o tcp,sec=sys 192.168.xxx.xxx:/home /mnt

 
しかし、Mac OS Xでは、これらの設定を行ってマウントするもroot権限で書き込みできず。
 
クライアントがMacOSじゃなかったらなんとなくうまく行きそうな気がするんだけど… 謎。
 
ちなみに一般的なMacとLinuxサーバ間でのNFS共有設定はここらへんが参考になります。
Linux NFSへMacからmountする – 思い出はいつまでも
http://d.hatena.ne.jp/a10i/20080817/1218979854

7月
2010
11

オープンソースカンファレンス2010 京都に行ってきました

去年にひきつづき、7/10(土)にオープンソースカンファレンス(OSC)2010京都に行ってきました。
去年よりなんだか人が多い印象です。どのセミナーも、けっこういっぱい人が来ていました。
不況と勉強会の人気って相関があるんですかね?そんな気も少ししています。
 
 
 

10:15 HTML5で広がるインターネットアプリケーション開発の未来

担当:HTML5-WEST.JP
講師:村岡 正和
 
 
村岡さんはhtml5-west.jpの人です。
HTML5を使って、3D動画を簡単にページ上に表示させるデモを見せてもらいました。
動画を制御するための再生ボタンやSTOPボタンも、HTML内に1行コードを書くだけで作れるんですね。簡単です。
僕はHTML5についてほとんど知識がありませんでしたが、HTML5でいろいろなメディアのコントロールが簡単にできるというのは新しい発見でした。
45分の時間で村岡さんはじめの3人の方のプレゼンがありましたが、どの方もその場でコードを書いて解説しており、プレゼン慣れしてる感じでした。例えて言うなればピアノを弾きながら語れる技術?
僕だったら、ああいう場だと緊張してコードうまく書けないと思う…
プレゼンテーターはすべてMac使ってました。
村岡さんはEmacs使ってました。
 
 

11:00 はてな 今から使えるHTML5 ~はてなの場合~

担当:株式会社はてな
講師:外山 真 (nanto_vi) (株式会社はてな アプリケーションエンジニア)
 
 
大講堂でのセミナーでしたが、 ざっと見た感じ100人以上いました。人気の高さがうかがえます。
もう京都といったら任天堂かはてなですからね!
外山さんは4月に入社したばかりの人で、けっこう華奢な感じのする方でした。
Windows使っていました。

HTML5は旧称 WebApplication 1.0と言い、2006年くらいからHTML5と呼ばれるようになったそうです。
はてなブックマーク使っている人がどれくらいいるかアンケートとっていましたが、ざっとみて会場の半分くらいは使ってるかな?という印象でした。
はてなの新規サービスはHTML5の技術?のCanvasでグラフを作っているそうです。

HTML5ではtabindexを全要素に適用可能です。
例えばspan要素にtabindexを指定できます。そしてボタンじゃないけどクリックできるようになります。
もともとIEの独自拡張でしたが、ほかのブラウザもこの実装を追従するようになりました。
はてなのチュートリアル機能で使っているそうです。

はてなはTenという自社製のフレームワークを利用しています。jQueryを自作している感じ?
 
 
 

13:00 OpenOffice.orgを便利に活用しよう!

担当:関西OpenOffice.org勉強会
講師:大槻 武志、榎 真治、澤 徹、多田 真遵
 
 
榎さんは Windows XP使ってました。
OpenOffice.orgとは、無償で使える統合Officeソフトのことです。
ファイル形式はODF。
事例として、
会津若松市で組織全体で導入
四国中央市 1100台+小中学校用900代を5年かけて移行中
住友電工 全社レベルで活用 最終的に15000台が対象
などがあります。結構自治体や大企業で使われていますね。
 
USBにインストールすることができます。
オフィスソフトが入っていないパソコンでも、インストールせずに使えます。
僕もMacではOpenOffice.org使ってますが、けっこう使えます。MSのExcelデータも普通に読めるし。
もうMS Officeは高いからいらないんじゃないかな?
時代は、何万円もするMS Officeをあえて使わなくても良くなってきつつあります。
 
 
 

14:00 Eclipse PDT + MakeGoodによるPHPコードのテスト

担当:Piece Project
講師:松藤 秀治
 
 
MakeGoodというTDDやEclipse上で動作するテストランナーの紹介をしていただきました。
TDDってなんだかよくわかりませんでした。まぁEclipseでも使えるということで、こんど試してみたいと思います。
テストを自動実行してくれるので、テストが楽ちんになるそうです。
ソースコード保存時に勝手にテストが実行できるようにできる設定とか。けっこう驚きでした。
シナリオ実行とかできるんかな? こういうツールはどんどんやり方を覚えて、効率のよい開発をしたいですね!
 
 
 

15:15 現役IT担当者が語る! やればできる! OSSで中小企業のIT化!

担当:オープンソース(OSS)で中小企業のIT化
講師:菅 雄一
 
 
結構声が大きくて分かりやすい感じの語り口調が独特の人でした。
ITを専門としていないプレゼンテーターが、孤軍奮闘して中小企業のIT化を推進した顛末をプレゼンしていただきました。
プレゼンは高橋メソッド方式で、どんどん流れていく感じ。
 
ホームページ作成を外注業者を頼まず自作して、センスが最悪で、会社内ではボロカス評価だったそうです。
当初は結局、外注してホームページを作成したそうですが、最終的にはWikiで自前のホームページを作り上げました。
素人がITを推進して、痛い目にあうのは、トラブルにあったときです。
やはり表面的な知識では、トラブルに対応できないと痛感したそうです。
どっかから拾ってきたLinuxの設定をそのまま使って動いたからいいや、ではなく、
しっかりとした根拠をもった設定を、自分で考えて構築できるようにならないといけないですね。
具体的な技術事例というのはなかったですが、どういう姿勢で会社のIT化に取り組めばいいのかという参考になりました。
 
 
 
 
このあと、16:15から閉会までは大講堂で5分間スピーチ?という感じのライトニングトークを聴講しました。
5分間のプレゼン発表に命をかけてきてる猛者がいっぱいいて、この内容の濃いこと。
ほとんどの方が残り時間0秒まで使い切る完全に美しいプレゼンを行っていて、内容よりもそのプレゼン技術に感服しました。

次のオープンソース系イベントは秋のKOF(関西オープンフォーラム)があります。今回のようにオープンソースな方々の情熱に触れると、こっちまで元気になります。
技術的なことを学びに行く目的ももちろんありますが、「ようし、オレも頑張ろうっと」という前向きなモチベーションを与えてもらえる場、というのが一番大きいですね。

6月
2010
15

macで使うエディタをemacsにしようかと思う

MacOS Xで使うためのエディタをずっと探しているんですが、迷っていて決めかねています。
長年Windowsの秀丸とかで慣れてしまうと、他のエディタに乗り換えるのは結構有機が要りますよね…

秀丸のキーボードマクロ機能は超便利なんで、少なくともこの機能を備えたエディタでないと困るんです。
他には、少なくとも文字コードはShift-JIS、EUC、UTF-8は認識できて、改行コードも区別でき、それらの間を簡単に 切り替えたり、今どんなコードなのかをタイトルバーなんかに表示してくれたりできないと、ちょっと私には不便です。

PHPの開発環境はもうEclipseとかAptanaで慣れてきたので、その他の言語とか、ちょっとしたデータを見たりする
場合のエディタが欲しいのですね。

Macでは、以下のものがメジャーみたいです。

mi
http://www.mimikaki.net/mi/introduction/

CotEditor
http://www.aynimac.com/p_blog/files/article.php?id=41

Coda (シェアウェア)

http://www.panic.com/jp/coda/

jEdit
http://www.jedit.org/

エディタについては以下のまとめが役に立つと思います。
portal shit! : Mac用テキストエディター選手権
http://www.portalshit.net/article.php?id=1064

で、僕もいろいろエディタを入れて試していますが、新しいエディタに慣れるというのはそれなりにエネルギー と勇気が必要なわけです。
そしてWindows環境で、高機能な秀丸を使っていた身としては、知らず知らずのうちにエディタに対して求める 要求が高くなります。

そういうことを考えだすと、なかなか踏ん切りがつきません。

さらに考慮すべきは、仕事場ではWindowsを使うし、家ではLinux、Windows、Macを使うとなると、キー操作が まったく異なるエディタを別々に使っていると、体がついていけずかえって作業効率が悪くなります。

そんなときにemacsという最後のソリューションを思いつきました。
emacsは、UNIXで古くから使われているエディタですが、MacはUNIXベースのOSだから親和性はいいんじゃない のかと。さらにemacsはいろんなプラットフォーム版が出ているので、やろうとおもえばWindows環境下でemacs を使うことだってできるし。

emacsは、仕事では使うことは今までありませんでしたが、大学時代にSunのワークステーションで、emacs使いながら
LaTeXで卒業論文を書いていたので多少は使えます。(といっても、もう忘れましたが)

この際、昔を回顧する意味も込めて、emacsを覚えなおそうかなぁと。
というわけで、Mac環境にインストールしてみました。

インストール
http://ftp.gnu.org/pub/gnu/emacs/
ここから最新のemacstar.gzを入手します。
2010/6/12時店では emacs-23.2.tar.gz が最新でした。

ですが、IMEパッチを適用したい関係上、
ftp://alpha.gnu.org/gnu/emacs/pretest/
から少し古いバージョンの
emacs-23.1.96.tar.gz
をダウンロードしてきました。

IMEパッチは
http://jaist.dl.sourceforge.jp/macemacsjp/47194/
から
inline_patch-23.1.96-b2.tar.gz
をダウンロードしてきます。

<参考> CocoaEmacs – MacEmacshttp://macemacsjp.sourceforge.jp/index.php?CocoaEmacs

ダウンロードしてきたファイルを、ターミナル上で展開します。
tarの展開がMacでできるんだから便利。

tar xvzf emacs-23.1.96.tar.gz
tar xzf inline_patch-23.1.96-b2.tar.gz

ちなみにtar.gzファイルはfinderからファイルをダブルクリックでも開けるんですね。

次に、ディレクトリを移動して、パッチを当てます

cd emacs-23.1.96
patch -p 0 < ../inline_patch-23.1.96-b2/emacs-inline.patch

コンフィグ

./configure –with-ns –without-x

もし、ここで、 no acceptable C compiler found in $PATH と出る場合は、Xcode Toolsを先に入れましょう。 MacOS XのインストールCDに同梱されています。

Xcode Tools のインストール – BathyScapheWiki
http://bathyscaphe.sourceforge.jp/cgi-bin/wiki.cgi?p=Xcode+Tools+%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB

コンパイルします。

make bootstrap
make install

以上で、emacsのMac用アプリケーションが作れます。
nextstepディレクトリの下に、Emacs.appがあるので、それを起動します。

100615-0001.png

<その他参考> CarbonからCocoaへ–Snow LeopardでEmacs 23を使う(1) – builder by ZDNet Japan
http://builder.japan.zdnet.com/sp/snow-leopard-09/story/0,3800100196,20409879,00.htm

5月
2010
9

VPSプランが最近安くなってきている件

先月、お名前.comの仮想専用サーバプラン(VPS:Virtual Private Server)を申込みました。

 

VPSプランといえば、ほんの1年くらい前までは共用サーバプランと比べて割高なイメージがありましたが、最近は劇的に値段が下がってきている感じがします。

 

去年はamazon EC2というクラウドサービスが話題になりました。要するにこれは仮想サーバを提供してくれるサービスなので、VPSみたいなもんだと思うのですが、一般的な利用では月額で1万円弱くらいかかってたんじゃないかと思います。(価格早見表)

 

海外のamazon EC2の他に、国内のVPSプランもありますが、そのときはもっと割高でした。

例えばKDDIのVPS仮想専用サーバは、現在時点で、120GBの容量が月額35000円していますが、どちらかといえば当時はこれくらいの相場観だったように思います。

とても個人では安易に手を出せるようなホスティングプランではありませんでした。

 

もちろん、現在もまだまだ高めな設定の業者がありますが、かなり安いVPSプランを出してきている格安レンタルサーバー業者が存在します。

 

各社VPSプランの比較

  容量 費用
FC2 VPS 100GB 月額980円 初期費用4800円
WebKeepers 100GB 月額980円 初期費用0円(期間限定)
ServerQueen 100GB 月額1995円 初期費用7350円
使えるねっと 100GB 月額5880円 初期費用0円
@YMC 40GB 月額3645円 初期費用10500円
First Server 10GB 月額3990円 初期費用10500円
VPS Stock 100GB 月額1980円 初期費用0円
RapidSite 10GB 月額1890円 初期費用5250円
お名前.com 120GB 月額2457円 初期費用0円(期間限定)

 

 

また、月額490円と言うVPSプランも登場してきているようです。

月額490円で使える仮想サーバー「ServersMan@VPS」が実現できた訳 -INTERNET Watch

http://internet.watch.impress.co.jp/docs/special/20100405_358327.html

 

ホスティングの価格破壊は共用サーバからVPSに主戦場が移っていくのでしょうか。

 

 

僕は先月までCORESERVERの共用サーバ15GBで月額500円のプランを使用していました。

3GBくらいしか使ってなかったので容量はまだ余裕だったのですが、ファイル数上限が設けられていて、300000ファイル数の上限に達してしまいこれ以上ファイルを増やせなくなりました。

この制限があることについては事前に把握しておらずちょっと焦りました。

 

で、しかたがないのでサーバーの引越しを検討したのですが、上記のようにVPSプランがかなり安くなってきているので、これを機にVPSに乗り換えました。

お名前.comのVPSプランを選択したのは、マイミクのグランパさんがお名前.comを使用しており、アクセス速度が十分高速だったことと、サーバー設置場所が国内であるのが理由です。あと、キャンペーン中で初期費用が0円というのも魅力的でした。

(僕が申込んだ翌月には、初期費用0円のみならず、最初の3か月までもが無料となってしまい悔しい思いをしましたが…orz)

 

業者選定をする際、サーバー設置場所が海外なのか国内なのかは気にした方がいいです。

amazon EC2は海外ですが、サーバーまでのデータ往復にかかる時間(レイテンシ)が国内サーバよりも海外サーバの方が余計にかかってしまうので、Webのアクセス速度などに影響します。

FTPでファイルをアップロードするときなんかも、海外サーバはアップロード時間がやたらかかるときがあり、実際にそういう経験をしたことがあるので、僕はそれ以来海外サーバーを避けるようにしています。

 

VPSプランが共用サーバと比較してメリットなのは、root権限が使えることに尽きます。

もちろんSSHが使えることは前提ですが、SSHできればサブドメインやバーチャルホストやデータベースが作り放題、PHPのバージョンなんかも好きに上げられます。

 

CORESERVERの共用サーバでは、データベースやバーチャルホストは作れましたが、root権限がもらえずWebのコンソール経由でしか作れませんでしたので手作業でやっていました。 しかしVPSプランではなんでもできちゃうので、以下の処理を続けてバッチ処理で行えるようになりました。

これでXOOPSサイトをスクリプト1発で簡単に作れます。

 

・バーチャルホスト設定(Apache)

・ユーザ作成

・データベース作成

・XOOPSファイルコピー

・Apache設定反映(再起動)

 

Webレスポンス的にも十分速いです。快適です。

将来的には、Webの「送信」ボタンと連動してXOOPSサイトが自動的に作れるような仕組みができれば素敵だなぁと思っていたりします。

4月
2010
29

Postfix とdovecotでメールサーバの設定

最近レンタル契約した仮想マシンのメールサーバを設定変更したのでメモ。

 

メールサーバは設定が複雑だし、スパムメールのリレーに使われないように注意しないといけないしで、何かとハードルが高いですが、まぁこれも勉強と思ってやりました。

仮想サーバはお名前.comのVPSプランを使っています。

 

 

環境

 

CentOS release 5.3

Postfix 2.6.2

 

CentOSのバージョンは、

cat /etc/redhat-release

 

で確認できます。

Postfixのバージョンは

postconf mail_version

 

で確認できます。

 

 

 

 

設定変更の前提と背景

 

お名前.comのVPSプランは、Webから管理コンソールが画面にログインできて、ここからサブドメインの設定や、メールの各種設定もできて便利なのですが、それらの設定ができる対象は、あくまでレンタルサーバ契約時に併せて申込んだドメインについてのみです。

他社で管理しているドメイン名を、DNS設定だけ変更してお名前.comのVPSで運用することはもちろんできますが、メールサーバやバーチャルドメインに関する設定は、管理コンソールを使えず自分でアプリケーションの設定を行わないといけないみたいです。

 

僕は他社管理のドメインについてメールの設定を行いたかったので、管理コンソール画面は使えず、Postfixを自前で立ち上げて設定を直接変更する必要がありました。

 

 

image

続きを読む

12月
2009
25

iPhoneでmixiアプリ

 

iPhoneでWebブラウジングは出来るけど、標準ブラウザのSafariがFlashをサポートしていないのが痛いところです。

なぜサポートしていないのかについては、

  • Appleはエンドユーザー体験に対するコントロールを維持したい
  • App Storeをアプリケーションの開発と配布のための主要なプラットフォームにしたい
  • サードパーティーのアプリケーションプラットフォームと競争したくない

など諸説あるようですが、いずれにしてもFlashが搭載される見込みはまだありません。

 

でもなんとかFlashを見たいと思って、VNCで試してみることにしました。

Flashで作られたmixiアプリもこれなら操作できます。

 

20091225IMG_0196

 

 

iPhoneからは、無料のMocha VNC Liteで接続できます。

VNCで自宅のマシンに接続して、そこからブラウザを開いてflashアプリを見ると言うわけです。

この方法で一応Flashを見られるのは見られるのだけれど、動作はかなりもっさりしており、画面リフレッシュもなかなか思うようにならないので、恒常的に使うのには向いてないでしょう。

あくまで「農作物が出来たから刈り取らなきゃ!」といった非常手段(?)くらいの時にしか使う気にはならないと思います。

 

20091225WS000011

 

ちなみに自宅側マシンはLinuxでもWindowsでもいいと思いますよ。

 

Windowsだったらこんな感じですね。

iPhoneでPCを遠隔操作できる 「Mocha VNC Lite」 – 今日のアプリ第202回 – iPhone・iPod touch ラボhttp://ipodtouchlab.com/2008/07/iphonepc-mocha-vnc-lite-202.html

 

僕の場合は、常時ONにして外部から見ることが出来るLinuxサーバーがあるので、それに接続していますけど。

11月
2009
27

WordPressをキャッシュするプラグインWP Super Cache導入

WordPress高速化のため、キャッシュ用プラグインを導入しました。
しかし導入にはかなり苦労しました。

WordPress単体で動かしている場合はそんなに苦労せず導入できると思うけど、うちはXOOPSモジュール(XPressME)を経由しているので、
一筋縄では行かない感じでした。

詳しくはWikiにて。

これを見てる人も、このブログ表示はちょっとは高速になりましたかね?
一度見たページは初回表示時に比べて高速に表示されると思います。
速さを確認するには、例えば左ブロックの「アーカイブ」で適当な過去の年月のエントリを表示してみてかかる時間と、
もういちど同じ年月をクリックしてみて、表示にかかる時間を比較してみれば分かると思います。
2回目のアクセスの方が速く表示されると思います。

こんな感じで、誰かが踏んで作られたキャッシュを、別の誰かが利用することで高速に表示できるようになります。(そのはずです)

しかし、キャッシュのログを見る限り、どうもChromeは毎回キャッシュを使ってくれるページとそうでないページがあるのですが、
原因が良く分かりません。
IEとかFirefoxに対してはうまくキャッシュを提供できているようです。
キャッシュのシステムというのはあまり扱ったことないので、どういう条件で動くのかあまり良く分かっていません。
各ブラウザが持っているCookieによっても変わってくるはずなので、どういう挙動をするかってのは詳しく仕様とか読まないと分からないでしょうな。
そしてマメな分析をして、どうチューニングすれば最適になるかとかいろいろ考えないといけない分野なんでしょう。

ちなみにXOOP本体にもキャッシュ機能がありますので、XOOPS内WordPressだったらそれでキャッシュできるはずなんですが、キャッシュ機能を有効にするとCSSが崩れたりして
おかしな挙動になるときがありますので、基本的にあまり信用していません。

11月
2009
22

swapの設定をする

自宅サーバーがときどきメモリ不足になって落ちているときがあるので、何が原因かを突き止めようとしているのですが、原因がはっきりと良く分かりません。
cronの処理のどれかでメモリ不足に陥ってるような気がするのですが。

サーバーのメモリ容量は2GBありますが、swapを設定しないまま運用していたので、念のためswapを設定することにしました。
といっても、swapを作るだけのディスクパーティションの余裕がもう無いので、/tmp用に作っていたパーティションを潰して、そこにswapを作ります。
/tmp 領域はRAID1(mirror)で5GB作っていましたが、/(root)パーティション10GBの使用率が現在5%ほどで思ったより使ってなかったので、ここに/tmpも含める形にしちゃおうかと思います。

/tmp の5GB分を、例えば3GB+2GBという風に分けて、/tmp を3GB、swapを2GBという分け方にしたかったんだけど、これらのパーティション領域が1TBディスクの最後の方であり、なぜかパーティションをうまく作れなかった(というかext3でフォーマットできなかった)ので、あきらめました。
1TBというディスクサイズの制限なのか、ディスク最後の方はいろいろと制限があるのかどうか分かりませんが、ディスクの最後の方ですから、何らかのはみだし部分があったりするのかも知れません。
あまりうまく説明できませんが、同じ1TBでも、ハードディスクメーカーによって厳密に総容量は異なることがあるので、(1MB=1024KBとするか1000KBとするかなどの違いなんだと思う)、ディスクの最後の方をケチくさく利用するのはあまり得策ではないのかも知れません。
セクタとかシリンダとかを厳密に計算すれば、あと残り使えるサイズは分かるのかも知れませんが、あまり難しいことにハマりたくないのでパス。

それにしても、物理メモリ2GBでは十分じゃないんかなぁ…メモリ増やそうかなぁ…
gnomeデスクトップ環境も立ち上げてるので、物理メモリはもう少しあった方がいいのかも知れない。
来月からWebアクセスも増えそうな気がしてるし。

行った操作はだいたいこんな感じ。環境はdebian(sqeeze)。

1. /tmp(/dev/md4)を潰すので、RAID1を削除 (ディスク使用中だとdevice busyとなるので、サーバー再起動しました。)

mdadm –manage –stop /dev/md4
mdadm –manage –remove /dev/md4

2. /etc/mdadm/mdadm.conf のmd4の記述を削除(サーバー起動時にRAIDを組まないようにする)
3. /etc/fstab のmd4の記載を削除(サーバー起動時にRAIDをマウントしないようにする)
4. /tmp パーティション(/dev/sda6,/dev/sdb6)を削除(Delete)し、この部分にswap(82)を割り当てる。

cfdisk /dev/sda6
cfdisk /dev/sdb6

5. swapの作成

mkswap /dev/sda6
mkswap /dev/sdb6

6. swapをONする

swapon /dev/sda6
swapon /dev/sdb6

7. /etc/fstab にswapの設定を入れる

/dev/sda6 none swap sw 0 0
/dev/sdb6 none swap sw 0 0

メモ:
・swapパーティションはRAIDで冗長化したり、ストライピングで高速化することはあまり意味ないらしい。
複数のswap領域が存在すれば、カーネルの機能でうまく分散させて利用してくれるみたい。
・swap領域は512Mは少なくともあった方が良いみたい。物理メモリのハイバネーション用にも利用されるため。
とはいっても、必ずしも物理容量と同じサイズをswapで用意する必要はない。うまいことサイズ圧縮してくれるらしい。
・どうしてもswap用のパーティションを用意できない場合、swapファイルを用意して、それをswapとして利用する手がある。(参考)
・swapの使用状況はfreeコマンドで確認できる。

 

<参考>
玄箱のswapパーティション設定 – ksaitoの日記
    http://d.hatena.ne.jp/ksaito11/20070513
swapパーティションの作成 – MakiWiki
    http://www.makichan.jp/home/index.php?swap%A5%D1%A1%BC%A5%C6%A5%A3%A5%B7%A5%E7%A5%F3%A4%CE%BA%EE%C0%AE
Linux Hacks:Linuxのスワップ処理を最適化するためのヒント (1/4) – ITmedia エンタープライズ
    http://www.itmedia.co.jp/enterprise/articles/0712/10/news011.html
PC便利帳: Linux スワップファイルの追加
    http://tipspc.blogspot.com/2008/09/linux.html

11月
2009
18

ローカル以外の別のコンピュータからMySQLデータベースに接続する

MySQLはローカル上で接続することしかしておらず、リモートマシンから接続するような使い方をしていなかったのだけれど、
sshクライアントでいちいちコマンドを打ったり、phpMyAdminで見たりするのも面倒になってきたので、リモートのWindowsマシンから
接続できるように設定しました。

これにあわせて、eclipseの便利なプラグインや、MySQLのモデリングツールなんかも使ってみたり。
いったん設定してしまうとなかなか快適です。

詳細はWikiに書きました。
ローカル以外の別のコンピュータからMySQLデータベースに接続する

10月
2009
25

画像管理にImageMagickが便利な件

デジカメで撮った写真が日々膨張してきており、それをどう保管しておこうか考えています。

今までは、バージョン管理システムSubversionの仕組みを使って、ローカルマシンに蓄積された画像ファイルを
Subversionサーバーにコミットするという使い方をしてました。
万が一ローカルに置いている画像が失われても、この仕組みを作っておけばsubversionサーバーからまた取り戻せます。
しかもこれだと、外出先からもファイルを手に入れようと思えばできるので、この点では便利かなーと思っていました。
ですが、いろいろと問題点がありました。

  • subversionへのコミットがめんどくさい。結局面倒で運用しなくなる。ローカルに画像ためっぱなしで意味なし。
  • subversionはそもそもはソースコードの管理システムなので、画像ファイル(=バイナリファイル)を管理するには
        ちょっと無理がある。ファイルと同じサイズの管理ファイルが必要なので、管理する画像ファイルの2倍の容量が
        サーバーに必要。
  • subversionサーバーから画像を取ってきたい場合、まずはサムネイルを見てどれをダウンロードするか決めたい
        のに、そういう使い方ができない。

    subversion以外ではgitが最近注目をあびてきているので、時代に乗り遅れないためにもgitを導入しようとかと
    計画しているのですが、gitにしても画像ファイルに関しては結局同じような制限が付きまとうと思われるので、画像
    ファイル管理は別の方法を考え中です。

    画像ファイルをRAIDに保存するという贅沢な使い方は今まで出来なかったのですが、ディスクも安くなってきたことも
    あり8月にサーバーのディスク容量を1TBのRAIDにしたので、この中にファイルを置くことにしました。
    ローカルマシンにはもう画像ファイル置くのやめて、デジカメの画像をいきなりサーバーに置きます。subversionも使
    わない。
    RAIDだからそもそもバックアップ運用の必要性ないし。楽チンになるかなと。

    外部から見えるようにするには、この領域をWebDAV化しようかなと。まFTPで現状アクセスできるのでそれでもあまり
    不便はなさそうですが。
    画像のサムネイル化ですが、方法をかなり探した揚句、ImageMagickのツールを使用して気持ちよい方法を見つけました。

montage -label ‘%f’ -geometry 100×100+20+10 -tile 4x -shadow *.JPG thumbnail.jpg

こんな感じのコマンドを実行すると、指定ディレクトリ以下の画像を100*100サイズで横4列のリストにしてthumbnail.jpg
を出してくれちゃいます。
以下のような感じです。

20091025

これを作るスクリプトを定期的にcronで回せば、あまり運用の手間なく、外部からもアクセスできる画像ライブラリが出来そうです。
ImageMagickってちゃんと使ったことなかったけど、すごいツールだわ。感動した!
WebDAVのツールに画像サムネイル化するような仕組みがあればいいんだけど、探したところ見つかりませんでした。
こういう製品を使えばWebDAVでサムネイル画像を見られるみたいだけど、有料だし、おそらくサーバー側にも特別な仕組みが必要っぽい。

<参考>
ImageMagickのmontageコマンド – Yaibeen
    http://nucleus.yaibeen.com/item21.html
Montage — IM v6 Examples
    http://www.imagemagick.org/Usage/montage/

9月
2009
20

twitterからmixiボイスへの自動投稿

こんなスクリプトが公開されていたので試してみました。

twitterからmixiボイスにマルチポストするRubyスクリプト書いた

d.hatena.ne.jp/gigi-net/20090918/1253224665

自分のサーバーはRubyが使えると思っていたのですが、入ってなかったのでまずRubyをサーバーにインストールしました。
しかしハマりました。

・ruby単体をインストールしただけではこのスクリプトは動かない。
・どうやらライブラリも含めインストールする必要があるらしい。
・Mechanizeというライブラリをインストールする必要があるらしい。
・rubygemというライブラリインストール用のコマンドがある。
・でもaptitude(debianパッケージ管理システム)経由でもrubyライブラリはインストールできる。
・aptitudeとrubygemのどっちを使えばいいんだ?どっちからでも可?
・とりあえずrubygemからmechanizeをインストール
 →うまく動かない
・それならばaptitudeからmechanizeをインストール
 →うまく動かない

# ./test.rb
/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require’: no such file to load — Mechanize (LoadError)
from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require’
from ./test.rb:3

もしかして入れる順番とか関係ある?同じライブラリを上書きしてておかしくなってる?
とかいろいろ考えたんだけど、ふと、
パッケージ名がmechanizeで、インストールされたスクリプト名はmechanize.rb
エラーはMechanize
で出ているので、もしやと思い

/usr/lib/ruby/mechanize.rb

のあるディレクトリで

ln -s mechanize.rb Mechanize.rb

としたらうまく通りました。

インストール方法が間違ってたんかな?でもこれはくだらない不具合のような気が…
debian+ruby環境でしか起こらないのかどうかも気になります。

ネットで調べてみたところでは、同じような現象に悩んでいる人はいなさそうなので固有の問題かも知れん。

それにしても、Rubyではmixiにログインするコードはこれだけで済むのか。美しいな。

page = agent.get(“http://mixi.jp/”)
form = page.forms.first
form["email"] = mixi_username
form["password"] = mixi_password
form.submit

RubyかわいいよRuby.

8月
2009
6

404 RAID Not Found

先週、toyaoサーバーのディスクが壊れたんですよ。
再構築したのでそのときのメモ。

1年くらい掃除してなかったので、こんな有様になってましたw
24時間うごかしているから、汚れ方もすごい。家が汚いのが原因だろって?それもありますねorz
20090806img_5771

そろそろ掃除しなきゃなーと思っていた矢先でした。
空気の循環も悪くなって、熱で逝っちゃったんだろうと見ています。
ディスクは2007年に買ったからまだ2年くらい。やっぱり夏はいろいろありますな。

RAIDにしといて良かったです。大事なファイルもいっぱい入ってたし。
RAIDの恩恵を初めて受けることになりました。
もしデータも消失してたら今頃山梨南部で行方不明になっているところでした。

で、今週再構築をするにあたって、1TBのディスクを2台買いました。
ディスクが(250GB+500GB)×2の4台あったもんもよろしくなかったと思います。
ディスクの数が多いとそれだけ熱も出るわけで。
ということで1TBディスクでディスクの数を減らす試みも行いました。
ディスクも安くなったしね。1TBでも7000円台で買えます。

このように、システムディスクの1台が逝きました。
20090806ws000022

それを1TBに一本化。
20090806-ws000020

RAID再構築のメモをwikiに書きました。力作になっちゃいました。

toyao.net/xoops/modules/xpwiki/?%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E8%A8%AD%E5%AE%9A%E3%83%A1%E3%83%A2%2Fmdadm%E3%81%AERAID%E5%86%8D%E6%A7%8B%E7%AF%89

要領悪くって、なんだかんだで2日かかったなぁ。
・カーネルの再構築、initrdの再構築
・1TBのディスクの後ろの方を、/etc/init.d/checkfs.shが認識してくれない?みたいでfsckエラーが出る
などの解決法をいろいろ調査してまして時間かかりました。
fsckについては解決できず…結局、エラーが出る一部のパーティションはチェックを行わないようにしました。

ところで、Excel2007って、図を書くのが前のバージョンに比べて楽ちんになってるね。センスいい図形もかけちゃうし。

3月
2009
27

カーネルモードPPPoE

ダイナミックDNSサービスの3domainが5月で営業終了するということで、他のダイナミックサービス私的DynamicDNSというところに乗り換えました。
3domainは有料だったけど、私的DynamicDNSは無料なんですね!しかもかなり親切に解説ページ作ってくれてるし。最初からここにしとけば良かった。

ということでうちのサーバーの方もいろいろ設定もみなおして、ついでにPPPoEの接続もカーネルモードにしたので手順を残しておきました。

カーネルモードpppoeでppp接続、ダイナミックDNSで自宅サーバー公開

でもカーネルモードにすると、クライアントのWindows機からインターネット接続したときに、なぜか特定のWebサイトが見れなくなったりしてるんよなぁ…
なんかサーバー上でパケット落ちしてて、延々と応答を待っているみたいだけど…
MTUとかちゃんと設定しなあかんのかも知れないんで、とりあえずカーネルモードは元に戻して原因をまたの機会に探ることにします。

1月
2009
25

PHP爆弾その2

PHPの仕事をすることになったのですが、やはり何もしないまま1年ぶりにPHPの開発をするのは不安なため、開発環境だけでも思い出す意味で自宅でシコシコ設定しておりました。

eclipseでPHPのリモートデバッグ環境をつくる

PHPはWebサーバー上で動くプログラムですが、クライアント側からリモートでデバッグすることができます。
これが出来ると開発の効率もあがるというものです。

実は趣味で作りたいPHPアプリがあるんで…いつかそのときのために開発環境は作っておいて損はあるまい。