設定したことを忘れないように書いてあります。
一年半ぶりの更新(下のメモはいつやったか残っていたので記述)。滞っていた理由の大きなことは、サーバが死んだこと。サーバの死んだ理由は、 富士通製HDDが経年劣化で故障したため。 サーバ再作成を機会にディストリビューションを slackware からVine Linuxに変更。
ディスクが飛んだことで一番いたかったのが、今までのメールがなくなってしまっこと。これはすごく痛かった。 と、いうことで、今後このような事が無いように、サーバーのHDDを冗長化することにした。
しかし、現在のサーバはにRAIDカードを入れる余裕はないので、ソフトウエアRAIDで構成することになる。 また、筐体にはハードディスクは2台までしか入らないので、RAID形式はミラーリングとなる。
やはりミラーリングであるならば、鏡像対称が美しいので、2台のハードディスクの領域は全てRAIDとすることにする。 つまり起動パーティションもRaidから行うこととしたのだが、bootできるようになるまでに非常に苦労した。
redhat を利用すれば、grubがraidからのインストール、起動に対応しているとのことなので、 redhatにすれば問題なかったのかもしれないが、aptを使いたかったので、Vine Linuxにした。
kernelにraid関係のドライバ、モジュールをスタティックに組み込んでも、rootパーテーションをraidにしたとたん起動しなくなる。
liloのパラメータやらgrubの設定やらいろいろいじくってみたが、うまくいかなかった。
最終的にこのページを見つけて、問題を解決できた。
リンク先を読めば、raidでのブート方法はは自明だが、自分の備忘録として書いておく。リンク先が消えることもあるしね。
簡単にいえば、片方のディスクに通常にインストール。raidセットを、もう一方のディスクに構築。 その際に、現在のディスクをfaild-diskとしておき、raidセットに認識させないようにする。 その後、raid側にコピー、raidhotaddで最初のディスクをraidに追加する。
raidtabはこんな感じ。faild-diskを1にしておくと/dev/hda1はとりあえず認識しない。
#### raidtab raiddev /dev/md1 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 32 persistent-superblock 1 device /dev/hdc1 raid-disk 0 device /dev/hda1 failed-disk 0 raiddev /dev/md0 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 32 persistent-superblock 1 device /dev/hdc2 raid-disk 0 device /dev/hda2 failed-disk 0 raiddev /dev/md2 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 32 persistent-superblock 1 device /dev/hdc5 raid-disk 0 device /dev/hda5 failed-disk 0 raiddev /dev/md3 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 32 persistent-superblock 1 device /dev/hdc6 raid-disk 0 device /dev/hda6 failed-disk 0 raiddev /dev/md4 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 32 persistent-superblock 1 device /dev/hdc7 raid-disk 0 device /dev/hda7 failed-disk 0
fstabは以下の通り。ジャーナリングfileシステムはext3を使用している。swapはraid化せず両方スワップとして利用している。 理由は、後から追加するディスクのほうが大きくないとRAIDを組めないため、swapを二つにしてパーティションの容量を調整しようと考えたため。 swapをraid-1にする意味はあまりないと思うし。raid-0にしておくメリットは多少あるかも。
## fstab /dev/md0 / ext3 defaults 1 2 /dev/md1 /boot ext3 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 /dev/md2 /usr ext3 defaults 1 2 /dev/md3 /var ext3 defaults 1 2 /dev/md4 /home ext3 defaults 1 2 none /proc proc defaults 0 0 /dev/hda3 swap swap defaults 0 0 /dev/hdc3 swap swap defaults 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0
lilo.confは以下のとおり。lilo.conf.hdaとlilo.conf.hdcの違いは、sector,heads,cylindersの値と/dev/hda,hdcの部分、secandaryはprimaryとラベルを書いてあるなど。 パラメータの値は、fdisk -ul /dev/hd{a,c}で取得。
kernel updateした時の用心に、現在の設定をもう一つのラベルとして書いておく。
また、もう一方のliloを呼び出せる用にしてある。 起動できた方からできない方をよんでも意味があるとは思えないが、なんかあったとき手間がかからないからと思い、なんとなく残している。
liloの書き込みは、lilo -v -C lilo.conf.hd{a,c}で実施。
##lilo.conf.hda lba32 disk=/dev/md0 bios=0x81 sectors=63 heads=255 cylinders=5005 partition=/dev/md1 start=63 boot=/dev/hda install=/boot/boot.b map=/boot/map prompt timeout=50 default=linux message=/boot/message image=/boot/vmlinuz label=linux read-only vga=788 root=/dev/md0 image=/boot/vmlinuz-2.4.20-99vl1 label=linux-2.4.20 read-only vga=788 root=/dev/md0 other=/dev/hdc label=Secondary
なんでこれが必要だったかすでに忘れたが、MTAにeximを使用して、Maildir形式を利用、 fetchmail、solid-popという組み合わせの使用方法
eximを Maildir形式に変更する
local_delivery: driver = appendfile group = mail * # mode = 0660 * mode = 0600 mode_fail_narrower = false envelope_to_add = true return_path_add = true * # file = /var/spool/mail/${local_part} * create_directory = true * directory_mode = 700 * directory = /home/${local_part}/Maildir/ * maildir_format address_directory: driver = appendfile no_from_hack prefix = "" suffix = "" * maildir_format -->コメントアウトを外す
.fetchmailの設定
poll mail.nifty.ne.jp with protocol POP3: timeout 30 keep mda "/usr/bin/procmail -p -f %F" username USERNAME; password password;
/etc/spopd.conf (solid-pop3d)の設定
/* Configuration file for Solid POP3 */ /* This is the "conventional" setup: this is what you would get with no config file at all */ /* This is for when mail is delivered to a maildir in ~/Maildir */ <Global> MailDropName Maildir MailDropType maildir </Global> /* see also: /usr/share/doc/solid-pop3d/examples/ */
と、言うほどでもないが。 MHonArc 2.6.8で日本のメールを処理すると、JISコードであることを前提に動作しするようで、 html化のときにメール本文の行頭にEsc-(Bを付加するのでそれを行わないようにiso2022jp.plを修正したもの。
といっても行頭のEsc-(Bを無条件で削除するだけ。たぶんeuc専用になったと思われ。
--- iso2022jp.pl 2004-05-17 14:47:17.000000000 +0900 +++ /usr/lib/MHonArc/iso2022jp.pl 2003-08-19 20:53:02.000000000 +0900 @@ -65,12 +65,33 @@ my $cnt = scalar(@lines); my $i = 0; foreach (@lines) { - # a trick to process preceding ASCII text - $_ = "\033(B" . $_ unless /^\033/; + + # Process preceding ASCII text + while(1) { + if (s/^([^\033]+)//) { # ASCII plain text + $ascii_text = $1; + + # Replace meta characters in ASCII plain text + $ascii_text =~ s%\&%\&%g; + $ascii_text =~ s%<%\<%g; + $ascii_text =~ s%>%\>%g; + ## Convert URLs to hyperlinks + $ascii_text =~ s%($HUrlExp)%$1%gio + unless $nourl; + + $ret .= $ascii_text; + } elsif (s/(\033\.[A-F])//) { # G2 Designate Sequence + $ret .= $1; + } elsif (s/(\033N[ -.])//) { # Single Shift Sequence + $ret .= $1; + } else { + last; + } + } # Process Each Segment while(1) { - if (s/^(\033\([BJ])//) { # Single Byte Segment + if (s/^(\033\([BJ])//) { # Single Byte Segment $ret .= $1; while(1) { if (s/^([^\033]+)//) { # ASCII plain text @@ -113,8 +134,8 @@ } } - # remove a `trick' - $ret =~ s/^\033\(B//; +# # remove a `trick' +# $ret =~ s/^\033\(B//; # add back eol $ret .= "\n" unless (++$i >= $cnt);