このセクションでは自宅サーバーとしてLinuxを扱ううえで役に立つ基本操作基礎知識テクニックについて初心者/ビギナー向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
LinuxOSの使いこなし術

LinuxOSを使いこなす

クライアントOSとの違い

絶対パスと相対パス

"パスが通っている"とは?

"/"と"."と".."の意味

"."(ドット)ファイルについて

ワイルドカードと正規表現

コマンドの強制終了

コマンド操作の補完機能

コマンド操作の履歴機能

リダイレクトとパイプ

属性とパーミッション〜その1

属性とパーミッション〜その2

アカウント情報ファイルの操作

ランレベルについて

システムが起動しないときは

ハードディスクの増設

アプリケーションの導入法

Ubuntu 10.04 LTS デスクトップ版のススメへようこそ

Linuxサーバーにハードディスクを増設する

サーバー機 を長く運用していると、必ず ハードディスク の使用量は増えてきます。

運用目的が 公開サーバー に限られるのであればあまり問題にはならないかもしれませんが、 Samba を使って自宅内の ファイルサーバー としての利用を始めると、ハードディスクの空き容量は気が付かないうちにどんどんなくなっていくものです。

最近はデジタルカメラの解像度も高くなって写真一枚あたりの容量も数 MB に達するようになりましたし、ホームビデオのデータをサーバーで保管するようになればそれこそあっという間にハードディスクの容量を使い切ってしまうものです。

そうすると、サーバーへのハードディスクの増設は必要不可欠になってくるわけですね。

さて、パソコンにハードディスクを増設する一番簡単な方法は、 USB 接続や IEEE1394 接続の 外付けハードディスク を利用することでしょう。

外付けが前提のこれらの汎用接続規格のハードディスクの場合、最近の WindowsOS MacintoshOS でしたら、接続すると自動的にパソコンに認識され、 デバイスドライバ が組み込まれて「使用準備完了」となるのが普通です(製品によってはこのあとイニシャライズ作業をする必要もありますが)。

LinuxOS の場合も同様で、比較的新しい ディストリビューション であれば接続すると自動認識され、LinuxOSが扱えるフォーマット形式になっていればすぐに利用することができるようになっているケースが多くなっています。

ただ 外付けハードディスクのサーバーへの利用について で説明しているとおり、こういったトラブルの多いハードディスクは常時稼動の サーバー への利用はあまり望ましいものではありませんので、ここでは P-ATA S-ATA 内蔵型ハードディスクの規格について などの 内蔵型ハードディスクの増設方法 について説明します。

なお、単独のハードディスクの追加ではなく、 RAID 構成による冗長化デバイスの追加にチャレンジしてみたい方はこちら システムにRAIDデバイスを追加する をご覧ください。

ハードディスクの取り付けと初期化

OS LinuxOS だからといって、取り付けの方法やルールが WindowsOS で使う場合と異なるということはありません。

ホスト機 が稼働中であれば poweroff コマンド で電源を切り、 誤って電源を入れてしまわないように念のためにホスト機から電源コードを抜き 、ケースを開けて増設するハードディスクを取り付けます。方法は一般的なパソコンへのハードディスクの取り付け方と同じです。

細かいことかもしれませんが、 サーバー機 として常時稼動させるわけですから電源容量については不足のないように気をつけておきましょう 電源について

内蔵ハードディスク(HP ProLiant ML115)
内蔵ハードディスク(HP ProLiant ML115)

取り付けの際は、ハードディスクを何のインターフェースのどの位置に取り付けたかは必ず記録しておきます。

LinuxOSではハードディスクの取り付け位置によって デバイス名 が決定されますので、これがはっきりしておかないと後々苦労するかもしれません。ちなみにデバイス名は、 P-ATA の場合、

プライマリコントローラーのマスターポートに接続 = /dev/hda

プライマリコントローラーのスレーブポートに接続 = /dev/hdb

セカンダリコントローラーのマスターポートに接続 = /dev/hdc

セカンダリコントローラーのスレーブポートに接続 = /dev/hdd

となり、 S-ATA の場合は通常、

1番ポートに接続 = /dev/sda

2番ポートに接続 = /dev/sdb

3番ポートに接続 = /dev/sdc

4番ポートに接続 = /dev/sdd

という具合になります。

取り付けと接続が終わったらホスト機を起動します。

このとき、出来れば BIOS を起動して マザーボード がきちんと新しいハードディスクを認識していることを確認しましょう。BIOSの起動方法はホスト機によって様々ですのでお使いのホスト機あるいはマザーボードのマニュアルを参考にしてください。

さて、 WBEL CentOS が起動中に止まってしまうような場合はハードディスクが物理的に故障している、接続の方法に誤りがある、ケーブルがきちんと刺さっていない、ケーブルの不良、などの不具合が考えられます

こういう場合は強制的に電源を切って ホスト機の強制終了について(WBEL3) ホスト機の強制終了について(CentOS3) ホスト機の強制終了について(WBEL4) ホスト機の強制終了について(CentOS4) ホスト機の強制終了について(CentOS5) チェックしてください。

WBELやCentOSが無事起動したら サブネット 内の適当な クライアント機 から SSHクライアント 構築中のLinuxサーバー ログイン します SSHクライアントでサーバーに接続する(WBEL3) SSHクライアントでサーバーに接続する(CentOS3) SSHクライアントでサーバーに接続する(WBEL4) SSHクライアントでサーバーに接続する(CentOS4) SSHクライアントでサーバーに接続する(CentOS5)

それから su コマンド ユーザーアカウント "root" に変更します。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]#

LinuxOS でハードディスクの操作を行うには fdisk コマンド を利用します。

例えば新しいハードディスクを接続したインターフェースが プライマリコントローラーのスレーブポート の場合は、デバイス名は "/dev/hdb" となりますから、次のようにコマンドを実行して "/dev/hdb" の設定を行います。

[root@web1 ~]# fdisk /dev/hdbEnter

デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。

このディスクのシリンダ数は 2039 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
  (例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ):

色々警告文らしきものが出ますが、これはこういったツールの「お約束」なのでとりあえず全部無視してかまいません。

fdiskコマンドが対話型で起動していれば、最後に、

コマンド (m でヘルプ):

というプロンプトが表示されます。

ここで p Enter とタイプすると、ハードディスクの状態が表示されます。

コマンド (m でヘルプ): pEnter

Disk /dev/hdb: 16.7 GB, 16776732672 bytes
255 heads, 63 sectors/track, 2039 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート  始点   終点 ブロック  ID システム

コマンド (m でヘルプ):

hdb が新品のハードディスクの場合は上のように何も パーティション は表示されませんが、例えば WindowsOS で使用していたハードディスクを hdb として接続している場合は以下のように表示されることがあります。

コマンド (m でヘルプ): pEnter

Disk /dev/hdb: 16.7 GB, 16776732672 bytes
255 heads, 63 sectors/track, 2039 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート  始点   終点 ブロック  ID システム
/dev/hdb1       1    765  6144831  7 HPFS/NTFS
/dev/hdb2      766   2039 10233405  f Win95 拡張領域 (LBA)
/dev/hdb5      766   2039 10233373+  7 HPFS/NTFS

コマンド (m でヘルプ):

こういう場合は、LinuxOS用のパーティションを作成する前にこれらの古いパーティションをすべて削除しておく必要があります。

パーティションの状況にもよりますが、こういう場合は以下のように作業してパーティションを削除してください。

/dev/hdb5 は、拡張パーティション /dev/hdb2 の中に作られた論理パーティションです 拡張パーティションと論理パーティションについて(WBEL3) 拡張パーティションと論理パーティションについて(CentOS3) 拡張パーティションと論理パーティションについて(WBEL4) 拡張パーティションと論理パーティションについて(CentOS4) 拡張パーティションと論理パーティションについて(CentOS5)
従って論理パーティションの「受け皿」である拡張パーティション /dev/hdb2 を削除すれば、 /dev/hdb5 も一緒に削除されることになります。
コマンド (m でヘルプ): pEnter

Disk /dev/hdb: 16.7 GB, 16776732672 bytes
255 heads, 63 sectors/track, 2039 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート  始点   終点 ブロック  ID システム
/dev/hdb1       1    765  6144831  7 HPFS/NTFS
/dev/hdb2      766   2039 10233405  f Win95 拡張領域 (LBA)
/dev/hdb5      766   2039 10233373+  7 HPFS/NTFS

コマンド (m でヘルプ): dEnter   ←パーティションを削除するコマンドです。
領域番号 (1-5): 1Enter       ←基本パーティション/dev/hdb1を指定します。

コマンド (m でヘルプ): dEnter
領域番号 (1-5): 2Enter       ←拡張パーティション/dev/hdb2を指定します。

コマンド (m でヘルプ): dEnter   ←削除すべきパーティションの有無を確認します。
No partition is defined yet!  ←パーティションがすべて削除されたことを示します。

コマンド (m でヘルプ): wEnter  ←削除情報を書き込み、fdiskを終了します。
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
[root@web1 ~]# fdisk -l /dev/hdbEnter  ←"-l"オプションで状況表示します。(対話形式に移行せず、"p"コマンドと同じ内容を表示するオプションです。)

Disk /dev/hdb: 16.7 GB, 16776732672 bytes
255 heads, 63 sectors/track, 2039 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート  始点   終点 ブロック  ID システム ←領域が削除されました。
[root@web1 ~]#

以上で新しく追加したハードディスクの初期化が終了しました。

NEC「得選街」
このページの先頭へ↑

領域確保とフォーマット

ハードディスク の初期化が終わったら、引き続き fdisk の対話 コマンド hdb パーティション を作成していきます。

パーティションの作成のルールは LinuxOS の作法ではなく、 マザーボード の仕様である インテルアーキテクチャ のルールに従います IAにおけるパーティションのルールについて

ここではデータ領域用にハードディスクの全領域を一つの基本パーティションとして、 "/dev/hdb1" を作成してみます。

コマンド (m でヘルプ): pEnter  ←とりあえず状況を表示してみます

Disk /dev/hdb: 16.7 GB, 16776732672 bytes
255 heads, 63 sectors/track, 2039 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート  始点   終点 ブロック  ID システム

コマンド (m でヘルプ): nEnter  ←"n"で新しいパーティションを作成します
コマンドアクション
  e  拡張
  p  基本領域 (1-4)
pEnter  ←"p"で基本領域を指定します
領域番号 (1-4): 1Enter  ←領域番号"1"を指定します(dev/hdb1)
最初 シリンダ (1-2039, 初期値 1): 1Enter  ←始点として"1"を設定します(初期値なので省略可)
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-2039, 初期値 2039): 2039Enter  ←終点として"2039"を設定します(初期値なので省略可)

コマンド (m でヘルプ): pEnter  ←とりあえず状況を表示してみます

Disk /dev/hdb: 16.7 GB, 16776732672 bytes 255 heads, 63 sectors/track, 2039 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス ブート  始点   終点 ブロック  ID システム
/dev/hdb1       1   2039 16378236  83 Linux

コマンド (m でヘルプ):

fdiskでは、領域確保したときの デフォルト のフォーマット形式としてLinux形式が選択されますので形式の変更は通常必要ありません。最後に w Enter で設定をハードディスクに書き込んでfdiskを終了します。

コマンド (m でヘルプ): wEnter
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
[root@web1 ~]#

これで、 /dev/hdb1 の領域確保が終わりました。

最後にこの領域を mke2fs コマンドで、 LinuxOS基本の "ext3" 形式でフォーマットします。

[root@web1 ~]# mke2fs -j /dev/hdb1Enter
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2048000 inodes, 4094559 blocks
204727 blocks (5.00%) reserved for the super user
First data block=0
125 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@web1 ~]#

通常入手できるハードディスクの容量ならば、数分から数十分程度で処理は終わります。

検査を開始すると、検査済みブロック/検査するブロック数が表示されますので、どのくらい時間がかかるのかを推定することができます。
もしも途中でやめたいときは、 Ctrl + c で作業を中断することができます。

このとき、オプションに -c を追加して実行するとフォーマット前に不良ブロックの検査を行います。が、それなりに時間がかかりますので注意してください。

NEC「得選街」
このページの先頭へ↑

ボリュームのマウントと自動マウントの設定

LinuxOS では、フォーマットした ハードディスク を実際に利用するには、ファイルシステムのどこかに マウント しなければなりません。 ハードディスク の初期化とフォーマットが終わったら、必ずマウント作業を行う必要があります。

まず、増設したハードディスクをマウントしたいディレクトリを mkdir コマンド で既存のファイルシステムのどこかに作成します。

ここでは例として "/data/" の位置にマウントするものとしますが、もっと深いディレクトリ位置でも構いません。

ディレクトリを作成したら、引き続きフォーマット済みのパーティション "/dev/hdb1" をそのディレクトリに mount コマンドを使ってマウントします。

[root@web1 ~]# mkdir /dataEnter
[root@web1 ~]# mount /dev/hdb1 /dataEnter
[root@web1 ~]#

これで "/dev/hdb1" "/data/" 以下にマウントされ、ファイルシステムの一部として利用できるようになりました。

試しに df コマンドでファイルシステムのディスク情報を一覧してみましょう。

[root@web1 ~]# dfEnter
Filesystem      1K-ブロック  使用  使用可 使用% マウント位置
/dev/hda3       1004052  187236  765812 20% /
/dev/hda1        101089   9264   86606 10% /boot
/dev/hda8       5178536   32828  4882648  1% /home
none          127080     0  127080  0% /dev/shm
/dev/hda9        101089   4132   91738  5% /tmp
/dev/hda5       4032092  1942824  1884444 51% /usr
/dev/hda7       1004024   16512  936508  2% /usr/local
/dev/hda6       3020140   94056  2772668  4% /var
/dev/hdb1       16121156   32828 15269420  1% /data
[root@web1 ~]#

赤字 で示しているところが今回新たに追加されたハードディスクの部分になります。

さて、とりあえずこれで新しいハードディスクは使えるようになりましたが、このままでは ホスト機 の起動のたびにmountコマンドを実行しなければなりませんので、起動時に自動的にマウントされるように設定しましょう。

ホスト機の起動時にハードディスクなどのドライブを自動的に起動するには "/etc/fstab" という テキスト ファイルにマウント情報を記述します。

試しに現在の "/etc/fstab" をnanoエディタで開いてみましょう nanoエディタでファイルを開く

[root@web1 ~]# nano /etc/fstabEnter


デフォルトの/etc/fstab
デフォルトの"/etc/fstab"

"/etc/fstab" への自動マウント情報は、一つのドライブについて一行で記述します。

パラメータは全部で6つですので左から説明します。先頭の太文字はパラメータの一般呼称です。

fs_spec: マウントするデバイスを指定します。"none"となっているデバイスはシステムが仮想的に作り出しているもので、システムの情報をリアルタイムに表示するために利用されるものです。

fs_file: マウント位置を指定します。必ず実在するディレクトリを 絶対パス で記述します。 スワップ に用いるデバイスの場合は"swap"と記述します。

fs_vfstype: ファイルシステムのフォーマット形式を指定します。内蔵ハードディスクの場合は通常"ext3"ですので"ext3"と記述します。その他に自動判別を指定する"auto"、スワップファイル形式の"swap"などがあります。LinuxOSではその他にも非常に多くのフォーマット形式をサポートしています。 "," で区切って複数を指定することもできます。

fs_mntops: マウント時のオプションの指定です。特に指定の必要がない場合は"default"と記述します。その他には読み取り専用でマウントするための"ro"、実行を禁止する"noexec"などがあります。 "," で区切って複数を指定することもできます。

fs_freq: dumpコマンドを実行するときに対象に含めるかどうかの指定です。dumpコマンドでのバックアップを行わない場合は"0"と指定してもかまいませんが、"1"に指定しておいてもdumpコマンドを実行しなければ同じことですので通常は"1"を指定しておきます。

複数のデバイスに同じ数字を割り当てると、チェックが同時に行われて起動に時間がかかるようになりますから、できるだけ異なる数値を割り当てます。ただし、システムの稼動に必須のデバイスは並行してチェックするのが望ましいため、重複して"2"を割り当てます。

fs_passno: システム起動時にfsckコマンドによるファイルシステムのチェックを行うかどうかの指定です。数値で指定し、数字が小さい順にチェックが行われます。通常は "/" に対して"1"を、それ以外の主要なデバイス(つまりシステムの稼動に必須であるもの)に対して"2"を割り当て、それ以外のデバイス(例えばデータのみのようなデバイス)については"3"以降を割り当てます。

従って今回のケースではこのように追加記述します。

/etc/fstabへの追加記述例(デバイス名記述)
"/etc/fstab"への追加記述例(デバイス名記述)

また、 fs_spec には直接デバイス名を記述せずに、 e2label コマンドで付加したファイルシステムのラベルを使って、 "LABEL=[ラベル名]" と指定することも出来ます。

右の例ではラベル名の先頭に"/"を付けていますが、他のラベル名に揃えただけで必須というわけではありません。
[root@web1 ~]# e2label /dev/hdb1 /dataEnter
[root@web1 ~]#



/etc/fstabへの追加記述例(ラベルで記述)
/etc/fstabへの追加記述例(ラベルで記述)

"/etc/fstab"への記述を間違えるとレスキューモード レスキューモードについて で起動して修正しなければならなくなりますので注意してください。

NEC「得選街」
このサイトに対するご意見、ご要望、苦情、泣き言、献上品、資金援助などがございましたら こちら からお寄せください(お返事できなかったらごめんなさい)。もちろん リンクフリー です。趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。また、本サイトの更新情報をメールで知らせてほしい方は ここ からご登録ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System