そらとぶへび

仕事・プライベートを通しての気づき、JavaやPHP、データベースやサーバの話などこつこつと書いていきます

CentOS ディスクの追加、パーティションの新規作成、マウント処理

仕事でCentOSのディスク新規追加や、取り外しをした際の作業Tips。


対象OS:CentOS 6.6 64bit Plain (CentOS 64bit)


アンマウント、ディスクを取り外す場合に、対象ディスクを認識したまま切断すると、
異常な状態になるので、以下の処理を行う。


マウントを解除

 #umount -l /home/test

認識を外すデバイスを確認する

# dmesg | grep -i 'Attached SCSI disk'
sd 2:0:0:0: [sda] Attached SCSI disk
sd 2:0:1:0: [sdb] Attached SCSI disk

外すデバイスを指定。

/sys/class/scsi_device/2:0:1:0/device/delete

正常に外れているかを確認をする。

# fdisk -l



ディスクを再接続後、スキャンで追加されたDISKが見えるようにする

# for i in $(find /sys/class/scsi_host -name 'scan') $(find /sys/devices -name 'scan') ;do echo "- - -" > $i ; done

追加されたDISKを確認

# fdisk -l
ディスク /dev/sda: 32.2 GB, 32212254720 バイト
ヘッド 255, セクタ 63, シリンダ 3916
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x0004bc0c

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          66      524288   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              66         334     2150400   82  Linux スワップ / Solaris
パーティション 2 は、シリンダ境界で終わっていません。
/dev/sda3             334        3917    28781568   83  Linux

ディスク /dev/sdb: 107.4 GB, 107374182400 バイト
ヘッド 255, セクタ 63, シリンダ 13054
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

領域を作成します。

# fdisk /dev/sdb

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
      強く推奨します。 and change display units to
         sectors (command 'u').

コマンド (m でヘルプ): m
コマンドの動作
   a   ブート可能フラグをつける
   b   bsd ディスクラベルを編集する
   c   dos 互換フラグをつける
   d   領域を削除する
   l   既知の領域タイプをリスト表示する
   m   このメニューを表示する
   n   新たに領域を作成する
   o   新たに空の DOS 領域テーブルを作成する
   p   領域テーブルを表示する
   q   変更を保存せずに終了する
   s   空の Sun ディスクラベルを作成する
   t   領域のシステム ID を変更する
   u   表示/項目ユニットを変更する
   v   領域テーブルを照合する
   w   テーブルをディスクに書き込み、終了する
   x   特別な機能 (エキスパート専用)

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-13054, 初期値 1):
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-13054, 初期値 13054):
初期値 13054 を使います

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

ディスク /dev/sdb: 107.4 GB, 107374182400 バイト
ヘッド 255, セクタ 63, シリンダ 13054
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x083d66ef

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1               1       13054   104856223+  83  Linux

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

パーティションの更新情報を認識させます。

# partprobe

パーティションをフォーマットします。

# mkfs -t ext4 /dev/sdb1

自動マウント設定を行ないます。再起動した場合も自動的にマウントするよう設定を行ないます。

# vi /etc/fstab
# diff /etc/fstab /etc/fstab.ORG
12d11
< /dev/sdb1               /home/test                   ext4    defaults        1 2

作成したディレクトリにマウントします。

# mount /dev/sdb1 /home/test

マウントしたディスクが認識されているか、確認。

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda3       28198044 1297680  25461288   5% /
tmpfs            4028756       0   4028756   0% /dev/shm
/dev/sda1         499656   30892    442552   7% /boot
/dev/sdb1      103079868   61044  97776016   1% /home/test


一応、これで完成。


なお、同じディスクで、パーティションの削除、作成を繰り返していると、下記のエラーが出ることがあります。

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

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

警告: 領域テーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
ディスクを同期させます。

メッセージを読むとリブートするの??って思いますが、partprobe コマンドで再読み込みをすれば、OSを再起動しなくても認識されます。