2009年01月05日

負荷分散、広域ストレージ利用向けのLinuxカーネルモジュールをオープンソースで公開

株式会社ディープバレイ(本社:愛知県北名古屋市、代表取締役社長:深谷 悟美)は、ファイル操作をリアルタイムに把握のできるカーネルモジュール「ffsrvmod」を開発し、オープンソースとして公開しました。

http://deepvalley.jp/archives/17/



投稿者 Anne : 22:02 | コメント (0)

2008年12月25日

disk image file 


dd if=/dev/zero of=disk.img bs=1024k count=1 seek=5120
こんなんで、5Gのファイルが出来上がります。

出来上がったファイルを
mkfs -t ext3 -F disk.img
こうすると、ext3でフォーマットされたファイルが出来上がります。

さらに
mount -o loop disk.img /mnt
こうすることで、/mntへ普通にアクセスできるようになります。



投稿者 Anne : 21:14 | コメント (0)

ffsys ffsrvmod カーネルモジュール

http://lab.deepvalley.jp/

ffsysは、ffsrvmodを使ったシステム全体の総称です。

ffsysの中心になるffsrvmodは、Linuxシステムコールのファイル操作に関するものだけをフックし、外部にメッセージを送信する カーネルモジュール(LKM) です。

カーネルモジュールとして動く ffsrvmod はシンプルであり、sys_open,sys_close,をはじめ,utime,rename…など、ファイル操作をメッセージ順にSocketへ流し込みます。ただそれだけです。
(全てではありません。最終的にファイルが完成?ファイル操作が終了?した時点でメッセージが流れるようにしています。)

ffsrvmod は、コマンド、ファイルのフルパス、その他必要なオプション(アクセス権など)を流すだけで、ファイルのデータそのものは扱いません。(もしかしたらデータも扱うかもしれませんが、今のところ予定はありません。)

現在はデータを冗長させるサンプルプログラムしか付属していませんが、今後ffsrvmodを使った大容量ストレージ・負荷分散・データベースの高速化を紹介して行く予定です。



投稿者 Anne : 17:29 | コメント (0)

2008年11月28日

カーネルスレッド

struct task_struct *kthread_create(int (*threadfn)(void *data), void *data, const char namefmt[], ...)
引数1 スレッド関数を指定
引数2 渡す引数
引数3 psで表示される名前


static int test_thread(void * num)
{
  //thread処理
}

static int __init init_test(void){ //threadを生成する初期化モジュール
  struct task_struct *th;
  //省略

  //thread生成
  th = kthread_create(test_thread, &num, "test_thread");
  if (IS_ERR(th)) {
    //失敗
    goto ERR_RET;
  }
  //threadスタート
  wake_up_process(th);
}



投稿者 Anne : 11:01 | コメント (0)

2008年11月15日

イメージマジック imagemagick 変換できる画像の種類の一覧


convert -list format



投稿者 Anne : 15:55 | コメント (0)

2008年11月07日

OPENできるファイルの数

procファイルシステムの以下の項目を読むことで、fsに関する事がわかります。
procファイルシステムにはこれ以外にもたくさんの情報があります。


/proc/sys/fs/file-max
ファイルハンドルの最大数


/proc/sys/fs/file-nr
file-nr 内の 3 つの値は、割り当てられたファイルハンドルの数、未使用のファイルハンドルの数、ファイルハンドルの最大数、を示しています。

割り当てられたファイルハンドルの数が最大数に近いが未使用のファイルハンドルの数が 0 よりもかなり大きいならば、ファイルハンドル使用のピークでそれだけ使ったということを示しており、最大数を増やす必要はありません。



投稿者 Anne : 12:10 | コメント (0)

2008年11月05日

rcp scp rsh などは

192.168.10.10から接続したい場合、

接続先のサーバーで
echo rsh >> /etc/securetty
echo 192.168.10.10 root >> /root/.rhosts

yum install rsh*
chkconfig rsh on
/etc/init.d/xinetd restart



投稿者 Anne : 18:48 | コメント (0)

2008年10月04日

MRTG で DISK I/O

DISK I/Oに関する情報は /proc/stat に入ってます。
これを使うのが一番手軽な方法かと・・
(ちなみに、カーネルによって/proc/statの場合と/proc/diskstatsの場合があります)


ローカルマシンが対象ならばこんなかんじでスクリプトをまず作ります。


#!/usr/bin/perl
use FileHandle;
my $fh = FileHandle->new("cat /proc/stat|");
while(<$fh>){
        if(/^disk_io: \([^(]+\([0-9]+,[0-9]+,([0-9]+),[0-9]+,([0-9]+)\)/) {
                print "$1\n";
                print "$2\n\n\n";
        }
}
close($fh);


リモートが対象ならば

#!/usr/bin/perl
open(SSH,"ssh 192.168.1.6 cat /proc/diskstats |");
while(<SSH>){
        if(/hda [0-9]+ [0-9]+ ([0-9]+) [0-9]+ [0-9]+ [0-9]+ ([0-9]+)/) {
        print "$1\n";
        print "$2\n\n\n";
    }
}
close(SSH);

sshで接続してるので、sshをパスワードなしで接続ここの様にしておく。


ちなみに上記はPerlで作成してありますが、何でもOKです。
いっそのことシェルで作っちゃってもOKよ。(その場合、MTRG.CFGの中に直接記述できます。)


上記Perlで数字が2行と改行2行の計4行出力されてればOK。

MTRG.CFGはこんな感じで書きます


Target[diskio192.168.1.59]: `/etc/mrtg/diskio-1.59.pl`
MaxBytes[diskio192.168.1.59]: 200
Title[diskio192.168.1.59]: Disk I/O
PageTop[diskio192.168.1.59]: <H1>Disk I/O on 1.59</H1>
YLegend[diskio192.168.1.59]: Disk I/O
ShortLegend[diskio192.168.1.59]: blocks/s
LegendI[diskio192.168.1.59]:read
LegendO[diskio192.168.1.59]:write



/proc/diskstats に関する情報

Field 1 -- # of reads issued
Field 2 -- # of reads merged
Field 3 -- # of sectors read
Field 4 -- # of milliseconds spent reading
Field 5 -- # of writes completed
Field 6 -- # of writes merged
Field 7 -- # of sectors written
Field 8 -- # of milliseconds spent writing
Field 9 -- # of I/Os currently in progress
Field 10 -- # of milliseconds spent doing I/Os
Field 11 -- weighted # of milliseconds spent doing I/Os


投稿者 Anne : 18:59 | コメント (0)

swap領域を簡単に増やすには

テスト環境なんかで適当に作った後、SWAPが足りなくてOutOfMemoryの連発なんてときは


dd if=/dev/zero of=swapfile bs=1024 count=1000000 (1Gです)
mkswap -v1 swapfile
swapon swapfile

これでOK

あくまでも一時的な処置です・・



投稿者 Anne : 00:39 | コメント (0)

2008年10月03日

Postgres create table


CREATE TABLE test2 as select * from test order by main_id desc , main2_id desc;



投稿者 Anne : 23:53 | コメント (0)

Pgpool-2

wget http://pgfoundry.org/frs/download.php/1843/pgpool-II-2.1.tar.gz
./configure
make
make install

cp /usr/local/etc/pgpool.conf.sample /usr/local/etc/pgpool.conf
cp /usr/local/etc/pcp.conf.sample /usr/local/etc/pcp.conf

vi /usr/local/etc/pcp.conf
USERNAME:MD5PASS

pgpool-II-2.1.tar.gzを展開したディレクトリの中の/sqlフォルダ内に
/usr/src/pgpool-II-2.1/sql/system_db.sql
があるので、system_dbを作成しておく

こんな感じ
createdb -U postgres -h localhost pgpool
psql -U postgres -h localhost pgpool < system_db.sql


PgpoolAdmin
wget http://pgfoundry.org/frs/download.php/1716/pgpoolAdmin-2.1-beta1.tar.gz
展開されたディレクトリをWEBアクセス可能な場所に移動

http://サーバー/PgpoolAdmin/install/checkDirectory.php



投稿者 Anne : 17:32 | コメント (0)

EXT3 チューニング

LABEL=/hoge /hoge ext3 rw,noatime,data=writeback 1 2
tune2fs -o journal_data_writeback /dev/md2


data=journal
ファイルデータとメタデータの両方を記録することでデータの整合性は一番高いモードですが、オーバーヘッドが非常に大きくなります。

data=ordered(標準)
このモードではメタデータのみが記録されます。ファイルデータを先に書き込むことでデータの内容は保証されます。

data=writeback
データの整合性よりデータへのもっともはやいアクセスを提供するオプションです。ステムクラッシュ時には古いデータのままである可能性があります。整合性を取らなくてもいいような一次的なファイルを保存するだけのファイルシステムであればwritebackモードを使用することも有効な手段と考えられます。




投稿者 Anne : 17:26 | コメント (0)

Postgres テーブルスペース

テーブルスペースの一覧


\db+
List of tablespaces
Name | Owner | Location | Access privileges
------------+----------+----------+-------------------
pg_default | postgres | |
pg_global | postgres | |
(2 rows)

テーブルスペースとは、その名の通りテーブルの場所です。
たとえば


CREATE TABLESPACE disk2 LOCATION '/disk2/pgdata';

のようなコマンドをたたくと

\db+
List of tablespaces
Name | Owner | Location | Access privileges
------------+----------+----------+-------------------
disk2    | postgres | |
pg_default | postgres | |
pg_global | postgres | |
(3 rows)

すでにあるテーブルを移動させたい時は


ALTER TABLE srctabl1 SET TABLESPACE disk1;

この基本的な使い方は、高負荷時のDiskI/Oの分散です。
負荷分散なので、同一Diskの別フォルダに作成しても意味ないので気をつけましょう。




投稿者 Anne : 16:37 | コメント (0)

SSH を パスワード なし で 接続したい

接続元マシンでの作業
ssh-keygen -t rsa を実行すると、自分の秘密鍵・公開鍵が/root/.ssh/に生成させる
いくつか質問がきますが(パスフレーズやファイルの生成場所)何も入力しない。
id_rsa(秘密鍵)
id_rsa.pub(公開鍵)
cat /root/.ssh/id_rsa.pub


接続先マシンでの作業
vi /root/.ssh/authorized_keys
この中に上記で作成された公開鍵の中身を記述しておく

cat ./.ssh/id_rsa.pub | ssh root@des_host名 "cat >> ./.ssh/authorized_keys"
こんな感じのコマンドならば、すべて接続元のマシンで完了するよ。



投稿者 Anne : 14:01 | コメント (0)

2008年09月30日

Redhat9 に yum を インストール

■すでにインストールされていれば良いのだが、確認しなければ先にインストールしておく
wget http://ftp.kddilabs.jp/Linux/packages/fedora.legacy/redhat/9/os/i386/libxml2-python-2.5.4-1.i386.rpm
rpm -ivh libxml2-python-2.5.4-1.i386.rpm

■yumのインストール
wget http://ftp.kddilabs.jp/Linux/packages/fedora.legacy/redhat/9/updates/i386/gnupg-1.2.1-9.i386.rpm
wget http://ftp.kddilabs.jp/Linux/packages/fedora.legacy/redhat/9/legacy-utils/i386/yum-2.0.5-0.9.2.legacy.noarch.rpm
rpm -ivh gnupg-1.2.1-9.i386.rpm
rpm -ivh yum-2.0.5-0.9.2.legacy.noarch.rpm

■rpmforgeのinstall
wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.rh9.rf.i386.rpm
rpm -ivh rpmforge-release-0.3.6-1.rh9.rf.i386.rpm

■GPG-KEYのimport
wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
rpm --import RPM-GPG-KEY.dag.txt


vi /etc/yum.confで以下の行を追加。既存のブロックは削除

[rpmforge]
name = Red Hat $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/9/en/$basearch/dag
mirrorlist = http://apt.sw.be/redhat/9/en/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1



投稿者 Anne : 14:06 | コメント (0)

2008年09月20日

DRBDの復旧


2台目でconnectすると必ずStandAloneになってしまう場合、何かの障害が発生してるため、データの保護目的で接続できない場合がある。(異常終了などで・・)

そんな時は、「connect」する前にこんな感じ「drbdadm invalidate r0」のコマンドを叩いてみよう。
(セカンダリ側で実行しましょう。ファイルシステムがGFSでprimary/primaryの場合はどちらでもOKかな?気をつけることは、両方でやらないこと!!)

/etc/init.d/drbd status とか cat /proc/drbd とかでステータスを確認すると、同期が始まってるはずです。


syncer {
rate 10M;
}
転送レートを設定しても、毎回 drbdadm adjust r0 を叩かないとデフォルトの速度でうごくので、忘れない様にしないとね。

でも、そんなにハードな使い方をしたわけでもないのに落ちちゃった・・・
もうしばらくテストしてみますが、5Gほどのデータを書き込んでこれなので、4Tのデータだときつい感じがします。

primary/primaryでガシガシ使い込むんじゃなくて、バックアップ目的でしか使えないかも・・



投稿者 Anne : 01:31 | コメント (0)

2008年09月12日

mount remount tune2fs


sync;・・・・・・・

init 1 <= シングルユーザモード

mount -o ro,remount / <=リマウント

tune2fs -c 0 /dev/hda1



投稿者 Anne : 09:57 | コメント (0)

2008年09月11日

mdadm で RAID

RAIDの作成
あらかじめfdiskでパーティーションタイプをfdにしておくこと
mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb1 /dev/sdc1
または
mdadm -C /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1


RAIDの状態確認
cat /proc/mdstat
mdadm -D /dev/md0


RAIDの解除
mdadm -S /dev/md0



投稿者 Anne : 09:47 | コメント (0)

2008年09月10日

CDをisoファイルに落とすには CD-ROMイメージを作るには


dd if=/dev/cdrom of=windows2000.iso

作成したisoはこんな感じでマウントすれば使えます。



投稿者 Anne : 09:49 | コメント (0)

2008年09月08日

Linux で CPU の情報を確認

cat /proc/cpuinfo

上記のコマンドで、以下のような情報が取れます。

processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 31
model name : AMD Athlon(tm) 64 Processor 3000+
stepping : 0
cpu MHz : 1808.806
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush mmx fxsr sse sse2 nx mmxext fxsr_opt lm 3dnowext 3dnow up ts fid vid ttp
bogomips : 4523.53


投稿者 Anne : 14:15 | コメント (0)

isoイメージのマウント


mount -t iso9660 -o loop shrike-i386-disc1.iso /cdimage/disk1



投稿者 Anne : 13:37 | コメント (0)

yumでエラー

画面を眺めてると、........libxml2.........と、メッセージの中に’libxml2’が出てきた場合・・

yumでインストールした以外のlibxml2がありませんか?

環境変数の設定を変えて、’/usr/lib/libxml2’より先に別バージョンの’libxml2’が呼び出されてる場合、パッケージの種類によっては完了しません。
(その場所は、OSやバージョンによってちがうでしょう。)

そんな時にpsやtopで見てみると、’scrollkeeper’が動きっぱなしになってるはずです。

パッケージ管理の一部を’xml’で書かれたテキストファイルで行っているようです。

libxml2はバージョンでかなり大幅に変更があるようです。PHPから使用するときも大変です。

(私はCentOS5.1で、libxml等ソースからコンパイルした物がたくさん入っていて、GTK-DOCのyum update のときにエラーでおかしくなりました。)



投稿者 Anne : 11:08 | コメント (0)

fdformat mke2fs

mke2fs /dev/fd0
fdformat /dev/fd0
mount -t ext2 /dev/fd0 /mnt



投稿者 Anne : 09:58 | コメント (0)

2008年09月04日

VNCでログインしたときのデスクトップをgnomeにする

/root/.vnc/xstartup
を編集します。

一番したの2行をコメントアウトして

#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &

この1行を追記します。
gnome-session &



投稿者 Anne : 14:42 | コメント (0)

2008年07月07日

Apache PHP emalloc() でエラー

HTTPのPOSTで、非常に大きなサイズのデータを受け取る必要があり、試行錯誤しているんですがなかなか解決しません。

Error.logには「emalloc(): Unable to allocate 1407033033 bytes」が連発です。
(まー、1G超をPOSTってどうよ・・って思うんですが、なにぶんここ最近急激な変化があったもので、仕方なかったんですぅ)


プログラム自身を見直すのが一番の近道で本道なんでしょうが、自社内だけの話ではなく、先方のプログラムも変更をしなければならないので、何か方法な無いものかと探していました。

エラーメッセージからすると、当然mallocから推測できるように、メモリ確保の失敗が原因らしいですが、何をどうしたら直るのかがわかりません。

PHPの設定は当然大きな値に変更しましたが、まったく状況は変わりません。

・・・・・・・・ということで、いろいろと情報を探ってみると

住商情報システムさん?株式会社アライドエンジニアリングさん?
http://www.scs.co.jp/advc/techinfo_linux.html
とか、大規模なシステムを組んでいるところから、いくつか技術情報がでてました。
----------------------上記サイトより抜粋--------------------------------
x86 (386, 486, Pentium ...) の Linux では, 最新のカーネルを使えば 64GB まで使える, などと聞かれたことがあるかも知れませんが, これはシステム全体として使えるメモリサイズで, 1 プロセスではこんなに使えません。 まず,32bit のアーキテクチャということで 4GB (2^32B) の壁 があるのですが,実は更に制限があります。 簡単にまとめますと,
1回の malloc のサイズが 128kB 以下のものの合計:約 1GB まで
1回の malloc のサイズが 128kB 以上のものの合計:約 2GB まで
・・・・・・・・
---------------------------------------------------------------

このようなことは、当然Linuxの技術文書にも載っていることとは思いますが、なにぶんエイゴはマッタクダメデース。

大変助かりました。


解決したわけではありませんが、原因がわかりすっきりしたところで、プログラムの変更です。


原因がわからないままでのプログラム変更は絶対にしたくない性質なので、これでさくさく仕事が進みそうです。



投稿者 Anne : 11:45 | コメント (0)

2008年03月28日

Apache API モジュールを作ろう

char *src = malloc(strlen(r->uri));
strcpy(src , r->uri);

char *src = ap_pcalloc(r->pool, strlen(r->uri) );
src = ap_pstrdup(r->pool, r->uri);
上と下のコードでは、結果が違う場合があります。


直接システムコールやライブラリ関数呼び出すことは避けましょう。
基本的な関数はApacheAPIとして用意してあるようです。
ほとんどが英語のドキュメントなので、サンプルを見ながら黙々と作業です。


低負荷な状況では問題がおこらなくても、高負荷になり連続してメモリの確保・開放などを繰り返すと問題が発生すると思うよ。

ってな事に気をつけて、具体的にモジュールを作成していきます。


今回作るのは、Apache1.3でのキャッシュモジュールです。
わけあってApache2に移行出来ずにいるWEBサービスで、画像ファイルのみをキャッシュさせる必要が出てきました。
画像ファイルは一つのDISKに入っていて、WEBサーバ約20台が表に立っています。
画像へのアクセスはすべてここにアクセスが来るため、これ以上WEBサーバーを増やしてもここがボトルネックになり、スピードが上がらない状況になりつつあります。

解決方法はほかにも色々とありそうですが、Apacheのモジュールを作ってみたいので、他の仕組みは考えません。(お金をかけたくないし、サーバーもできればこれ以上増やしたくないし、プログラムの作り替えといったリスキーな手法は避けたい、とか理由もありますよ!)

ってな事で、とにかく作成に取り掛かります。・・・・・・・



投稿者 Anne : 16:23 | コメント (0)

2008年03月22日

Apacheのモジュール作成 API Module

Apache1.3でモジュールの作成に挑戦してみます。

かゆいところに手が届く物は、やっぱり自分で作らなくちゃね!!

と言うことで、NDSで鍛えた英語力でApacheAPIの英語DocumentをGET&なんとなく読む
http://httpd.apache.org/dev/apidoc/
http://httpd.apache.org/docs/2.0/developer/modules.html

http://gnug.nu/index.php?option=com_content&task=view&id=25&Itemid=5
サンプルを物色する。


Apache1.3は下記の場所(Apacheの状態)でフック(処理の横取り)することができる。

module cgi_module = {
STANDARD_MODULE_STUFF,
NULL, /* initializer */
NULL, /* dir config creator */
NULL, /* dir merger --- default is to override */
make_cgi_server_config, /* server config */
merge_cgi_server_config, /* merge server config */
cgi_cmds, /* command table */
cgi_handlers, /* handlers */
translate_scriptalias, /* filename translation */
NULL, /* check_user_id */
NULL, /* check auth */
NULL, /* check access */
type_scriptalias, /* type_checker */
NULL, /* fixups */
NULL, /* logger */
NULL /* header parser */
};

全ての場所で、

FILE *stream2;
stream2 = fopen(LOG_FILE, "ab+");
fwrite("child_exit\n", strlen((char *)"child_exit\n"), 1, stream2);
fclose(stream2);

こんな感じでLOGを吐き出すようにして、Apacheを一通り動かしてみると早く理解できます。

続く・・・・



投稿者 Anne : 01:36 | コメント (0)

2008年02月11日

Linux Kernel 2.6 Local Root Exploit

Linuxカーネル2.6系にroot権限を奪われる脆弱性が発見される

http://it.slashdot.org/article.pl?sid=08/02/10/2011257

aquatix writes

"This local root exploit (Debian, Ubuntu) seems to work everywhere I try it, as long as it's a Linux kernel version 2.6.17 to 2.6.24.1. If you don't trust your users (which you shouldn't), better compile a new kernel without vmsplice."

Here is millw0rm's proof-of-concept code.

Account-mochi Coward 曰く、

本家/.の記事より。Linuxカーネルのバージョン2.6.17から2.6.24.1までのvmsplice()システムコールに穴があり、それを利用するとroot権限が取得できてしまうようだ。検証用コードも存在する。

対策としては今の所vmsplice()を外してカーネルを再コンパイルすることしかないらしい。穴を突いて動作中のカーネルをオンメモリパッチするアレゲな解決方法も既に公開されている。




投稿者 Anne : 22:21 | コメント (0)

2007年12月27日

cron の設定

■はじめに
cron とは、ジョブ(スクリプト)を自動実行するためのデーモンプロセスです。そして、Linux システムの管理を行なう場合、ログのローテートや、バックアップなど、定期的に自動実行したいジョブが数多くあります。特に、バックアップなどは、システムへの負荷が大きいため、通常は、ユーザからのアクセスが少ない、深夜や早朝に行なわれます。

このように、定期的に実行されるジョブは、crond というデーモンによって、自動的に行なうように管理することができます。そこで、今回は、cron の設定を行なうために必要なコマンドや、設定ファイルについて説明していきたいと思います。


■「/var/spool/cron/user」 ファイルの書式

crontabファイルでは、crond への命令を、「この日付のこの時刻に、このコマンドを実行して下さい。」といった形式で書き込みます。そして、ユーザは、それぞれのcrontabファイルを「/var/spool/cron」配下にuser という名前で所有しており、使用するコマンドは、そのcrontabファイルを所有しているユーザの権限で実行されるので、コマンド使用の際には注意が必要です。

また、このファイルの中は、おおまかに、コメント行、環境変数の設定、cronコマンドの実行、のいずれかに分けることができ、その内容を記述します。なお、コメント行は、通常のファイルと同様に、先頭に '#' を書きます。

なお、このファイルの作成/編集は、 'crontab -e' とコマンドを実行して行ないます。



09 05 01 * * /usr/local/bin/command



分 時 日 月 曜日 コマンド

cron 参考
0〜59
0〜23
1〜31
1〜12 or jan〜dec
曜日0〜7 [0,7は日曜日] or sun〜sat
コマンド有効なコマンドを記述します。空白を含むことも可能ですが、標準のBourne Shellの書式に従って記述します。


投稿者 Anne : 18:04 | コメント (0)

2006年10月03日

HDD ハードディスク ドライブ セクター 不良

/var/log/message等に
「kernel: hda: dma_intr: status=0x51」とかが残っているのを見つけたら、ハードディスク障害が発生している可能性が高いです。
badblocks -vs -o hda1.sector /dev/hda1
とやると 不良セクタがあった場合、「hda1.sector」ファイルができます。(不良セクタの場所なんかが記録されます。)
fsck -l hda1.sector /dev/hda1
とやるとその不良セクタを使用しないようになります。



投稿者 Anne : 14:46 | コメント (0)

2006年07月15日

デバックツール デバッガ strace

デバックツール デバッガ


strace

straceを使ったデバッグ



投稿者 Anne : 14:41 | コメント (0)

2006年04月28日

Linux起動時に実行されるe2fsckの起動サイクルを変えたい

# tune2fs -c 20 /dev/hda3

※/dev/hda3を20回マウントしたらe2fsckを実行するように変更

ちなみに現在の状況を確認するには

# tune2fs -l /dev/sda3
-l オプションをつける



投稿者 Anne : 17:12 | コメント (0)

pptpd

pptpd

windowsから接続し、しばらくすると勝手に切断されてしまう。

/var/log/messageを確認してみると

Apr 28 16:09:28 usergw pptpd[5278]: CTRL: Client 210.238.206.66 control connection started
Apr 28 16:09:28 usergw pptpd[5278]: CTRL: Starting call (launching pppd, opening GRE)
Apr 28 16:09:28 usergw pppd[5279]: pppd 2.4.1 started by root, uid 0
Apr 28 16:09:28 usergw pppd[5279]: Using interface ppp0
Apr 28 16:09:28 usergw pppd[5279]: Connect: ppp0 <--> /dev/pts/0
Apr 28 16:09:28 usergw /etc/hotplug/net.agent: assuming ppp0 is already up
Apr 28 16:09:31 usergw pptpd[5278]: CTRL: Ignored a SET LINK INFO packet with real ACCMs!
Apr 28 16:09:31 usergw pppd[5279]: CHAP peer authentication succeeded for fukaya
Apr 28 16:09:31 usergw pppd[5279]: found interface eth1 for proxy arp
Apr 28 16:09:31 usergw pppd[5279]: local IP address 192.168.10.102
Apr 28 16:09:31 usergw pppd[5279]: remote IP address 192.168.10.61

Apr 28 16:09:53 usergw pptpd[5278]: GRE: read(fd=5,buffer=80555c0,len=8260) from network failed: status = -1 error = Message too long
Apr 28 16:09:53 usergw pptpd[5278]: CTRL: GRE read or PTY write failed (gre,pty)=(5,4)
Apr 28 16:09:53 usergw pppd[5279]: Modem hangup
Apr 28 16:09:53 usergw pppd[5279]: Connection terminated.
Apr 28 16:09:53 usergw pppd[5279]: Connect time 0.5 minutes.
Apr 28 16:09:53 usergw pppd[5279]: Sent 3281 bytes, received 3332 bytes.
Apr 28 16:09:53 usergw /etc/hotplug/net.agent: NET unregister event not supported
Apr 28 16:09:53 usergw pppd[5279]: Exit.
Apr 28 16:09:53 usergw pptpd[5278]: CTRL: Client 210.238.206.66 control connection finished


切断された直後のメッセージを見てみると「error = Message too long」の行がありました。

結論

options.pptpdファイルに「mtu = 1400」の様にmtuを強制的に小さくしてしまう。

本来、自動で調整されるはずですが、なんらかの原因でたまにおかしくなることがあるようです。



投稿者 Anne : 16:07 | コメント (0)

2006年04月25日

NKF

nkf [options] [file]

オプション  
-b バッファリング出力を行う
-u 出力時にバッファリングを行わない
-j JISコードに変換する
-e EUCコードに変換する
-s シフトJISコードに変換する
-i? JIS漢字を指示するシーケンスとして ESC-'$'-?を使用する
-o? 1バイト英数文字セットを指示するシーケンスとしてESC-'('-?を使用する
-r ROT13/47の変換する
-T テキスト・モードで出力する
-l 0x80-0xfeのコードをISO-8859-1 (Latin-1)として扱う。ただし,JISコードの時のみ有効
-f? 一行?文字になるように簡単な整形を行う
-Z X0208中の英数字と一部の記号をASCIIに変換する
-J JIS(ISO-2022-JP)と仮定して処理する
-E 日本語EUCと仮定して処理する
-S シフトJISと仮定して処理する
-X シフトJISと仮定して処理する。ただし,X0201仮名があるものとする
-B 壊れた(ESCが欠損した)JISと仮定して処理する。-B1の場合はESC-(およびESC-$)のあとのコードを問わない。-B2の場合は改行の後に強制的にASCIIに戻す
-x 通常行われるX0201仮名->X0208の仮名変換しない
file 変換元のファイルを指定する

説明  
文字コードの変換を行う。オプションに何も指定しない場合は,JISコードに変換される。

使用例  
EUCコードに変換する
$ nkf -e henkan.txt > henkan.euc



投稿者 Anne : 15:53 | コメント (0)

2006年04月22日

Analog


年別レポートを出したい時は「YEARLY ON」とanalog.cfgに記述する

YEARLY 年別レポート
QUARTERLY 4半期別レポート
MONTHLY 月別レポート
WEEKLY 週別レポート
DAILYREP 日別レポート
DAILYSUM 曜日別集計
HOURLYREP 時間別レポート
HOURLYSUM 時間別集計
WEEKHOUR 曜日別時間集計
QUARTERREP 15分間隔レポート
QUARTERSUM 15分間隔集計
FIVEREP 5分間隔レポート
FIVESUM 5分間隔集計
HOST ホストレポート
REDIRHOST ホストリダイレクションレポート
FAILHOST ホスト不成功レポート
ORGANISATION 組織レポート
DOMAIN ドメインレポート
REQUEST リクエストレポート
DIRECTORY ディレクトリレポート
FILETYPE ファイル種類別レポート
SIZE ファイルサイズレポート
PROCTIME 処理時間レポート
REDIR リダイレクトレポート
FAILURE 不成功レポート
REFERRER リンク元レポート
REFSITE リンク元サイトレポート
SEARCHQUERY 検索語句レポート
SEARCHWORD 検索語レポート
INTSEARCHQUERY 内部検索語句レポート
INTSEARCHWORD 内部検索単語レポート
REDIRREF リダイレクトされたリンク元URLレポート
FAILREF 不成功リンク元レポート
FULLBROWSER ブラウザーレポート
BROWSER ブラウザーの概要
OSREP OSレポート
VHOST 仮想ホストレポート
REDIRVHOST 仮想ホストリダイレクションレポート
FAILVHOST 仮想ホスト不成功レポート
USER ユーザレポート
REDIRUSER ユーザリダイレクションレポート
FAILUSER 不成功ユーザレポート
STATUS 状態コードレポート



投稿者 Anne : 22:56 | コメント (0)

2006年03月18日

LVSの活用

Linuxでバランサ LVSの活用


LVS(Linux Virtual Server)による負荷分散がカーネル2.6から標準でモジュールとしてついてくるようになったようです。
今まではRedHat9(カーネル2.4)を使っていましたが、カーネルのコンパイルが必要だったので作成に時間がかかっていたけど、今後は必要ないらしい(^^。
そこで、2.6を使っているFedoraで作成してみました。

まずはFedoraのダウンロードから
http://www.redhat.com/fedora/からISOイメージをダウンロード。
ひたすらインストール
lsmodでロードされてるモジュールを確認してみると、
ip_vsがあった。ついでに
modprobe ip_nat_ftp
modprobe ip_vs_ftp
でモジュールをロードしてみると全部ロードできた。これで今までどうりのバランサが作れそうです。非常に簡単になりました(^^。
次にルールを作るのにipvsadmというプログラム(コマンド)でルールを作成していたので、確認してみるとやっぱり入っていませんでした。
なのでhttp://www.linuxvirtualserver.org/からipvsadm-1.24.tar.gzをダウンロード。
gtarで解凍展開ご、makeをする。と ip_v4.hがないですエラーが出てしまうのでカーネルのソースを取得する。http://www.kernel.org/からダウンロード。
include/net/を/usr/include/net/にコピー(無いものだけにしときました)
make ; make installで完了。

早速ためしてみます。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

ipvsadm -A -t AAA.BBB.CCC.DDD:80
ipvsadm -a -t AAA.BBB.CCC.DDD:80 -r 192.168.1.15:80 -m -w 1
でルールの追加

確認してみる
ipvsadm -L -n
IP Virtual Server version 1.2.0(size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP AAA.BBB.CCC.DDD:ftp wlc
 -> 192.168.1.60:ftp Masq 1 0 0
TCP AAA.BBB.CCC.DDD:80 rr
 -> 192.168.1.53:webcache Masq 1 26 139
 -> 192.168.1.52:webcache Masq 1 14 145
 -> 192.168.1.51:webcache Masq 1 13 146
 -> 192.168.1.50:webcache Masq 1 16 145

こんな感じでよさそうです。

で、どのくらい使えるのかと言うとかなり使えます。商用では高価?(1ポートあたり30万円などですから、8ポートあると本体価格で320万円・上を見出すときりがない・・)なものがいくつかありますが、それらと比べてもたいして見劣りしません。もっとも商用のものは上記の機能以外にも色々な機能がついてますが・・

投稿者 Anne : 21:58 | コメント (0)

 

ハワイ旅行| サトピの子連れグアム旅行記| グアム旅行の情報サイト| ジャマイカ| ハワイ・ハワイ旅行の携帯サイト| 海外レンタル携帯電話| ハワイに行きたいAnneさんのページ| サイパン旅行の情報サイト| ケイマン諸島の情報サイト| 沖縄 沖縄旅行の情報サイト| ガーデニング| エクステリア| リナックス| ザウルス| アフィリエイト| 相互リンク| ブログパーツ| ブログ・ブログ比較| 日本のお城データベース| 技術立国日本| 通信販売| 靴 通販 ショッピング| 腕時計 ショッピング 通販| 無料動画、フラッシュ、API

Copyright (C) 2006-2007 Anne Corporation. All Rights Reserved.