公開日: 2012年8月9日 01:50:32
最終更新: 2012年9月22日 13:25:50

HDD増設 (ext3)

HDD増設

自宅でサーバとして常時起動させていると気になるのが CPU負荷や電気代…もそうなのですが、一番気になるのは ハードディスクの寿命だったりします。今回、雷サージやら諸々の原因で HDD に異常が見られたため (泣) 交換することにしました。

ハードディスクの追加

特殊な HDD でなければたいていのハードディスクを認識してくれます。linux 上では1台目のHDD は「/dev/hda」、2台目は「/dev/hdb」、3台目は「/dev/hdc」…と順番に認識されます。(SCSI ディスクの場合や SATA ディスクの場合は「sda」、「sdb」…となります。)

追加するHDD を接続してOSを起動したら、 dmesg コマンドで新しい HDD が認識されているかどうか確認します。

$ dmesg | gep -i hardware

PCI: Probing PCI hardware (bus 00)
   sd 0:0:0:0: [sda] 234441648 512-byte hardware sectors (120034 MB)
   sd 0:0:0:0: [sda] 234441648 512-byte hardware sectors (120034 MB)
   sd 0:0:1:0: [sdb] 160836480 512-byte hardware sectors (82348 MB)    sd 0:0:1:0: [sdb] 160836480 512-byte hardware sectors (82348 MB)
   ・
   ・
   ・

パーティションの作成

まず fdisk コマンドで追加したハードディスク(ここでは/dev/sdb、2台目のHDD) にパーティションを作成します。

$ fdisk /dev/sdb
このディスクのシリンダ数は 10011 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
   1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
   2) 別の OS のブートやパーティション作成ソフト
 (例. DOS FDISK, OS/2 FDISK)
コマンド (m でヘルプ):

なにやらエラーめいたことが表示されますがいつものことなのでまっったく気にせず先に進みます。

「n」で新規パーティションの作成を選択すると、パーティションの種類を訊かれます。パーティションを分割する必要がなければ基本領域 (p) を、さらに細かく分割したいときは拡張 (e) を選択します。

コマンド (m でヘルプ): n # 新しいパーティションを作成
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p # 基本領域を選択
領域番号 (1-4): 1 # HDD の容量すべてを割り当て
最初 シリンダ (1-10011, default 1): Enter
Using default value 1
# パーティションサイズを設定
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-10011, default 10011): Enter
Using default value 10011

コマンド (m でヘルプ): p # パーティションを確認

Disk /dev/sdb: 82.3 GB, 82348277760 bytes
255 heads, 63 sectors/track, 10011 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
Disk identifier: 0xc1e610be

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       10011    80413326   83  Linux

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

これで LINUX パーティションができました。もし Windows とのデュアルブートを構成していて、新しいファイルシステムを Windows から参照する必要があるなら、「t」コマンドでパーティションタイプを変更します。

コマンド (m でヘルプ):t # パーティションタイプの変更
16進数コード (L コマンドでコードリスト表示): c
領域のシステムタイプを 1 から c (W95 FAT32 (LBA)) に変更しました

パーティションテーブルを更新するために「:wq」で書き込み・quit します。

パーティションのフォーマット

パーティションができたら、ファイルの読み書きができるようフォーマットします。Fedora や CentOS では mkfs.* というコマンドでディスクをフォーマットすることができます。

$ mkfs.ext3 /dev/sdb1 # ext3 でフォーマット

パーティションタイプを FAT32 に変更した場合は、次のように vfat でフォーマットします。

$ mkfs.vfat -F 32 /dev/sdb1

これでようやっと、HDD にファイルが書き込めるようになりました。

ファイルシステムのマウント

パーティションがフォーマットできたら、適当なところにマウントパスを作ってマウントしてみます。ここでは、/NEW_PART というディレクトリを作成してマウントしています。

$ mkdir /NEW_PART # マウントパス を作成
$ mount -t ext3 /dev/sdb1 /NEW_PART 
$ cd /NEW_PART 
   
$ ls-la
合計 28
drwxr-xr-x  3 root root  4096 2008-09-14 00:30 .
drwxr-xr-x 24 root root  4096 2008-09-14 02:21 ..
drwx------  2 root root 16384 2008-09-14 00:30 lost+found

ディスクを使用するたびに手動でマウントするのも面倒なので、OS の起動時に自動でマウントするよう設定を変更します。
※ 間違えると OS が起動しなくなりますので (号泣) 編集は慎重に行いましょう。

$ vi /etc/fstab

 

# 最終行に追加
/dev/sdb1		/NEW_PART	ext3	defaults	1 2

新しい HDD を /home としてマウントする

新しい HDD を /NEW_part ではなく 既存の /home と差し替えることもできます。
※ 環境に合わせて微調整が必要かも…

現 /home のデータをすべて 新しい HDD (/NEW_PART) にコピーします。

$ rsync -avzp /home/* /NEW_PART

/etc/fstab を編集します。

# 「/home」行がある場合はコメントアウト
#/dev/sda4		/home		defaults	1 2
↓
/dev/sdb1		/home		defaults	1 2

OS をリブートします。もし再起動後に /home の読み書きができないようであれば、SELinux の制限を受けているかもしれません。restorecon コマンドを試してみましょう。

$ restorecon /home/ -R

/etc/fstab 編集後にOSが起動しない場合

/etc/fstab はOS の起動時にマウントするドライブの設定が書かれている設定ファイルですので、単純なスペルミスでも「マウントできない!」と怒られて起動してくれなくなります。

*** An error occured during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.
Give root password for maintenance(or type Control-D for normal startup);

あわてず、root パスワードを入力して修復モードに移行します。ファイルシステムを保護するため ReadOnly でマウントされていますので、まず読み書きできるようにマウントしなおします。

(Repair filesystem)1 # mount -o remount,rw / # / パーティションを再マウント

あとはいつもの CUI 操作と一緒ですね。/etc/fstab を編集しなおしてマシンをリブートします。

(Repair filesystem)2 # vi /etc/fstab # /etc/fstab を修正。

(Repair filesystem)3 # exit