GNU/Linux >> Linux Esercitazione >  >> Linux

Come si scambia /dev/sda con /dev/sdb?

Ho lo stesso problema per scambiare il sda e sdb nome del disco. Ho provato a scrivere alcune regole udev simili con il post sopra sui miei server HP. Ma ho usato la dimensione del disco in /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"

Prima di questa regola trovo la dimensione dei dispositivi di cat /sys/block/sda/size e cat /sys/block/sdb/size che è descritto qui :Trovare informazioni da sysfs.

Ma quando provo a testare la regola udev con udevadm test /sys/block/sdb Vedo questa riga nell'output:

NAME="sda" ignorato, i nodi del dispositivo del kernel non possono essere rinominati; correggilo in /etc/udev/rules.d/00-corrections.rules:1

Ho Ubuntu 18.04 e ho scoperto che questo è impossibile (almeno in Ubuntu 18.04) basato su questo post:C'è un modo per cambiare i nomi dei dispositivi nella directory /dev?


Al giorno d'oggi, il kernel di Linux popola dinamicamente /dev/ secondo le regole UDEV.

Vorrei prima spiegare come funzionano i file del dispositivo. Ogni file di dispositivo, in genere un file di dispositivo a blocchi, ha un numero maggiore e uno minore. Questi numeri descrivono effettivamente a quale dispositivo punta il file. Il nome non ha alcun ruolo in questo. Diamo un'occhiata al nostro caso specifico di dischi:

# 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

Qui puoi vedere che il mio primo disco ha varie partizioni e che ho avviato il 22 agosto, alle 15:00, quando il kernel ha creato i file secondo le regole. Puoi anche vedere che il numero maggiore è 8 e i numeri minori sono usati per accedere alle partizioni (0 che punta all'intero disco). La 'b' all'inizio di ogni riga indica che ciascuno di questi file è uno speciale "dispositivo a blocchi".

Come ho detto, il kernel crea i file dinamicamente "in questi giorni". Non è sempre stato così e non è così su altri sistemi Unix. Lì, i file verrebbero creati staticamente e l'utente creerebbe o manipolerebbe questi file.

È perfettamente possibile creare i propri file di dispositivo, con il proprio nome e numeri maggiori/minori. Vedi mknod (man mknod ) per quello. Tuttavia, dopo il riavvio, i tuoi file personalizzati scompariranno.

La seconda possibilità è modificare le regole UDEV. Le regole verranno elaborate durante l'avvio del sistema e garantiscono un comportamento coerente in modo permanente. Una buona guida su queste regole può essere trovata qui:http://www.reactivated.net/writing_udev_rules.html

Vedrai che è possibile definire una regola che crea "sda*" date informazioni hardware specifiche che corrispondono al tuo dispositivo. Dovrai sostituire le regole originali che creerebbero sda con le tue. Il modo in cui funziona dipende dalla tua distribuzione.

Poiché penso che questo sia un affare pericoloso per i principianti, non ti spiegherò passaggi specifici; il documento che ho linkato sopra ti darà tutte le informazioni di cui hai bisogno, e dovresti davvero leggerlo tutto.


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0?

  3. Quanto sono portatili /dev/stdin, /dev/stdout e /dev/stderr?

  4. Quando usare /dev/random vs /dev/urandom?

  5. Come mappare il dispositivo /dev/sdX e /dev/mapper/mpathY dal dispositivo /dev/dm-Z

tty (/dev/tty ) vs pts (/dev/pts) in Linux

Linux:differenza tra /dev/console , /dev/tty e /dev/tty0

kernel:disabilitare /dev/kmem e /dev/mem

Come Linux usa /dev/tty e /dev/tty0

echo o print /dev/stdin /dev/stdout /dev/stderr

Differenze tra /dev/sda e /dev/sda1