公開日 2024-01-08 更新日 -
2001/08/07に新しいサーバーを製作しOSを Miracle Linux に変更、hostnameをjoelにしたところまでお話しました。
いままで、サーバーのスペックにはあまり触れてきませんでした。これはまとまって記録に残っていないからなのですが、トラブルの記録から少しずつわかってきました。
Joel作成時の仕様 CPU: Intel Pentium III (Coppermine) 600MHz (slot1) mother: ABIT BE6-II Memory: 128MB HDD1: IBM-DTLA-307030, 30GB / HDD2: IBM-DTLA-307030, 30GB /homeにマウント OS: MiracleLinux ver1.0
(1)を付けたのは、この後大きな変化があるからです。
生徒がマイドキュメントに保存したものは、マウントされているサーバーのユーザーホームに置かれます。授業で使用するものはそれほど多くありませんが、放課後にインターネットからダウンロードしたり、家からメモリーカードなどで持ち込むことや、誤操作で大量のコピーを作ることも考えられます。HDDの総容量を使い切ると他の生徒に多大な迷惑をかけますので、使用の上限をもうけることにしました。
前のサーバーであるzebedeeではLinuxconfで設定したのですが、中途半端なツールで自由にならないので面倒でした。新たにquotaの勉強して設定します。
fstab にquotaの使用を宣言する。
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0 proc /proc proc defaults 0 0 none /dev/pts devpts mode=0622 0 0 /dev/hdc1 /home ext2 defaults,usrquota 1 2
ファイルシステムの最上位のディレクトリに quota.user というファイルを作る。
[root@joel /root]# touch /home/quota.user [root@joel /root]# chmod 600 /home/quota.user [root@joel /root]# ls /home/quota.user -l -rw------- 1 root root 0 Aug 23 08:43 /home/quota.user
雛型になるユーザー(ここではlamb)の制限を設定する。
[root@joel /root]# edquota lamb Quotas for user lamb: /dev/hdc1: blocks in use: 0, limits (soft = 90000, hard = 100000) inodes in use: 0, limits (soft = 3000, hard = 3100)
猶予期間を設定する。普通7daysあたりだが、動作テストをすることもあると考えて少なめにした。
[root@joel /root]# edquota -t Time units may be: days, hours, minutes, or seconds Grace period before enforcing soft limits for users: /dev/hdc1: block grace period: 1 days, file grace period: 1 days
fstabの記述を有効にするために、一度マウントを解除し再度マウントする。
[root@joel /root]# umount /home [root@joel /root]# mount -a [root@joel /root]# mount /dev/hdc1 on /home type ext2 (rw,usrquota)
すでにユーザーがある(制限なし)ので現在の使用状況をチェックし、超過がないか確認してから、有効にする。-a は /home でもいいはず。
[root@joel /root]# quotacheck -a [root@joel /root]# quotaon -a
制限のかかっているlambを表示してみる。
[root@joel adachi]# quota lamb Disk quotas for user lamb (uid 508): Filesystem blocks quota limit grace files quota limit grace /dev/hdc1 9628 90000 100000 237 3000 3100
次のようにすることで雛形ユーザー lamb の設定を alpha と beta にコピーできる。
edquota -p lamb alpha beta
これを使って、現在の全生徒に容量制限を設定するようにスクリプトを書きます。
#!/usr/bin/perl #name : cpquota #usage: cpquota suser duserfile #from "Switch fck3 home = user 2001\n"; #switch acording to ARGV's number $numofargv=@ARGV; if ( $numofargv == 2 ){ #------------------------- print "copy quota\n"; $ct=0; ($suser,$fnamesf)=@ARGV; print "cp quota from $suser "; print "to users in $fnamesf list\n"; open(SFILE,$fnamesf) || die "cannot open $fnamesf"; while (<SFILE>){ ($uname,$password,$gc,$os)=split(/ /); print "$uname-" ; `edquota -p $suser $uname`; $ct=$ct+1; print "$ct\n"; } }else{ #---------------------- print "usage: cpquota sorce_user dist_userfile_name\n"; }
実行すると、 print "$uname-";
と print "$ct\n";
により、進捗状況が表示されます。
[root@joel /root]# ../cpquota lamb nampasjoel2_2.txt copy quota cp quota from lamb to users in nampasjoel2_2.txt list e9naoko-1 d9misato-2 e9hisano-3 e9ran-4 d9sachi-5 b9makiko-6 a9kogawa-7 ...
全部すでにあるユーザーなので、offにした上で現在の使用状況をチェックする。そのあと再びonにする。
[root@joel /root]# quotaoff -a [root@joel /root]# quotacheck -a [root@joel /root]# quotaon -a
ステータスのチェックの命令もあるが、そう必要がないように思える。
[root@joel /root]# quotastats Number of dquot lookups: 52296 Number of dquot drops: 52296 Number of still active inodes with quota : 0 Number of dquot reads: 719 Number of dquot writes: 847 Number of quotafile syncs: -1073742712 Number of dquot cache hits: 11272 Number of allocated dquots: 736 Number of free dquots: 24 Number of in use dquot entries (user/group): 712
レポートの方が使える。
[root@joel adachi]# /usr/sbin/repquota /home Block limits File limits User used soft hard grace used soft hard grace root -- 1740 0 0 41 0 0 adachi -- 5772 0 0 92 0 0 alpha -- 3236 90000 100000 178 3000 3100 beta -- 79240 90000 100000 402 3000 3100 bravo -- 1524 90000 100000 113 3000 3100 lamb -- 9628 90000 100000 237 3000 3100 f8souma -- 8104 90000 100000 226 3000 3100 f8yumiko -- 23420 90000 100000 853 3000 3100 ...
2002.1.28の6校時Joel(1)のサーバー機能に障害が発生しました。授業に甚大な影響があったのはこれが後にも先にも唯一のことです。
私的な記録にはサーバー停止と書いていますが、「停止」だと自然に止まった、または手動で止めたという実際とは異なる印象があります。よく聞く「障害」としてみましたが、こちらはサーバー(の構築者・管理者)の責任外で起こることを示唆するような表現なんだと改めて感じました。
実際に起こったことは、授業開始直前に、ログインできない、ファイルが開けないなどのトラブルが続出したことです。授業開始直前というのは、負荷分散の観点から、教室に来たら随時ログインするようにしていたことによります。サーバーの応答を待っているような様子から、ネットワークが原因かと考え、待っているPCが多いことからHUBかと考え、2つ以上のハブにまたがっているのでサーバーかと原因を探っていきました。サーバーは停止してはいませんが、ログにはpageが確保できないようなメッセージがコンソールに次々と流れています。発信元は samba httpd canna などさまざまです。ログインできません。リモートからもログインできませんが、ping には応答しています。
しかたなく、ネットワークケーブルをはずした後リセットかけると、HDDにアクセスしますが、起動画面がでません。ケーブルをつけるとpingは通るようになります。webやファイルサーバーにアクセスできる生徒もいますが、認証でとまっている生徒もいます。機器を使用しての授業は諦めざるを得ない状態でした。
授業後、とにかく画面が出ないので、手持ちの古いPCIバス用のカードに換えてLinuxのレスキューディスクで起動、ハードディスクをfsck.ext2 などでチェックし、問題なしと判断しました。結局、このグラフィックカードの交換だけで正常に機能するようになりましたので、原因はAGPのグラフィックカードの故障だと思います。AGPのグラフィックカードはメインのメモリを自分のものとして使用できるような仕様でした。壊れたカードが不正にメモリを占有したため、メモリの管理に不整合が生じエラーを起こしていたと解釈すると筋が通ります。
サーバーは普段 X-window を起動しておらず(この時代はそもそもインストールされてなかったかもしれない)、コンソールでの運用だったので高性能なグラフィックカードは必要はありません。古いPCIバス用のカードのまま使ったか、新しいAGPカードを用意したかは記憶にありません。
とにかく、この年の3月まではこのまま使用し、新年度に向けてメモリ増設とOSの更新をおこなっています。マザーボードはまだ使えるという判断です。
マザーボードはABITのBE6-II(V1.0)で、UltraDMA66を使えるようになるということで、BIOSのアップデートをしました。ver1.0はハードウェアのバージョンでBIOSのバージョンではありません。これに翻弄されながらも現verQJから最新版verXUにアップデートしました。BIOSのアップデートそのものはうまく行ったのですが、/dev/hdaなどの割付が換わるので、ちょっと面倒なことになりました。この話は省略します。
CPUとHDDはそのままですが、メモリを512MBに増やしました。スワップの発生が頻繁に起こっていたので、やってみました。
OSをReHat Linux 7.2 にしました。MiracleLinux ver1.0 は samba 日本語化の部分に期待して選択したのですが、ver2.0になるときに、Turbo Linux ベースから RedHat ver7.1 ベースに変わってしまったのです。ハードの自動認識、解説、rpmのアップデートなどはやはりRedHatが一番しっかりしているので、RedHat 7.2 の製品版を購入することにしました。
製品版を購入するのは後にも先にもこれ一回でした。解説書がついていること、サポートがついていることが期待されるところでしたが、不具合を発見するのが夜で、時間はかかるけれども問い合わせのために調べているうちに解決策が見えてきて、自己解決してしまうことで、サポートを利用する場面がなかったというのが理由です。
この7.2でのインストールで象徴的なことが起こります。購入したCDの2枚目が読めず、雑誌の付録のCDの2枚目で代用できてしまったということでした。
生徒データのバックアップのために、HDDのミラーリングを考えました。
追加したのは PROMISEの fastTRAK100TX2 V2.00B2 です。これはIDE-RAIDカードで、2チャンネルのIDE-HDD(最大4台)をRAID0,1,0+1で構築可能という触れ込みでした。ところが、導入の時点で ReHat 7.2 ではRRIDの設定ができませんでした。Redhat用のドライバも見つけて試しましたが、kernel version が異なると言われて使うことができません。(2.4.7-10用なのに2.4.9-13に入れようとしている)。将来もOSのアップグレードもあることを考えるて、単なるIDE増設カードとして使うことにしました。
適宜手動で全体をコピーしてバックアップすることとし、将来的にはcroneで自動化することを考えます。
全部を生かすと、IDE-HDDの配置がこうなります。
IDE プライマリ┬マスター /dev/hda DMA 33 └スレーブ /dev/hdb DMA 33 IDE セカンダリ┬マスター /dev/hdc DMA 33 └スレーブ /dev/hdd DMA 33 Fast Trak CH1 ┬マスター /dev/hde DMA100 └スレーブ /dev/hdf DMA100 Fast Trak CH2 ┬マスター /dev/hdg DMA100 └スレーブ /dev/hdh DMA100 UD66プライマリ┬マスター /dev/hdi DMA 66 └スレーブ /dev/hdj DMA 66 UD66プライマリ┬マスター /dev/hdk DMA 66 └スレーブ /dev/hdl DMA 66
元々このマザーには、HDDのコネクタが4つあり、IDE1、IDE2が DMA33用です。他にUltraDMA66用にIDE3とIDE4があって、BIOS更新でこれが使えるようになっています。そこに追加したfastTRAKはDMA100のコネクタが2つということになりました。
BIOS SETUP で標準のIDEのプライマリを使用しない設定にすると、UltraDMA66のドライブが /dev/hda に格上げになります。それも含めて、次のようなレイアウトとしました。
UD66プライマリ┬マスター /dev/hda DMA 66 システム(/) 20GB (Model=IBM-DPTA-372050) └スレーブ /dev/hdb DMA 66 IDE セカンダリ┬マスター /dev/hdc DMA 33 CD-ROM └スレーブ /dev/hdd DMA 33 Fast Trak CH1 ┬マスター /dev/hde DMA100 生徒ホーム(/home) 40GB (Model=IC35L040AVVA07-0) └スレーブ /dev/hdf DMA100 Fast Trak CH2 ┬マスター /dev/hdg DMA100 バックアップ 40GB (Model=IC35L040AVVA07-0) └スレーブ /dev/hdh DMA100 UD66セカンダリ┬マスター /dev/hdi DMA 33 旧A旧/shome 30GB (Model=IBM-DTLA-307030) └スレーブ /dev/hdj DMA 33
DMA100 とありますが、dmesgの中に記録された起動時のHDDの認識情報では、DMA66の様です。
Joelグレードアップ時の仕様(2002.4) CPU: Intel Pentium III (Coppermine) 600MHz (slot1)(変化なし) mother: ABIT BE6-II(BIOS更新) Memory: 512MB HDD1: IBM-DPTA-372050, 20GB /(root) HDD2: IC35L040AVVA07-0, 40GB /homeにマウント HDD3: IC35L040AVVA07-0, 40GB /homeのバックアップ HDD4: IBM-DTLA-307030, 30GB /旧システムの参照用 OS: ReHat Linux 7.2
OS(ディストリビューション)の交代と生徒データのバックアップへの考慮が大きな変更です。機能自体はさほど変更ありません。
miracleからRedHatになっての変化もありますが、この時期のsambaも細かな変化がかなりあって設定項目が増えて来ています。smb.confにはかなりの説明があって読みながらデフォルトや設定例を変更する形で設定ができるようになってきました。そしてほとんど変更が必要ない設定項目はsmb.confには書かれなくなりました。testparmコマンドで確認すると、全部の設定が表示されるので、必要なひとはそこから項目を拾ってsmb.confに追加するという仕組みになりました。
というわけで、再び解説を読みながら設定をしました。結果としてあまり大きな変化はありません。
授業用ネットワークシステム構築のお話(2)の第二期のサーバーの設定に合わせた項目比較です。#*が異なる部分ですが、多くは変更になったデフォルト値を素直に受け入れたものです。
#======================= 全体的な設定 ================================== [global] client code page = 932 coding system = HEX workgroup = VINE server string = Samba Server %v security = USER encrypt passwords = Yes domain master = True #*Yesと書いてもtestparmでTrueになる local master = Yes preferred master = True #* os level = 33 #*推奨値が変わった他に遠慮すべmasterがいないので大きくても良い domain logons = Yes logon script = logon.bat logon path = \\%L\%U\.profile logon home = \\%N\%U #*u:\userをマイドキュメントにしたので、プロファイルはu:においてもいいのではと。 wins server = 192.168.1.1 wins support = No dns proxy = No hosts allow = 192.168.1. 127. socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 oplocks = Yes #*推奨値に従うことにした。 log file = /var/log/samba/%m.log #*log.%mから変更 max log size = 0 #* deadtime = 0 #* read size = 16384 #* level2 oplocks = Yes #* # ========================== 各共有の定義 =========================== [netlogon] comment = Network Logon Service path = /home/netlogon write list = adachi,otawa share modes = No #* [printers] comment = All Printers path = /var/spool/samba browseable = No printable = Yes [homes] comment = Home Directories browseable = No read only = No create mask = 0600 #* directory mask = 0700 #* valid users = %S [public] comment = public_html path = /home/public/%U write list = %U create mask = 0644 browseable = No [share] path = /home/share write list = adachi,otawa guest ok = Yes [www] path = /shome/httpd/html valid users = adachi,otawa,ohno write list = adachi,otawa,ohno create mask = 0644 #* directory mask = 0775 browseable = No [prog] path = /shome/dosprog create mask = 0644 #* read only = No #* [kadai] path = /zhome/otawa valid users = adachi,otawa write list = adachi,otawa force group = tch create mask = 0660 directory mask = 0770 browseable = No
一番大きな変更は、ユーザープロファイルを入れる場所の.profileを廃し、/home/<username> にしたというところです。logon home = \\%N\%U の指定がそれに当たります。マイドキュメントの指定先を u:\user にしたので、ユーザープロファイルが u:\ に生においてあってもいいだろうということです。
[public]共有は生徒が授業で作成するウェブページを置くためのところです。Linuxを使い始めたときには、ユーザーホームのファイルパーミッションは 644 でした。その中に public_html フォルダがあって、ウェブサーバーの設定をすれば、ここに個人のウェブページを置くようになっていました。
ところが、このころからユーザープライマリーグループが採用されるようになりました。デフォルトで全員 users という共通のグループになっていたものがユーザー名と同じ名前のグループが作られて、全員個別グループのただ一人のメンバーになります。加えて、ユーザーホームのファイルパーミッションが 600 (640だったかもしれない)となって、ユーザーホームのファイルが他人から見えなくなりました。セキュリティ上はうなずける仕組みです。しかし、ウェブページは他人からも見えることが必要なので、別の共有を作ることにしたわけです。
ウェブページのための共有については、二転三転するので、詳しい説明は省いておきます。
ユーザーホームとプロファイル、マイドキュメントの関係図は以下のように変わりました。
ウェブページのための共有を W: ドライブとして接続するために、logon.bat
adachi@banach:/media/adachi/S1T$ cat old/adtec1/_jugyou/logon/logon.bat (=04summer) net time \\joel /set /yes net use s: \\joel\share net use u: /home net use w: \\joel\public
マンドキュメントは前回から u:/user になっています。この設定は、レジストリの結合で行っています。つまり、設定した USER.DAT を各ユーザーのプロファイルディレクトリに置きます。
logon.bat中に w: \\joel\public というのが出てきたので、調べてみました。授業に使用したテキストに、ウェブページ作成準備や最初のページの保存場所、ウェブページの閲覧に使うURLなどが書かれているので年ごとの変化がわかります。サーバーから見た位置はApacheの設定によるので確かではありません。
w:\のようにドライブを割当て、その後\\サーバー名\サービス名(UNCというらしい)の形式に戻しているのは、たまに起こるWindowsのシャットダウン中にハングアップする問題の原因かと疑われたからです。
位置の表記の中の「alpha」は仮のユーザー名です。
年度 | 保存場所へのアクセスルートを用意する作業 | Windowsから見た位置 | サーバーから見た位置 | Webでの位置 |
---|---|---|---|---|
2000 | それぞれのユーザーのマイドキュメントに public_html というフォルダを作らせる | マイドキュメント\public_html\ | /home/alpha/public_html/ | www.seiai.ed.jp/~alpha/ |
2001 | 用意されたJScriptで、それぞれのユーザーのマイドキュメントに public_html というショートカットを用意 | \\joel\public\ | /home/public/alpha/ | www.seiai.ed.jp/~alpha/ |
2002 | 用意されたJScriptで、それぞれのユーザーのマイドキュメントに public_html というショートカットを用意 | W:\ | /home/public/alpha/ | www.seiai.ed.jp/~alpha/ |
2003 | それぞれのユーザーのマイドキュメントに public_html.lnk というショートカットをコピー | \\joel\public\ | /home/public/alpha/ | www.seiai.ed.jp/~alpha/ |
2004 | それぞれのユーザーのマイドキュメントに public_html.lnk というショートカットをコピー | \\joel\public\ (W:) | /home/public/alpha/ | www.seiai.ed.jp/~alpha/ |
2005 | \\joel\publicへのショートカットを各自作成 | \\joel\public\ | /home/public/alpha/ | www.st.seiai.ed.jp/~alpha/ |
2006 | \\jonah\publicへのショートカットを各自作成 | \\jonah\public\ | /home/public/alpha/ | www.st.seiai.ed.jp/~alpha/ |
2007 | \\jonah\publicへのショートカットを各自作成 | \\jonah\public\ | /home/public/alpha/ | www.st.seiai.ed.jp/~alpha/ |
jonahはjoelの次のサーバー機の名前です。2007年にクライアントもLinuxにするので、ここで区切っています。
2005年に www.seiai.ed.jp が www.st.seiai.ed.jp になりますが、seiai.ed.jpのドメインを正式に取得したので、内部のアドレスをサブドメイン風に変更したものです。サブドメインにするにはDNSにそれなりの設定を必要としますが、外部には出さずに、外にアクセスしないためのアドレスという位置づけになっています。
授業用ネットワークシステム構築のお話も(3)になりました。(3)ではありますが、第3期ではなく、第2期の延長にあると考えています。注目点は認証とプロファイル、ユーザーホームの割当方法です。
これと別にハードウェアの更新も記録しておきます。ハードウェアとしては2台です。この頃はハードウェアごとにサーバー名を付けていました。サーバー名の後ろの(2)は「2代目」の意味でHDDやメモリ、OSの入れ替えで代が変わったことを示しています。
zebedeeのCPU,マザーについては記録がありません。
サーバー名(代) | 稼働年数 | 稼働開始 | 稼働終了 | OS | HDD | memory | CPU | mother boad | 備考 |
---|---|---|---|---|---|---|---|---|---|
zebedee | 1.5年 | 2000-3 | 2001-8 | RedHat 6.1J | 2.5GB(+20GB) | 64MB | 不詳 | 不詳 | 第1期,第2期 |
joel(1) | 0.5年 | 2001-8 | 2002-1+ | miracle 1.0 | 30GB+30GB | 128MB | Pentium III 600MHz | ABIT BE6-II | 第2期 |
joel(2) | 3.6年 | 2002-3 | 2005-9+ | ReHat 7.2 | 30GB+40GBx2 | 512MB | Pentium III 600MHz | ABIT BE6-II | 第2期 |
zebedee(2) | 5.3年 | 2001-8 | 2006-10 | turbo→miracle | 4GB | 64MB | 不詳 | 不詳 | 補助のサーバー |
zebedee(2)はメインのサーバーを退役後、補助のサーバーとして使われたことは、授業用ネットワークシステム構築のお話(2)の最後に記述があります。
この後joelはjonahに席を譲りますが、それはまた後に。