15

少年、これはそのようなものです。を。些細なこと。という質問ですが、誰も正しく答えられないようです。

/dev/sda と /dev/sdb をどのように交換しますか?

永続的なラベル付け (例: /dev/disk/by-* ) の使用を提案する人もいますが、最善の意図にもかかわらず、これは質問の答えにはなりません。はい、永続的なラベル付けは、それらを使用できる場所で機能しますが、プログラムが使用するようにハードコードされている場合などです。/dev/sda、この質問は続きます。

インターネットで見つけたものからさらに問題を説明するには: http://ubuntuforums.org/showthread.php?t=1569238&page=2 (「Schadenfreude」を思い出します)

このチャップは解決策を見つけたようですが、共有しませんでした(ブー!): http://ubuntuforums.org/showthread.php?t=944515

そして、私は潜在的に同様の危険を冒しています。私は CloneZilla を使用していますが、プログラムが次のように尋ねるとWould you like to backup /dev/sda to /dev/sdb or /dev/sdb to /dev/sda ?、Linux がランダムにディスクの順序を割り当てているように見えることを知って、どれだけ神経質になるかと思います。自分のデータを自分のバックアップでまだ上書きしていませんが、これが起こるのを待っています。

Linux 内で /dev/sd* をディスクに割り当てるのは何ですか? また、このプロセスにどのように影響しますか? これは udev (/etc/udev/, udevadm) と何か関係がありますか? 私のOSはCentOSですが、UbuntuとCloneZilla(http://clonezilla.org)についてもこれを知る必要があり、この問題はすべてのシステムで発生するため、この問題はディストリビューションに関係しているのではなく、カーネル、カーネルモジュール、またはカーネルに非常に近いものに。助けてください!

------------------ 編集: 2013 年 8 月 25 日 ypnos が提供したリンクをアドバイスした後、私はそれをすべて読み、1 つのコマンドを試しました。カーネルは udev ルールを「吐き出しました」。私の画面全体。次に、root パスワードを要求してメンテナンスを許可するか、再起動のために終了します。これは、これが実際に初心者向けではないという証拠です。

私ももう少し調べてみました。Linuxカーネルがいつ、どのようにロードされるかはわかりませんが、インターネット上のいくつかのメッセージは、BIOSが(信じられないかもしれませんが)起動可能なディスクのリストをgrubに渡し、それがdevice.mapファイルを使用していることを示していますどのデバイスをどの grub (hd*, ) に割り当てるか。/dev/sdはこの段階ですでに定義されていることに注意してください。これは、永続的な dev シンボリック リンクを使用できるためです。これらのデバイス マップは、何らかの形で実際のルート ファイル システムに渡されるようです。それで、これは現在ブートローダーのことですか?

潜在的な解決策として udev に戻ると、Google http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=578826でバグレポートを見つけました。 udev NAME (私たちが知っているように、最終的には /dev/sd* になります)。

推奨される udev MAN ページの場合:

| The following keys can get values assigned:
| 
| NAME
|  The name of the node to be created, or the name the network
|  interface should be renamed to.
   NOTE: changing the kernel-provided name of device nodes
   (except for network devices) is not supported and can result
   in unexpected behavior.
   Today, the kernel defines the device nodes names, and udev
   is expected to only manage the node's permissions and
   additional symlinks.

...しかし、私はとにかく少し変更された方法でそれを行うために出かけました。

# vi /etc/udev/rules.d/00-corrections.rules

KERNEL=="sd?", ATTRS{model}=="SAMSUNG SP0411N", NAME="sda"
KERNEL=="sd??", ATTRS{model}=="SAMSUNG SP0411N", NAME="sda%n"
KERNEL=="sda", ATTRS{model}!="SAMSUNG SP0411N", NAME="sdb"
KERNEL=="sda?", ATTRS{model}!="SAMSUNG SP0411N", NAME="sdb%n"

基本的には、「モデルが samsung の場合、名前 sda* を割り当てます。モデルが Samsung ではなく、sda* が割り当てられている場合は、name sdb* を割り当てます」ということです。このルールは、他のすべてのルールよりもできる限り前に配置されました。「見えない」ルールファイルもいくつかあるようで、デバイスの名前を変更したにもかかわらず、「kernel-loaded-memory」のどこかにカーネルがまだ参照が間違っている可能性があるため、これについてはよくわかりません。これは、/var/log/boot.log ファイルを見ると明らかな場合があります。私の場合、冒頭に次のように書かれています。

%G      Welcome to [0;36mCentOS[0;39m 
Starting udev: %G[60G[[0;32m  OK  [0;39m]Setting hostname UncleFloServer:  [60G[[0;32m  OK  [0;39m]ERROR: asr: seeking device "/dev/sda" to 5999998795264
ERROR: ddf1: seeking device "/dev/sda" to 5999998795264
ERROR: ddf1: seeking device "/dev/sda" to 5999998664192
ERROR: hpt45x: seeking device "/dev/sda" to 5999998790144
ERROR: isw: seeking device "/dev/sda" to 5999998794752
ERROR: jmicron: seeking device "/dev/sda" to 5999998795264
ERROR: lsi: seeking device "/dev/sda" to 5999998795264
ERROR: nvidia: seeking device "/dev/sda" to 5999998794752
ERROR: pdc: seeking device "/dev/sda" to 137438913024
ERROR: pdc: seeking device "/dev/sda" to 137438920192
ERROR: pdc: seeking device "/dev/sda" to 137438927360
ERROR: pdc: seeking device "/dev/sda" to 137438934528
ERROR: sil: seeking device "/dev/sda" to 5999998795264
ERROR: via: seeking device "/dev/sda" to 5999998795264
Setting up Logical Volume Management:   No volume groups found
[60G[[0;32m  OK  [0;39m]Checking filesystems
_CentOS-6.4-x86_: clean, 85517/655360 files, 662649/2621440 blocks
/dev/sda1: clean, 56/65536 files, 33367/262144 blocks
[60G[[0;32m  OK  [0;39m]Remounting root filesystem in read-write mode:  [60G[[0;32m  OK  [0;39m]Mounting local filesystems:  [60G[[0;32m  OK  [0;39m]Enabling local filesystem quotas:  [60G[[0;32m  OK  [0;39m]Enabling /etc/fstab swaps:  [60G[[0;32m  OK  [0;39m]

ここで、私の Samsung デバイスは 40GB (/dev/sda にしたい) で、大きなビンロウジュの Raid は 6TB (/dev/sdb にしたい) です。

いくつかの残りの質問が残っています

  1. エラーは何を意味しますか?

  2. これらのエラーはカーネルの原因ですか、それとも udev からの 00-corrections.rules の前に実行中のルール ファイルの原因ですか?

  3. これらのエラーはデータを脅かす何かを示していますか? アレカ パーティションは、fstab のフォルダーの 1 つに問題なくマウントされました。

  4. より良い、より早いデバイス割り当て方法はありますか?

4

5 に答える 5

0

私のこの答えに従わないでください。

何をしているのか正確にわからない場合は、データを回復不能に殺すことができます。この回答が必要な場合は、おそらく必要ありません。

...しかし、何らかの理由で本当に他に方法がない場合は、次のことができます。注: この数十年で、必要とされたケースは 1 つもありませんでした。

そのため、Linux カーネルでは、デバイスはパスではなく、メジャー番号とマイナー番号によって識別されます。たとえば、アンは次のようにls -l /dev/sda言っています。

brw-rw-rw- 1 user group 8, 0 Nov 26 20:53 /dev/sda

8,0メジャー番号とマイナー番号があります。sdbにはメジャー番号とマイナー番号があります8,16

コマンドでデバイスファイルを作成できるmknodので、

mknod /dev/sda b 8 16; mknod /dev/sdb b 8 0

必要に応じてデバイスファイルを (再) 作成します。

chroot された (コンテナー化された) 環境でこれを行うと、問題のあるアプリだけがこれらの上書きされた設定を見ることができるため、危険性ははるかに小さくなります。

于 2021-11-26T19:58:08.110 に答える