移転のお知らせ

最近まったく更新していないのになんですが、自分でブログをいろいろカスタマイズしてみるのも面白そうかなと思い、自分の環境に移転することにしました。飽きたら戻ってくるかもしれませんが…そんなわけで、今後の更新は以下のサイトで行っています。 http:…

ミャンマーについて

9月に二週間ほどミャンマーという国に行ってきました。このブログの内容にそぐいませんが、ニュースでついに流血の事態が報じられており個人的にとても悲しいので、旅行したときに私が持った印象を簡単に箇条書きにしておきます。読み捨ててください。でも…

malloc(1)

第1章から第4章まではUNIXの基礎知識、Cの基礎知識やソースの概要なので、第5章から読み進めていくことにします。まず、straceをしているときに見かけたことがある気がするmallocとmfreeです。メモリの取得や開放のための関数です。 いきなり疑問点がひと…

Lions' Commentary on UNIX

c

最近C言語をまた少しずつ勉強しはじめてます。 インターネットの仕事をしていると、普段お世話になっているLinuxのカーネルやら Apacheやらが動いている仕組みについてどうしても興味を持ってしまいます。そのソースは大概Cで書かれているのですが、私はCの…

OpenVZの使い道

OpenVZのようなパーティショニングの技術はどういった場面に役に立つのだろう、とちょっと考えてみました。 まず、HSP各社がサービスしているようなホスティングサービスが思い浮かびます。VEのroot権限を直で渡してVPS・VDSと呼ばれるサービスをするのもよ…

Puppetを導入してみました

仕事でサーバの初期構築や運用方法を見直す機会があったので、Puppetというシステム自動管理ツールを導入してみました。これまでのシステム管理というと、初期構築時はサービス・サーバごとに構築用スクリプトを作成し、運用時に設定ファイルの変更があればe…

オプティミストはなぜ成功するか

「オプティミストはなぜ成功するか」(マーティン・セリグマン)は先日の13項目の「情熱」(モチベーション)を保つのに役にたつ本です。 著者セリグマンは高名な心理学者で学習性無力感という理論を発表しています。セリグマンの無力に関する実験は以下のペー…

読書の記録も書くことにしました

実は今まで読書の感想などを書くときは別のアカウントを使っていたのですが、できるだけ情報は一箇所に集めたいので、これから技術的な内容以外もこのブログに書いていくことにしました。ちなみに本のリンクはアソシエイトです。さっそく先月の読書のまとめ…

perlsh

最近Rubyでスクリプトを書くことが多くなっている理由を考えたところ、新しい言語のせいか文法的にしっくりくることもあって頭に入りやすいというのもあるんですが、irb(railsではruby script/console)を使って対話的にメソッドの挙動を確かめられるのが効率…

PerlとRubyを混同してきた…

備忘メモ。 perlshであやふやなところをごちゃごちゃごちゃ。 main[100]$ @array = (1, 2, {"a" => "3", "b" => "4"}, [5, 6, 7]) 1 2 HASH(0x78ae70) ARRAY(0x78b530) main[101]$ $array[2]{a} 3 4 main[103]$ $array[3][0] 5 main[104]$ $array[3][1] 6以…

WebServiceX.net

翻訳APIを提供しているWebサービスを探していたら、「WebServiceX.net」というサービスに行き当たりました。Rubyでちょっとだけ試してみました。http://www.webservicex.net/WS/WSDetails.aspx?WSID=63 irb(main):001:0> require 'soap/wsdlDriver' => truei…

64bitマシンでyum

CentOS5のx86_64を64bitマシンにインストールしたらi386のパッケージもインストールされてしまいました。 [root@test ~]# for f in `rpm -qa`; do rpm -q --queryformat '%{name} %{arch}\n' $f; done|grep i386 zlib i386 popt i386 zlib i386 libSM i386 n…

optimistic lockとpessimistic lock

railsでselectの結果によって更新するデータを変更する条件分岐を書いていて、selectしてデータを更新するまでの間に他のプロセスによってデータが更新される可能性があることに気づきます。たとえば以下のようなプログラムだと、 1 user = User.find(1) 2 3…

Per-VE I/O priority support

昨日リリースのstableカーネルで、待ち望んでいた機能が実装されたようです。 http://openvz.org/news/updates/devel-kernel-2.6.18-028stab021.1 VPSを運用していく上でネックだったのが、特定のVEで巨大なファイルの書き込みを発生させた場合、そのプロセ…

OpenVZのネットワーク(3) veth + vlan + bridge

異なるネットワークのVEをひとつのHNで共存させる際には、VZのデフォルトのネットワークインターフェースであるvenetではなくvethを使用します。実際には、既存のリアルサーバを仮想環境に集約するという場面があると思います。以下のような条件の場合を取り…

リソース制限

/etc/sysconfig/vz-scripts配下にあるリソース制限設定ファイルについて調べてみたときのメモです。自分なりにCでせこせこプログラムを書いて検証してみましたが、なにぶん勉強不足なので意味のわからない記述があるかもしれません。調査中となっているとこ…

ロックファイル

情報をまとめてからだと、いつまでたっても更新できないようなので、小出しに更新していきます。 久々にOpenVZで気づいたことメモ。先日vzctrlでstop/startを繰り返したところ、いつまでたってもVEが起動できないことがありあました。 調べてみると、vzctrl…

Rubyでスクリーンショットサーバ(2)

Mozshotさんがベースにしたという、このソースを読んでみることにします。 ハッシュのリファレンスがわかるくらいC->しばらく使ってないとポインタを忘れるRuby->いきなりrailsに手を出して四苦八苦という感じです。オブジェクト指向もよくわかっていません…

Rubyでスクリーンショットサーバ(1)

最近リンク先のページを小さく表示しているサイトをよく見かけるのですが、興味があったので実装する方法を調べていました。私はてっきりクライアントのブラウザでレンダリングをさせているのだと思っていたのですが(すいません無知で)、スクリーンショッ…

OpenVZのネットワーク(2)

OpenVZではvenetの他に、vethデバイスを使ってネットワークインターフェースを作成することができます。venetとvethの違いについては以下のサイトでまとめてありますので、下手な翻訳で恐縮ですが、訳しておきます。http://wiki.openvz.org/Differences_betw…

DSRをしてみた(2)

前回はロードバランサ、リアルサーバともVIPをインターフェースに設定したのですが、iptablesを使うことでその必要がなくなるそうです。前回の設定を一度全てはずした上で、それぞれのマシンで以下のコマンドを実行しました。 [root@lb ~]# ipvsadm -A -t 10…

DSRをしてみた(1)

勉強のためにLVSでDSR方式を組んでみました。 いろいろな構成があるようですが、とりあえずクライアント、ロードバランサ、リアルサーバがすべて同じネットワークで試してみました。 クライアント(cl) 実IP 10.233.11.20/24 ロードバランサ(lb) 実IP 10.233.…

kernel 2.6.18 028test005.1 released

devel版のカーネルがアップデートされたようです。http://openvz.org/news/updates/devel-kernel-2.6.18-028test005.1FUSEがサポートされているみたいです。 FUSEとはユーザランドでファイルシステムを実装する機能のようです。 SSHFSを使ってファイル共有と…

ライブマイグレーション

ライブマイグレーション機能が組み込まれたstable版カーネルが見つからなかったので、 devel版の2.6.18-ovz028test003.1で試してみました。 カーネル(2.6.9-023stab032.1)でも機能が実装されているようです。 2台のopenvz化したサーバnode1、node2を用意し…

OpenVZ Announcements November 14, 2006

OpenVZのstable版にcheckpointing/ライブマイグレーション機能とバーチャルイーサネットデバイス(veth)機能が追加されたそうです。 http://openvz.org/news/announcements/kernel-2.6.9-stable-20061114 このふたつの機能はdevel版ではすでに実装されていま…

OpenVZのネットワーク(1)

前回はVEを作成しました。ハードウェアノードからVE101の中に入ってみます。 $ vzctl enter 101 entered into VE 101 $ pwd / $ ls bin dev home lib media opt root selinux sys usr boot etc initrd lib64 mnt proc sbin srv tmp var カレントディレクトリ…

OpenVZをインストールする(2)

前回はホストの構築してみました。 今回はゲストを作成してみます。 ちなみに、OpenVZのマニュアルではホストのことを「Hardware Node」、 ゲストのことを「VE(Virtual Environment)」と呼んでいますので、 これからの説明ではこの用語を使おうと思います。 …

OpenVZをインストールする(1)

OpenVZのインストール手順です。 パッケージはすべてx86にしてみました。 1.カーネルをインストールします。カーネルはhttp://openvz.org/download/kernel/にあります。 特にこだわりがなければ、stable版のカーネルをインストールします。 Fedora/Suse/RH…

Ruby on Railsをはじめる

Ruby on Railsの評判がいいので、MVCはさっぱりわかりませんが ちょっとづつ勉強してみることにしました。 環境は、CentOS4.3の64bit版を用意しました。 Railsをインストールするには、RubyGemsが必要だそうです。 RubyGemsをインストールするには、Rubyの1.…

OpenVZ リンク集

OpenVZの情報が載っているリンクを集めてみました。 OpenVZ本家 OpenVZ OpenVZ wiki 有益な情報がたくさんあります。 http://wiki.openvz.org/Main_Page OpenVZ マニュアル しっかりとしたマニュアルが用意されています。 http://download.openvz.org/doc/Op…