- ベストアンサー
sdaとsdbに同じOS
sdaとsdbに同じOS(CentOS4)が入っていると起動できなくなってしまいます。 (具体的には、プロセスのロードでエラーが発生してしまい、止まってしまう。) これを/dev/sdaをオンにして/dev/sdbをオフにするなどしてうまく起動させたいのですが、なにかよい方法はありますでしょうか。 ご検討がつく方、アドバイスをお願いします。
- みんなの回答 (14)
- 専門家の回答
質問者が選んだベストアンサー
> > >コピー先のOSは、コピーしただけのもので、 > 起動はしないし、 > ところが、コピー先のHDDが最初に上がってきて、元のHDDはなぜか無> 視されるのですよ。 > コピー先のHDDを抜くと元のHDDから起動するのです。 ということは、どこに原因があるのでしょうか。 どういった動きを期待していますか。 /boot/grub/grub.conf /etc/fstab の内容がすべてでしょう。 後は、ご自分で納得のいくまで、調査されたし。
その他の回答 (13)
- yakan9
- ベストアンサー率54% (2245/4126)
> これはリストアを早くするためです。 > バックアップしたデータが多少古くても、リストアを早くしたい > という場合に備えてのものです。 一般的には、dumpとrestoreがよいと思います。 これは、MT装置でも有効ですし、ブロックサイズを大きくすると、 スピードも速いと思います。
- yakan9
- ベストアンサー率54% (2245/4126)
ここではっきり申し上げましょう。 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に保存しておく 領域がもったいないと思いませんか。 これはリストアを早くするためです。 バックアップしたデータが多少古くても、リストアを早くしたい という場合に備えてのものです。 こういうバックアップ方法は安価でそういうためのときに便利だと 思いますし、深く考えることにより理解が高まり、より応用へとつながっていくのだろうと思います。 いろいろありがとうございました。 あとは自分でいろいろやってみます。
- cynthia4
- ベストアンサー率51% (186/358)
LABEL を変えるのが正解かも 実際 RedHat系/Fedora系が混在しているとき /boot, / /boot1, /1 /boot12, /12 などになる 私は、無視されているので もうこれで最後にするが
お礼
RedHat系/Fedora系が混在しているとき /boot, / /boot1, /1 /boot12, /12 などになる 貴重なご意見ありがとうございました。 そうだったのですね。
- cynthia4
- ベストアンサー率51% (186/358)
#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 の方法は千差万別で、次の質問にする。
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の方のパーティションのラベルを変更してやる必要があると思います。
- yakan9
- ベストアンサー率54% (2245/4126)
> 要はローカルバックアップしたいだけなのです。 一般的には、各フォルダ毎、~tar.gzで圧縮して、バックアップ します。 たとえば私の場合だと、/usrを変更したときは、 usr-080324.tar.gzを作って保存します。 大きくなれば、/usr/libは usr-lib-080324.tar.gzとして、分割していきます。
- yakan9
- ベストアンサー率54% (2245/4126)
コンピュータが起動するメカニズムは、簡単に記述すると、 あるチャネルの最初の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の場所を書き換えられます。 この辺の知識をよく理解していただければよいと思います。
- yakan9
- ベストアンサー率54% (2245/4126)
コンピュータが起動するときの、ブートストラップについて、 少し勉強することです。 > dd if=/dev/sda of=/dev/sdb これは、丸ごとコピーしたということで、インストールとは 言いません。 コンピュータが起動するための、最も重要な、MBRを新規に 作っていないので、コピー先のOSは、コピーしただけのもので、 起動はしないし、本当の丸ごとコピーです。 コピー先のOSで起動しようと思っても、だめですよ。 > でシステムバックアップを取ってrebootしたのですが、 > どちらともシステムが入っているので > 起動が重複してエラーを出しているようなのです。 > (その結果sdbをHDDを抜くと問題なく起動します。) これで正しいです。 sdbは、単に丸ごとコピーしたもので、起動するための命とでも 言いますか、MBR等のブートストラップローダが生成されていません。
補足
>コピー先のOSは、コピーしただけのもので、 起動はしないし、 ところが、コピー先のHDDが最初に上がってきて、元のHDDはなぜか無視されるのですよ。 コピー先のHDDを抜くと元のHDDから起動するのです。
- auty
- ベストアンサー率58% (284/486)
>>> dd if=/dev/sda of=/dev/sdbでシステムバックアップを取ってrebootした この方法で、インストールしたということでしょうか。 残念ながら、これは単なる丸コピー(?)でインストールにはなりません。
補足
インストールというか、sdaのシステムをsdbへ丸ごとコピーしたのです。
- yakan9
- ベストアンサー率54% (2245/4126)
インストールのときに、パーティションをきるさい、 失敗するというより、削除→新規として作っていくと、論理パーティションの場合の順番が入れ替わってしまったりします。 その関係かどうかでしょうね。 その回避策は、事前にパーティションをきっておき、 インストールの時は、パーティション設定を編集だけで 決めていくと回避できませんか。 私は、1HDDのときには、よくこの回避策をとります。 そうしないと、後で作ったパーティションが大きな数値の パーティションとして成立してしまいます。 インストール後、/boot/grub/grub.confの数値を前に インストールしたものの値を変更する必要が出てきます。 具体的にいいますと、 インストール前 fedora /boot :partition 1 fedora / :partition 2 fedora swap :partition 3 VineLinux /boot :partition 4 VineLinux / :partition 5 VineLinux swap :partition 6 削除→新規としてfedoraをインストールした後、 fedora /boot :partition 4 fedora / :partition 5 fedora swap :partition 6 VineLinux /boot :partition 1 VineLinux / :partition 2 VineLinux swap :partition 3 こういったことが、ドライブで発生してないでしょうか。 grub.confの内容がどうなっているかでしょうね。
補足
yakan9さん、ご回答ありがとうございます。 dd if=/dev/sda of=/dev/sdb でシステムバックアップを取ってrebootしたのですが、 どちらともシステムが入っているので 起動が重複してエラーを出しているようなのです。 (その結果sdbをHDDを抜くと問題なく起動します。) なにか解決方法をご存知の方、いらっしゃいますでしょうか。 要はローカルバックアップしたいだけなのです。
- 1
- 2
補足
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)に指し、システムを起動したいと考えております。