S-JIS[2005-02-11/2005-02-15]

RedHat7.2ハードディスク増設

RedHat7.2のlinuxマシンにIDEのハードディスクを増設したときのメモです。


手順

  1. IDEのハードディスクを接続する
  2. マシンの電源を入れる。
  3. 起動時の最初の画面で「F1キー」を押して(マシンによって違うか?)BIOSの設定画面を出す。
    接続したドライブが有効(Enable)になっていればOK。
  4. そのままlinuxを起動し、rootユーザーでログインする。
  5. fdiskでパーティションを切る
  6. mke2fsでフォーマットする
  7. ディレクトリを作り、マウントする。(これでようやくディレクトリとして使えるようになる)
  8. fstabを書き換え、起動時に自動的にマウントされるようにする。

物理的な接続

IDEのハードディスクをつなぐ。

設定も忘れないように。
だいたい1台目は「プライマリ」の「マスター」になっていて、たいてい2台目は「プライマリ」の「スレーブ」にする。
(IDEのケーブルに2つコネクターがあって、それを使うならマスターとスレーブの関係。そもそも別のケーブルならプライマリとセカンダリの関係らしい。大抵はCD-ROMがセカンダリになっている模様)


パーティション作成

ディスクのフォーマット前の準備として、パーティションを作成しておく。
どの形式でフォーマットするかも ここで指定することになる。
これにはfdiskコマンドを使う。対話型のツールで、コマンドを入力する形式だが、コマンド自体は簡単。

fdiskの引数にデバイスを指定する必要がある。
ハードディスクドライブ(HDD)やCD-ROMドライブ・フロッピーディスクドライブ(FDD)等は、UNIX上ではデバイスとして扱われる。
以下のようなデバイス名になる。(いつでも誰でもこうなるのかどうかは知りません…)

デバイス ディスク 備考
/dev/hda IDEのプライマリのマスターのドライブ たいてい1台目のハードディスク
/dev/hdb IDEのプライマリのスレーブのドライブ  
/dev/hdc IDEのセカンダリのマスターのドライブ CD-ROM?
/dev/hdd IDEのセカンダリのスレーブのドライブ  

書き込みコマンドを実行しない限りは何をやっても大丈夫らしいので、まず既存のハードディスクを見ておく。

# fdisk /dev/hda

The number of cylinders for this disk is set to 2482.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

コマンド (m でヘルプ): p	←既存の設定を表示するコマンド

ディスク /dev/hda: ヘッド 255, セクタ 63, シリンダ 2482
ユニット = シリンダ数 of 16065 * 512 バイト

 デバイス ブート   始点      終点  ブロック   ID  システム
/dev/hda1   *         1         6     48163+  83  Linux
/dev/hda2             7      1735  13888192+  83  Linux
〜
/dev/hda7          2451      2482    257008+  82  Linux スワップ

「/dev/hda」の後に数字がついているのが、パーティション分割されたそれぞれの領域。

「ユニット」というのが、ハードディスクの容量っぽく見える。
ユニット=シリンダ数(2482)×16065×512=20415144960≒20.4GB

「ID」が、フォーマット(ファイルシステム)の種類。
具体的にこの番号が何を表しているかは、「l」コマンドで分かる。

コマンド (m でヘルプ): l	←既知のフォーマットのリストを表示するコマンド

 0  空              1b  Hidden Win95 FA 64  Novell Netware  bb  Boot Wizard hid
 1  FAT12           1c  Hidden Win95 FA 65  Novell Netware  c1  DRDOS/sec (FAT-
 2  XENIX root      1e  Hidden Win95 FA 70  DiskSecure Mult c4  DRDOS/sec (FAT-
 3  XENIX usr       24  NEC DOS         75  PC/IX           c6  DRDOS/sec (FAT-
 4  FAT16 <32M      39  plan 9          80  古い minix      c7  syrinx
 5  拡張領域        3c  partitionmagic  81  minix / 古い li da  non-fs data
 6  fat16           40  venix 80286     82  Linux スワップ  db  CP/M / CTOS / .
 7  HPFS/NTFS       41  PPC PReP Boot   83  Linux           de  Dell Utility
 8  AIX             42  SFS             84  OS/2 隠し C: ド df  BootIt
 9  AIX ブート可能  4d  QNX4.x          85  Linux 拡張領域  e1  DOS access
 a  OS/2 ブートマネ 4e  QNX4.x 2nd part 86  NTFS ボリューム e3  DOS R/O
 b  Win95 FAT32     4f  QNX4.x 3rd part 87  NTFS ボリューム e4  SpeedStor
 c  Win95 FAT32 (LB 50  OnTrack DM      8e  Linux LVM       eb  BeOS fs
 e  Win95 FAT16 (LB 51  OnTrack DM6 Aux 93  Amoeba          ee  EFI GPT
 f  Win95 拡張領域  52  CP/M            94  Amoeba BBT      ef  EFI (FAT-12/16/
10  OPUS            53  OnTrack DM6 Aux 9f  BSD/OS          f1  SpeedStor
11  隠し FAT12      54  OnTrackDM6      a0  IBM Thinkpad ハ f4  SpeedStor
12  Compaq 診断     55  EZ-Drive        a5  BSD/386         f2  DOS セカンダリ
14  隠し FAT16 <32M 56  golden bow      a6  openbsd         fd  linux raid 自動
16  隠し fat16      5c  priam edisk     a7  nextstep        fe  lanstep
17  隠し hpfs/ntfs  61  speedstor       b7  bsdi fs         ff  bbt
18  ast smartsleep  63  gnu hurd または b8  bsdi スワップ

しかし、なにやらいっぱいあるなぁ(苦笑)

なお、何も保存せず終了するのは「q」コマンド。

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

ドライブがlinuxに認識されているかどうか不安なので、他のデバイスも見てみた。

# fdisk /dev/hdc

/dev/hdc を開けません

↑CD-ROMドライブだと思われるのだが、エラーになる。
↓ドライブにCDを入れてから再度試してみた。

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

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

なんか表示されたので、たぶんCD-ROMに違いない(笑)


で、いよいよ新しいハードディスクに挑戦。

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

The number of cylinders for this disk is set to 14593.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

シリンダ数が14593で、1台目の約6倍。今回120GBのハードディスクなので、たぶん合ってるでしょう。

まず、パーティションを作成する。今回はなんとなく2つに分けることにした。
1つ目のパーティションから設定する。

コマンド (m でヘルプ): n	←領域を新しく設定するコマンド
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p			←基本領域を選択
領域番号 (1-4): 1		←設定したいパーティションの番号を指定(ただ、4つしか切れないとは思えないんだけど…)
最初 シリンダ (1-14593, 初期値 1):	←先頭シリンダの番号。何も入れないと初期値が使われる
初期値 1 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-14593, 初期値 14593): 7296	←最終シリンダの番号

同様に、2つ目のパーティションも設定する。

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 2
最初 シリンダ (7297-14593, 初期値 7297):
初期値 7297 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (7297-14593, 初期値 14593):
初期値 14593 を使います

ちゃんと設定されたかどうか確認!

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

ディスク /dev/hdb: ヘッド 255, セクタ 63, シリンダ 14593
ユニット = シリンダ数 of 16065 * 512 バイト

 デバイス ブート   始点      終点  ブロック   ID  システム
/dev/hdb1             1      7296  58605088+  83  Linux
/dev/hdb2          7297     14593  58613152+  83  Linux

今回は大丈夫だったけど、もしIDが望むものじゃなかった場合は、別途設定してやる。

コマンド (m でヘルプ): t	←フォーマットのタイプを設定する
領域番号 (1-4): 1
16進数コード (L コマンドでコードリスト表示): 83

最後に、(ドキドキしながら)設定を書き込んで終了する。

コマンド (m でヘルプ): w	←設定を書き込んでfdiskを終了するコマンド
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。

警告: DOS 6.x 領域を作成、または変更してしまった場合は、
fdisk マニュアルページにある追加情報を参照してください。
ディスクを同期させます。
#

フォーマット実行

設定したパーティション毎に、フォーマットする。
mke2fsコマンドを使用する。(make-ext2-FileSystem?)
ext2というのは、UNIXのファイルシステムの種類らしい。
-cオプションをつけることにより、事前にディスクチェックを行う。

# mke2fs -c /dev/hdb1
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
7325696 inodes, 14651272 blocks
732563 blocks (5.00%) reserved for the super user
First data block=0
448 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424

Checking for bad blocks (read-only test): done	←事前チェックにはけっこう時間がかかる
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

事前チェックにはけっこう時間が(今回は20〜30分)かかったが、その後のフォーマット本体(?)はそんなにかからなかった。

[2005-02-15]
ところで上記のファイルシステムはext2だったが、RedHat7.2にはext3というのがあるらしく、1台目のハードディスクはext3だったみたい。
ext3はext2の拡張版で、ジャーナルファイルというファイルを作成する機能を加えたものらしい。これにより、不具合が発生しても元に戻したりできる模様。
ext2でフォーマットしてからext3に変えることが出来る。

# tune2fs -j /dev/hdb1
tune2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09
Creating journal inode: done
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

マウント

ディレクトリを作って、フォーマットした領域に割り当てる。

# cd /
# ls
bin   dev  home    lib         misc  opt   root  tmp  var
boot  etc  initrd  lost+found  mnt   proc  sbin  usr
# mkdir home2
# ls
bin   dev  home   initrd  lost+found  mnt  proc  sbin  usr
boot  etc  home2  lib     misc        opt  root  tmp   var
# mount -t ext3 /dev/hdb1 /home2
# ls home2
lost+found	←壊れたファイルとかが入るディレクトリらしい。勝手に作られる
# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hda5               381139     99448    262013  28% /
/dev/hda1                46636      7983     36245  19% /boot
/dev/hda3              5004636   2019456   2730952  43% /home
none                    191976         0    191976   0% /dev/shm
/dev/hda2             13670176   8761228   4214540  68% /usr
/dev/hda6               256667    191356     52059  79% /var
/dev/hdb1             57685532        20  54755260   1% /home2
# mount
/dev/hda5 on / type ext3 (rw)
〜
/dev/hdb1 on /home2 type ext3 (rw)

できてる、できてる(嬉)


自動マウント設定

fstab(ファイルシステムテーブル?)というファイルに設定を加えておくことにより、マシン起動時に自動的にマウントさせることができる。

# vi /etc/fstab
# cat /etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
〜
LABEL=/dev/hdb1         /home2                  ext3    defaults        1 2

↑他の行を参考にして、hdb1の行を追加。
「defaults」の後の数字は、左の数はdumpコマンドでダンプする必要があるかどうかを示すらしい。意味が分からないので他と同じく「1」でいいかな?
右の数はブート時にファイルシステムをチェックする順番で、ルートは1で他は2にするらしい。
詳細は「man fstab」でヘルプを参照。


RedHatインストールページに戻る / 技術メモへ戻る
メールの送信先:ひしだま