linux: 2011年12月アーカイブ

fdiskでパーティションを削除した後、/etc/fstab に削除したパーティションのエントリを残したままサーバを再起動したところ、起動時のファイルシステムチェックでエラーになり、起動しなくなってしまった。

その対処方法。

  1. エラー画面でrootパスワードを入力してメンテナンスモードに入る。
  2. / が読み取り専用モードでマウントされているため、書き込み可能なようにマウントし直す。これをしないと、fstabを編集できない。
    # mount -o remount,rw /
    
  3. fstabの不要エントリ(実際には削除されているが、エントリに残っているディスクパーティション)を削除。
    # nano /etc/fstab
    
  4. システムを再起動。
    # shutdown -r now
    


/etc/fstabの記述ミスでOSブート不能 - shibainu55日記

カテゴリー:

さくらのクラウドで、/homeディレクトリを追加ディスク内のパーティションに移動してみた。

まず、さくらのクラウドのコントロールパネルでディスクを追加してサーバに接続しておく。
下記では、追加したディスクは、/dev/hdb として認識されています。

移行の手順は以下の通り。

fdiskでパーティションを作成する

# fdisk /dev/hdb

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

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-2610, default 1): 
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-2610, default 2610): 
Using default value 2610

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

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

デバイス Boot      Start         End      Blocks   Id  System
/dev/hdb1               1        2610    20964793+  83  Linux

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

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

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

ここでいったんリブートする。

作成したパーティションにファイルシステムを作成する

# mkfs -t ext3 /dev/hdb1 
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2621440 inodes, 5241198 blocks
262059 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
160 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, 
	4096000

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

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

/mnt での新規ファイル・システムのマウント

いったん新しいディレクトリにマウントする。
ここでは、/mnt/newpart というディレクトリにマウントした。

# mkdir /mnt/newpart
# mount /dev/hdb1 /mnt/newpart

このマウントは一時的なものなので、/etc/fstabには記述しない。

ファイルのコピー

ここからは、さくらのクラウドのコントロールパネルのコンソールで操作する。
まず、安全にファイルをコピーするために、シングルユーザモードにする。

# telinit 1

ファイルをコピーする。

# cd /home
# cp -ax * /mnt/newpart/

マウントポイントの変更

# mv /home /home.old
# mkdir /home
# mount /dev/hdb1 /home

exitでシングルユーザモードを抜ける。

# exit

/etc/fstabの編集。

# nano /etc/fstab

/etc/fstab に以下の行を追加。

/dev/hdb1               /home                   ext3    defaults        1 2

再起動

再起動すると、/dev/hdb1 が /home のみにマウントされた状態になる。

確認。

$ df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/hda2              18G  8.8G  7.8G  53% /
/dev/hda1              99M   18M   76M  20% /boot
tmpfs                1006M     0 1006M   0% /dev/shm
/dev/hdb1              20G  5.6G   14G  30% /home

元に戻す場合

問題があって元に戻す場合は、さくらのクラウドのコンソールでシングルユーザモードにして、/homeをumount後、/homeを削除、/home.oldを/homeにリネームすればよい。あと、/etc/fstab から/homeのマウントのエントリを削除するのを忘れずに。

/homeディレクトリをumountするとき、device is busy となってアンマウントできない場合は、

# umount -l /home
でアンマウントする。

パーティションの活用: /home の移動編

ITmedia エンタープライズ : Linux Tips「「/home/」などのディレクトリを,ほかのドライブ(パーティション)に移動したい」

マウントポイントの移動 - Linux on Titan700

カテゴリー:

さくらのクラウドでディスクを追加、サーバ(CentOS 5.7)に接続、マウントして使えるようにした。

ディスクの追加

まず、さくらのクラウドのコントロールパネルで、ディスクを追加して、サーバに接続しておく。

パーティションの作成

# fdisk -l

Disk /dev/hda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        2355    18812115   83  Linux
/dev/hda3            2356        2610     2048287+  82  Linux swap / Solaris

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

ディスク /dev/hdb は正常な領域テーブルを含んでいません

/dev/hdb が追加されているのが分かる。

fdiskの引数に追加したディスクのデバイスファイルのパス(/dev/hdb)を指定して実行。

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

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

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

この警告は気にする必要はない。

続いてパーティションを作成する。

まず p コマンドで現在設定されているパーティションを確認。

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

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

デバイス Boot      Start         End      Blocks   Id  System

パーティションはまだない。
n コマンドでパーティションを作成する。
基本領域を作成するので、コマンドアクションは「p」を指定。
領域番号は「1」を指定。
最初シリンダと終了シリンダはデフォルトでOK。

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-2610, default 1): 
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-2610, default 2610): 
Using default value 2610

p コマンドでパーティションを確認。

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

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

デバイス Boot      Start         End      Blocks   Id  System
/dev/hdb1               1        2610    20964793+  83  Linux

w コマンドで書き込む。

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

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

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

警告が出たので、ここでいったんリブートした。

パーティションをフォーマットする

# mkfs -t ext3 /dev/hdb1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2621440 inodes, 5241198 blocks
262059 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
160 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, 
	4096000

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

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

必要に応じて、tune2fsでfsckのタイミングを設定する。(関連エントリー参照)

マウント

マウントポイントを作成する。

# mkdir /backup

マウントを実行。

# mount /dev/hdb1 /backup

正しくマウントされているかを確認。

# mount
/dev/hda2 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/hdb1 on /backup type ext3 (rw)

システム起動時に自動マウントするようにするため、/etc/fstabに以下を追加する。

/dev/hdb1               /backup                 ext3    defaults        1 2

※万一、fstabの記述にミスがあった場合、ブートできなくなってしまう。
その場合は、コントロールパネルのコンソールでメンテナンスモードに入り、fstabを修正して、リブートする。手順は関連エントリー参照。

memomemo : さくらのクラウド ディスクの追加 on CentOS5

カテゴリー: