ワークステーションのおと一の 図 2 SoIaris VoIume Manager の構成 takasago$ metadb flags first blk 16 8208 16400 16 8208 16400 block 8192 8192 8192 8192 8192 8192 C ount a m a a a a a takasago$ p p p p p p 1u0 1u0 1u0 1u0 1 Ⅱ 0 1u0 図 3 メタデバイスの状態 takasago$ df —h Fi1esystem /dev/md/dsk/d22 /proc mnttab fd /dev/md/dsk/d12 swap swap takasago$ metastat d22 : Mirror Submirror 0 : d20 State : Okay Submirror 1 : d21 State : Okay Pass: 1 SIZe 34G 1 .9G OK OK OK 2 . IG 2 . IG 2 . IG 2 . IG used 7 .8G OK OK OK 440M 32K OK avail 26G 1 .4G OK OK OK capacity 24 % 24 % 0 % /dev/dsk/c0t2dOs1 /dev/dsk/c0t2d0s1 /dev/dsk/cOt2dOsI /dev/dsk/c0t0d0s1 /dev/dsk/c0t0dOs1 /dev/dsk/c0t0d0s1 Mounted 0 Ⅱ /proc /etc/mnttab /dev/fd /var / var /run /tmp Read option : roundrobin (default) Write option: parallel (default) Size : 72216000 blocks State : Okay d20 : Submirror of d22 Size : 72216000 blocks Stripe 0 : Device cOt0dOsO Start B10ck 0 d21 : Submirror of d22 State : Okay Size : 72216000 blocks Stripe 0 : Device c0t2dOs0 d12 : Mirror Start B10ck 0 Dbase No Dbas e No Submirror 0 : d11 State: Okay Submirror 1 : d10 State : Okay Pass : 1 Read option : roundrobin (default) parallel (default) Write option: Size : 4067760 blocks d11 : Submirror of State : Okay Size: 4067760 blocks Stripe 0 : c0t2d0s1 d10 : Submirror of State : Okay Size: 4067760 blocks Stripe 0 : Device c0t0d0s1 Device Relocation lnformation : 28560 Start B10ck d12 28560 Start B10ck d12 Device Re10c Device ID Dbas e Yes Dbase Yes cOt2d0 Yes cOtOdO Yes takasago$ idl , dad@AIC35L040AVVA07-0= idl , dad@AIC35L040AVVA07—O= State Re10c Hot Spare Okay Yes State ReIoc H0t Spare Okay Yes State Re10c Hot Spare Okay Yes State Re10c Hot Spare Okay Yes _VNC204A2HVAAKA _VNC202A2L67GLA UNIX MAGAZIN E 2003.4 133
ワークステーションのおと一 0 Last logi れ : Sun Feb 2 17 : 11 : 24 0 Ⅱ console Feb 2 17 : 29 : 11 takasago login: ROOT LOGIN /dev/console password : takasago console login: root The system is ready. volume management starting. Use is subject tO license terms . Copyright 1983 ー 2002 Sun Microsystems , lnc . A11 rights reserved. SunOS Re1ease 5 . 9 Version Ge eric ー 112233 ー 03 64-bit B00t device : /pci@lf .O/pci@I , 1/ide@3/disk@2.O FiIe and args : ok boot disk2 Ethernet address 8 : 0 : 20 : 9f : 7 : 23 , Host ID: 809f0723. OpenB00t 3 . 27 , 256 MB ( 60 (s) memory installed, SeriaI # 10422051. Sun U1tra 5 / 10 UPA/PCI (U1traSPARC—IIi 270MHz) , No Keyboard 図 26 再度、 disk2 から起動する Resetting rebooting ・ dumping t0 /dev/dsk/c0tOdOs3, offset 419495936 , content : kernel panic [cpu0] /thread=2a1000b1d40 : BAD TRAP : type=31 rp = 14369e0 addr = 308000637f8 mmu—fsr=O syncing file systems . g1—g7: 149C400 , 7fffffff8, 30000063800 , 30000579d44 , 0 , 10 , 2a1000b1d40 pid=0, pc = 0X108Ce50 , sp = 0X2a1000b1031 , tstate = 0X4480001606 , context=0x0 addr = 0X308000637f8 sched : trap type = 0X31 panic [cpuO] /thread=2a1000b1d40 : BAD TRAP : type=31 rp = 2a1000b1790 addr = 308000637f8 mmu—fsr=O d12 : device cOtOdOs1 is enabled # metareplace —e d12 cOt0dOsl 図 25 d12 に対して metareplace を実行 Sun Microsystems lnc. # met adb flags SunOS 5 . 9 first blk 16 8208 16400 16 8208 16400 Generic May 2002 a m P a a a a a p p p p p 1u0 1u0 1u0 1u0 1u0 1u0 block count 8192 8192 8192 8192 8192 8192 ラーリングは metastat コマンドて確認しても相変わらず Needs maintenance で、回復していません ( 図 24 ) 。さ きはども書きましたが、これは新しいディスクカ陬り付け られたことを SoIaris VoIume Manager に通知していな いためです。そこで、 metareplace コマンドを実行しま す。これは、 metastat の出力にある lnvoke: metare- place d12 cOtOd0s1 <new device>" という表示からも 分かります。 ただし、メッセージどおりに入力してもうまくいきませ 144 ん。この表示は、、、 d12 を橢友するパーティションである cOtOdOsI を別のパーティションで置き換える " という意 味です。今回は、パーティション c0t0d0s1 に対応する ディスクを取り替えたので、 Solaris Volume Manager に、、このパーティションはもう使えるで " と知らせなけれ ばなりません。それには、 metareplace に -e オプショ ン (enable の意味 ) を指定します。 ます、 d12 のほうからやってみましよう ( 図 25 ) 。 あパニックを起こしてカーネルか落ちてしまいまし /dev/dsk/c0t2d0s1 /dev/dsk/c0t2dOs1 /dev/dsk/cOt2dOsI /dev/dsk/c0t0d0s1 /dev/dsk/c0t0dOs1 /dev/dsk/cOt0d0s1 UNIX MAGAZINE 2003.4
ワークステーションのおと一 図 23 flags 欄直の意味を調べる # metadb -i flags p 1u0 p 1u0 p 1u0 p 1u0 p 1u0 p 1u0 first 16 8208 16400 16 8208 16400 blk a a a a a block 8192 8192 8192 8192 8192 8192 count /dev/dsk/c0t2dOs1 /dev/dsk/cOt2dOs1 /dev/dsk/c0t2d0s1 /dev/dsk/cOtOd0s1 /dev/dsk/cOtOdOs1 /dev/dsk/c0tOd0s1 て 0 u 1 p ー m W a M D F S R ー 図 24 replica does 110t have device relocation information replica active prior tO last mddb configuration change replica is up tO date locator for this replica was read successfully replica's location was in /etc/lvm/mddb. cf replica's location was patched in kernel had device read errors is t00 sma11 tO 五 01d current data base replica had format problems replica had problem with data blocks replica had problem with master blocks iS active, commits are occurring tO thiS replica has device write errors is master, this is replica selected as input replica replica replica replica replica ミラーリンクはまた回復していない・・・・・・ # metastat d22 : Mirror Submirror 0 : d20 State : Needs maintenance Submirror 1 : d21 State : Okay Pass : 1 Read option : roundrobin (default) write option : parallel (default) Size : 72216000 blocks d20 : Submirror of d22 State : Needs maintenance lnvoke : metareplace d22 cOtOdOs0 く new device> Size : 72216000 blocks Stripe 0 : cOt0d0sO d21 : Submirror of State : Okay d12 : Mirror Start B10ck Dbase 0 No d22 State Re10c H0t Spare Maintenance Yes Submirror 0 : d11 State : Okay Submirror 1 : d10 State : Needs maintenance Pass: 1 Read option : roundrobin (default) Write option: parallel (default) Size : 4067760 blocks d11 : Submirror of d12 State : Okay d10 : Submirror of d12 State: Needs maintenance lnvoke : metareplace d12 cOt0dOs1 く new device> Size: 4067760 blocks Stripe 0 : Device cOt0dOs1 Start B10ck Dbase 28560 Yes State Re10c H0t Spare Maintenance Yes UNIX MAGAZINE 2003.4 143
ワークステーションのおと一 0 Write option: parallel (default) Read option : roundrobin (default) Pass: 1 Resync in progress : 0 % done State : Okay Submirror 1 : d21 State : Resyncing Submirror 0 : d20 d22 : Mirror # metastat d22 図 29 metastat で d22 の状態を確認 Size: 72216000 blocks State : Resyncing d20 : Submirror of d22 Size: 72216000 blocks Stripe 0 : Device c0tOdOs0 Start B10ck 0 d21 : Submirror of d22 State : Okay Size : 72216000 blocks Stripe 0 : Device cOt2d0s0 Start B10ck 0 Dbase No Dbase No State Re10c Hot Spare Resyncing Yes Okay Yes State Re10c Hot Spare Device Re10cation lnformation: c0tOd0 c0t2dO Re10c Yes Yes Device 工 D idl , dad@AIC35L040AVVA07—0= idl , dad@AIC35L040AVVA07—0= _VNC204A2HMAGTA _VNC204A2HVAAKA 図 30 プートプロックのインストール # installboot /usr/p1atform/SUNW ,U1tra—5-10/1ib/fs/ufs/bootb1k /dev/rdsk/cOtOdOsO d22 は依然として、、 Needs maintenance" ですが ( 図 28 ) 、こちらも metareplace を実行すればミラーリング プートプロックの書込みを忘れずに も Resyncing" になりました ( 図 29 ) 。 りました。念のため、 metastat で確認すると、 パニックを起こすこともなく、ぶじに、、 enable" にな d22 : device c0t0d0sO is enabled # metareplace -e d22 cOtOd0sO が始まるはすです。 こちら ・ Ultra 5 と Ultra 10 に共通のプートプロック /usr/ platform/SUNW,Ultra-5-IO/Iib/fs/ufs/bootblk 認するだけです。 プライマリ・マスターのディスクから起重丿、きることを確 あとは再同期カ鮗るのを待ち、そのあと disk0 、つまり というものです。 をインストレする ( さかした・しゅう AXE) あとは同期カ鮗るのを待つだけ・・ というわけには いきません。 1 つ、重要なことを忘れています。プートプ ロックのインストールです。プライマリ・マスターのディ スクを交換しているので、 こにはプートプロックが入っ ていません。これは図 30 のようにします。 このコマンド行の意味は、 プライマリ・マスターのディスクの先頭パ ンである /dev/rdsk/cOtOdOsO に 146 ーティショ UNIX MAGAZINE 2003.4
ワークステーションのおと一 0 図 9 disk2 から起動後のメタテータベースの状態 # metadb flags first 16 8208 16400 blk a a p 1u0 p 1u0 p 1u0 block count 8192 8192 8192 /dev/dsk/cOt2dOs1 /dev/dsk/cOt2dOs1 /dev/dsk/cOt2dOs1 図 10 ミラーを構成する d10 と d20 か Needs maintenance になっている # metastat d22 : Mirror Submirror 0 : d20 lnvoke : metareplace d22 c0tOdOsO くⅡ e device> State : Needs maintenance d20 : Submirror of d22 Size : 72216000 blocks Write option: parallel (default) Read option : roundrobin (default) Pass: 1 State : Okay Submirror 1 : d21 State : Needs maintenance Size : 72216000 blocks Stripe 0 : cOtOdOsO Start B10ck 0 Dbase State ReIoc HOt Spare d21 : Submirror of d22 State : Okay Size: 72216000 blocks Stripe 0 : c0t2d0s0 d12 : Mirror Start B10ck 0 No No Dbase Submirror 0 : dl 1 State : Okay Submirror 1 : d10 State : Needs maintenance Pass: 1 Read option : roundrobin (default) parallel (default) Write option: Size : 4067760 blocks dl 1 : Submirror of State : Okay Size : 4067760 blocks Stripe 0 : c0t2dOs1 d10 : Submirror of d12 28560 Start B10ck d12 State : Needs maintenance Dbase Yes Maintenance Yes Okay Yes State Re10c Hot Spare Okay Yes State ReIoc HOt Spare lnvoke : metareplace d12 c0tOd0sI く new device> Size : 4067760 blocks Stripe 0 : Device cOt0dOs1 Start B10ck Dbase State Re10c Hot Spare 28560 No Maintenance Yes Device Re10cation lnformation: Device Re10c c0t2d0 Yes Device ID idl , dad@AIC35L040AVVA07—0= metastat コマンドでファイノレシステムの月大態をチェッ クすると、今度は d22 も d12 も、ミラーを構成するメタ テンヾイス ( d10 と d20 ) が Needs maintenance になっ 138 ています ( 図 10 ) 。 _VNC204A2HVAAKA いまのところ、とりあえすは動いていますが、これでは 新たに取り付けたハードディスクは利用できません。これ を使えるようにするには、パーティションを正しく設定 し、メタデータベースをる当求する必喫があります。 UNIX MAGAZINE 2003.4
連載 173 ワークステーションのおと 坂下秀 先月号で、 So-net 窈是供する VoIP 試験サービスを試 用したときの本期策を紹介しました。その後これか商用サ ービスに移行するという発表がありました。その概要は、 以下のようになっています。 ・商用サービスは 3 月 1 日から開始 ( 同時に OCN やニ フティなども開始 ) 。 ・通言辞斗金は、同一プロバイダ (OCN やニフティなどの 提携フロバイダも含む ) 内のユーサー間の通話は無料、 NTT の加入電話への発信は全国一律 3 分 8 円。国際 電話は米国が 1 分 9 円など ( ル或ごとに違う ) 。 匆費用は 500 円、月額基イ守トは 280 円。このほかに 宅内機器の月額レンタル料が必要で、たとえば V 。 IP 機 能内蔵 ADSL モデムの場合は 780 円。 私の家ではあまり固定電話を使わないので、これらの料 金を考えるとお得になるかどうかは彳少なところです。 壊れたティスクの交換 2 月号で、 Solaris Volume Manager を使ってファイ ルシステムのミラーリングをおこなうための設定方法を紹 介しました。今回は、ディスクが壊れたときのシステムの 手夏ガ去について角見しましよう。 まずは現状 2 月号で紹介したように、システムは Sun の Ultra 5 (CPU は UltraSPARC-IIi 270MHz 、メモリは 256 (B) で、 IDE のハードディスクが 2 台、そして DVD- ROM ドライプカ咐いています ( 前回は CD-ROM ドラ イプでしたが、その後 DVD-ROM ドライプに変更しま ます、これらのハードウェアの構成を OpenBoot の probe-ide コマンドて市忍してみましよう。 132 図 1 ミラーリングの構成 d10 c0t0d0s1 /var d20 c0t0d0s0 / (root) c0t0d0s3 スワップ c0t0d0 d22 /var d12 c0t2d0 / (root) c0t2d0s0 d21 /var c0t2d0s1 d11 Sun U1tra 5 / 10 UPA/PC 工 (U1traSPARC—IIi 270MHz) , NO Keyboard OpenB00t 3.27 , 256 MB ( 60 (s) memory installed, Seria1 # 10422051 . Not Present 3 ( Secondary S1ave ) ATA Mode1 : IC35L040AVVA07 ー 0 2 ( Secondary Master ) ATAPIMode1 DVD-119 0105 Removab1e ATAPI M0deI : Pioneer DVD—ROM 1 ( primary S1ave ) ATA Mode1 : IC35L040AVVA07 ー 0 0 ( Primary Master ) —ide 809f0723. addre s s 8 : 0 : 20 : 9f : 7 : 23 , ok Device Device 0k probe Host ID: Ethernet UNIX MAGAZINE 2003.4 ご覧のように ミラーリングなどの情報を言当求するため ume Manager の構成を石忍してみます ( 図 2 ) 。 システムを起動し、 metadb コマンドで Solaris V01 ー す。 現在、ミラーリングの構成は図 1 のようになっていま きました。 接続すると正常に動き、 OS もインストールすることがで もに当時は DVD-ROM ドライプはありませんでしたが、 DVD-ROM ドライプはパイオニア製です。 UItra 5 の 2 台のハードディスクはそれぞれ 40GB で IBM 製、
ワークステーションのおと T0taI disk cylinders available : 19708 Current partition table (unnamed) : partition> print 図 16 変更後の言聢犹態を確認 2 Part 0 1 2 3 4 5 6 7 Tag root unassigned backup unassigned unassigned unassigned UnaSSigned F1ag wm WIII WIII CyIinders 1004 ー 0 0 0 0 0 0 0 18703 19707 34.44GB 0 38.34GB 0 0 0 0 0 cylinders) B10cks ( 17700 / 0 / 0 ) 72216000 ( 0 / 0 / の 0 ( 19708 / 0 / 0 ) 80408640 ( 0 / 0 / の ( 0 / 0 / の ( 0 / 0 / 0 ) ( 0 / 0 / 0 ) ( 0 / 0 / 0 ) 0 0 0 0 0 partition> 図 17 言聢犹態を確認してから label コマンドて書き込む Tota1 disk cylinders available: 19708 + 2 (reserved cylinders) Current partition table (unnamed) : partition> print Part 0 1 2 3 4 5 6 7 Tag root backup swap unassigned unassigned unassigned unassigned F1ag wm wm WIII WIII Wt1 CyIinders 1004 18704 0 0 0 0 0 0 18703 19707 19707 1003 34.44GB 1 . 95GB 38 .34GB 1 . 95GB 0 0 0 0 B10cks ( 17700 / 0 / 0 ) 72216000 ( 1004 / 0 / の 4096320 ( 19708 / 0 / 0 ) 80408640 ( 1004 / 0 / の ( 0 / 0 / 0 ) ( 0 / 0 / の ( 0 / 0 / 0 ) ( 0 / 0 / 0 ) 4096320 0 0 0 0 partition> ー 1abeI partition> Ready t0 1abe1 disk, C011tim.le? y 図 18 新しいティスクにメタデータベースを言聢 # metadb flags first blk 16 8208 16400 block 8192 8192 8192 count a a # metadb p 1u0 p 1u0 p 1u0 —a —c 3 —f cOtOd0s1 図 19 メタデータベース言聢後の規を metadb コマンドて囃認 # metadb flags a a す ( 図 20 ) 。 p 1u0 p 1u0 p 1 Ⅱ 0 first blk 16 8208 16400 16 8208 16400 block count 8192 8192 8192 8192 8192 8192 これは、 SoIaris VoIume Manager にハー ドディスクが交換されたことを通知していないからです。 また、この時点では追加したメタデータベースはまだ使わ れていない状態なので、正しい状態にするために、いった UNIX MAGAZINE 2003.4 /dev/dsk/cOt2dOs1 /dev/dsk/c0t2dOs1 /dev/dsk/c0t2dOs1 141 この時点ではミラーリングはまだ回復していませんから、 ハードディスクから起動しようとします ( 図 21 ) 。しかし、 何も考えすに再起動すると、プライマリ・マスターの んシステムを再起動する必要があります。 /dev/dsk/cOtOd0s1 /dev/dsk/c0tOdOs1 /dev/dsk/c0tOd0s1 /dev/dsk/c0t2dOs1 /dev/dsk/cOt2dOs1 /dev/dsk/cOt2dOs1
ワークステーションのおと—O 図 8 セカンダリ・マスター (disk2) から起動 ok boot disk2 Copyright 1983 ー 2002 Sun Microsystems , lnc . A11 rights reserved. SunOS Re1ease 5 . 9 Version Generic ー 112233 ー 03 64—bit Boot device: /pci@lf .O/pci@1 , 1/ide@3/disk@2.0 Fi1e and args : Use is subject tO license terms . WARNING : c orrupt WARNING : WARNING : WARNING : WARNING : WARN I NG : /pci@lf .O/pci@1 , 1/ide@3/dad@O.0 (dadO) : 1abeI ー wrong magic number md: d20 : (Unavai1ab1e) needs maintenance forceload 0f misc/md—trans failed forceload Of misc/md—raid failed forceload 0f misc/md—hotspares failed forceload 0f misc/md—sp failed configuring lPv4 interfaces : hmeO. Hostname : takasago 、 WARNING: /pci@lf .O/pci@1 , 1/ide@3/dad@O.0 (dadO) : corrupt 1abe1 ー wrong magic number /dev/dsk/c0t0dOs3 : 工 / 0 error WARNING: md: d10 : (Unavai1abIe) needs maintenance The system is comlng up. PIease wait . starting rpc services : rpcbind done. Setting netmask 0f hme0 t0 255.255.255.0 Setting default IPv4 interface for multicast : add net 224.0 / 4 : WARNING: /pci@lf .O/pci@1 , 1/ide@3/dad@O.0 (dad0) : corrupt label ー wrong maglc number /dev/dsk/c0t0d0s3: 工 / 0 error syslog service starting. savecore: IIO dump device configured WARN 工 NG: /pci@lf .O/pci@1 , 1/ide@3/dad@O.O (dad0) : corrupt label ー wrong magic number savecore : open("/dev/dsk/cOtOdOs3") : I/O error savecore : Ⅱ 0 dump device configured gateway takasago dumpadm: cannot use /dev/dsk/cOtOdOs3 as dump device : I/O error Feb 2 17 : 11 : 05 takasago dada: WARNING: /pci@lf .O/pci@1 , 1/ide@3/dad@O.0 (dadO) : Feb 2 17 : 11 : 05 takasago corrupt label ー wrong magic number NO swap devices configured Feb 2 17 : 11 : 05 takasago savecore : Ⅱ 0 dump device configured Feb 2 17 : 11 : 07 takasago metadevadm: lnvalid device relocation information detected in SOIaris VOIume Manager Feb 2 17 : 11 : 07 takasago metadevadm: PIease check the status 0f the following disk(s) : c0t0dO Feb 2 17 : 11 : 07 takasago metadevadm : httpd starting. volume management starting. The system is ready. takasago console login: Can ' t open bOOt device ok そこで、 disk2 ( セカンダリ・マスター ) から起動します。 すると、、 corrupt label - wrong magic nurnber" と か、、 I/O Error" などといわれながらもシングルューサー モードにはならす、マルチューサー・モードて起動けるこ UNIX MAGAZINE 2003.4 とかできます ( 図 8 ) 。 念のために metadb コマンドて市寉認すると、メタデー タベースの数は 3 つになっています ( 図 9 ) 。このように メタデータベースは 3 つあれば動くはすですが、なぜさ きほどはシングルューサー・モードになってしまったので しようか。やはり、ルート・ファイルシステムの具合が 悪い場合には対応できないのでしようか。 137
特集・プログラミング入門 タは、どの程度の頻度で探索されるのでしようか。このよ うに、プログラムを実際に使う場面を考慮しなけれは正し いデータは得られません。だからこそ、、、平均的な場合 " を想定するのは難しいのです。仮に入力か決定できたとし ても、実彳寺間の算出はそう簡単ではありません。 0 記法 計算量の表記には、よく 0 去 (O notation)5 カイ吏わ れます。あるプログラムに対して大きされの入力が与えら れたとき、ある定数 c を用いて c れ 2 と表現できる時間で実 行できるのなら、このプログラムの夫行時間は 0 ( れ 2 ) で あり、、、れ 2 のオーダー " であるといいます。 もうすこし詳しく説明しましよう。入力の大きさがれ のとき、その処理に要する時間が T(n) であるプログラム があるとします。この場合、ある一定の値れ 0 と正の定数 c があり、れ ~ れ 0 を満たすすべてのれに対して T(n) 坙 可 ( れ ) となるとき、これを T(n) = 0 げ ( れ ) ) と表しま す。つまり、れが十分大きけオば、 T(n) は / ( れ ) の定数 倍に収まるというものです。 たとえは、 T(n) = れ 2 十 100 れのとき、れか十分大き く ( れ > 100 ) なれは第 2 項より第 1 項のはうか大きくな るので、第 2 項は関係なくなります。これを 0 記法て表 すと、 T(n) = れ 2 十 100 れ = 〇 ( れ 2 ) となります。 こで、 , 代表的な関数のあいだの大小関係をみておくこ とにしましよう。 1 < logn < log れ < Ⅳ < れ < れ log れ < れ < れ < 2 れ logn のとき、対数の底はとくに指定していませんが、 これは何を使ってもかまいません。対数には、 2 1 log 6 佖 という関係があるため、底を変えても、たかだか定盟音し か変わりません。つまり、 0 去では底にどんな値を使っ ても問題にならないのです。 このような基本的な関数の大小関係が分かっていれば、 あとは関数合成に関する規則を理解するだけで 0 記法 での計算ができます。最初は加算の場合です。 T(n) 5 、大きい〇記去 (big-O notation)" とも呼ばれます。 10g6 工 10g 佖工 = 130 TI ( れ ) + T2 ( れ ) であり、さらに TI ( れ ) = 0 は ( れ ) ) 、 T2 ( れ ) = 0 朝 ( れ ) ) であるとします。このとき、 T(n) = max ( 0 げ ( れ ) ) , 0 朝 ( れ ) ) ) となります。前述のように、実 行時間を表す式に複数の項がある場合には、もっとも景グ の大きな項だけか詰果となります。さきほど記した関数の 大小関係は、このような考えにもとづくものです。したが って、関数の大小関係にもとづいて大きいはうの関数だけ を取り出せばよいことになります。 今度は乗算です。 T(n) = TI ( れ ) x T2 ( れ ) であり、 TI ( れ ) = 0 げ ( れ ) ) 、 T2 ( れ ) = 0 朝 ( れ ) ) であるならは、 T ( れ ) = 0 げ ( れ ) xg ( れ ) ) となります。こちらは、ある意 味で加算よりも簡単です。 2 つの関数を掛けた関数の場合 は、それぞれのオーダーの関数を掛け合わせてから 0 記 法の引算をす川まよいからです。 0 記去を利用すれば、定数倍の成分を無視できます。っ まり、アルゴリズムを実行する計算機の能力によって速度 か変化するといった間題カ舸避できます。また、加算につ いて大きなほうだけを採用するのは、速度を決定するさま ざまな要因のうち、もっとも景グの大きいものだけを使う ことを意味します。 0 記法を用いた場合には、これまで 、、れに上 tf 列する手間 " などと述べていたものを 0 ( れ ) と表 せるようになるわけです。 0 記法でみるアルゴリズム アルゴリズムの実行時間に関する 0 記法をみると、そ のアルゴリズムがどのような形式で作られているのかがあ る程度は分かります。代表的なものをみておきましよう。 ・〇 ( 1 ) のアルゴリズム どんな入力が与えられても、間題の大きさによって変わ る部分のないコードを実行するだけて答か得られるとい うものです。たとえば、与えられた数が 2 で割り切れ るかどうかは、与・えられた数の末尾 1 桁を調べれば分 かります。この場合、大きさとして数値の大きさをとる のはあまり未がないかもしれませんが、つねに決まっ たコードで判定できるという意味で 0 ( 1 ) となります。 ・〇 ( 10g れ ) のアノレゴリズム 処理を 1 ステッフ。進めるたびに、調べる範囲が定数分 の 1 になるようなアルゴリズムです。たとえば、配列 上での二分探索は、 1 ステップ進むたびに調 , ヾる範囲が UNIX MAGAZINE 2003.4
ワークステーションのおと 1 . cOt2d0 くエ C35L040AVVA07 ー 0 cyl 19708 alt 2 hd 16 sec 255 > /pci@lf .0/pci@1 , 1/ide@3/dad@0.0 0. c0t0d0 く IC35L040AVVA07 ー 0 cyl 19708 alt 2 hd 16 sec 255 > AVAILABLE DISK SELECTIONS : format> disk 図 13 参照するディスクの変更 /pci@lf .0/pci@1 , 1/ide@3/dad@2, Specify disk (enter its number) [ 0 ] : 1 selecting cOt2dO [disk formatted, Ⅱ 0 defect list found] Tota1 disk cylinders available : 19708 Current partition table (original) : partition> print 図 14 パーティションの言聢を確認 format> 0 2 P art 0 1 2 3 Tag backup swap F1ag wm wm WIII WIII WIII Cy1 inder s 1004 18704 0 0 0 0 0 0 18703 19707 19707 1003 34.44GB 1 . 95GB 38.34GB 1 . 95GB 0 0 0 0 0 Size 0.00gb ] : ( ーノ、一ティ 、一ノヾーアイ ←ーノ、一アイ cylinders) 4096320 ( 1004 / 0 / 0 ) ( 19708 / 0 / 0 ) 80408640 4096320 ( 1004 / 0 / 0 ) ( 17700 / 0 / 0 ) 72216000 B10cks 4 unassigned 5 unassigned 6 unas s i gned 7 unas s i gned partition> 図 15 変更するパーティションの清報を入力 partition> ・ 0 ← 変更するパーティションの番号 P art Tag F1ag 0 unassigned wm CyIinders 0 ( 0 / 0 / 0 ) ( 0 / 0 / 0 ) ( 0 / 0 / 0 ) ( 0 / 0 / 0 ) B10cks ( 0 / 0 / 0 ) ションのタグ名 0 0 0 0 0 Enter partition id tag [unassigned] : root Enter partition permission flags Cwm] . Enter new starting cyl [ 0 ] : 1004 Enter partition size COb, Oc, 1004e , 0 . OOmb , partition> ていきます。 ションは書込み / マウント可能 ションが始まるシリンダ番号 17700C ←ノヾーティションのサイズ 最初はパーティションのタグ名にの例では root) 、続 いてパーティションを書込み可能およびマウント可能に するか否かのフラグの指定 ( デフォルト ( 両方とも可能 ) のまま ) 、さらにパーティションが始まるシリンダ番号 ( 1004 ) 、そしてパーティションのサイズ ( 17700C のよ うに最後に c を補い、シリンダでの大きさを指定していま す ) を入力します。これらの値は、正しく動いているディ スクと同じものを指定します。 print コマンドて市寉認すると、正しく設定されているこ とカ吩かります ( 図 16 ) 。その他のパーティションも同じ ように設定していきます。 すべてのノヾーティションの設定か終ったら、 partition サプコマンドの label コマンドでディスクに書き込みます 140 ( 図 17 ) 。 メタテータベースの設定 次はメタデータベースの設定です。さきはど、参照でき なくなった 3 つのメタデータベースを削除したので、あら ためて新しいハードディスクに対して設定します ( 図 18 ) 。 これには、 metadb の—a オフションを使います。このオ フションは、メタデータベースの追加という意味です。そ の次の—c はメタデータベースの数 ( ここでは 3 っ ) 、—f は強制的に作成するため窈旨定です。 metadb コマンドて市忍すると、ちゃんと作られていま す ( 図 19 ) 。 ところが、 metastat て市寉認すると相変わらす、、 Needs maintenace" の状態で、ミラーリングは停止したままで UNIX MAGAZINE 2003.4