5.9. Red Hat Enterprise Linux 固有の情報

いままでのシステム管理経験により、Red Hat Enterprise Linux 環境下でのストレージ管理についてほぼ理解している方もいれば不慣れな方もいると思います。このセクションではRed Hat Enterprise Linux に固有のストレージ管理について説明しています。

5.9.1. Device Naming Convention

すべての Linux 系オペレーティングシステムと同様、Red Hat Enterprise Linux もすべてのハードウェアにアクセスするためにデバイスファイルを使用しています(ディスクドライブも含む)。しかし、接続しているストレージデバイス用の Naming Convention (名前付け規則)は各種 Linux と Linux 系実装とのあいだでは多少異なります。次にこうしたデバイスファイルが Red Hat Enterprise Linux ではどのように名前付けされるかを示します。

注記注記
 

Red Hat Enterprise Linux 環境化のデバイス名はブート時に確定されます。

従って、システムのハードウェア構成への変更が行なわれるとシステムのブート時にデバイス名が変更されることになります。このため、システム設定ファイル内の参照デバイス名のいずれかが正しく更新されていないと問題が生じる場合があります。

5.9.1.1. デバイスファイル

Red Hat Enterprise Linux 環境下では、ディスクドライブのデバイスファイルは /dev/ ディレクトリにあります。各ファイル名の構成は実際のハードウェア形態によりいくつかあり、その設定にもよります。重要な点は以下の通りです。

  • デバイスタイプ

  • ユニット

  • パーティション

5.9.1.1.1. デバイスタイプ

デバイス名の最初の 2 文字はデバイスの特定タイプを指しています。ディスクドライブなら一般的なデバイスタイプが 2 種類あります。

  • sd — このデバイスは SCSI ベースです。

  • hd — このデバイスは ATA ベースです。

ATA 及び SCSI についての詳細は 項5.3.2 を参照してください。

5.9.1.1.2. ユニット

2 文字のデバイスタイプの後ろに特定ユニットを示す 1 文字または 2 文字が続きます。ユニット指示子は 1 番目のユニットの場合 "a" から、2 番目のユニットなら "b" から始まるという順序です。従って、システム上の 1 番目のハードドライブは hda または sda と表されているかもしれません。

ヒントヒント
 

SCSI には、SCSI デバイスが接続されている 26 台以上のシステムをサポートするために 2 番目の追加ユニット文字を伴うことで多数のデバイスに対応する機能があります。従って、システムにある SCSI ハードドライブの最初の 26 台は sda から sdz とという名前が付き、次の26 台は sdaa から sdazというように続きます。

5.9.1.1.3. パーティション

デバイスファイル名の最後の部分はデバイス上の特定パーティションを示す番号で、"1." から始まります。番号は 1 桁ないしは 2 桁で、特定のデバイスに書き込まれているパーティションの数によります。デバイスファイル名の構成がわかるとそれぞれが示すものが何であるのか理解しやすくなります。いくつか例をあげます。

  • /dev/hda1 — 1 番目の ATA ドライブにある 1 番目のパーティション

  • /dev/sdb12 — 2 番目の SCSI ドライブにある 12 番目のパーティション

  • /dev/sdad4 — 13 番目の SCSI ドライブにある 4 番目のパーティション

5.9.1.1.4. すべてのデバイスへのアクセス

特定のパーティションだけではなくデバイス全体にアクセスする必要が生じる場合があります。通常、デバイスにパーティションが作成されていなかったり、デバイスが標準パーティションをサポートしていない (CD-ROM ドライブなど)場合に必要となります。こうした場合にはパーティション番号を省略します。

  • /dev/hdc — 3 番目の ATA デバイス全体

  • /dev/sdb — 2 番目の SCSI デバイス全体

ただし、ほとんどのディスクドライブはパーティションを使用しています(Red Hat Enterprise Linux 環境下でのパーティション作成についての詳細は 項5.9.6.1を参照してください)。

5.9.1.2. デバイスファイル名の代替

大容量ストレージデバイスの追加や削除は既存デバイスのデバイスファイル名が変更される原因となる場合があります。システムが再起動した時にストレージが使用できなくなる危険性があります。この問題の要因となる一連の事象例を示します。

  1. システム管理者が新しい SCSI コントローラを追加したのでシステムに新しい SCSI ドライブが 2 台追加できるようになりました(既存の SCSI バスは完全に満杯状態)

  2. 元の SCSI ドライブ(そのバス上の 1 番目のドライブを含む、/dev/sda)に変更はまったくありません

  3. システムを起動しました

  4. 新しいコントローラ上の 1 番目の SCSI ドライブが /dev/sda になるため、以前は /dev/sda という名前の SCSI ドライブが新しい名前になります

理論的には恐ろしい問題に見えますが、実際には滅多に起こりません。滅多に起こらない理由が多くあります。まず、この種のハードウェア再構成はあまり行なわれません。次に、恐らくシステム管理者が必要な変更を行なうためのダウンタイムをスケジュールしています。ダウンタイムは行なわれる作業が予定時間の枠を越えないよう十分注意して計画する必要があります。十分に注意して計画することでデバイス名の変更に関連する問題に気づくという側面的な利点もあります。

しかし、この問題が発生する可能性がある企業やシステム構成もあります。ニーズに合わせてストレージの再構成を頻繁に必要とする機関はダウンタイムなしに再構成できるハードウェアを使用する場合が多いためです。このような hotpluggable ハードウェアを使用するとストレージの追加や削除が簡単に行なえます。しかし、こうした状況ではデバイスの名前付けに関する点が問題となる可能性があります。Red Hat Enterprise Linux にはデバイス名の変更の問題を軽減する機能が含まれています。

5.9.1.2.1. ファイルシステムラベル

ファイルシステム(詳細については項5.9.2で解説)の中にはラベルを保存する機能があるものがあります — ファイルシステムが格納しているデータを独自に認識するのに使用できる文字列。ラベルはファイルシステムをマウントする際に使用できるため、デバイス名を使用する必要がなくなります。

ファイルシステムラベル機能は優れていますが、システム全体で固有でなければなりません。同じラベルを使用するファイルシステムが複数あると目的のファイルシステムにアクセスができないことがあります。また、ファイルシステム(例、何らかのデータベース)を使用しないシステム設定にはファイルシステムラベルは機能しませんので注意してください。

5.9.1.2.2. devlabel を使用する

devlabel ソフトウェアはファイルシステムラベルとは異なる方法でデバイスの名前付け問題の対処を試みます。devlabel ソフトウェアはシステムが再起動すると(また、hotpluggable デバイスが挿入、削除されると)常に Red Hat Enterprise Linux によって起動されます。

devlabel が起動すると、その設定ファイル (/etc/sysconfig/devlabel) を読み込み設定されたデバイスの一覧を取得します。一覧にある各デバイスにはシンボリックリンク(システム管理者が選択する)とそのデバイスの UUID (Universal Unique IDentifier) があります。

devlabel コマンドはシンボリックリンクが常に初めに指定したデバイスを必ず参照するようにします — そのデバイス名が変更された場合も。このようにして、システム管理者はシステムが /dev/sda12 ではなく /dev/projdisk を参照するよう設定することができます。例えば、

UUID は直接デバイスから取得されるため、devlabel は合致する UUID のみを検索しなければならないのでシンボリックリンクを正しく更新します。

devlabel についての詳細は、Red Hat Enterprise Linux システム管理ガイド を参照してください。

5.9.2. ファイルシステムの基本

Red Hat Enterprise Linux には各種のポピュラーなファイルシステムのサポートが含まれていますので、他のオペレーティングシステムのファイルシステムに簡単にアクセスできます。

特に、デュアルブートで使用する場合やあるオペレーティングシステムから別のオペレーティングシステムにファイルを移行する時に役に立ちます。

サポートされているファイルシステムには次のようなものがあります(一部のみ)。

次のセクションではポピュラーなファイルシステムについて詳しく見ていきます。

5.9.2.1. EXT2

最近まで ext2 ファイルシステムは Linux 用の標準ファイルシステムでした。このように、広範囲なテストが重ねられ、今日使用されている中でも堅固なファイルシステムのひとつであると考えられています。

しかし、完璧なファイルシステムはなく、ext2 も例外ではありません。よく報告される問題のひとつは、システムが正常にシャットダウンしなかった場合に冗長なファイルシステムの完全性チェックが行なわれなければなりません。これは ext2 固有ではありませんが、ext2 の普及が、より大きいディスクドライブの登場とあいまって、ファイルシステムの完全性チェックにかかる時間はどんどん長くなり、何か手を打たねばならなくなってきました。

次のセクションでは Red Hat Enterprise Linux 環境下においてこの問題を解決するためにとれる手段を説明しています。

5.9.2.2. EXT3

ext3 ファイルシステムは ext2 の試験済み ext2 コードベースにジャーナリング機能を付加することにより構築しています。ジャーナリングファイルシステムとして、ext3 は常にファイルシステムを整合した状態に保つため、冗長なファイルシステムの完全性チェックが必要なくなりました。

これはファイルシステムの変更をすべて on-disk ジャーナルに書き込むことによって行なわれます。それから、定期的にフラッシュされます。予期していないシステムイベントが発生した場合(停電、システムクラッシュなど)、ファイルシステムを使用できるようにする前に行なわれる必要がある動作はジャーナルの内容を処理することだけです。これにかかる時間はほとんどの場合 1 秒ほどです。

ext3 の on-disk データ形式は ext2 をベースとしているため、ext2 ファイルシステムの読み込み及び書き込みができるシステムならext3 ファイルシステムにアクセスすることができます(ただし、ジャーナリング機能は利用できない)。いくつかのシステムは ext3 を使用しているのに他のいくつかは ext2 をまだ使用しているといった企業などにはかなり役に立つかもしれません。

5.9.2.3. ISO 9660

1987 年に International Organization for Standardization (ISO) が標準 9660 をリリースしました。ISO 9660 は CD-ROM 上でファイルが表示される方法を定義しています。Red Hat Enterprise Linux のシステム管理者なら ISO 9660 フォーマットデータは次のようなところで見られます。

  • CD-ROM

  • 完全な ISO 9660 ファイルシステムを含んでいるファイル(通常、ISO imagesと呼ばれている)、つまり CD-R や CD-RW メディアに書き込まれるファイル

基本的な ISO 9660 標準は、特に最新のファイルシステムと比べるとかなり機能的に制限されています。ファイル名は最大 8 文字の長さまでで拡張子は 3 文字以内です。しかし、標準に対するさまざまな拡張が長年に渡りポピュラーになってきました。

  • Rock Ridge — ISO 9660 で未定義のフィールドを使用して大文字と小文字を混合して使える冗長なファイル名、シンボリックリンク、nested ディレクトリ(ディレクトリ自体が別のディレクトリを含むことができるディレクトリ)などの機能に対するサポートを提供しています。

  • Joliet — ISO 9660 標準の拡張です。Microsoft によって開発され CD-ROM に冗長なファイル名を含ませることができます。ユニコード文字セットを使用しています。

Red Hat Enterprise Linux は Rock Ridge 拡張及び Joliet 拡張の両方を使用して ISO 9660 ファイルシステムを正しく解釈することができます。

5.9.2.4. MSDOS

Red Hat Enterprise Linux は他のオペレーティングシステムからのファイルシステムもサポートしています。msdos ファイルシステムの名前が示す通り、このファイルシステムをサポートしている本来のオペレーティングシステムは Microsoft 社の MS-DOS® でした。MS-DOS 同様、msdos ファイルシステムにアクセスする Red Hat Enterprise Linux システムは 8.3 ファイル名に制限されます。同様に、パーミッションや所有権など他のファイル属性も変更できません。しかし、ファイル交換の観点からすれば、msdos ファイルシステムは作業を行なう分には十分です。

5.9.2.5. VFAT

vfat ファイルシステムが最初に使用されたのは Microsoft 社の Windows® 95 オペレーティングシステムです。msdos ファイルシステムの改良で、vfat ファイルシステム上のファイル名は msdos の 8.3 より冗長にすることができます。ただし、パーミッション及び所有権はやはり変更できません。

5.9.3. ファイルシステムをマウントする

いずれのファイルシステムにアクセスする場合も、まずファイルシステムを mount する必要があります。ファイルシステムをマウントすることにより、Red Hat Enterprise Linux に特定のパーティション(特定のデバイス上にある)をシステムで使用できるよう指示します。同様に、特定のファイルシステムへアクセスする必要がなくなったときはそのファイルシステムを umount する必要があります。

いずれのファイルシステムをマウントする場合も 2 つの情報が指定されなければなりません。

次のセクションではマウントポイントについて詳しく説明します。

5.9.3.1. マウントポイント

Linux (Linux 系)オペレーティングシステムを使用したことがなければ、マウントポイントの概念が最初はよくわからないでしょう。しかし、マウントポイントは開発ファイルシステムを管理する最もパワフルで柔軟性のある方法のひとつです。他の多くのオペレーティングシステムでは、ファイルの詳細にファイル名、ファイルが配置されている特定ディレクトリを認識する何らかの方法、ファイルがある物理的なデバイスを認識する方法が含まれています。

Red Hat Enterprise Linux では少しだけ異なる手段を用いています。他のオペレーティングシステム同様、ファイルの詳細にはファイル名、ファイルが配置されているディレクトリがありますが、明示的なデバイス指定子がありません。

これが欠落している理由はマウントポイントになります。他のオペレーティングシステムでは、各パーティション毎 1 つのディレクトリ階層になっています。しかし、Linux 系システムでは、システム全体でディレクトリ階層は 1 つ だけになり、この 1 階層が複数のパーティションにまたがっています。ここで重要になるのがマウントポイントです。ファイルシステムがマウントされると、そのファイルシステムは指定したマウントポイント配下で 1 組のサブディレクトリとして利用できるようになります。

実際にはこの欠落した部分が長所となります。つまり、シームレスな Linux ファイルシステムの展開が可能になり、すべてのディレクトリが追加ディスクスペース用のマウントポイントして動作することができるようになります。

例えば、root ディレクトリ配下に foo ディレクトリを格納する Red Hat Enterprise Linux システム があるとします。このディレクトリへの完全なパスは /foo/ になります。次に、このシステムにマウントしようとしているパーティションがあり、そのパーティションのマウントポイントが /foo/ になると仮定します。そのパーティションがトップレベルのディレクトリに bar.txt という名前でファイルを持っている場合、パーティションがマウントされると次のようなファイルの詳細を持つファイルにアクセスすることができます。

/foo/bar.txt

つまり、このパーティションがマウントされると、/foo/ ディレクトリ配下にあり読み込みまたは書き込みされるファイルは、このパーティションから読み込みまたはこのパーティションへ書き込みされることになります。

多くの Red Hat Enterprise Linux システムでよく使用されるマウントポイントは /home/ です — 全ユーザーのアカウント用ログインディレクトリは通常 /home/ 配下に置かれるため。/home/ がマウントポイントとして使用されると、すべてのユーザーのファイルは専用パーティションに書き込まれるので、オペレーティングシステムのファイルシステムを埋めてしまうことはありません。

ヒントヒント
 

マウントポイントは単純に普通のディレクトリのため、後日にマウントポイントとして使用するディレクトリにファイルを書き込むことができます。ディレクトリをマウントポイントとして使用すると、元々このディレクトリにあったこのファイルはどうなるでしょう?

パーティションがこのディレクトリにマウントされている限り、このファイルにはアクセスできません(マウントしているファイルシステムがこのディレクトリ内容の場所に現れます)。しかし、このファイルが破損することはなくパーティションをアンマウントすればアクセスできるようになります。

5.9.3.2. マウントされている内容を表示

ディスクスペースをマウント、アンマウントするのに加え、何がマウントされているか見ることができます。これを行なうのにいくつかの方法があります。

  • /etc/mtab を表示する

  • /proc/mounts を表示する

  • df コマンドを発行する

5.9.3.2.1. /etc/mtab を表示する

/etc/mtab ファイルは通常のファイルで、ファイルシステムがマウントまたはアンマウントされると常に mount プログラムによって更新されます。次は /etc/mtab の例です。

/dev/sda3 / ext3 rw 0 0
none /proc proc rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/sda1 /boot ext3 rw 0 0
none /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/sda4 /home ext3 rw 0 0
none /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0

注記注記
 

/etc/mtab ファイルは現在マウントされているファイルシステムの状態表示に使用することだけを目的としています。手動で編集しないでください。

それぞれの行は現在マウントされているファイルシステムを表示し、次のフィールドを含んでいます(左から右の順)。

  • デバイスの詳細

  • マウントポイント

  • ファイルシステムタイプ

  • ファイルシステムが読み取り専用 (ro) でマウントされているのか、読み取り/書き込み (rw) でマウントされているのか、またその他のマウントポイント

  • ゼロが入っている 2 つの未使用フィールド(/etc/fstab [1]との互換性)

5.9.3.2.2. /proc/mounts を表示する

/proc/mounts ファイルは proc 仮想ファイルシステムの一部です。/proc/ 配下にある他のファイルと同様、mounts "ファイル"は Red Hat Enterprise Linux システムのどのディスクドライブにも存在しません。

実際にはファイルでもありません。ファイル形式で見ることができる (Linux カーネルによる)システム状態の表示です。

cat /proc/mounts コマンドを使ってマウントしている全ファイルシステムの状態を見ることができます。

rootfs / rootfs rw 0 0
/dev/root / ext3 rw 0 0
/proc /proc proc rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/sda1 /boot ext3 rw 0 0
none /dev/pts devpts rw 0 0
/dev/sda4 /home ext3 rw 0 0
none /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0

上記の例からわかるように、/proc/mounts の形式は/etc/mtab によく似ています。ディスクドライブとは関係のないファイルシステムがいくつかあります。/proc/ ファイルシステム自身(及び /proc/ 配下に 別のファイルシステムが 2 つ)、pseudo-ttys、共有メモリです。

この形式は明らかにユーザーフレンドリーとは言えませんが、カーネルがこの情報を提供しているため、Red Hat Enterprise Linux システムに何がマウントされているのか 100% 確実に知るには /proc/mounts を見るのが最善の方法です。他の方法は、まれではありますが正確ではないことがあります。

しかし、ほとんどの場合にもう少し読みやすい(また、便利な)出力のコマンドを使うことの方が多いでしょう。次のセクションではそのコマンドについて説明します。

5.9.3.2.3. df コマンドを発行する

/etc/mtab または /proc/mounts を使うと現在マウントされているファイルシステムがわかりますが、それだけです。多くの場合に現在マウントされているファイルシステムについて他に必要となることがひとつあります — それぞれの自由領域量です。

これには、df コマンドを使うことができます。次に、df からの出力例を示します。

Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/sda3              8428196   4280980   3719084  54% /
/dev/sda1               124427     18815     99188  16% /boot
/dev/sda4              8428196   4094232   3905832  52% /home
none                    644600         0    644600   0% /dev/shm

/etc/mtab/proc/mount との違いは明らかです。

  • 読みやすいヘッダーが表示されている

  • 共有メモリファイルシステムの例外を除いて、ディスクベースのファイルシステムのみ表示される

  • 合計サイズ、使用済みの領域、自由領域、使用率が表示される

すべてのシステム管理者は結局、自由ディスク領域の不足したシステムに対処しなければならないわけですから、最後の点が恐らく最も重要になります。df を使うと、問題がどこにあるのかが非常に簡単にわかります。

5.9.4. Red Hat Enterprise Linux 環境下でネットワークアクセスが可能なストレージ

Red Hat Enterprise Linux 環境下でネットワークアクセスが可能なストレージの実装には主に 2 通りの技術があります。

次のセクションではこれらの技術について説明しています。

5.9.4.1. NFS

その名の通り、 Network File System (一般的には NFS と呼ばれる)はネットワーク接続経由でアクセスできるファイルシステムのことです。他のファイルシステムでは、ストレージデバイスが直接ローカルシステムに接続されている必要がありますが、NFSならその必要がありません。集中化ファイルシステムサーバから完全なディスクレスコンピュータシステムまでさまざまな設定が可能となります。

しかし、他のファイルシステムとは異なり、NFS は特定の on-disk 形式を命令しません。その代わり、サーバのオペレーティングシステムのネイティブなファイルシステムサポートに依存してローカルディスクドライブへの実際の I/O を管理します。次に NFS はファイルシステムを NFS 互換のクライアントを実行しているオペレーティングシステムに対して利用できるようにします。

主に Linux 及び UNIX に実装されますが、NFS クライアント実装が他のオペレーティングシステムに存在することに注意してください、NFS はさまざまに異なるプラットフォームとのファイル共有に効果的に機能する技術となります。

NFS サーバにより使用可能となるファイルシステムは /etc/exports設定ファイルで管理されています。詳細については exports(5)の man ページ及び Red Hat Enterprise Linux システム管理ガイド を参照してください。

5.9.4.2. SMB

SMB は Server Message Block の略で、長年 Microsoft 社製の各種オペレーティングシステムで使用されているコミュニケーションプロトコルの名前です。SMB でネットワークを介したストレージの共有が可能になります。以前は基本となるトランスポートには NetBEUI が使用されていましたが、今日では TCP/IP がよく使用されるようになっています。

Red Hat Enterprise Linux は Samba サーバプログラムを介して SMB をサポートしています。Red Hat Enterprise Linux システム管理ガイドに Samba 設定に関する情報があります。

5.9.5. /etc/fstab でファイルシステムを自動的にマウントする

Red Hat Enterprise Linux システムを新規でインストールすると、インストール中に定義、作成したディスクパーティションはすべてシステムが起動すると自動的にマウントされるよう設定されています。しかし、インストール完了後にシステムに補助ディスクドライブを追加するとどうなるでしょうか。システムは補助ディスクドライブを自動的にマウントするようには設定されていなかったため自動的にはマウントされません。しかし、これは簡単に変更できます。

/etc/fstab ファイルで変更します。このファイルはシステムの起動時にマウントするファイルシステムを管理するのに使用される他、適宜に手動でマウントされる可能性がある他のファイルシステムのデフォルト値を提供します。次が /etc/fstab ファイルの例です。

LABEL=/              /                    ext3    defaults        1 1
/dev/sda1            /boot                ext3    defaults        1 2
/dev/cdrom           /mnt/cdrom           iso9660 noauto,owner,kudzu,ro 0 0
/dev/homedisk        /home                ext3    defaults        1 2
/dev/sda2            swap                 swap    defaults        0 0

各行がそれぞれのファイルシステムを示し、次のようなフィールドがあります。

5.9.6. ストレージの追加/削除

ストレージの追加、削除に要される手順のほとんどはシステムのソフトウェアよりもハードウェアに依存しますが、ご使用のオペレーティング環境に固有の手順があります。このセクションでは Red Hat Enterprise Linux に固有となるストレージの追加と削除に必要な手順を説明します。

5.9.6.1. ストレージを追加する

Red Hat Enterprise Linux システムにストレージを追加する手順は比較的簡単です。次に Red Hat Enterprise Linux 固有となる手順を示します。

  • パーティションを作成する

  • パーティションをフォーマット化する

  • /etc/fstab を更新する

次のセクションでは各手順を詳しく説明します。

5.9.6.1.1. パーティションを作成する

ディスクドライブのインストールが完了したら、Red Hat Enterprise Linux がスペースを使用できるよう 1 つまたは複数のパーティションを作成します。

これを行なうのにいくつか方法があります。

  • コマンドライン fdisk ユーティリティプログラムを使用

  • parted を使用、別のコマンドラインユーティリティプログラム

ツールが違っても基本的な手順は同じです。次の例では、fdisk を使ってこれらの手順を行なうために必要なコマンドを示します。

  1. 新しいディスクドライブを選択します(ドライブ名は 項5.9.1 で概説されているデバイスの名前付け規則に従って定義)。fdisk から始めてデバイス名を含ませます。

    fdisk /dev/hda
                    
  2. ディスクドライブのパーティションテーブルを表示させ、パーティション作成しようとしているディスクドライブが実際に正しいものであるか確認します。例では、p を使って fdisk にパーティションテーブルを表示させています。

    Command (m for help): p
    
    Disk /dev/hda: 255 heads, 63 sectors, 1244 cylinders
    Units = cylinders of 16065 * 512 bytes
    
       Device Boot    Start       End    Blocks   Id  System
    /dev/hda1   *         1        17    136521   83  Linux
    /dev/hda2            18        83    530145   82  Linux swap
    /dev/hda3            84       475   3148740   83  Linux
    /dev/hda4           476      1244   6176992+  83  Linux
                    
  3. 不必要なパーティションが新しいディスクドライブに存在している場合は削除します。fdiskd コマンドを使います。

    Command (m for help): d
    Partition number (1-4): 1

    この手順をディスクドライブにある不必要なパーティションすべてに繰り返します。

  4. 新しいパーティションを作成します。目的のサイズとファイルシステムタイプを必ず指定します。fdisk を使う場合、2 つの手順にわかれます。まず、パーティションを作成します (n コマンドを使用)。

    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    
    p 
    
    Partition number (1-4): 1
    First cylinder (1-767): 1
    Last cylinder or +size or +sizeM or +sizeK: +512M 
                    

    次に、ファイルシステムタイプを設定します (t コマンドを使用)。

    Command (m for help): t
    Partition number (1-4): 1
    Hex code (type L to list codes): 82
                    

    パーティションタイプ 82 は Linux swap パーティションです。

  5. 変更を保存してからパーティション作成プログラムを終了します。fdisk の場合は w コマンドを使います。

    Command (m for help): w
                    

警告警告
 

新しいディスクドライブにパーティションを作成するときは、パーティションを作成しようとしているディスクドライブが正しいドライブであることを必ず確認してください。これを怠ると、すでに使用しているディスクドライブにうっかりパーティションを作成してしまい、データを喪失してしまう恐れがあります。

また、最適なパーティションサイズを決定するよう心がけてください。サイズについては常に十分な注意を払います。後でサイズを変更することはかなり難しいため、ここで多少時間をかけても最適なサイズを決定しておきます。

5.9.6.1.2. パーティションをフォーマット化する

Red Hat Enterprise Linux でのパーティションのフォーマット化には mkfs ユーティリティプログラムを使用します。しかし、mkfs では実際にはディスクドライブにファイルシステム固有の情報を書き込む作業は行なわれません。代わりに、実際にファイルシステムを作成する他のプログラムのうちのひとつに管理を委ねます。

ここで選択しているファイルシステムの mkfs.<fstype> の man ページを見ます。例えば、新規の ext3 ファイルシステムを作る時にオプションが使用できるか mkfs.ext3 の man ページを見ます。一般的には、mkfs.<fstype> プログラムではほとんどの構成に合理的なデフォルトが提供されています。しかし、次にシステム管理者がよく変更するオプションをいくつかあげます。

  • 後日使用するために/etc/fstab でボリュームラベルを設定する

  • 容量が極めて大きいハードディスク上で、スーパーユーザー用に確保するスペースの割合を低く設定する

  • 非常に大きいファイルまたは小さいファイルのいずれかをサポートしなければならない設定に対して inode ごとに標準以外のブロックサイズ、バイトを設定する

  • 不良ブロックをチェックしてからフォーマット化する

ファイルシステムの作成が必要なパーティションすべてに対して作業を完了したら、ディスクドライブは使用できるよう正しく設定されています。

次に、パーティションを手動でマウントして作業結果を再確認し、誤りがないことを確認するのが最適です。確認が完了したら、Red Hat Enterprise Linux システムがブート時に自動的に新しいファイルシステムをマウントするよう設定します。

5.9.6.1.3. /etc/fstab を更新する

項5.9.5 で概説されているように、/etc/fstab に必要な行を追加して新しいファイルシステムがシステムの再起動時にマウントされることを確認する必要があります。/etc/fstab を更新したら、デバイスまたはマウントポイントだけを指定する"不完全な" mount を発行して行なった作業をテストします。次の例のようなコマンドで十分です。

mount /home
mount /dev/hda3

(/home または /dev/hda3 には状況に合わせて該当のマウントポイントやデバイスを使います。)

該当する /etc/fstab のエントリが正しければ、mount はそこから不足した情報を取得してマウント動作を完了させます。

この時点でほぼ /etc/fstab はシステムが起動する度に新しいストレージを正しく自動的にマウントするよう設定されたと言えます(確認のために再起動できるのであれば行なった方がいいでしょう)。

5.9.6.2. ストレージを削除する

Red Hat Enterprise Linux からストレージを削除する手順は比較的簡単です。次に Red Hat Enterprise Linux に固有となる手順をあげます。

  • /etc/fstab からディスクドライブのパーティションを削除する

  • ディスクドライブのアクティブなパーティションをアンマウントする

  • ディスクドライブの内容を消去する

次のセクションではこれについて詳しく説明します。

5.9.6.2.1. /etc/fstab からディスクドライブのパーティションを削除する

適当なテキストエディタを使って /etc/fstab ファイルからディスクドライブのパーティションに該当する行を削除します。次のいずれかの方法で該当する行を確認します。

  • /etc/fstab の 2 番目の欄にあるディレクトリがパーティションのマウントポイントと一致している

  • /etc/fstab の 1 番目の欄にあるファイル名がデバイスのファイル名と一致している

ヒントヒント
 

削除するディスクドライブ上にある swap パーティションを識別する/etc/fstab の行を必ず探してください。よく見落としてしまう行です。

5.9.6.2.2. umount でアクセスを解除する

次に、ディスクドライブへのすべてのアクセスを解除しなければなりません。このディスクドライブにあるアクティブなファイルシステムを使用するパーティションに対して umount コマンドを使用します。swap パーティションがこのディスクドライブ上に存在する場合は swapoff コマンドで解除するかシステムを再起動する必要があります。

umount コマンドでパーティションをアンマウントするにはデバイスファイル名かパーティションのマウントポイントを指定する必要があります。

umount /dev/hda2
umount /home
            

パーティションは使用されていない時にのみアンマウントすることができます。通常のランレベルでパーティションがアンマウントできない場合は、レスキューモードで起動してそのパーティションの /etc/fstab エントリを削除します。

パーティションへのスワッピングを解除するため swapoff を使用する時は swap パーティション指しているデバイスファイル名を指定してください。

swapoff /dev/hda4
            

swap パーティションへのスワッピングが swapoff を使って解除できない場合は、レスキューモードで起動してそのパーティションの /etc/fstab エントリを削除します。

5.9.6.2.3. ディスクドライブの内容を消去する

Red Hat Enterprise Linux でディスクドライブの内容を消去する手順は簡単です。

ディスクドライブのパーティションをすべてアンマウントしたら次のコマンドを発行します (root としてログイン)。

badblocks -ws <device-name>

<device-name> はパーティション番号を除いて消去するディスクドライブのファイル名を入れます。例えば、2 番目の ATA ハードドライブなら /dev/hdb です。

badblocks を実行すると次のような出力が表示されます。

Writing pattern 0xaaaaaaaa: done                        
Reading and comparing: done                        
Writing pattern 0x55555555: done                        
Reading and comparing: done                        
Writing pattern 0xffffffff: done                        
Reading and comparing: done                        
Writing pattern 0x00000000: done                        
Reading and comparing: done                        

badblocks は実際にはディスクドライブ上の各ブロックに 4 種類のデータパターンを書き込んでいることに留意してください。大きなディスクドライブほどこのプロセスに時間がかかることがあります —数時間要されることもよくあります。

重要重要
 

多くの企業(及び行政機関)にはディスクドライブ及び他のデータストレージメディアからデータを削除するために特定の方法があります。必ずこれらを理解し必要項目に従っていることを確認してください。これらを怠ると、多くの場合、法的な問題が波及します。上記の例はディスクドライブを消去する最終的な方法ではありませんので注意してください。

ただし、rm コマンドを使うよりずっと効果的です。rm を使ってあるファイルを削除してもそのファイルに削除済みのマークが付くだけで、ファイルの内容は消去しません

5.9.7. ディスククォータを施行する

Red Hat Enterprise Linux にはディスククォータを使ってユーザー毎、グループ毎にディスクスペースの使用状況を追跡する機能があります。次のセクションでは Red Hat Enterprise Linux 環境下におけるディスククォータの機能に関する概要を説明します。

5.9.7.1. ディスククォータに関する知識

Red Hat Enterprise Linux でのディスククォータには次の機能があります。

  • ファイル毎の実施

  • ユーザー毎の領域計算

  • グループ毎の領域計算

  • ディスクブロック使用状況の追跡

  • ディスク inode 使用状況の追跡

  • ハードリミット

  • ソフトリミット

  • 猶予期間

次のセクションでは各機能について詳しく説明します。

5.9.7.1.1. ファイル毎の実施

Red Hat Enterprise Linux でのディスククォータはファイルシステム毎に使用することができます。つまり、ディスククォータを各ファイルシステムごと個別にオン、オフすることができます。

これによりシステム管理者に大きな柔軟性をもたらします。例えば、/home/ ディレクトリがそれ自体のファイルシステムにあったとした場合、ディスククォータをそこでオンにすることができすべてのユーザーに公平なディスク使用を実施することができます。ただし、root ファイルシステムはディスククォータを外しておきます。オペレーティングシステムしか存在しないファイルシステムでの複雑なディスククォータ管理をなくします。

5.9.7.1.2. ユーザー毎の領域計算

ディスククォータはユーザー毎に領域計算を行なうことができます。つまり、各ユーザーの領域使用状況が個別に追跡されるということです。また、ユーザー毎にも使用制限(後半のセクションで説明しています)を設けることができるということにもなります。

各ユーザー個別にディスクの使用を追跡、施行する上で柔軟性があるとシステム管理者はユーザー別に責務やストレージのニーズに応じて異なる制限を割り当てることができるようになります。

5.9.7.1.3. グループ毎の領域計算

ディスククォータはグループ毎にディスクの使用状況追跡を行なうことができます。あるプロジェクト全体のリソースにさまざまの部署からのユーザーを集めてグループを構成している企業や組織には理想的です。

グループ全体にディスククォータを設定すると、複数ユーザーのプロジェクトに適宜大きなディスククォータを設定する一方、システム管理者は個人的に使用する分だけのディスククォータを各ユーザーに与えてストレージ使用を詳細に管理することができます。データセンターのリソースを使用する部署やチームに対してデータセンターにかかるコストの"チャージバック"方式を採用している企業や組織にとって大きな利点となり得ます。

5.9.7.1.4. ディスクブロック使用状況の追跡

ディスククォータはブロックの使用状況を追跡します。ファイルシステムに格納されているデータはすべてブロックで格納されるため、ディスククォータはファイルシステム上で作成及び削除されたファイルをそのファイルが占有している記憶容量と直接関連付けることができます。

5.9.7.1.5. ディスク inode 使用状況の追跡

ディスクブロック使用状況の追跡に加えて、ディスククォータは inode の使用状況も追跡することができます。Red Hat Enterprise Linux 環境下では、inode はファイルシステムのさまざまな部分を格納するために使用されますが、最も重要なことは inode は各ファイルの情報を保持しているということです。したがって、inode を追跡(また管理)することで新規ファイルの作成を管理することができます。

5.9.7.1.6. ハードリミット

ハードリミットはユーザー(またはグループ)が一時的に使用できるディスクブロック(または inode) の絶対最大数です。ハードリミットを 1 ブロックないしは 1 ノードでも超えて使用することはできません。

5.9.7.1.7. ソフトリミット

ソフトリミットはユーザー(またはグループ)が永続的に使用できるディスクブロック(または inode) の最大数です。

ソフトリミットはハードリミットより少なく設定します。これによりユーザーは一時的にソフトリミットを超えることができます。ユーザーは作業が何であれ終了することができ、後日所有ファイルを調べてソフトリミット以下に使用量を減らせるよういくらか時間を与えてくれます。

5.9.7.1.8. 猶予期間

前述した通り、ソフトリミットを超えるディスクの使用は一時的なものです。ユーザー(またはグループ)がハードリミット以内でソフトリミットを超えて使用できる期間を定義するのが猶予期間です。

ユーザーがソフトリミットを超えて使用し猶予期間が切れると、そのユーザー(またはグループ)がソフトリミット以下まで使用量を減らすまでそれ以上のディスク使用は許可されなくなります。

猶予期間は、秒、分、時間、日数、週数、月数単位で表すことができるため、システム管理者はユーザーがソフトリミット以下にディスク使用を減らせる時間を自由に定義することができます。

5.9.7.2. ディスククォータをオンにする

注記注記
 

次のセクションでは Red Hat Enterprise Linux でディスククォータをオンにするために必要な手順の簡単な概要を説明しています。これについての詳細な取り扱いについてはRed Hat Enterprise Linux システム管理ガイド のディスククォータに関する章を参照してください。

ディスククォータを使うには最初にディスククォータをオンにします。これを行なうにはいくつかの手順に従います。

  1. /etc/fstabを編集

  2. ファイルシステムを再マウント

  3. quotacheck を実行

  4. クォータを割り当て

/etc/fstab ファイルは Red Hat Enterprise Linux 環境下でのファイルシステムのマウントを管理しています。クォータはファイルシステムベースで実施されるためオプションが 2 つあります。usrquotagrpquota で、ディスククォータをオンにするにはそのファイルにこのオプションを追加します。

usrquota オプションはユーザーベースのディスククォータをオンにし、grpquota オプションはグループベースのクォータをオンにします。このオプションのいずれかまたは両方を目的のファイルシステムのオプションフィールドに入れることでオンにすることができます。

影響を受けるファイルシステムはディスククォータ関連のオプションが反映するようアンマウントしてから再度マウントし直します。

次に、ディスククォータファイルを作成して既存ファイルから現在の使用状況情報を収集するために quotacheck コマンドを使用します。ディスククォータファイル(ユーザーベースのクォータには aquota.user、ユーザーベースのクォータには aquota.group と呼ばれるファイル)は必要となるクォータ関連の情報を含み、ファイルシステムの root ディレクトリにあります。

ディスククォータを割り当てるには、edquota コマンドを使用します。

このユーティリティプログラムは edquota コマンドの一部としてテキストエディタを使用し指定されたユーザーやグループのクォータ情報を表示します。次に例をあげます。

 Disk quotas for user matt (uid 500):
  Filesystem      blocks       soft       hard     inodes     soft     hard
  /dev/md3       6618000          0          0      17397        0        0

ここではユーザーの matt が現在 6GB 以上のディスクスペースと 17,000 以上の inode を使用していることを表示しています。ディスクブロック、inode のいずれにもクォータ(ソフト及びハード)はまだ設定されていません。つまり、このユーザーは現在使用できるディスクスペース及び inode に制限がないということです。

テキストエディタで表示しているディスククォータ情報を使ってソフトリミットやハードリミットを適宜変更します。

Disk quotas for user matt (uid 500):
  Filesystem      blocks       soft       hard     inodes     soft     hard
  /dev/md3       6618000    6900000    7000000      17397        0        0

この例では、ユーザーの matt には 6.9GB のソフトリミットと 7GB のハードリミットが与えられています。このユーザーには inode についてはソフトリミット、ハードリミットとも設定されていません。

ヒントヒント
 

edquota プログラムではファイルシステム毎の猶予期間を -t オプションを使って設定することもできます。

5.9.7.3. ディスククォータを管理する

Red Hat Enterprise Linux でディスククォータをサポートするために必要とされる実際の管理はほとんどありません。本質的に必要とされるのは次だけです。

  • 定期的にディスク使用状況のレポートを生成する(また、割り当てディスクスペースの効果的な管理に問題がありそうなユーザーを追跡調査する)

  • ディスククォータが正確であるか確認する

ディスク使用状況のレポートを作成するには repquota ユーティリティプログラムの実行が必要となります。repquota /home コマンドを使って次の出力を生成します。

*** Report for user quotas on device /dev/md3
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   32836       0       0              4     0     0       
matt      -- 6618000 6900000 7000000          17397     0     0       

repquota についての詳細は Red Hat Enterprise Linux システム管理ガイド にあるディスククォータに関する章をご覧ください。

ファイルシステムが正常にアンマウントされない場合は必ず quotacheck を実行する必要があります(例、システムのクラッシュ)。しかし、多くのシステム管理者はシステムがクラッシュしなくても、定期的に quotacheck を実行することを推奨しています。

手順はディスククォータをオンにするとき始めて quotacheck 使う手順と似ています。

quotacheck コマンドの例を示します。

quotacheck -avug

定期的に quotacheck を実行する一番簡単な方法は cron を使用することです。ほとんどのシステム管理者は quotacheck を 1 週間に 1 回実行しています。ただし、使用している状況によっては期間を長くしたり短くする場合もあります。

5.9.8. RAID アレイを作成する

ハードウェア RAID ソリューションのサポートに加えて、Red Hat Enterprise Linux ではソフトウェア RAID もサポートしています。ソフトウェア RAID アレイを作成するには 2 通りあります。

次のセクションではこの 2 通りについて見て行きます。

5.9.8.1. Red Hat Enterprise Linux のインストール中に作成する

通常の Red Hat Enterprise Linux インストール手順を行なっているときに RAID アレイを作成できます。インストールのディスクパーティション作成の段階で行ないます。

まず、Disk Druid を使ってディスクドライブに手動でパーティションを作成します。最初にタイプが "ソフトウェア RAID" の新規パーティションを作成します。次に、使用可能なドライブフィールドで RAID アレイの一部を構成させるディスクドライブを選択します。目的のサイズとプライマリパーティションにするかどうかを選択して続行します。

作成する RAID アレイに必要なパーティションをすべて作成完了したら、RAID ボタンを使って実際にアレイを作成します。ダイアログボックスが表示されアレイのマウントポイント、ファイルシステムタイプ、RAID デバイス名、RAID レベル、基礎となるこのアレイ上に置く"ソフトウェア RAID"パーティションを選択します。

目的のアレイを作成したらインストール手順を通常通り続行して行きます。

ヒントヒント
 

Red Hat Enterprise Linux インストール中にソフトウェア RAID アレイを作成する方法についての詳細は Red Hat Enterprise Linux システム管理ガイド を参照してください。

5.9.8.2. Red Hat Enterprise Linux インストールの完了後に作成する

Red Hat Enterprise Linux インストールの完了後に RAID アレイを作成するのは少々複雑になります。いずれのタイプのディスクストレージを追加するのと同様、必要なハードウェアがまずインストールされ正しく設定されている必要があります。

RAID は単一ディスクドライブのパーティション設定とは少し異なります。パーティションタイプに "Linux" (タイプ 83) または "Linux swap" (タイプ 82) を選ぶ代わりに、RAID アレイを構成するパーティションはすべて"Linux raid auto" (タイプ fd) に設定します。

次に、/etc/raidtab ファイルを作成する必要があります。このファイルはご使用のシステムにあるすべての RAID アレイの適切な設定の管理責任を負っています。ファイル形式(raidtab(5) の man ページで説明されている)は比較的簡潔です。次に RAID 1 アレイの /etc/raidtab エントリの例をあげます。

raiddev             /dev/md0
raid-level                  1
nr-raid-disks               2
chunk-size                  64k
persistent-superblock       1
nr-spare-disks              0
    device          /dev/hda2
    raid-disk     0
    device          /dev/hdc2
    raid-disk     1

このエントリで特に注意すべきことをいくつかあげておきます。

  • raiddev — RAID アレイのデバイスファイル名を表示します [2]

  • raid-level — この RAID アレイで使用される RAID レベルを定義しています。

  • nr-raid-disks — このアレイを構成する物理的なディスクパーティションの数を示しています。

  • nr-spare-disks — Red Hat Enterprise Linux 環境下のソフトウェア RAID では 1 つまたは複数の予備ディスクパーティションの定義ができます。このパーティションは機能不全を起こしたディスクと自動的に交換されます。

  • deviceraid-disk — 共に RAID アレイを構成する物理的なディスクパーティションを定義しています。

次に、実際に RAID アレイを作成する必要があります。mkraid プログラムで行ないます。/etc/raidtab ファイルの例を使って、次のコマンドで /dev/md0 RAID アレイを作成してみます。

mkraid /dev/md0

これで /dev/md0 RAID アレイのフォーマット化とマウントの準備が整いました。この時点での手順は単一ディスクドライブのフォーマット化及びマウントと同じです。

5.9.9. RAID アレイの日常的な管理

RAID アレイの動作を維持するためにすべきことはほとんどありません。ハードウェア障害が発生しない限り、アレイは物理的なディスクドライブと全く同じように機能するはずです。しかし、システム管理者なら定期的にシステム上のすべてのディスクドライブの状態をチェックするべきであるのと同様に、RAID アレイの状態もチェックすべきです。

5.9.9.1. /proc/mdstat でアレイの状態をチェックする

特定システムにあるすべての RAID アレイの状態をチェックするには /proc/mdstat ファイルが一番簡単な方法です。mdstat の例をあげておきます (cat /proc/mdstat コマンドで表示)。

Personalities : [raid1] 
read_ahead 1024 sectors
md1 : active raid1 hda3[0] hdc3[1]
      522048 blocks [2/2] [UU]
      
md0 : active raid1 hda2[0] hdc2[1]
      4192896 blocks [2/2] [UU]
      
md2 : active raid1 hda1[0] hdc1[1]
      128384 blocks [2/2] [UU]
      
unused devices: <none>

このシステムには RAID アレイが 3 つあります(すべて RAID 1)。各 RAID アレイは /proc/mdstat にそれぞれのセクションを持ち、次のような情報が含まれています。

  • RAID アレイデバイス名(/dev/ の部分は含まれていない)

  • RAID アレイの状態

  • RAID アレイの RAID レベル

  • 現在アレイを構成している物理パーティション(後にパーティションのアレイユニット番号が付く)

  • アレイのサイズ

  • 構成デバイス数とアレイ内で動作中のデバイス数

  • アレイ内の各構成デバイスの状態 (U はそのデバイスが正常に動作しているという意味、_ はそのデバイスに障害が起きていることを示している)

5.9.9.2. raidhotadd で RAID アレイを再構築する

/proc/mdstat で RAID アレイのひとつに問題があることを示している場合、raidhotadd ユーティリティプログラムを使用してアレイを再構築します。行なう必要がある手順を次に示します。

  1. 障害が発生しているパーティションを含むディスクドライブを判別する

  2. 障害の要因となる問題を修正する(ほとんどの場合ドライブの交換)

  3. 新しいドライブ上のパーティションがアレイ内の他のドライブにあるパーティションと同一になるよう新しいドライブにパーティションを設定する

  4. 次のコマンドを発行する

    raidhotadd <raid-device> <disk-partition>
  5. /proc/mdstat を監視して配置した再構築 RAID アレイを観察する

ヒントヒント
 

配置した再構築を観察するために使用するコマンドです。

watch -n1 cat /proc/mdstat

このコマンドは /proc/mdstat の内容を表示し、1 秒毎に更新されます。

5.9.10. 論理ボリューム管理

Red Hat Enterprise Linux には LVM のサポートが含まれています。LVM は Red Hat Enterprise Linux のインストール中に構成することも、インストールが完了した後に構成することもできます。Red Hat Enterprise Linux 環境下での LVM は物理ストレージのグループ化、論理ボリュームのサイズ変更、特定の物理ボリュームからのデータ移行をサポートしています。

LVM についての詳細は Red Hat Enterprise Linux システム管理ガイド を参照してください。

注記

[1]

詳細は項5.9.5を参照

[2]

RAID アレイはパーティション設定されたディスクスペースで構成されるため、RAID アレイのデバイスファイル名はパーティションレベルの情報を反映していません