GNU/Linux >> Linux の 問題 >  >> Linux

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

sda を交換するのと同じ問題があります そして sdb ディスク名。私は自分の HP サーバーで上記の投稿と同様の udev ルールを書き込もうとしました。しかし、ディスクのサイズを /etc/udev/rules.d/00-corrections.rules で使用しました

KERNEL=="sd?", ATTR{size}=="781357232", NAME="sda"
KERNEL=="sd??", ATTRS{size}=="781357232", NAME="sda%n"
KERNEL=="sda", ATTR{size}=="3125515952", NAME="sdb"
KERNEL=="sda?", ATTRS{size}=="3125515952", NAME="sdb%n"

このルールの前に、cat /sys/block/sda/size でデバイスのサイズを見つけます と cat /sys/block/sdb/size ここで説明されています:sysfs からの情報の検索。

しかし、udev ルールを udevadm test /sys/block/sdb でテストしようとすると、 出力に次の行が表示されます:

<ブロック引用>

NAME="sda" は無視されます。カーネル デバイス ノードの名前は変更できません。 /etc/udev/rules.d/00-corrections.rules:1 で修正してください

ubuntu 18.04 を使用していますが、これは不可能であることがわかりました (少なくとも ubuntu 18.04 では) この投稿に基づく:Is there a way to change device names in /dev directory?


最近では、Linux カーネルは UDEV ルールに従って /dev/ を動的に設定します。

まず、デバイス ファイルのしくみについて説明します。各デバイス ファイル (通常はブロック デバイス ファイル) には、メジャー番号とマイナー番号があります。これらの数値は、ファイルが指しているデバイスを実際に示しています。名前はこれには何の役割も果たしません。ディスクの特定のケースを見てみましょう:

# ls -l sd*
brw-rw---- 1 root disk 8, 0 Aug 22 15:45 sda
brw-rw---- 1 root disk 8, 1 Aug 22 15:45 sda1
brw-rw---- 1 root disk 8, 2 Aug 22 15:45 sda2
brw-rw---- 1 root disk 8, 3 Aug 22 15:45 sda3
brw-rw---- 1 root disk 8, 5 Aug 22 15:45 sda5
brw-rw---- 1 root disk 8, 6 Aug 22 15:45 sda6

ここで、私の最初のディスクにはさまざまなパーティションがあり、8 月 22 日の午後 3 時に起動したことがわかります。これは、カーネルがルールに従ってファイルを作成した時刻です。また、メジャー番号が 8 で、マイナー番号がパーティションへのアクセスに使用されていることもわかります (0 はディスク全体を指します)。各行の先頭にある「b」は、これらのそれぞれが特別な「ブロック デバイス」ファイルであることを示しています。

私が言ったように、カーネルは「最近」動的にファイルを作成します。常にそうであるとは限らず、他の Unix システムでもそうではありません。そこでは、ファイルが静的に作成され、ユーザーがこれらのファイルを作成または操作します。

独自の名前とメジャー/マイナー番号を使用して、独自のデバイス ファイルを作成することは完全に可能です。 mknod を参照 (man mknod ) そのために。ただし、再起動すると、カスタム ファイルは消えます。

2 つ目の可能性は、UDEV ルールを変更することです。ルールはシステムの起動中に処理され、永続的に一貫した動作が保証されます。これらの規則に関する適切なガイドは、http://www.reactivated.net/writing_udev_rules.html にあります。

デバイスに一致する特定のハードウェア情報を指定して、「sda*」を作成するルールを定義できることがわかります。 sda を作成する元のルールを自分のものに置き換える必要があります。これがどのように機能するかは、ディストリビューションによって異なります。

これは初心者にとって危険なビジネスだと思うので、具体的な手順については説明しません。上でリンクしたドキュメントは、必要なすべての情報を提供します。実際にすべて読む必要があります。


Linux
  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. / dev / stdin、/ dev / stdout、および/ dev / stderrはどの程度移植可能ですか?

  3. / dev/randomと/dev/ urandomをいつ使用するか?

  1. /dev/dm-Z デバイスから /dev/sdX および /dev/mapper/mpathY デバイスをマップする方法

  2. /dev/shm/ と /tmp/ はいつ使用する必要がありますか?

  3. /dev/zero から /dev/null への DD ...実際に何が起こるか

  1. /dev/sdb:そのようなファイルやディレクトリはありません (ただし /dev/sdb1 などは存在します)

  2. Linux:/dev/console 、 /dev/tty 、 /dev/tty0 の違い

  3. カーネル:/dev/kmem と /dev/mem を無効化