GNU/Linux >> Znalost Linux >  >> Linux

Jak zaměníte /dev/sda s /dev/sdb?

Mám stejný problém s výměnou sda a sdb název disku. Pokusil jsem se napsat některá podobná pravidla udev s výše uvedeným příspěvkem na svých vlastních serverech HP. Ale použil jsem velikost disku v /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"

Před tímto pravidlem zjistím velikost zařízení podle cat /sys/block/sda/size a cat /sys/block/sdb/size který je popsán zde :Vyhledání informací ze sysfs.

Ale když se pokusím otestovat pravidlo udev pomocí udevadm test /sys/block/sdb Ve výstupu vidím tento řádek:

NAME="sda" ignorováno, uzly zařízení jádra nelze přejmenovat; opravte to prosím v /etc/udev/rules.d/00-corrections.rules:1

Mám ubuntu 18.04 a zjistil jsem, že toto není možné (alespoň v ubuntu 18.04) na základě tohoto příspěvku:Existuje způsob, jak změnit názvy zařízení v adresáři /dev?


V dnešní době se linuxové jádro dynamicky zaplňuje /dev/ podle pravidel UDEV.

Dovolte mi nejprve vysvětlit, jak fungují soubory zařízení. Každý soubor zařízení, obvykle soubor blokového zařízení, má hlavní a vedlejší číslo. Tato čísla ve skutečnosti popisují, na jaké zařízení soubor ukazuje. Jméno v tom nehraje žádnou roli. Podívejme se na náš konkrétní případ disků:

# 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

Zde vidíte, že můj první disk má různé oddíly a že jsem bootoval 22. srpna v 15 hodin, což je doba, kdy jádro vytvořilo soubory podle pravidel. Můžete také vidět, že hlavní číslo je 8 a vedlejší čísla se používají pro přístup k oddílům (0 ukazuje na celý disk). Písmeno 'b' na začátku každého řádku říká, že každý z nich je speciální soubor "blokového zařízení".

Jak jsem řekl, jádro vytváří soubory dynamicky „dnes“. Nebylo tomu tak vždy a není tomu tak ani na jiných unixových systémech. Tam by se soubory vytvořily staticky a uživatel by tyto soubory vytvořil nebo s nimi manipuloval.

Je dokonale možné vytvořit si vlastní soubory zařízení s vlastním jménem a hlavními/vedlejšími čísly. Viz mknod (man mknod ) pro to. Po opětovném spuštění však vaše vlastní soubory zmizí.

Druhou možností je změna pravidel UDEV. Pravidla budou zpracována během spouštění systému a zaručí vám trvale konzistentní chování. Dobrý průvodce těmito pravidly lze nalézt zde:http://www.reactivated.net/writing_udev_rules.html

Uvidíte, že je možné definovat pravidlo, které vytvoří „sda*“ na základě konkrétních informací o hardwaru, které odpovídají vašemu zařízení. Původní pravidla, která by vytvořila sda, budete muset nahradit vašimi. Jak to funguje, závisí na vaší distribuci.

Vzhledem k tomu, že se domnívám, že je to pro nováčka nebezpečná záležitost, nebudu vám vysvětlovat konkrétní kroky; dokument, na který jsem odkazoval výše, vám poskytne všechny informace, které potřebujete, a měli byste si jej skutečně přečíst celý.


Linux
  1. Jak vyměnit vadný pevný disk v softwarovém RAID systému Linux

  2. Jak vygenerovat náhodné heslo v linuxu pomocí /dev/random

  3. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  1. Jak přenosné jsou /dev/stdin, /dev/stdout a /dev/stderr?

  2. Kdy mám použít /dev/shm/ a kdy /tmp/?

  3. DD z /dev/zero do /dev/null...co se vlastně stane

  1. Jak Linux používá /dev/tty a /dev/tty0

  2. echo nebo print /dev/stdin /dev/stdout /dev/stderr

  3. Proč jsou < nebo > vyžadovány pro použití /dev/tcp