Copyright © 2004 Red Hat, Inc.
次のトピックがリリースノートに含まれます。
Red Hat Enterprise Linux インストールプログラム (Anaconda) への変更点
全般事項
zfcp ドライバを使用する
RAID ベース及びマルチパスストレージを設定するためにmdadmを使用する
SCSI デバイスから IPL を設定する
カーネル関連の情報
ドライバ及びハードウェアサポートへの変更点
パッケージへの変更点
このセクションでは、Red Hat Enterprise Linux インストールプログラムの Anaconda に関連する点を説明します。
イ ンストール済みの Red Hat Enterprise Linux 3 システムを Update 2 にアップグレードするためには、Red Hat Network を使用して変更しているパッケージをアップデートする必要があります。Update 2 へのアップグレードに Anaconda を使用する場合はサポート対象外です。
Anaconda は Red Hat Enterprise Linux 3 Update 2 の新規インストールのみに使用してください。
Red Hat Enterprise Linux 3 Update 2 CD-ROM の内容をコピーする場合は(例、ネットワークベースのインストールのため)、オペレーティングシステムの CD-ROM だけをコピーするよう注意してください。エクストラ CD-ROM や一連の製品 CD-ROM はコピーしないでください。Anaconda が正しく動作するために必要となるファイルを上書きしてしまいます。
これら CD-ROM は Red Hat Enterprise Linux のインストールが終了してからインストールします。
このセクションでは、本リリースノートの他のセクションに特定しない全般事項について説明します。
各種システム設定制限についての情報は次を参照してください。
NIS を使用するときログインを早くするために、NIS クライアントへのグループ関連情報の提供にgroups.bynameマップを使用せず、代わりに netid.byname マップの使用をリクエストできるようになりました。元々、このマップはこのような目的で使用されるものではありませんが、ほとんどの設定で必要な情報を含んでおり、最近の Linux 及び Solaris™ の NIS サーバ上ではデフォルトで生成されます。
この機能を使用できるようにするには、/etc/default/nssで次の行を探します。
# NETID_AUTHORITATIVE=TRUE
次に、テキストエディタを使って先頭の '#' 文字を削除し、完了したら変更を保存します。
netid.bynameマップのクロスチェックは NIS サーバ、クライアントのいずれによっても行われません。従って、netid.bynameが適切な情報を含んでいることを確認するのはシステム管理者の責務となります。
また、services.byservicenameマップを使ってNIS のパフォーマンスを向上させることができます。このマップが存在し正しく構築されていれば、/etc/default/nssで次のように設定するとマップの使用を開始するようにできます。
SERVICES_AUTHORITATIVE=TRUE
services.byservicenameマップにはキーとしてサービス名とエイリアスの両方が含まれ、またプロトコルの指定なしと指定ありの両方が含まれている必要があります。最近更新された Red Hat Enterprise Linux 及び Solaris の NIS サーバは正しく構築されたservices.byservicenameマップを提供しています。
Red Hat Enterprise Linux 3 Update 2 エクストラ CD-ROM には fonts-monotype パッケージが含まれています。このオプションパッケージにはAgfa Monotype による Albany™、Cumberland™、Thorndale™のフォントが入っています。これらのフォントは、他の一般的なオペレーティングシステムに収録されているコアフォントに近いメトリクスのドキュメントフォントコアセットを提供しています。
Red Hat Enterprise Linux 3 Update 2 は Linux 監査システムの LAuS を特色としています。このシステムは、高度に設定が可能で、堅牢なシステムコール使用のロギングを促進するカーネル常駐コンポーネントとユーザー領域コン ポーネントから構成されています。このリリースノートでは監査システムの組み立て方、作動させるための基本的な情報の概要を説明します。また、この新しい 機能を十分に利用するために役立つ関連ドキュメントについても触れています。
LauS は2種類のコンポーネントから構成されています。
カーネルコンポーネント
ユーザー領域コンポーネント
Red Hat Enterprise Linux 3 Update 2 で提供されるデフォルトのカーネルには、システムコール監査を使用できるようにする変更が含まれています。監査システムを使用しないときは、これらの変更 はニュートラルです。カーネルコンポーネントはキャラクタ特殊デバイスで監査機能へのアクセスを提供しています — /dev/audit。このデバイスで、ユーザー領域デーモン (auditd) が監査機能を有効にしたり無効にすることができるようになり、システムコールの呼び出しがログされる必要があるときに確認するため使用するルールセットをカーネルに提供できます。このデバイスもauditdで使用され、監査ログへの転送のためにカーネルから監査記録を検索します。監査機能の動作の管理及び調整のためのサポートされている ioctl() コール及び /proc/ インターフェースについては audit(4) man ページを参照してください。
カーネルから監査ログに監査記録を転送したり、結果として生じたデータを処理するプログラムがいくつか提供されています。これらのプログラム及びプログラムのドキュメントは laus パッケージにあります。
プ ロセスが監査可能としてカーネルに自身を登録すると、監査機能がプロセスに対して行われます。 この登録は登録プロセスから開始したプロセスすべてに伝達されます。カーネル監査が有効になっているときはすべてのユーザーセッションの監査を確実に行う ように PAM に修正が加えられています。
監査デーモンはサービスとして実行することができ、chkconfig で設定することができます。監査デーモンはスタートアップで /etc/audit/ からいくつかのファイルを読み込みます。
/etc/audit/audit.conf の内容は監査記録をどこにどのように記述するか、ログが使用可能ディスク領域を超過した場合はどうするかを指定しています。/etc/audit/filesets.conf と /etc/audit/filters.conf はシステムコールが監査可能な場合にカーネルが確認するために使用するルールセットを指定します。監査デーモンは -r オプションを付けて実行することもでき、auditd にルールセットを再ロードしてカーネルに変更をすべて伝えるように指示します。詳細については、auditd(8)、audit-filters(5)、audit-conf(5)、audit-filesets(5) の man ページを参照してください。
こ のプログラムはコンテクスト自体及びプログラムがそのコマンドラインで指定した execs の監査を有効にします。一般的にはユーザーセッション部分ではないプロセスでの監査を有効にするのに使用します。詳細については、aurun(8) man ページを参照してください。
このプログラムは audit ログの内容を標準出力に書き込みます。また、必要とされる詳細レベルを指定するオプションもあります。詳細については aucat(1) man ページを参照してください。
SCSI-over-fiber ドライバ (zfcp と呼ばれる)を使うには、次のステップに従います。
1. /etc/modules.conf にある zfcp モジュールオプション情報に適当なデバイスマップを追加します
2. 適切なデバイスファイルを作ります
3. 適当なパーティションをディスクに作成します
4. mkinitrd を使って新しい initrd ファイルを生成します
5. zipl を実行してシステムブートローダを更新します
最初のステップはシステム設定に適切なデバイスマップを作成します。デバイスマップの正確な形式は次の変数により異なります。
· デバイスの数
· これらデバイスへのパス数
· これらデバイスで示される LUN の数
次のセクションでは異なるデバイスマップをいくつか説明します。
シングルデバイス/シングルパス/シングルLUN 用のデバイスマップ
次の /etc/modules.conf ファイルの例では、シングル SCSI LUN がカーネルに対して /dev/sda として示されています。0x4000 デバイスを使い、 対応 World-Wide Port Name (WWPN) 0x5105076300c213e9 経由で Linux カーネルに SCSI LUN 0x5010 を示しています。
alias eth0 qeth
options dasd_mod dasd=200-201
options scsi_mod max_scsi_luns=50
options zfcp 'map="0x4000 0x01:0x5105076300c213e9 0x0:0x5010000000000000;"'
zfcp モジュールをインストールすると、次のようなコンソールメッセージが sda として認識されるドライブを表示します。
zfcp: zfcp_module_init: driver version 0x3009d
Vendor: IBM Model: 2105F20 Rev: .674
Type: Direct-Access ANSI SCSI revision: 03
Attached scsi disk sda at scsi0, channel 0, id 1, lun 0
SCSI device sda: 7812544 512-byte hdwr sectors (4000 MB)
シングルデバイス/シングルパス/複数 LUN 用のデバイスマップ
次の /etc/modules.conf ファイルの例では、複数の SCSI LUN がシングルパスを使って示されています。
alias eth0 qeth
options dasd_mod dasd=200-201
options scsi_mod max_scsi_luns=50
options zfcp 'map="
0x4000 0x01:0x5105076300c213e9 0x0:0x5010000000000000;
0x4000 0x01:0x5105076300c213e9 0x1:0x5011000000000000;
0x4000 0x01:0x5105076300c213e9 0x2:0x5012000000000000 "'
上記のマップは読みやすい形式で示されていますが(改行を使用)、実際の zfcp オプションの行は改行がなくすべてが一行で示されます。
zfcp モジュールをインストールすると、次のようなコンソールメッセージが sdc を介して sda として認識されるドライブを表示します。
zfcp: zfcp_module_init: driver version 0x3009d
Vendor: IBM Model: 2105F20 Rev: .674
Type: Direct-Access ANSI SCSI revision: 03
Vendor: IBM Model: 2105F20 Rev: .674
Type: Direct-Access ANSI SCSI revision: 03
Vendor: IBM Model: 2105F20 Rev: .674
Type: Direct-Access ANSI SCSI revision: 03
Attached scsi disk sda at scsi0, channel 0, id 1, lun 0
Attached scsi disk sdb at scsi0, channel 0, id 1, lun 1
Attached scsi disk sdc at scsi0, channel 0, id 1, lun 2
SCSI device sda: 7812544 512-byte hdwr sectors (4000 MB)
SCSI device sdb: 7812544 512-byte hdwr sectors (4000 MB)
SCSI device sdc: 7812544 512-byte hdwr sectors (4000 MB)
複数デバイス/シングルパス/複数 LUN 用のデバイスマップ
次の /etc/modules.conf ファイルの例では、複数の SCSI LUN が複数のデバイスを使って示されています。このマップは 2 つの WWPN (0x5105076300c213e9 と 0x5105076300cb13e9) 経由で 3 つのデバイス(0x4000 から 0x4002まで)を使い 4 つのディスクを定義しています。
alias eth0 qeth
options dasd_mod dasd=200-201
options scsi_mod max_scsi_luns=50
options zfcp 'map="
0x4000 0x01:0x5105076300c213e9 0x0:0x5010000000000000;
0x4000 0x02:0x5105076300cb13e9 0x0:0x5011000000000000;
0x4001 0x01:0x5105076300c213e9 0x0:0x5012000000000000;
0x4002 0x01:0x5105076300c213e9 0x0:0x5013000000000000 "'
zfcp モジュールをインストールすると、次のようなコンソールメッセージが sdd 経由で sda として認識されるドライブを表示します。
zfcp: zfcp_module_init: driver version 0x3009d
Vendor: IBM Model: 2105F20 Rev: .674
Type: Direct-Access ANSI SCSI revision: 03
Vendor: IBM Model: 2105F20 Rev: .674
Type: Direct-Access ANSI SCSI revision: 03
Vendor: IBM Model: 2105F20 Rev: .674
Type: Direct-Access ANSI SCSI revision: 03
Vendor: IBM Model: 2105F20 Rev: .674
Type: Direct-Access ANSI SCSI revision: 03
Attached scsi disk sda at scsi0, channel 0, id 1, lun 0
Attached scsi disk sdb at scsi0, channel 0, id 2, lun 0
Attached scsi disk sdc at scsi1, channel 0, id 1, lun 0
Attached scsi disk sdd at scsi2, channel 0, id 1, lun 0
SCSI device sda: 7812544 512-byte hdwr sectors (4000 MB)
SCSI device sdb: 7812544 512-byte hdwr sectors (4000 MB)
SCSI device sdc: 7812544 512-byte hdwr sectors (4000 MB)
SCSI device sdd: 7812544 512-byte hdwr sectors (4000 MB)
次のステップでは必要なデバイスファイルを作成します。これは mknod コマンドから行います。例えば、1番目の SCSI ディスクのデバイスファイルを作成するには、次のコマンドを使います。
# mknod /dev/sda b 8 0
パーティションのアクセスには追加デバイスファイルが必要となる場合がありますので注意してください(例、sda1)。詳細については mknod の man ページを参照してください。
次に、ディスクにパーティションを作成することができるようになります。適切なサイズのパーティションをディスクに割り当てる他、このステップではデバイスマップとデバイスファイルが正しく作成されていることも確認できます。
(次の例では、parted(高性能で柔軟性のあるディスクパーティションユーティリティ)も使えますがfdiskユーティリティを使用しています。)
# fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 4000 MB, 4000022528 bytes
124 heads, 62 sectors/track, 1016 cylinders
Units = cylinders of 7688 * 512 = 3936256 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 900 3459569 83 Linux
/dev/sda2 901 1016 445904 fd Linux raid autodetect
Command (m for help):
ディスクがアクセス可能になりパーティションを適切なサイズに作成したら、IPL 時にディスクがアクセス可能であることを確認する必要があります。これを確認するには、新しい初期 ramdisk ("initrd" とよく呼ばれる)ファイルを作成する必要があります。mkinitrd コマンドを使います。
# mkinitrd -f --with=zfcp /boot/initrd-2.4.21-9.EL.img-zfcp 2.4.21-9.EL
システムの環境により、mkinitrdコマンドが追加モジュールを含むよう変更する必要があるかもしれません。例えば、以下の例では RAID レベル 0 をサポートするモジュールが含まれています。
# mkinitrd -f --with=zfcp --with=raid0 /boot/initrd-2.4.21-9.EL.img-zfcp 2.4.21-9.EL
次に、新しく作成した initrd ファイルをポイントするように、zipl.conf ファイルの ramdisk の値を変更します。
[defaultboot]
default=linux
target=/boot/
[linux]
image=/boot/vmlinuz-2.4.21-9.EL
ramdisk=/boot/initrd-2.4.21-9.EL.img-zfcp
parameters="root=LABEL=/"
最後に、zipl を実行してブートローダをインストールします。
# /sbin/zipl
zipl が完了したら、IPL を行って変更を確認します。
mdadm コマンドは本リリースノートをお読みになる方にとって聞きなれないコマンドかもしれません。しかし、raidtools パッケージを構成する各種ツールと同様、mdadm はマルチプルデバイスセットの管理関連に必要な機能すべてを行うことができます。このセクションでは、mdadmの使い方について説明します。
· RAID デバイスを作成します
· マルチパスデバイスを作成します
mdadm で RAID デバイスを作成します
RAID デバイスを作成するには、/etc/mdadm.conf ファイルを編集して適切な DEVICE と ARRAY の値を定義します。
DEVICE /dev/sd[abcd]1
ARRAY /dev/md0 devices=/dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1
この例では、DEVICE の行は次の SCSI デバイスを定義するのに元々のファイルネーム glob を使っています(詳細は glob(7) の man ページを参照)。
· /dev/sda1
· /dev/sdb1
· /dev/sdc1
· /dev/sdd1
ARRAY では、DEVICE 行で定義される SCSI デバイスから構成される RAID デバイス (/dev/md0) を定義しています。
RAID デバイスの作成または使用前は、/proc/mdstat ファイルはアクティブな RAID デバイスがないことを表示します。
Personalities :
read_ahead not set
Event: 0
unused devices: <none>
次に、上記の設定と mdadm コマンドを使用して、RAID 0 アレイを作成します。
mdadm -C /dev/md0 --level=raid0 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
Continue creating array? yes
mdadm: array /dev/md0 started.
作成が完了すると、RAID デバイスはステータス情報を提供するためにいつでも問い合わせを受けることができます。次の例ではmdadm --detail /dev/md0 コマンドからの出力を示しています。
/dev/md0:
Version : 00.90.00
Creation Time : Mon Mar 1 13:49:10 2004
Raid Level : raid0
Array Size : 15621632 (14.90 GiB 15.100 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Mon Mar 1 13:49:10 2004
State : dirty, no-errors
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Chunk Size : 64K
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
2 8 33 2 active sync /dev/sdc1
3 8 49 3 active sync /dev/sdd1
UUID : 25c0f2a1:e882dfc0:c0fe135e:6940d932
Events : 0.1
mdadm を使ってマルチパスデバイスを作成する
RAID アレイの作成の他にも、mdadm は個別の SCSI LUN (ディスクドライブ)への複数 I/O パスをサポートするハードウェアの利点を活用するために使用できます。マルチパスストレージの目的はハードウェア障害や個々のパスの飽和状態が起きた際に 継続的にデータを利用できるようにすることです。この設定には一般的な SCSI LUN (ディスクドライブ)にアクセスする複数パス(それぞれが独立した仮想コントローラとして動作する)が含まれているので、Linux カーネルは、それぞれパスを"通ると"各共有ドライブを検出します。つまり、特定の設定により /dev/sdaと呼ばれる SCSI LUN (ディスクドライブ)も /dev/sdb、/dev/sdc などとしてアクセス可能である場合があります。
I/O パスがフェールする、または飽和状態になる場合にもアクセスできるシングルデバイスを提供するために、mdadm はその --level オプションに対して追加のパラメータを含んでいます。このパラメータ — multipath — は、I/O パスがフェールすると Linux カーネル内の md 層が I/O 要求を別の経路へ再転送するよう指示します。
マルチパスデバイスを作成するには、/etc/mdadm.conf ファイルを編集して、ハードウェアの設定を反映する DEVICE と ARRAY の行の値を定義します。
前の RAID の例(/etc/mdadm.confで指定されている各デバイスが異なる物理ディスクドライブを表さなければならない)と異なり、このファイルの各デバイスは同じ共有ディスクドライブを指します。
マルチパスデバイスの作成に使用したコマンドは、RAID デバイスを作成するのに使用するものと似ています。違いは、RAID レベルパラメータが multipath パラメータになることです。
mdadm -C /dev/md0 --level=multipath --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
Continue creating array? yes
mdadm: array /dev/md0 started.
この例では、ハードウェアは 異なる経路で同じストレージにアクセスする 4つの独立した SCSI デバイスとして示される 1つの SCSI LUN から構成されています。マルチパスデバイス /dev/md0 を作成したら、/dev/md0 を参照する I/O の動作はすべて /dev/sda1、/dev/sdb1、/dev/sdc1、/dev/sdd1 のいずれかに転送されます(現在アクティブで使用可能なパスによる)。
/dev/md0 の設定は、 実際にそれがマルチパスデバイスであることを確認するために mdadm --detail /dev/md0 コマンドを使って詳細に調べることができます。
/dev/md0:
Version : 00.90.00
Creation Time : Tue Mar 2 10:56:37 2004
Raid Level : multipath
Array Size : 3905408 (3.72 GiB 3.100 GB)
Raid Devices : 1
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Tue Mar 2 10:56:37 2004
State : dirty, no-errors
Active Devices : 1
Working Devices : 4
Failed Devices : 0
Spare Devices : 3
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 17 1 spare /dev/sdb1
2 8 33 2 spare /dev/sdc1
3 8 1 3 spare /dev/sda1
UUID : 4b564608:fa01c716:550bd8ff:735d92dc
Events : 0.1
mdadm の別の機能としてデバイス(RAID アレイのメンバ、またはマルチパス設定でパスにする)が動作設定から強制的に削除されるようにする機能があります。次の例では、/dev/sda1 が障害ありのフラグが付き、一度削除されてから再び設定に戻されています。マルチパス設定では、これらの動作はそのときに行われている I/O のアクティビティには影響を与えないでしょう。
# mdadm /dev/md0 -f /dev/sda1
mdadm: set /dev/sda1 faulty in /dev/md0
# mdadm /dev/md0 -r /dev/sda1
mdadm: hot removed /dev/sda1
# mdadm /dev/md0 -a /dev/sda1
mdadm: hot added /dev/sda1
#
現在、Anaconda は SCSI デバイスへの Red Hat Enterprise Linux 3 直接インストールをサポートしていません。ただし、SCSI デバイスからの IPL 機能を求めているシステム管理者の方には、次のようなマニュアルでの手順が使えます。
ECKD DASD インストールから SCSI ディスクインストールまで Red Hat Enterprise Linux 3 Update 2 システム環境(z/VM ゲストとしてまたは LPAR で実行)の移行に関するステップバイステップのガイドです。これを実行するには、ECKD DASD にインストールされている Red Hat Enterprise Linux 3 で開始しなければなりません。また、空の SCSI ディスクへのアクセスも必要になります。
Red Hat Enterprise Linux 3 Update 2 で開始する必要があります。
(1) SCSI 及び zFCP デバイスドライバをロードします
ECKD インストールに root としてログインしてから対象 SCSI ディスクにアクセスする対応デバイスドライバをロードします。
まず、SCSI デバイスドライバを追加します。
# modprobe scsi_mod
次に、zfcp デバイスドライバを追加して SCSI ディスクの認識に必要なパラメータを指定します。
以下の番号は参考例です。システム設定に対する正しい番号を確認してください。
· zFCP アダプタのデバイス番号 (0x5480)
· ストレージデバイスの WWPN (World Wide Port Name)(0x5005076300cb93cb)
· SCSI ディスクの LUN (Logical Unit Number)(0x5123000000000000)
これらのパラメータを指定するときよく間違えるエラーとして、ゼロを省略してしまう、各番号を"0x"で始めるの忘れてしまうなどがあります。
# modprobe zfcp loglevel="0x00000000" map="0x54800x1:0x5005076300cb93cb 0x0:0x5123000000000000"
SCSI ディスクデバイスドライバを追加します。
# modprobe sd_mod
正しい SCSI ディスクを使っていることを必ず確認してください。/proc/scsi/zfcp/mapファイルにエントリは1つだけです。エントリが複数ある場合は、対応デバイスノードを使用しなければなりません。この例では、1番目に記載されているので/dev/sdaになります。ただし、SCSI ディスクが2番目に記載されている場合は、代わりに/dev/sdbを使わなければなりません。また、rmmod コマンドを使って3つのデバイスドライバをアンロードすることもできます。これにより、すべての /proc/scsi/zfc/map エントリが削除されます。1つのディスクだけでこれらを再びロードできるようにします。
# cat /proc/scsi/zfcp/map
0x5480 0x1:0x5005076300cb93cb 0x0:0x5123000000000000
ここで、/proc/ファイルシステムにある SCSIディスクを検出してください。
# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 01 Lun: 00
Vendor: IBM Model: 2105F20 Rev: 2.91
Type: Direct-Access ANSI SCSI revision: 03
(2) パーティション作成、フォーマット、マウント
fdisk コマンドを使って、SCSI ディスクにパーティションを1つ作成します。
(次の例では、parted(高性能で柔軟性のあるディスクパーティションユーティリティ)も使えますがfdiskユーティリティを使用しています。)
# fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 2000 MB, 2000027648 bytes
62 heads, 62 sectors/track, 1016 cylinders
Units = cylinders of 3844 * 512 = 1968128 bytes
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1016, default 1): <Enter>
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1016, default 1016): <Enter>
Using default value 1016
Command (m for help): p
Disk /dev/sda: 2000 MB, 2000027648 bytes
62 heads, 62 sectors/track, 1016 cylinders
Units = cylinders of 3844 * 512 = 1968128 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 1016 1952721 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
mke2fs コマンドを使って新しいパーティションに ext3 ファイルシステムを作成します。-j オプションは ext2 ファイルシステムから ext3 にするジャーナルを作成します。
デバイス全体(/dev/sda)ではなく、パーティション(/dev/sda1)を指定していることを確認します
# mke2fs -j /dev/sda1
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
244736 inodes, 1952721 blocks
97636 blocks (5.00%) reserved for the super user
First data block=1
239 block groups
8192 blocks per group, 8192 fragments per group
1024 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,
1024001
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
新しく作成したファイルシステムを /mnt にマウントします。mount コマンドに -t オプションを使ってファイルシステムを指定する必要があります。
# mount -t ext3 /dev/sda1 /mnt/
(3) ファイル構成を作成します
次に、ECKD DASD 上と同じファイル構成を作成してください。ディレクトリの作成から開始します。
# cd /mnt/
# mkdir mnt proc tmp
# ls -l
total 15
drwx------ 2 root root 12288 Jan 30 13:38 lost+found
drwxr-xr-x 2 root root 1024 Jan 30 13:41 mnt
drwxr-xr-x 2 root root 1024 Jan 30 13:41 proc
drwxr-xr-x 2 root root 1024 Jan 30 13:41 tmp
次に、その他すべてのファイルとディレクトリを SCSI ディスクにコピーします。
# cp -r --no-dereference --preserve=all --target-directory=/mnt \
> /bin /boot /dev /etc /home /initrd /lib /lib64 /misc /opt /root /sbin /usr /var
# ls
bin boot dev etc home initrd lib lib64 lost+found misc mnt opt
proc root sbin tmp usr var
次に、/tmp/ ディレクトリのパーミッションを変更します。 各ユーザーが /tmp/ ディレクトリに書き込みできるようになっていなければなりませんが、削除できるのは自分のファイルだけで他のユーザーのファイルは削除できないようになっていなければなりません。
# chmod 1777 /mnt/tmp/
# ls -l /mnt/ | grep tmp
drwxrwxrwt 2 root root 1024 Jan 30 13:41 tmp
(4) 設定ファイルを編集します。
パラメータファイルを編集して、新しい root ファイルシステムを指定します。これは SCSI ディスクのはずです。
# cat /mnt/boot/parmfile.1
root=LABEL=/1
# vi /mnt/boot/parmfile.1
# cat /mnt/boot/parmfile.1
root=/dev/sda1
/etc/fstabファイルを編集して root ファイルシステムデバイスをSCSI ディスク(例では/dev/sda1)に変更します。/boot/ ディレクトリも SCSI ディスクにコピーしているのでその行は必要性がなくなります。
この例の目的上、swap パーティションは含まれていません。
# cat /mnt/etc/fstab
LABEL=/1 / ext3 defaults 1 1
LABEL=/boot1 /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
/dev/dasda3 swap swap defaults 0 0
# vi /mnt/etc/fstab
# cat /mnt/etc/fstab
/dev/sda1 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
最後に、SCSI ディスクのマッピングを modules.conf 設定ファイルに追加する必要があります。このマッピングは、ブートしている間に zfcp デバイスドライバに渡され、SCSI root ファイルシステムをマウントするのに必要になります。タイプミスには十分注意を払ってください。
insmodパ ラメータ解析が行われる方法のため、パラメータ一覧全体を"'"(アポストロフィ)で囲む必要があります("単一引用符"と呼ばれることもある)。また、 二重引用符を使ってマッピングパラメータを囲む必要があります。次の例では、単一引用符と二重引用符の正しい使い方を示します。
# cat /mnt/etc/modules.conf
alias eth0 qeth
options dasd_mod dasd=5c31
# vi /mnt/etc/modules.conf
# cat /mnt/etc/modules.conf
alias eth0 qeth
options dasd_mod dasd=5c31
options zfcp 'map="0x5480 0x1:0x5005076300cb93cb 0x0:0x5123000000000000"'
(5) 新規の ramdisk を作成します。
次に、必要とされるデバイスドライバで新しい ramdisk を作成してください。例えば、zfcp デバイスドライバは root ファイルシステムをマウントするために必要とされ、SCSI ディスク上にあります。つまり、zfcp ドライバモジュールはブートプロセス中に SCSI ディスクから読み込まれなければなりませんが、FCP がすでにこのディスクにアクセスして root ファイルシステムをマウントするのに必要です — ramdisk はこのパラドックスを解決します。
マウントした SCSI ディスクの ramdisk を作成し、既存の DASD ramdisk を上書きしないようにするために(編集した modules.conf ファイルを使用して、オリジナルの ECKD DASD modules.conf は使用しないことの他にも)、change-root(または chroot) 環境を使用してください。これにより、/mnt/ディレクトリを一時的に root ディレクトリにします。
chrootコマンドを忘れないようにしてください。不適当な modules.conf ファイルを使うことにより、DASD ramdisk を変更し間違ったマッピングを使用してしまうことになりかねません。
# chroot /mnt/
正しい chroot コマンドを発行したか確認する方法のひとつとして、/mnt/ ディレクトリ内のファイルを探します。/mnt/ は SCSI ディスク上の /mnt/ ディレクトリに対応しているはずですから、ファイルは空のはずです。DASD のディレクトリにはアクセスできないはずです。
ここで、次のコマンドを使って新しい ramdisk を構築します。
# cd boot
# mkinitrd -v --with=scsi_mod --with=zfcp --with=sd_mod initrd-2.4.21-9.EL.scsi.img 2.4.21-9.EL
Looking for deps of module ide-disk
Looking for deps of module ext3 jbd
Looking for deps of module jbd
Looking for deps of module scsi_mod
Looking for deps of module zfcp scsi_mod qdio
Looking for deps of module scsi_mod
Looking for deps of module qdio
Looking for deps of module sd_mod scsi_mod
Looking for deps of module scsi_mod
Using modules: ./kernel/fs/jbd/jbd.o ./kernel/fs/ext3/ext3.o
./kernel/drivers/scsi/scsi_mod.o \
./kernel/drivers/s390/qdio.o ./kernel/drivers/s390/scsi/zfcp.o
./kernel/drivers/scsi/sd_mod.o
Using loopback device /dev/loop0
/sbin/nash -> /tmp/initrd.nUPsUg/bin/nash
/sbin/insmod.static -> /tmp/initrd.nUPsUg/bin/insmod
`/lib/modules/2.4.21-9.EL/./kernel/fs/jbd/jbd.o' ->
`/tmp/initrd.nUPsUg/lib/jbd.o'
`/lib/modules/2.4.21-9.EL/./kernel/fs/ext3/ext3.o' ->
`/tmp/initrd.nUPsUg/lib/ext3.o'
`/lib/modules/2.4.21-9.EL/./kernel/drivers/scsi/scsi_mod.o' ->
`/tmp/initrd.nUPsUg/lib/scsi_mod\
.o'
`/lib/modules/2.4.21-9.EL/./kernel/drivers/s390/qdio.o' ->
`/tmp/initrd.nUPsUg/lib/qdio.o'
`/lib/modules/2.4.21-9.EL/./kernel/drivers/s390/scsi/zfcp.o' ->
`/tmp/initrd.nUPsUg/lib/zfcp.o'
`/lib/modules/2.4.21-9.EL/./kernel/drivers/scsi/sd_mod.o' ->
`/tmp/initrd.nUPsUg/lib/sd_mod.o'
Loading module jbd
Loading module ext3
Loading module scsi_mod
Loading module qdio
Loading module zfcp with options 'map="0x5480 0x1:0x5005076300cb93cb 0x0:0x5123000000000000"'
Loading module sd_mod
mkinitrd の出力をチェックして、例で示すように zfcp デバイスドライバが存在し正しいオプションが(引用符も含めて)あるか確認します。すべてが正しいようなら、chroot 環境を終了します。
# exit
exit
(6) SCSI ディスクをブート可能にします。
SCSI ディスクは zipl ツールで準備してください。 この例では、zipl 設定ファイルの代わりに zipl コマンドラインオプションが使われています。
zipl コマンドを発行する前に、新しく構築した ramdisk を指定していること、SCSI ディスクにディレクトリを変更していることを確認してください。"-t ." オプションは現在のディレクトリが存在しているディスクにブートレコードを書き込みます。
# cd /mnt/boot/
# /root/s390-tools-1.2.4/zipl/src/zipl -V -t . -i vmlinuz-2.4.21-9.EL -p parmfile.1 -r initrd-2.4.21-9.EL.scsi.img
Target device information
Device..........................: 08:00
Partition.......................: 08:01
Device name.....................: sda
Type............................: disk partition
Disk layout.....................: SCSI
Geometry - heads................: 62
Geometry - sectors..............: 62
Geometry - cylinders............: 1016
Geometry - start................: 62
File system block size..........: 1024
Physical block size.............: 512
Device size in physical blocks..: 3905442
Building bootmap './bootmap'
Adding IPL section
kernel image......: vmlinuz-2.4.21-9.EL at 0x10000
kernel parmline...: 'root=/dev/sda1 ' at 0x1000
initial ramdisk...: initrd-2.4.21-9.EL.scsi.img at 0x800000
Preparing boot device: sda.
Detected SCSI PCBIOS disk layout.
Writing SCSI master boot record.
Syncing disks...
Done.
zipl コマンドからの出力の SCSI に対するリファレンスに注意してください。発行したコマンドが正しいことを確認できます。
(7) クリーンアップ
SCSI ディスクの準備手順はこれで終了です。SCSI ディスクをアンマウントしてデバイスドライバを削除します、これは必要なくなります。それからECKD Linux 環境をシャットダウンします。
# cd
# umount /mnt/
# rmmod sd_mod
# rmmod zfcp
# rmmod scsi_mod
# halt
(8) IPL
ここでは z/VM 作動環境下での IPL の手順についてのみ説明しています。
まず、CMS セッションにログインし FCP アダプタを VM ゲストに接続します。
att 5480 *
00: FCP 5480 ATTACHED TO LINUX17 5480
Ready; T=0.01/0.01 14:39:52
q v fcp
00: FCP 5480 ON FCP 5480 CHPID 50 SUBCHANNEL = 000E
00: 5480 QDIO-ELIGIBLE QIOASSIST-ELIGIBLE
Ready; T=0.01/0.01 14:39:57
これで、アダプタが利用可能になります。SCSI IPL に必要とされる他のパラメータは次に指定されます。これは新しい set loaddev CP コマンド (z/VM 4.4) を使って行います。このコマンドには特殊な構文があるので注意してください。例えば、最初の数字8字の後は空白になっている必要があります。詳細については z/VM のドキュメントを参照してください。
set loaddev port 50050763 00cb93cb lun 51230000 00000000
Ready; T=0.01/0.01 14:36:13
q loaddev
PORTNAME 50050763 00CB93CB LUN 51230000 00000000 BOOTPROG 0
BR_LBA 00000000 00000000
Ready; T=0.01/0.01 14:36:17
IPL を行う最後のステップは、FCP アダプタをパラメータとして使います。
i 5480
00: HCPLDI2816I Acquiring the machine loader from the processor controller.
00: HCPLDI2817I Load completed from the processor controller.
00: HCPLDI2817I Now starting machine loader version 0001.
01: HCPGSP2630I The virtual machine is placed in CP mode due to a SIGP stop and store status from CPU 00.
02: HCPGSP2630I The virtual machine is placed in CP mode due to a SIGP stop and store status from CPU 00.
03: HCPGSP2630I The virtual machine is placed in CP mode due to a SIGP stop and store status from CPU 00.
00: MLOEVL012I: Machine loader up and running (version 0.13).
00: MLOPDM003I: Machine loader finished, moving data to final storage location.
Linux version 2.4.21-9.EL (bhcompile@rimmer.z900.redhat.com) (gcc version
3.2.3
20030502 (Red Hat Linux 3.2.3-26)) #1 SMP Thu Jan 8 17:26:32 EST 2004
We are running under VM (64 bit mode)
On node 0 totalpages: 65536
zone(0): 65536 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/sda1
Highest subchannel number detected (hex) : 000E
Calibrating delay loop... 2241.33 BogoMIPS
Memory: 245936k/262144k available (2371k kernel code, 0k reserved, 1003k data, 3 20k init)
これで、Linux 環境が正常に起動するはずです。最後に、Linux にログインしてroot ファイルシステムが実際に SCSI ディスクにあるか確認します。
> ssh root@53v15g17
root@53v15g17's password: <password>
Last login: Mon Feb 16 14:37:16 2004
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 1.9G 1.4G 387M 79% /
(9) ヒント
準備が整った SCSI ディスクは、異なるアダプタデバイス番号 (devno) や WWPN を使って IPL することはできません。これらのパラメータは ramdisk にあり、root ファイルシステムをマウントするのに使用されるからです。"オリジナルに準備したパス" が使用できないと、SCSI IPL 自身が Linux 環境を完了して、カーネルパニックで終了します。これは ECKD DASD 上での動作と同じです。
こうした状況になった場合、次のステップが役に立つかもしれません。
(a) SCSI ディスクを ECKD DASD Linux の /mnt/ にマウントする
(b) /mnt/etc/modules.conf のマッピングを変更する (新しい devno または WWPN を使う)
(c) ramdisk を再構築する(前述したように、必ずchroot と mkinitrd を使う)
(d) ブート設定を SCSI ディスクに書き直す (前述したように、zipl を使う)
このセクションは Red Hat Enterprise Linux 3 Update 2 カーネルに関連した事項について説明しています。
Red Hat Enterprise Linux 3 Update 2 には Linux カーネルタイマー割り込みが処理される方法への修正が含まれています。通常、ハードウェアのタイマーは一定の割合で周期的な割り込みを生成するようセット されています(ほとんどのアーキテクチャで1秒に100回)。こうした周期的なタイマー割り込みはカーネルによって使用されプロセッサのスケジューリン グ、アカウンティング、システムのアップタイム管理、など各種の内部ハウスキーピングタスクをスケジュールします。
タイマーベースの方法は1つのカーネルコピーのみが稼働しているシステム環境ではうまく機能しますが、たくさんのカーネルコピーが z/VM® ゲストとして単一システム上で稼働していると余分なオーバーヘッドの要因になります。こうした場合、1000のカーネルコピーがそれぞれ膨大な割り込みを1秒間に生成することで過剰なシステムオーバーヘッドとなります。
従って、Red Hat Enterprise Linux 3 Update 2 では周期的なタイマー割り込みをオフにする機能を含むようになりました。/proc/ ファイルシステムから実行できます。周期的なタイマー割り込みを停止するには、次のコマンドを発行します。
echo "0" > /proc/sys/kernel/hz_timer
周期的なタイマー割り込みをオンにするには、次のコマンドを発行します。
echo "1" > /proc/sys/kernel/hz_timer
デフォルトでは、周期的なタイマー割り込みは機能するようになっています。
これはブート時にセットすることもできます。次の行を /etc/sysctl.conf に追加して周期的なタイマー割り込みを停止します。
kernel.hz_timer = 0
周期的なタイマー割り込みを停止することでシステムアカウンティングツールでの基本的な仮定に違反することになるかもしれません。システムアカウンティン グ関連の誤動作があった場合は、周期的なタイマー割り込みをオンにすることで誤動作がなくなることを確認してから、バグをhttp://bugzilla.redhat.com/で送信するか(付属ツールとして)、そのツールのベンダ(他社ツールの場合)にお問い合わせください。