2008年5月17日土曜日

別のブログから移行

2008-05-08 17:24 | MEMとHDDでzfs mirror 続き

今日は調子が悪いのでお休み。でも、こんなことしてます。ダメダメです。
さて、昨日はmdをmallocで作成していた。
= zfsはカーネルのメモリ(kva)を大量し使用する。
= md(malloc)も同様に(kva)を大量に使用。
なので、OSが落ちていた様子。
ということは、mdをmallocからswapに変更したら良いのか?
で試してみると、それなりに落ちない感じだけど、コピーを繰り返したら落る。
/boot/loader.conf.localに以下を設定すれば、なんとか持つか。
vm.kmem_size="512M"
vm.kmem_size_max="512M"
1回目
(1) zfs(HDD+HDD)
# time cp -r /usr/ports /diskpool/
0.543u 18.535s 1:01.88 30.8% 20+1108k 24720+0io 103582pf+0w
(2) zfs(swap+HDD)
# time cp -r /usr/ports /memdiskpool/
0.631u 18.596s 0:53.67 35.8% 20+1104k 19918+0io 101320pf+0w
(3) gjournal
# time cp -r /usr/ports /mnt/
0.483u 11.308s 1:13.91 15.9% 20+1104k 29243+2816io 103993pf+0w
(4) ufs2(softupdate)
# time cp -r /usr/ports /usr/hoge
0.418u 12.266s 1:44.38 12.1% 20+1073k 25893+2796io 101317pf+0w
2回目(上書き)
(1) zfs(HDD+HDD)
# time cp -r /usr/ports /diskpool/
0.477u 18.171s 1:25.07 21.9% 21+1118k 25128+0io 101317pf+0w
(2) zfs(swap+HDD)
# time cp -r /usr/ports /memdiskpool/
0.501u 18.316s 1:13.16 25.7% 20+1099k 19317+0io 101317pf+0w
(3) gjournal
# time cp -r /usr/ports /mnt/
0.493u 11.273s 1:42.91 11.4% 20+1066k 52441+857io 101317pf+0w
(4) ufs2(softupdate)
time cp -r /usr/ports /usr/hoge/
0.408u 12.550s 1:47.66 12.0% 21+1122k 25893+2800io 101317pf+0w
おお。希望通り、zfs mirrorで、md(swap)を使うとちょっと速い感じですね。


でも、冷静に分析すると。。。。
これ全部ディスク1つで実施しているから、それが影響あるだけのような気がする。
HDD + HDD なら、同じディスク上に、2箇所書き込みが必要だけど、
md(swap) + HDD なら、同じディスクに1箇所書き込みで終り。
なので、残念ながら、その分が速いだけと思われる。。。
ディスク2個でテストしたいけど、持ってないです。はい。
再起動後、mdの無いDEGREDED状態で実施だと以下。
1回目
# time cp -r /usr/ports /memdiskpool/
0.523u 18.812s 0:54.05 35.7% 20+1102k 18314+0io 101317pf+0w
2回目
# time cp -r /usr/ports /memdiskpool/
0.459u 17.598s 1:20.53 22.4% 20+1089k 29174+0io 103997pf+0w
やっぱりそういうことのようです。
あと、一緒にtopも見ていたのだけど、zfs>gjournal>ufs2の順でCPU使用率が高い。
また、gjournal自体もkvmを使用する感じ(未確認)で、最初の確認での、zfs/gjournal/md(malloc)の共存は、かなりkvmが足りなかったと思われる。。。

2008-05-07 04:13 | MEMとHDDでzfs mirror

今日はZFSの評価。
以下についてIOを確認。
(1) ZFS(HDD+HDD ミラー)
(2) ZFS(md + HDD ミラー)
(3) gjournal
(4) UFS2
というのも、md + HDDのミラーでI/Oが速いけど、永続性のあるストレージが作れないかなぁなんて考えてます。
それぞれ以下の結果
(1) ZFS(HDD+HDD) 「/test1ディレクトリ」
# dd if=/dev/zero of=/test1/hoge bs=1m count=400
400+0 records in
400+0 records out
419430400 bytes transferred in 12.030584 secs (34863678 bytes/sec)
(2) ZFS(md + HDD) 「/test2ディレクトリ」
# dd if=/dev/zero of=/test2/hoge bs=1m count=400
400+0 records in
400+0 records out
419430400 bytes transferred in 7.029625 secs (59666112 bytes/sec)
(3) gjournal 「/mntディレクトリ」
# dd if=/dev/zero of=/mnt/hoge bs=1m count=400
400+0 records in
400+0 records out
419430400 bytes transferred in 8.402085 secs (49919799 bytes/sec)
(4) UFS2(+softupdate) 「/usrディレクトリ」
# dd if=/dev/zero of=/usr/hoge bs=1m count=400
400+0 records in
400+0 records out
419430400 bytes transferred in 6.453544 secs (64992260 bytes/sec)
お!! ZFS(HDD+HDD)はZFS(md+HDD)より速い。
でも、一番速いのはUFS2だ。
http://gihyo.jp/admin/feature/02/freebsd-7/0005?page=5
によると、UFS2よりZFSやgjournalの方が速いのだけど。
大きな1ファイルだとそうなるのかな?
なので、/usr/portsをコピーする時間を計測。
# time cp -r /usr/ports /test1/
0.640u 18.707s 1:10.15 27.5% 24+1271k 14330+0io 104210pf+0w
# time cp -r /usr/ports /test2/
あっ、落ちた。
ZFS(md+HDD)を色々試してみても、すぐ落ちる。
色々調べたら、カーネルメモリーの設定を追加した方が安定するみたい。
今日はここまで。

2008-05-06 01:40 |パーティションの切り直し

bsdlabelで実施するらしい。
100Gのスライスを2つを遊び用(ZFSやgjournal)に用意していたので、そちらをgjournal用にパーティションを切り直してみる。
最初/usr/sbin/sysinstallで可能かと思ったけど、思ったようには行かない。
なので、色々調べなかがらbsdlabelで実施。
スライス作成がfdisk、パーティション作成がbsdlabelといった感じですね。
bsdlabel -e /dev/スライス名
とやれば、viが起動して編集モードに入れる。
どうも、パーティション番号(アルファベット)は命名規則があるようす。
= aパーティションがブート用
= bパーティションがswap用
= cパーティションが全体の管理用
しらなんだ。
なんで、遊び用のパーティションは、d以降で適当に付ければ良いのかな?
bsdlabel -e /dev/ad10s3
----- vi 中 ------------------
# /dev/ad10s3:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
c: 204796620 0 unused 0 0 # "raw" part, don't edit
d: 1500M * 4.2BSD 4096 16384 64
e: 1500M * 4.2BSD 4096 16384 64
f: * * 4.2BSD 4096 16384 64
-------------------------------
てな感じで指定。
"*"は自動計算。"fsize","bsize","bps/cpg"はmanからデフォルトの値を入力。
# よくわからんが、"fsize","bsize","bps/cpg"は0でも良い感じ。そっちで動かしてみよう。

08:20 | FreeBSD/M2V-MX/powerd つづき2

なんとか出来たみたい。
結局の所、CPUの周波数の変更が、powernowを使用せずにacpi_throttleを使用していたのが原因のようだ。
# sysctl dev.powernow => エラー
# sysctl dev.acpi_throttle => 表示
という状態で、これが不正。
無理矢理acpi_throttleを無効にする為、/boot/loader.conf.localに以下の項目を追加。
hint.acpi_throttle.0.disabled="1"
これで、powerdも問題無く起動出来ました。ホッ。
。。。でも、1GHzまでしか落ちない。。まあ、良いけどね。
この内容は、ここにありました。
http://monkey.org/freebsd/archive/freebsd-amd64/200705/msg00077.html

2008-05-05 05:44 | FreeBSD/M2V-MX/powerd つづき

FreeBSD-7 stable(amd64)をインストールしてみた。
同様に、OSが落ちる。
デフォルトだと、以下になっていたので、
kern.timecounter.hardware: ACPI-fast
よくわからないが、ACPI-fastをi8254にしてみてもダメ。(i386/adm64共)
ダメなのかなぁ。
BIOSの設定によって上手く行くかもしれないけど、正直どう設定すれば良いのか。。。
ちなみにBIOS設定は、今ほぼDEFAULTの状態

09:41 | FreeBSD/M2V-MX/powerd

ASUSのM2V-MXというマザボにAthlonX2 BE2300を装着し、FreeBSD-7 stable(i386)をインストール。
その状態で、powerdを起動すると落ちる。なぜだ。
powerd -vで起動すると、順調にCPUの周波数を落していくのは見えるのだけど、その後OSが固まる感じ。エラーが出るのも気になるし。
# powerd -v
powerd: using APM for AC line status
idle time > 90%, decreasing clock speed from 1899 MHz to 1780 MHz
powerd: error setting CPU frequency 1780: Invalid argument
idle time > 90%, decreasing clock speed from 1780 MHz to 1661 MHz
powerd: error setting CPU frequency 1661: Invalid argument
idle time > 90%, decreasing clock speed from 1661 MHz to 1542 MHz
powerd: error setting CPU frequency 1542: Invalid argument
idle time > 90%, decreasing clock speed from 1542 MHz to 1424 MHz
powerd: error setting CPU frequency 1424: Invalid
他のエントリーも捜したけど、7からは苦労している様子は無い。BIOSを最新にしてもダメだった。この現象はオレだけなのかなぁ。
ちなみに、FreeBSD-7からcpufreqはGENERICのKernelに埋め込みされているから、特にkldloadは必要無いみたい。

2008-04-19 11:29 | LDAP

LDAPは参照を行なうサーバの可能な限り近い所にコピーして、使うのが吉。
特にPAM等でOS認証等を行なう場合、かなりの数のアクセスが発生するので、通信経路による障害を防ぐ為にも、その方が良い。

2008年5月13日火曜日

メールサーバはqmailを使用。
spamは、antibadmailと、bsfilterで除去で実施。
bsfilterは誤検知しても後で確認出来るように、サーバ側で処理をして、spam用のmaildirに配信とする。

参考:下記サイトのqmailと連動の部分。
http://yang.amp.i.kyoto-u.ac.jp/~yyama/FreeBSD/mail/bsfilter-j.html

外部からのメール送信が必要な場合には、smtp_authを使用する。
メーラはimapを使用してメールをチェック。

cd /usr/ports/qmail
make install
# この時に、smtp_authを有効にする。
/var/qmail/scripts/enable-qmail
これで、/etc/mail/mailer.confが変更されると同時に、/etc/rc.dにsendmail_enable="NONE"が設定される。

cd /usr/ports/mail/courier-imap/
make install clean
この時に、userdbを有効にする為、AUTH_USERDBを有効にする。

cram-md5に対応するパスワードを設定する。
userdb set home= mail= uid= gid=
userdbpw -hmac-md5 | userdb set hmac-md5pw
makeuserdb


tar xvf antibadmail-1.38
make
インストール先は、/var/antibadmailとする。antibadmailは相対パスでqmailのコンフィグを見に行く為、/var/qmail配下にあるqmail設定ファイルの、control/localsやusers/assignのチェックをしてくれない。
symlinkを貼って対処。
cd /var/antibadmail
ln -s /var/qmail/users .
cd /var/antibadmail/control
ln -s /var/qmail/control/locals

antibadmailをtcp-envで使用するには、少々プログラムの改善が必要そう。
元々tcpserverで使用する予定でしたが、tcpserverでは同一IPからの接続回数を制限出来ないので、inetd経由で起動することにする。
/etc/hosts.allowに以下を追加
tcp-env: XXX.XXX.XXX., 127.0.0.1 : setenv = RELAYCLIENT
tcp-env: ALL : setenv = REJECTNODOTHELO

antibadmailのログを出力する為、/etc/syslog.confに以下のエントリーを追加
local1.info /var/log/antibadmail.log

/etc/inetd.confに以下の行を追加
smtp stream tcp nowait/10/2 qmaild /var/qmail/bin/tcp-env tcp-env -R /var/antibadmail/bin/antibadmail /usr/local/sbin/courierpasswd /bin/true
google appを現在お試し中。もちろん無料版

元々持っているドメイン(例:example.com)で、なんとなくサブドメインっぽく作ろうとしているのだけど、bindの設定方法を忘れてしまって四苦八苦中です。

サブドメインとして、sub.example.comとした場合の、*.sub.example.com宛のメールのMXはどう設定したら良いのだろうか。。。

とりあえず今はこんな設定です。
; google apps
sub IN A xxx.xxx.xxx
  IN MX 10 ASPMX.L.GOOGLE.COM.
  IN MX 20 ALT1.ASPMX.L.GOOGLE.COM.
  IN MX 20 ALT2.ASPMX.L.GOOGLE.COM.
  IN MX 30 ASPMX2.GOOGLEMAIL.COM.
  IN MX 30 ASPMX3.GOOGLEMAIL.COM.
  IN MX 30 ASPMX4.GOOGLEMAIL.COM.
  IN MX 30 ASPMX5.GOOGLEMAIL.COM.
www.sub IN CNAME ghs.google.com.
top.sub IN CNAME ghs.google.com.

@sub.example.comへのメールは上手く処理出来ているみたい。
@www.sub.example.comへのメールはどう処理されるんだろう。まあ、個人的には無視で良いのだけど、多分ghs.google.comにメールが送信されていると思うんだよね。

結局わからないのは、CNAMEの設定なんだと思う。CNAMEにMXの設定付けると、bindさんに不正な設定だと怒られるんだよね。まあ、そういう物なのかな。

というか、subドメインをキチンと切って、管理すれば問題無いのかもしれないけど。

あと、www.sub.example.comの設定を入れて、Webページにアクセス可能になったのは良いけど、結局リダイレクトされて、googleのドメインになってしまうんだよね。これは想定外でちょっと悲しかった。
サーバ再構築中。今迄使っていなかった、jail機能を使用した方が良いか考え中。

面倒臭いという問題もあり、なにかと文句を付けたいのです。

個人で運営する場合には、メンテナンス性を重視してjail無しというのもありなのかなと思ってるんだけど、そうでも無いのかな。

jail環境に穴があるのであれば、ホスト環境にも穴がありそうで、わざわざ分離する手間が必要か考え中。TCPでの接続ルートがあれば、結局ホスト環境も乗っとられそう。

jail <-> ホスト接続が、コマンドベースのみで実施すれば、良いのかな。
最初の投稿。今から始めます。
BLOG初心者なので、少しづつ慣れて行きたいと思います。