図 - みる会図書館


検索対象: UNIX MAGAZINE 2004年9月号
187件見つかりました。

1. UNIX MAGAZINE 2004年9月号

■ SFU の活用 [ 02 ] 自ーさせるサービス SFU はいちおう、、 UNIX もどき " なので、デーモンを動作さ せることができます。デーモンは、 init か起動されるタイミング で、 /etc/rc2. d の下をみて起動されます。 rc2. d だけがあるこ とから、 SFU はつねにランレベルが 2 扱いなのだということカ貘 然と想像できます。それはさておき、 rc2. d の下にあるファイル は、すべて /etc/init. d の下にあるスクリプトへのシンポリック・ リンクです。 init の走」時には S で始まる名前のファイルを、終 了時には K で始まる名前のファイルをそれぞれ start と stop という引数電乎び出し、デーモンの走力と終了をおこないます。 今回導入したもののうち、 sshd はⅲ etd 経由で明」させること にしたので、とくに何かをする必要はありませんが、 PostgreSQL と Apache は自動的に起動してくれないと不便です。 ・ PostgreSQL 走カ用スクリプト # ! /bin/sh if [ $ # —lt 1 ] ; then echO "usage : $ 0 start ー stop exit 0 /usr/local/pgsql/bin/pg—ctl 号ー -D /usr/local/pgsql/data ー 1 /var/adm/log/postgres .10g $ 1 & & echo "PostgreSQL $ 1 " exit 0 図 30 データベースのイ乍成 $ createuser bar そこで、簡単なスクリプトを作ってⅲ it. d に置き、 rc2. d から シンポリック・リンクを張って自動起動のイ中間に入れてしまいま しよう。どちらも起動用のコマンドが用意されているので、やる ことは単純です。 start/stop を受け取ったら、それをコマンド に渡すだけです。 PostgreSQL 用のスクリプトと、 Apache 用のスクリプトを 以下に示します。 あとは、それぞれ S40postgresql 、 K52postgresql 、 S42 httpd 、 K50httpd などという名前で /etc/rc2. d からシンポ リック・リンクを張れば完了です。もちろん、スクリプトの本体 は chmod a 十 x で実行ビットを立てておくことを忘れないでく ださい。 ・ Apache 走カ用スクリプト # ! /bin/sh if [ $ # -lt 1 ] ; then echO "usage : $ 0 start ー stop' exit 0 /usr/local/apache/bin/apachectl $ 1 - & & echo "httpd $ 1 " exit 0 S a11 the new user be allowed to create database? (y/n) y ShaII the new user be allowed to create more new users? (y/n) n CREATE USER $ /usr/local/pgsql/bin/createdb —U bar barmt CREATE DATABASE 図 31 /usr/local/apache/mt/. htaccess の内容 く FiIes mt . cfg> く Limit GET> Deny from a11 く /Limit> く /Fi1es> こまでの作業が完了したら、プラウザから http:// localhost/mt/mt-load. cgi にアクセスして、システムを 初期化します。 何も問題がなければ、図 33 のような画面になります。問 題があれば図 34 のようにエラーが表示されるので対処し てください。工ラーの原因は、 mt. cfg の記述ミスや、必 要な Perl モジュールの欠如、データベースカ在しない 170 などではないかと思います。 図 32 534 : 535 : 536 : /usr/local/apache/conf/httpd.conf の修下点 下線部おロ ) く IfModu1e mod_alias . c> A1ias /mt/ /usr/local/apache/mt く Location /mt> Options ExecCGI AIIowOverride None く /Location> 初期化がすんだら、 /usr/local/apache/mt/mt-load. cgi を削除して、今度は http://localhost/mt/mt.cgi に アクセスします。すると、図 35 のような画面が表示される はずです。 こで、ユーザー名に MeIody 、パスワードに Nelson UNIX MAGAZINE 2004.9

2. UNIX MAGAZINE 2004年9月号

連載 / 旧 v6 の実装ー 0 図 8 並べ替えのための一日齡或の作成 760 #define DEFAULT_TABLE_SIZE 10 761 762 763 765 766 767 tablep = (struct hagent—entry (*)malloc (sizeof (struct hagent_entry * ) * DEFAULT_TABLE_SIZE) ; if (tablep = NULL) { return 0 ; table_size = DEFAULT_TABLE_SIZE; 図 9 並べ替えのための一日齡或の拡張 if (index > = table—size) { 776 778 779 780 782 783 784 785 786 787 788 789 } tableptmp = (struct hagent—entry **)malloc(sizeof (struct hagent—entry * ) * table—size * 2 ) ; if (tableptmp = = NULL) { free(tablep) ; return 0 ; bcopy(tablep, tableptmp, free(tablep) ; tablep = tableptmp; table_size * = 2 ; sizeof (struct hagent—entry * ) * table—size) ; hal-shuffle() はインターフェイス情報 (hagent-ifinfo 構造体 ) を引数にとり、あるインターフェイス情報に保持 されているホームエージェントのなかで、優先度が同じ工 ントリの川印をランダムに並べなおします。 760 ~ 767 行目 ( 図 8 ) で、ホームエージェント情報の並 べ替えのための一時領域を作成します。この時点では、同 じ優先度をもつホームエージェントの数が最大 10 個 (DE- FAULT-TABLE-SIZE) と仮定して領域を確保します。 この領域は、あとに続く for ループのなかで必要に応じて 拡張されます。 769 for (hap = haif-> 770 771 772 773 774 halist—pref . hagent-next-pref ; hap ; hap = haptmp) { for (haptmp = hap , index = 0 ; haptmp ; haptmp = haptmp-> hagent—next—pref) { 769 ~ 774 行目で 2 重の for ループを作ります。外側 のループはホームエージェント情報全体を処理し、内側の ループは同じ優先度をもつホームエージェントのグループ を処理します。 if (hap->hagent-pref ! = haptmp¯> 775 hagent-pref ) break ; 775 行目は内側のループの終了条件の確認です。内側の ルーフ。処理中に、優先度の異なるホームエージェントがみ つかったら外側のループに戻ります。 UN 工 X MAGAZINE 2004.9 776 ~ 789 行目 ( 図 9 ) は並べ替えのための一時領域の 拡張処理です。 index は同じ優先度をもつホームエージェ ント情報の個数を示します。一時領域に十内できるホーム 工ージェント情報の数は table-size に記億されており、初 期値は 10 (DEFAULT-TABLE-SIZE) です。もし、同 じ優先度をもつホームエージェント情報の数が table-size の値より大きければ ( 776 行目 ) 、 778 行目で一時領域を 2 倍に拡張します。新たに確保した一時領域に過去の情報 をコピーし ( 785 行目 ) 、旧い一時領域を 786 行目で解放 します。 787 ~ 788 行目で一時領域を示すポインタを更新 し、一時領域のサイズを示す table-size も 2 倍にしてお きます。 tablep [index + + ] = haptmp ; 790 791 } 790 行目で、一時領域にホームエージェント情報へのポ インタを十常内します。 内側のループを抜けると、一時領域には同じ優先度をも つホームエージェント情報へのポインタが配列として内 された状態になります。 図 10 に一時領域とホームエージェント情報の関係を例 示します。 図 11 の hal-swap-preference-order() は、引数として 渡された 2 つのホームエージェント情報を入れ替えます。 794 行目では、入れ替えるホームエージェント情報の片方 99

3. UNIX MAGAZINE 2004年9月号

連載 / Pe 日活用のヒント の 8 図 第同函 ! 1 フルい編集 0 ! まま示也守物知りツをツい ! : アドレス ( 0 ) 、」 ngs*hi mazu* My 000 Ⅲ第 en ¥ 2 4 ¥田¥ p に h 引 lo を一 hellotk. plw ぐ能に容同 He 胸 . W は OK ロ X ロー 図 9 hellotk. plw の実行結果 アドレス ) ) ngs*hi ma ¥ My Doc Ⅲれ en ¥ 2 ロロ 4 靼 7 ¥ pe 日 ! を hel lotk.pl プロンプト・ウインドウは現れない。 正直にいうと、私は 6 月号の記事を書いた時点では wperl.exe があることを知らなかった。そのため、 6 月号 では perl.exe でコマンドプロンプト・ウインドウが出な いようにする方法として、 Cygwin の run. exe を使う方法 を紹介した。お恥すかしいかぎりである。 クリップポードの画像をファイルに保存する 本題のプログラム save-cb-image. plw の説明に入ろう。 作成した理由 文書や Web ページに画面イメージを貼り付けることが あると思うが、私はこの連載の執筆でも会社の仕事でも、し ばしは画面イメージを貼り付けている。そして、その作業 に不便を感じていた。 Windows での画面イメージの月幻囚みは、通常は以下の 手川頁でおこなう。 1. 画面イメージとして取り込みたいウインドウをアクティ プな状態にして、 Alt 十 Print Screen キーを押す。これ で W ⅲ dows のクリップポードにそのウインドウの画面 イメージカ陬り込まれる。 Helloa Wo 0 に perl. exe と wperl. exe の違い それでは、 perl.exe と wperl.exe の違いをみてみよう。 以下のプログラムを hellotk. pl という名前で保存し、フォ ルダ上でダブルクリックして起動すると、図 8 のようにコ マンドプロンプト・ウインドウか表示される。 # ! perl —w use StriCt ; use Tk; my $main = MainWindow—>new ; $main—>LabeI(—text = > " He110 , Wor1d! ")—>pack; $main—>Button(—text = > ) OK ) —command = > [destroy = > $main] )->pack; MainLoop ; 一方、同じファイルを hellotk. plw という名前で保存し、 ダブルクリックで起動すると図 9 のようになり、コマンド 107 UNIX MAGAZINE 2004.9

4. UNIX MAGAZINE 2004年9月号

連載 / ルーティング 図 8 AS パスプリペンド ( 2 ) AS-path prepend AS 1 192.168.0.0 / 16 ÄS 2 10.0.0.0 / 8 信 ) のどちらにもこのような経路変更処理が適用できます が、図の例では特定の相手への出力で AS パスプリペンド を実行します。 AS 3 から 10.0.0.0 / 8 の経路 ( 自分自身への経路 ) を 広告するとき、 AS 4 の IX 経由の EBGP ピアと AS 5 の EBGP ピアに対して AS パスプリペンドを実行すると、 ()S パスプリペンドが実行されない ) AS 4 の直孑妾続の EBGP ピアが受信する経路が、最短の AS パスリストを もつようになります。この様子を図 8 に示します。 ASAO スプリペンドが実行された糸各は、パスリストが { 3 、 3 } の ように 1 つよぶんに長くなっています。 AS 4 は、 AS 3 から { 3 } と { 3 、 3 } のパスリストをも つ糸各を受信し、そのうちの 1 つを最善糸登各とします。図 の例では、パスリスト長の短い { 3 } のほうを最善糸各とし ています。明確なポリシーカ駁疋されていなければ、一般 的には AS パスリストが短いものを採用するため、通常は このようになります。その結果、 AS 6 は { 6 、 4 、 3 } と { 6 、 5 、 3 、 3 } のパスリストをもつ 2 つの糸各を受信しま す。 AS 6 は、にれと矛盾する明確なポリシーがなけれ ば ) 10.0.0.0 / 8 へのトラフィックを短いパスリストの糸各 に従って AS 4 に送ることになります。 AS 2 への糸各 ( 192.168.0.0 / 16 ) についても、同様の 操作をおこなえば AS 3 の糸各とはまったく独立に制御で きます。 AS 6 から AS 3 への糸各は AS 6 → AS 4 → AS 3 としたまま、 AS 6 から AS 2 への糸登各は AS 6 → AS 5 → AS 3 → AS 2 となるようにすることができます。 AS パスプリペンドは、特定の相手および経路に対して実 AS3 、 3 3 603 6633 Ⅸ 3 AS 5 AS 4 5 3 3 4 3 AS 6 UNIX MAGAZINE 2004.9 行できるため、各組織の柔軟なポリシーを実現するきわめ て強力な機能です。 もちろん、現実のネットワークでは中間ノードとなる AS 4 や AS 5 の複雑なポリシーがあるため、このようなポ リシーの実現が困難な場合もあります。実際のトラフィッ クが通る経路は、 AS 3 のポリシーだけではなく、中継す るすべての AS のポリシーがかかわります。インターネッ ト・トラフィックの糸各は、各 AS が BGP で実現するポ リシーによって彳少に操作されます。それぞれの AS がど のような糸登各を受信し、糸各にどのような操作をするかは、 AS 細織間の交渉によって決定されます。 MULTI-EXIT-DISC 属性 Multiple Exit Discriminator の略で、さらに省略し て MED と呼ばれる場合もあります。、、複数の出口を区別 するもの " という意味の数値メトリックです。 AS パスリ スト長など、経路に関するその他の優先度が同じだった場 合、 AS のどちらの出口を優先するかを決めるために使わ れます。、、この属性はメトリック ( 距離 ) である " というこ とを憶えておくとよいでしよう。なぜなら、彳する LO- CAL-PREF 属性とは対照的に、 MED メトリックは、、小 さい値のほうが優先度が高い " からです。 MED は、 AS パスリスト長での選択ができなかったと きに初めて比較されます。 MED の影響範囲は 1 つの AS に限られます。また、 MED を設定した AS カ随う場合は、 比較はおこなわれません。つまり、経路を広告する AS X と受信する AS Y があり、 X と Y に 2 つ以上の直 4 妾続 があった場合だけ、この機能が意味をもちます。 X は、 Y への接続のそれぞれに対し、異なる MED を設定します。 Y では、異なる MED をもつ同じ糸各のどちらを優先する かを決めるときに MED を比較し、値が小さい糸響各を優先 します。 AS パスプリペンドと同様、 MED も特定の相手に広告 する特定の経路に対して独立にメトリック値を設定できま す。また、 AS Y がこの経路をさらに別の AS に伝播す る場合は、 AS X の MED は取り払われます。ここから、 MED は、、隣の AS に、特定の糸各カリ用する自 AS の入 口を指定するためのもの " ということができます。 図 9 に MED の例を示します。この図では、 ASX カ毅 定する 2 つの MED 値 ( 500 と 100 ) が、 AS X と Y の 51

5. UNIX MAGAZINE 2004年9月号

連載 / 旧ルーティング べきかカ斗リ断できないのです。これは、 B と C が異なる組 図 3 パスペクタ型アルゴリズム 織によって管理されていることカ源因です。 AS 内部での 終点 A に関するルーティング・メッセージの伝播 国一一 - →一→ー ルーティングでは、同じネットワーク管理者が統一された 単位のメトリックを利用するため、比較が可能です ()S A が B と C 向けに設定したメトリックは、相互に比較でき ます。なぜなら、両方とも ASA の方針のもとに決められ たメトリックだからです。この場合は、両方とも 10 なの で、 A → B と A → C の優先度は同じであるといえます ) 。 ディスタンス・べクタ型とリンクステート型アルゴリズ ムには、このほかにも欠があります。 4 月号で RIP について説明した際に才甜商したように、デ イスタンス・べクタ型アルゴリズムでは、無限カウント問題 による経路ループが発生するおそれがあります。ルーティ ング・アルゴリズムのもっとも重要な仕事はループのない 糸登各の言 t 算ですから、ディスタンス・べクタ型アルゴリズ ムは使えないことになります。 リンクステート型アルゴリズムでは、計算するすべての ノードが、ルーティング・ドメイン全体のトボロジーマップ を保持する必要があります。 AS 間ルーティングでは、 AS が 1 つのノードとなり、ドメインはインターネット全体と なります。したがって、すべての AS がインターネット全 体について、 AS レベルでのトボロジーマップをイ尉寺しなけ ればならないことになります。さもないと、リンクステー ト型アルゴリズムでは AS レベルの最短糸登各カ第 - 算できま せん。執筆時点では、インターネットは約 18 000 個の AS から構成されています。ですから、インターネット全体の AS レベルのトボロジーマップを言当する LSDB を各ルー タが保持し、トボロジーの変更に合わせて更新するのは非 現実的です。 OSPF は数百ノードまでの規模のネットワー クでの利用が推奨されていることからも分かるように、 ンクステート型アルゴリズムでは現在のインターネットに 対応できません。 パスリスト A B A B C ルゴリズムカ吏われています。 ノヾスペクタ型アルゴリズムは、ルーティング・メッセージ のイ幻番に沿って糸各カ第 t 算されていくという点では、ディ スタンス・べクタ型と同じです。ただし、ルーティング・ メッセージ中のそれぞれの経路に、その経路が伝播される 際に通過したノードのリストが含まれるところが異なりま す。ディスタンス・べクタ型では、糸各を ( 番する際にメ トリックを 1 つ増やします。このため、各ノードは終点へ のメトリック ( 距離 ) しか分からす、糸各ループを回避でき ません。これに対し、経由するノードのリストが経路に含 まれるパスペクタ型では、経路がループしているかどうか は一目目尞然です。経由したノードのリストに、同じノード が 2 回以上現れていれば糸各ループです。このような糸各 は、経路計算の際に簡単に除去できます。ループ回避に利 用されるこのノードリストを、パスリストと呼びます。 パスペクタ型アルゴリズムの動作概念を図 3 に示しま す。この図は、 A 、 B 、 C の 3 つのノードが数珠つなぎに 接続された簡単なトボロジーになっています。終点 A に関 するルーティング・メッセージはノード A によって生成さ 楸 B 、 C と番していきます ( 図の上部 ) 。 ルーティング・メッセージを受信したノードは、パスリ ストを検査します。パスリストに糸各ループがないことが 確認できたら、自分のノードをパスリストのう頁に追加し、 それを自身のパスリスト表 ( 経路表とは違うものです ) に 保存します。次に、このノードは保存したパスリスト表の バスペクタ型アルゴリズム なかから、最善のパスリストをもつ経路を経路表に追加し ます。経路表に取り込まれたパスは、ほかのノードへイ番 AS 間ルーティングにはディスタンス・べクタもリンク ステートも適用できないため、新しいアルゴリズムが必要 されます。図 3 では、それぞれの終点に対するパスリスト は 1 つしかないので、受信したパスリストは即座に糸各表 でした。そこで、ディスタンス・べクタ型アルゴリズムを に取り込まれ、ほかのノードに伝播されます。各ノードは 変更したンヾスペクタ型アルゴリズム " が開発されました。 最終的に図の下部のようなパスリストを保持することにな 全界共通の EGP として利用される BGP には、このア 47 UNIX MAGAZ 工 NE 2004.9

6. UNIX MAGAZINE 2004年9月号

連載 /FreeBSD のブートプロセスをみる スピーカー 図 2 8254 プログラマブル・インターバルタイマー ( ビン配置と内部プロック図 ) D7 D6 D5 D4 D3 D2 DI DO C LKO 0 UTO GATEO GND 1 12 8254 24 13 制御レジスタ SC RW Mode SC : カウンタ選択 00 = カウンタ 0 Vcc WR RD CS AO CLK2 0 UT2 GATE2 CLKO GATEO OUTO OUTI GATEI CLKI CS RD WR AO AI 内部バス = リードノヾック・コマンド CLKI GATEI OUTI ↑ RW : 読み書きモード選択 00 = カウント値ラッチ 10 = 上位 8bit の読み書き Mode: カウントモード 000 = lnterrupt on TerminaI Count 001 = Hardware Triggerable One-Shot 01 = カウンタ 1 10 = カウンタ 2 01 = 下位 8bit の読み書き 1 1 = 1 6bit の読み書き xl 0 = Rate Generator 100 = Software Triggered Strobe BCD : カウンタ・フォーマット xl 1 = Square Wave MOde 101 = Hardware Triggered Strobe 0 = バイナリ 図 3 8254 の入出力 PO RTB Vcc レ 0 バス 1 = BCD ( 10 進 4 桁 ) GATEO GATEI GATE2 8254 100Hz OUT2 OUTI 0 UTO 旧 QO 8259A INTR DRAM リフレッシュ回路 CPU 1 193 , 182HZ CLKO CLKI CLK2 76 D0—D7 C LK2 GATE2 OUT2 ノ、ンドラ 割込み べクタ 32 IDT UNIX MAGAZINE 2004.9

7. UNIX MAGAZINE 2004年9月号

文房具としての 図 14 pkgsrc の内容 # cd /usr/pkgsrc 津載最 06 # 1s CVS Makefi1e Packages . txt README archivers audiO benchmarks biology bootstrap c ad chat C omms crOSS databases devel distfiles doc editors emulators finance fonts 図 15 pkgsrc/editros の内容 # cd /usr/pkgsrc/editors # 1s CVS Makefi1e TeXmacs elvis elvis—xll emacs games geography graphics ham inputmethod lang licenses mail math mb one meta¯pkgs lyx-qt lyx—xforms manedit sam speedbar ssam m 1 S C multimedia net neWS packages parallel pkgchk. conf pkgchk. conf . 01d pkglocate pkgtools tamago ted ted—cs VIgor pr int security shells sysutils templates textproc time WWW X11 VIm vim¯gtk vim—gtk2 emacs—noxll emacs—packages emacs20 leim 1eim20 lp e CVS を利用する場合は、 OS のソースツリーや xsrc を 取得した場合と同じように、以下のコマンドを実行します。 # cd /usr # cvs —d :pserver: anoncvs@anoncvs . NetBSD. org: - # cvs update —dP # cd /usr/pkgsrc アップデートは以下のようにします。 /cvsroot checkout —P pkgsrc FTP で取得するファイルは pkgsrc. tar. gz です。ファ よい方法かもしれません。 す。 CVS はなにかと時間がかかりがちなので、なかなか デートするときは CVS を利用する、という方法も使えま のなので、最初に取得するときは FTP で、次からアップ んが、 CVS で取得したものを tar. gz 形式にまとめたも す。もちろん、その時点での最新バージョンではありませ 定期的に pkgsrc が tar. gz 形式としてまとめられていま また、 NetBSD およびそのミラー FTP サーバーには、 148 ・ ftp://ftp.NetBSD.org/pub/NetBSD/ イルの所在は以下のとおりです。 NetBSD-current/tar-files/ 取得したら展開しておきましよう。 # tar zxvf pkgsrc . tar ・ gz —C /usr 使いたい / ヾッケージをみつけよう pkgsrc のファイルを取得したら、なかをみてみましょ う。図 14 のように、何やらたくさんのディレクトリがあり ーこに表示されているディレクトリは、パッケー ますね。 ジのおおまかなカテゴリーです。たとえば、エデイタをイ ンストールしたければ、 editors というディレクトリのな かから、実際のパッケージに対応するディレクトリを探し ます ( 図 15 ) 。 用意されているパッケージは、現在のところ約 5000 にものほります。こんなにたくさんのパッケージのなかか ら、自分の使いたいものをどうやって探せばいいのでしょ うか。前述のように パッケージはアプリケーションのカ ごとに整理されているので、それをヒントに探し テゴリー ていくのもいいかもしれません。しかし、パッケージの索 引があればもっと便利です。 UNIX MAGAZINE 2004.9

8. UNIX MAGAZINE 2004年9月号

連載 /UNIX Communication Notes 図 4 負荷分散装置を多孱爿ヒしたアクセスの土勤勺分散 大阪 負荷分散装置 195 サ 。東京 負荷分散装置 負荷分散装置 第鋼第第第第を クライアント クライアント クライアント 一方、 DNS を使う方法は、 AS を越えたところでも実装 ・クライアントからのアクセスを受けるサーバー できる。これは、 DNS で 1 つのサーバー名に対して複数 サーバークラスタ の A レコードを対応させ、問合せを受けるたびに異なる A の 2 つをいかに分散させるかである。 レコードを結果として返す、いわゆる、、 DNS ラウンドロビ アクセスを受けるサーバーの分散 ン (DNS round robin)" と呼ばれる手法である。複数の A レコードについては、地理的に分散した地にサーバー クライアントからのアクセスを分散させる代表的な方法 を配置すれば、クライアントからのアクセスを分散させる には、次のようなものがある。 ことができる。この手法は、最近は - ヨ殳的におこなわれる ・ anyc ast の利用 ようになってきている。 ・ DNS による複数サーバーへのう攵誘導 クラスタの分散 anycast を利用する方法では、同一の IP アドレスを割り 地理的分散を実現するもう 1 つの要素が、サーバークラ 当てたサーバーを複数用意してネットワークに接続し、経 スタ単位の分散である。これは、負荷分散装置の多段化に 路制御を正しくおこなうことで、クライアント側から糸各 よって実現するケースが多い。図 4 に示したように、地理 的に近いサーバーに誘導する。あるサーバーがダウンした 的に離れた 2 カ所にの例では東京と大阪 ) に置いたクラ 場合には、そこへの糸各は無効になり、トラフィックは稼 スタを指し示すような負荷分散装置を用意し、負荷分散装 動中のほかのサーバーへ誘導されるという便利な機構であ 置の多段化によって分散の度合いを高めようというもので る。この方法は同一の AS (Autonomous System) のな ある。この場合、負荷分散装置間での通信を前述の Eth- かで用いられることが多く、実装は比較的簡単である。図 ernet 転送型でおこなうのは難しいので、通常はレイヤ 3 3 に、 anycast の概念的な構成を示す。ネットワークに接 NAT 型で設定する。 続された 2 台のサーバーが同じ IP アドレスをもっている 状況を意図的に作りだすのが anycast のミソである。そ バックエンド・サーバーの分散 して、図の例では 192.218.1.0 / 30 の糸各をアナウンスす データは、最終的にはバックエンド・サーバーに蓄積さ れば、ネットワーク内での anycast を使う用意ができる。 43 UNIX MAGAZINE 2004.9

9. UNIX MAGAZINE 2004年9月号

文房具としての 図 12 X サーバーによる自動生成 # XFree86 —configure ( 一瞬画面が切り替わる ) XFree86 detected your mouse at device /dev/wsmouse . PIease check your config if the mouse is still ot operational , as by default XFree86 tries tO autodetect the protocol . Your XF86Config file is /root/XF86Config. new To test the server, run 'XFree86 —xf86config /root/XF86Config ・ new' るときには、このオプションはトラブルのもとになること があります。時間がかかっても -u を付けずにすべて作り なおすことをお勧めします。 ビルドが終ったら、「ユーザーランドのアップデート」の 節で説明したのと同じようにインストールしましよう。も ちろん、 -x オプションを忘れずに付けてください。 # cd /usr/src # . /build . sh —x install=/ Copying set ・・・・・・のところで xbase や xcomp 、 xfont 、 xserver の文字か現れればインストールは完了です。 言綻しよう 最近の X は、設定ファイルがなくても起動する仕組みが 導入されました。しかし、これは XF86Config でいうと ころの、、 Device " セクション、すなわちビデオまわりに関 してだけのようです。 NetBSD ではポインタデバイスと して wsmouse を利用していますが、これをみつけること ができずに起動できません・・ というわけで、設疋ファイルを用意しましよう。設疋フ ァイルを生成するには、自分ですべて用意する ( ! ) ほかに、 以下のツールを利用する方法があります。 ・ X サーバーによる自動生成 ・ xf86config ・ xf86cfg 最初の方法は、 x サーバー自体が自動的にハードウェア 構成を認識して、設疋ファイルを生成してくれるというも のです 8 。 2 番目は、 xf86config というツールを利用して 8 これが可能であれは第定ファイルなしの走」も簡単にできそうですが、ちょっ と眺めたかぎりでは、定ファイルの自動生成と言ファイルなしの走」で は、まったく違うカ式でハードウェアを認識しているようです。 146 生成する方法です。これは図 10 のように、 CUI (Char- acter User lnterface) べースで設疋していきます。最後 の方法は、 xf86cfg9 というツールを利用するもので、 GUI (Graphical User lnterface) べースで設定を進めていき ます。設疋ファイルがない状態で起動すると、図 11 のよ うに X か起動してツールカれます。設定の初期値は、最 初の X サーバーによる自動生成で生成されたものになり、 さらに細かな設定を加えていくことができます。また、す でに設疋ファイルがある場合は、その設疋ファイルを変更 していくことになります。 こでは、お手軽に X サーバーによる自動生成を試し てみましよう 10 。 /usr/X11R6/bin にパスが通っている ことを確認したら、図 12 のようなコマンドを実行してみ てください。一瞬画面が切り替わったあと、そのまま終っ てしまったようにみえるかもしれませんが、心配は無用で す。コメントを見ると、「 /root/XF86Config. new にあ るから試してや ~ 」と書いてあります。言われたとおりに 試してみると・ # XFree86 -xf86config /root/XF86Config ・ new ( 画面が切り替わる ) 図 13 のようになりましたか ? 味もそっけもない画面で すが、これで大成功です。 exit して X を終了し、設疋ファ イルを所定の位置にコピーしておきましよう。 # cp XF86Config. new /etc/X11/XF86Config 9 xf86config と似ていて紛らわしいです 10 といいつつ、私がふだん使っているのは CUI の xf86config だったりし 。でも、計 ます。たんに昔から使ってるからというだけの理由ですが・ 算機を乗り換えるたびに言きを作りなおさなくてはならないので、そろそろ 自動生成にしようかとも思っています。 UNIX MAGAZINE 2004.9

10. UNIX MAGAZINE 2004年9月号

図 3 圧縮属性をカラーで表示する言聢 全般表示ファイルの種オフラインファイル ーフォ井ダの表示 このフォルダに使用している表示方法朝細表示や並べて表示 など ) をすべてのフォルダに通用できます。 図 4 スパーステータの圧縮によるキ厖里ファイルサイスと ー里ファイルサイスの違い 0 VC N フォルダオプション ②区 3 2 1 1 12 7 1 10 1 1 1 109 LC N 6 4 5 詳細設定 曰フォルダとデスりトップの項目の説明をポップアップで表示する 曰フォルダのヒントにファイルサイズ情報を表示する ロマイコンビューダこコントロールバネルを表示する ロログオン時に以前のフォルダウインドウを表示する 団各フォルダの表示設定を保存する 団簡易ファイルの共有を使用する能奨 ) ロ縮小版をキャッシュしない 団登録されている拡張子は表示しない ロ号物プロセスでフォルダウインドウを問く 論理的なファイルサイズ 物理的なファイルサイズ 睹号化や圧縮された NTFS 方イルをカう、一で表示る 9 8 253 254 255 256 14 1 3 12 既定値に戻す ( 旦 ) 〔ュコーコー 332 333 334 335 ラの表示メニューから、、詳細表示の設定 " を選び、、、属性 " : イ磨誤クラスタ番号 ) が 0 から 19 までのデータだが、この をチェックする。これによって、工クスプローラで詳細表 うち、 VCN 4 ~ 7 と 12 ~ 15 の合計 2 工クステント ( ラ 示をおこなった場合、ファイルの属性欄に圧縮されている ン ) についてはデータが空なため、実際にはクラスタは割 ことを示す、、 C " という文字が表示される。 り当てられていない。アプリケーションがこのようなファ ェクスプローラには、属性を色分けして表示する機能も イルを読み込むと、ファイルシステム・ドライバは VCN ある。これを利用したいときは、工クスプローラのツール ごとに言囚みをおこない、クラスタが割り当てられていな メニューから、、フォルダオプション " を選ぶか、コントロー いことが分かるとアプリケーションに対して、、データがな ル・パネルで同じく、、フォルダオプション " を開き、、、表示 " い " と通知する。一方、アプリケーションからスパースデー タブで、、暗号化や圧縮された NTFS ファイルをカラーで タに該当する領域に書込みがおこなわれた場合にはクラス 表示する " をチェックする ( 図 3 ) 。 タを割り当て、通常と同様にデータを書き込む。 また、引数に対象のファイルやフォルダを指定して この結果、図 5 に示すように、実際には 3 つの工クステ COMPACT コマンドを実行すると、それぞれの圧縮状態 ントのみにクラスタが割り当てられる。したがって、論理 ( 圧縮の有無や圧縮率など ) カ俵示される。 的にはファイルカ甘旨示したファイルサイズカ尉寺されるが、 NTFS 圧縮の仕組み 物理的なファイルサイズはスパースデータの部分を除いた NTFS には、、、スパースファイル " と呼ばれる圧縮機能 ものになる。 もある。これは、循環ログやデータベースなどのアプリケ スパースファイルを作成するには、 DeviceIoControl() ーションのデータなど、多くの領域が空であるファイルに で FSCTL-SET-SPARSE を指定する。 対して、実際にデータが書き込まれていない領域にはクラ こまでに、 NTFS において、未使用領域の多いファ スタを割り当てないように指定するものである。このよう イルを圧縮する手法を説明したが、もちろんスパースデー なファイルを、スパース (sparse= 疎 ) ファイルと呼ぶ。 タ以外の領域も圧縮できる。 NTFS のファイル圧縮では、 これを効果的に使うことによって、クラスタの肩活用が ファイルデータは 16 クラスタ単位に分割される。そして、 可能になる。 その 16 クラスタごとのデータを圧縮した場合、すくなく とも 1 クラスタぶんのデータ領域が節約できるかを解析す NTFS の圧縮手法の 1 つは、このスパースデータをファ イルから削除することである。たとえば、図 4 のファイル る。そして、節約できなければ、圧縮せずにそのままのデー では、 MFT レコードは VCN (Virtual Cluster Number タとしてイ尉寺する。 16 17 68 UN 工 X MAGAZINE 2004.9