RedHat7.2のlinuxマシンにIDEのハードディスクを増設したときのメモです。
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」でヘルプを参照。