プロが教える店舗&オフィスのセキュリティ対策術

sdaとsdbに同じOS(CentOS4)が入っていると起動できなくなってしまいます。
(具体的には、プロセスのロードでエラーが発生してしまい、止まってしまう。)
これを/dev/sdaをオンにして/dev/sdbをオフにするなどしてうまく起動させたいのですが、なにかよい方法はありますでしょうか。

ご検討がつく方、アドバイスをお願いします。

A 回答 (14件中1~10件)

> > >コピー先のOSは、コピーしただけのもので、


> 起動はしないし、
> ところが、コピー先のHDDが最初に上がってきて、元のHDDはなぜか無> 視されるのですよ。
> コピー先のHDDを抜くと元のHDDから起動するのです。

ということは、どこに原因があるのでしょうか。
どういった動きを期待していますか。
/boot/grub/grub.conf
/etc/fstab
の内容がすべてでしょう。

後は、ご自分で納得のいくまで、調査されたし。

この回答への補足

Disk /dev/sda: 36.4 GB, 36420075008 bytes
255 heads, 63 sectors/track, 4427 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 4166 33358972+ 83 Linux
/dev/sda3 4167 4427 2096482+ 82 Linux swap / Solaris

Disk /dev/sdb: 36.4 GB, 36420075008 bytes
255 heads, 63 sectors/track, 4427 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 13 104391 83 Linux
/dev/sdb2 14 4166 33358972+ 83 Linux
/dev/sdb3 4167 4427 2096482+ 82 Linux swap / Solaris

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 31G 1.3G 29G 5% /
/dev/sda1 99M 10M 84M 11% /boot
tmpfs 506M 0 506M 0% /dev/shm
ーーーーーーーーーーーーーーーーーーーーー
ddでコピーして上記のような構成になりました。

ですので、
vi /boot/grub/grub.conf
-------------------------------------------
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-8.el5)
root (hd0,0)
#kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/
kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/sda2
initrd /initrd-2.6.18-8.el5.img
---------------------------------------

vi /etc/fstab
---------------------------------------
/dev/sda2 / ext3 defaults 1 1
#LABEL=/boot /boot ext3 defaults 1 2
/dev/sda1 /boot ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=SWAP-sda3 swap swap defaults 0 0
--------------------------------------

としてみたのですが、なぜか起動のところで/devファイルが無く、
マウントできない等のエラーがでて起動できません。
どのようにしたらよいでしょうか。

やりたいことはコピー元のHDD(hda)をコピー先(hdb)へシステムごとコピーをして、rebootしても(hda)から起動してくるようにしたいのです。コピー元(hda)が故障したらそれを抜いて捨て、(hdb)を抜いて(hda)に指し、システムを起動したいと考えております。

補足日時:2008/03/25 22:24
    • good
    • 0

> これはリストアを早くするためです。


> バックアップしたデータが多少古くても、リストアを早くしたい
> という場合に備えてのものです。
一般的には、dumpとrestoreがよいと思います。
これは、MT装置でも有効ですし、ブロックサイズを大きくすると、
スピードも速いと思います。
    • good
    • 0

ここではっきり申し上げましょう。


ddコマンドで、ドライブごと丸まるコピーしても、
バックアップとして何の意味がありますか。
インストールしたほうが早いし、問題は起きません。

また、先にも述べましたが、MBRの関係で、sdbに保存しておく
領域がもったいないと思いませんか。

> やりたいことはコピー元のHDD(hda)をコピー先(hdb)へ
> システムごとコピーをして、rebootしても(hda)から起動して
> くるようにしたいのです。
> コピー元(hda)が故障したらそれを抜いて捨て、
> (hdb)を抜いて(hda)に指し、システムを起動したいと
> 考えております。
ここでよく考えてください。
同じものを2つ用意しておくと、コンピュータは、どっちにするか、
迷ってしまわないでしょうか。

hdbはhdaと全く同じです。しかし、日々OSの不具合で更新され、
hdbは、hdaと比べると古いものになっていきます。
またご自分で修正したり、手直ししたりした部分は、両方にそのつど、
hdbにも修正を加えていきますか。

最後に、/boot/grub/grub.confはよいとして、
/etc/fstabです。

> vi /etc/fstab
> ---------------------------------------
> /dev/sda2 / ext3 defaults 1 1
> #LABEL=/boot /boot ext3 defaults 1 2
> /dev/sda1 /boot ext3 defaults 1 2
> devpts /dev/pts devpts gid=5,mode=620 0 0
> tmpfs /dev/shm tmpfs defaults 0 0
> proc /proc proc defaults 0 0
> sysfs /sys sysfs defaults 0 0
> LABEL=SWAP-sda3 swap swap defaults 0 0
> --------------------------------------

と修正しても、再起動した後また見ましたか。
元に戻っていませんか。
要は、全く同じものが、コンピュータに2つあるとしたら、
どちらを使うか困ってしまい、動かないと思います。
よって、外付けのhdbの電源は、切っておかなければなりません。

この回答への補足

yakan9さん。詳細な説明ありがとうございました。

ここではっきり申し上げましょう。
ddコマンドで、ドライブごと丸まるコピーしても、
バックアップとして何の意味がありますか。
インストールしたほうが早いし、問題は起きません。

また、先にも述べましたが、MBRの関係で、sdbに保存しておく
領域がもったいないと思いませんか。

これはリストアを早くするためです。
バックアップしたデータが多少古くても、リストアを早くしたい
という場合に備えてのものです。

こういうバックアップ方法は安価でそういうためのときに便利だと
思いますし、深く考えることにより理解が高まり、より応用へとつながっていくのだろうと思います。

いろいろありがとうございました。
あとは自分でいろいろやってみます。

補足日時:2008/03/26 08:37
    • good
    • 0

LABEL を変えるのが正解かも


実際
RedHat系/Fedora系が混在しているとき
/boot, /
/boot1, /1
/boot12, /12
などになる
私は、無視されているので
もうこれで最後にするが
    • good
    • 0
この回答へのお礼

RedHat系/Fedora系が混在しているとき
/boot, /
/boot1, /1
/boot12, /12
などになる

貴重なご意見ありがとうございました。
そうだったのですね。

お礼日時:2008/03/26 08:34

#3 です。


私の言った事とNo.9 さんの
言った事が理解されていないようです。
おまかせ install すると
LVM で installされ
それを、dd でcopy すると
Volume Group と 論理Group が同じものが出来ます。
従って、矛盾が生じます。
LVM でなくても、LABEL で競合します。

従って、今のやり方では無理です。

いっそ、Software-RAID 1 でinstall し直したら如何でしょうか。
または、/deb/hdb には、dd で copy しないで
OS を 入れないで ext3 などで format する。
backup だけのものにする。
backup の方法は千差万別で、次の質問にする。
    • good
    • 0

ext2/ext3のファイルシステムを使っていて、


かつラベルを適用していませんか?

/etc/fstabに
===================================================================
LABEL=/ / ext3 defaults 1 1
LABEL=/home /home ext3 defaults 1 2
LABEL=/usr /usr ext3 defaults 1 2
===================================================================
のようにラベルを使用した状態で、
ddでコピーすると、コピー先にもラベルが適用された状態になると思います。
つまり、sdaとsdbに同じラベルのパーティションが存在し、
マウントする際に重複エラーが出るのではないでしょうか。

解決するには、
/etc/fstabをLABEL=ではなく/dev/sda1のような形式をとるか、
ddでバックアップを実行後にe2labelコマンドを使用してsdbの方のパーティションのラベルを変更してやる必要があると思います。
    • good
    • 0

> 要はローカルバックアップしたいだけなのです。


一般的には、各フォルダ毎、~tar.gzで圧縮して、バックアップ
します。
たとえば私の場合だと、/usrを変更したときは、
usr-080324.tar.gzを作って保存します。
大きくなれば、/usr/libは
usr-lib-080324.tar.gzとして、分割していきます。
    • good
    • 0

コンピュータが起動するメカニズムは、簡単に記述すると、


あるチャネルの最初の1ブロックを読み、実行しなさい
という命令から始められます。
あるチャネルというのは、HDDであったり、CD-ROMであったり、
FDであったりします。
この最初の1ブロックが、MBRです。
このMBRには、次に読んで実行するための場所が示されています。
それが、Linuxでは、/boot/grub/grub.confであり、
WindowsXPでは、c:boot.iniです。

ここであなたのやった場合を見ますと、まず正しい、
MBRを作っていないこと、
sdaの最初のMBRは、書き換えられていないので、sdbとのつながりは、
何もありません。
また、本来正しくインストールすれば、sdaのMBRに、
sdbの/boot/grub/grub.confの場所を書き換えられます。
この辺の知識をよく理解していただければよいと思います。
    • good
    • 0

コンピュータが起動するときの、ブートストラップについて、


少し勉強することです。

> dd if=/dev/sda of=/dev/sdb
これは、丸ごとコピーしたということで、インストールとは
言いません。
コンピュータが起動するための、最も重要な、MBRを新規に
作っていないので、コピー先のOSは、コピーしただけのもので、
起動はしないし、本当の丸ごとコピーです。
コピー先のOSで起動しようと思っても、だめですよ。

> でシステムバックアップを取ってrebootしたのですが、
> どちらともシステムが入っているので
> 起動が重複してエラーを出しているようなのです。
> (その結果sdbをHDDを抜くと問題なく起動します。)
これで正しいです。
sdbは、単に丸ごとコピーしたもので、起動するための命とでも
言いますか、MBR等のブートストラップローダが生成されていません。

この回答への補足

>コピー先のOSは、コピーしただけのもので、
起動はしないし、

ところが、コピー先のHDDが最初に上がってきて、元のHDDはなぜか無視されるのですよ。
コピー先のHDDを抜くと元のHDDから起動するのです。

補足日時:2008/03/24 23:04
    • good
    • 0

>>> dd if=/dev/sda of=/dev/sdbでシステムバックアップを取ってrebootした



この方法で、インストールしたということでしょうか。
残念ながら、これは単なる丸コピー(?)でインストールにはなりません。

この回答への補足

インストールというか、sdaのシステムをsdbへ丸ごとコピーしたのです。

補足日時:2008/03/24 07:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!