|
Size: 14877
Comment: minor fixes
|
Size: 13582
Comment: sync with English version - major rewrite of the english page
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 6: | Line 6: |
| == Rigenerare fstab == | == Panoramica: UUID, etichette e fstab == |
| Line 8: | Line 8: |
| Per mostrare una partizione appena creata (ad esempio sda6 o sdb7) che non appare in fstab o si vuole montare, digitare come utente il seguente comando in una console: {{{ ls -l /dev/disk/by-uuid }}} Verrà mostrato un output come questo: {{{ lrwxrwxrwx 1 root root 10 2007-05-27 23:42 348ea9e6-7879-4332-8d7a-915507574a80 -> ../../sda4 lrwxrwxrwx 1 root root 10 2007-05-27 23:42 610aaaeb-a65e-4269-9714-b26a1388a106 -> ../../sda2 lrwxrwxrwx 1 root root 10 2007-05-27 23:42 857c5e63-c9be-4080-b4c2-72d606435051 -> ../../sda5 lrwxrwxrwx 1 root root 10 2007-05-27 23:42 a83b8ede-a9df-4df6-bfc7-02b8b7a5f1f2 -> ../../sda1 lrwxrwxrwx 1 root root 10 2007-05-27 23:42 ad662d33-6934-459c-a128-bdf0393e0f44 -> ../../sda6 }}} In questo esempio {{{ad662d33-6934-459c-a128-bdf0393e0f44}}} è la voce mancante, il passo successivo è inserire l'UUID della partizione in /etc/fstab. Usare un editor di testo (come kate o kwrite) con privilegi di root: {{{ # <device file system> <mount point> <type> <options> <dump> <pass> UUID=ad662d33-6934-459c-a128-bdf0393e0f44 /media/sda6 ext3 auto,users,exec 0 2 }}} (!) Nota: il nome del punto di montaggio (in fstab) deve essere una directory esistente. == Descrizione: UUID, etichettare partizioni e fstab == ---- La denominazione persistente dei device a blocchi è stata resa possibile dall'introduzione di [[udev]] con alcuni vantaggi rispetto a quella basata sul bus. |
La denominazione persistente dei device a blocchi è stata resa possibile dall'introduzione di [[udev]] con alcuni vantaggi rispetto all'uso dei nomi tradizionali basati sul bus, come /dev/hda1 o /dev/sda2. |
| Line 36: | Line 12: |
| 1. avendo più di un controller sata, scsi o ide e dato che l'ordine in cui vengono aggiunti è casuale, questo può portare a nomi di dispositivo come hdX e hdY che cambiano in modo casuale ad ogni avvio; lo stesso vale per sdX e sdY. La denominazione persistente permette di non preoccuparsene più 1. con l'introduzione della nuova gestione dei pata da parte di libata, tutti i device ide hdX diventeranno in futuro sdX. Anche qui, con la denominazione persistente non si noterà nemmeno 1. le macchine con controller sia sata che ide sono oggigiorno comuni, con le modifiche di libata menzionate prima il primo problema diverrà sempre più frequente perché le unità sata e ide saranno entrambe identificate come sdX 1. Le grosse macchine con molte CPU veloci e adattatori Bus Fibre Channel, switch FC e archiviazione di dati con carico e latenza variabili, controller SCSI, schede di rete ad alte prestazioni, possono avere problemi di asincronia quando gestiscono udev e multipath, con un ordine di rilevamento e assegnazione dei nomi dei device in fase di avvio quasi imprevedibili |
1. Avendo più di un controller dischi SATA/SCSI o IDE che vengono aggiunti in ordine casuale, questo può portare a nomi di dispositivo come hdX e hdY che cambiano in modo casuale ad ogni avvio; lo stesso vale per sdX e sdY. La denominazione persistente permette di non preoccuparsene più. 1. Con l'introduzione della nuova gestione dei PATA da parte di libata (standard nei kernel Squeeze), tutti i device IDE hdX diventeranno sdX. Anche qui, con la denominazione persistente non si noterà nemmeno. 1. Le macchine con controller sia SATA che IDE sono oggigiorno comuni, con le modifiche di libata menzionate prima il primo problema diverrà sempre più frequente perché le unità SATA e IDE saranno entrambe identificate come sdX. 1. Le grosse macchine con molte CPU veloci e molti adattatori Bus Fibre Channel, switch FC e Data Storage con carico e latenza variabili, controller SCSI, schede di rete ad alte prestazioni, possono avere problemi di asincronia quando gestiscono udev e multipath, con un ordine di rilevamento e assegnazione dei nomi dei device in fase di avvio quasi imprevedibili. |
| Line 42: | Line 18: |
| Line 45: | Line 20: |
| === Denominazione persistente per UUID === UUID sta per Universally Unique Identifier ed è un meccanismo per fornire ad ogni '''filesystem''' (non alle partizioni) un identificativo univoco; è progettato affinché le collisioni siano '''improbabili'''. Tutti i filesystem Linux (incluso lo swap, '''nonostante non ne abbia uno assegnato in modo predefinito usando l'installatore debian''') supportano UUID; FAT e NTFS no, ma vengono comunque elencati in {{{by-uuid}}} con un identificatore univoco: {{{ $ /bin/ls -lF /dev/disk/by-uuid/ }}} {{{ |
=== Con UUID === UUID sta per Universally Unique Identifier ed è un meccanismo per fornire ad ogni filesystem un identificativo univoco. Tutti i filesystem Linux supportano UUID; FAT e NTFS no, ma vengono comunque elencati in {{{/dev/disk/by-uuid}}} con un identificatore univoco: {{{ $ ls -l /dev/disk/by-uuid/ |
| Line 64: | Line 37: |
| Come si può vedere, le partizioni fat e ntfs hanno nomi più corti (sda6 e sdb1), ma sono comunque presenti con un uuid. Purtroppo sulle grosse macchine potrebbero accadere delle race condition e '''l'UUID del filesystem potrebbe essere assegnato più volte a device differenti''', Linux potrebbe sceglierne uno (in modo casuale) che trova al momento del rilevamento di udev. Ad esempio potrebbe rilevare lo stesso UUID per /dev/sda1 e /dev/dm-1, quindi grub potrebbe selezionare /dev/dm-1 mentre /etc/fstab usa /dev/sda1, con la conseguenza di non terminare l'avvio a causa del "dispositivo occupato". ==== Come trovare l'UUID del device ==== {{{ ~# blkid /dev/sda1: UUID="87f2b245-6ab3-4021-bf07-d069b4d387a1" TYPE="ext3" /dev/sda2: TYPE="swap" /dev/sda3: UUID="a6f7a63f-71ac-4361-b49a-39d62b06f18a" TYPE="ext3" }}} Si può notare che la partizione di swap non ha un UUID, l'installatore di Debian Lenny usa una versione di partman che non ne attribuisce uno, lo si può ottenere con mkswap. ==== Come assegnare un UUID alla partizione di swap ==== Disattivare in modo sicuro l'attuale swap: {{{ ~# swapoff /dev/sda2 }}} Ricrearla ottenendo l'UUID, riattivarla e verificare il risultato: {{{ ~# mkswap /dev/sda2 Setting up swapspace version 1, size = 1998737 kB no label, UUID=7cdfeb21-613b-4588-abb5-9d4049854e9a corp-bsa-exp-nuvem01:~# blkid /dev/sda1: UUID="87f2b245-6ab3-4021-bf07-d069b4d387a1" TYPE="ext3" /dev/sda2: TYPE="swap" UUID="7cdfeb21-613b-4588-abb5-9d4049854e9a" /dev/sda3: UUID="a6f7a63f-71ac-4361-b49a-39d62b06f18a" TYPE="ext3" ~# swapon /dev/sda2 ~# free total used free shared buffers cached Mem: 33017956 298700 32719256 0 17060 148668 -/+ buffers/cache: 132972 32884984 Swap: 1951888 0 1951888 }}} === Denominazione persistente per etichetta === Quasi ogni tipo di '''filesystem''' può avere un'etichetta; tutte le partizioni che ne hanno una sono elencate nella directory /dev/disk/by-label: {{{ $ ls -lF /dev/disk/by-label }}} {{{ |
Come si può vedere, i filesystem FAT e NTFS hanno nomi più corti (sda6 e sdb1), ma sono comunque elencati con con un UUID. Il punto di avere stringhe a 32 cifre in base 36 è quello di rendere le collisioni astronomicamente improbabili; se accadesse che sda1 e sda2 avessero lo stesso UUID l'avvio del sistema fallirebbe. === Con etichetta === Quasi ogni tipo di filesystem può avere anche un'etichetta; tutti quelli che ne hanno una sono elencati nella directory {{{/dev/disk/by-label}}}: {{{ $ ls -l /dev/disk/by-label |
| Line 120: | Line 53: |
| Anche se le etichette possono avere nomi riconoscibili, è necessario prestare la massima attenzione per evitare conflitti. | Anche se possono essere usate parole riconoscibili come etichette, è necessario prestare la massima attenzione per evitare conflitti di nomi; considerare la possbilità di avere unità USB/firewire inserite in modo casuale al riavvio. |
| Line 124: | Line 57: |
| * swap: Creare un nuovo spazio di swap con: mkswap -L <etichetta> /dev/XXX | |
| Line 126: | Line 58: |
| * fat/vfat: dosfslabel /dev/XXX <etichetta> (bug #506786 in Lenny; o mlabel in mtools) * jfs: jfs_tune -L <etichetta> /dev/XXX * ntfs: ntfslabel /dev/XXX <etichetta> (o modificarla da Windows) |
|
| Line 127: | Line 62: |
| * jfs: jfs_tune -L <etichetta> /dev/XXX | * swap: mkswap -L <etichetta> /dev/XXX (ma vedere in seguito la procedura di swapoff/swapon) |
| Line 129: | Line 64: |
| * fat/vfat: in Linux non c'è nessuno strumento per cambiare etichetta, si usi {{{mkdosfs -n <etichetta> <altre opzioni>}}} durante la creazione del filesystem. Si può anche cambiare l'etichetta di un filesystem esistente usando Windows. * ntfs: ntfslabel /dev/XXX <etichetta> o modificarla da Windows }}} Attenzione: le etichette devono essere univoche, sono applicabili allo stesso modo a penne e hard disk USB o firewire; per le partizioni UN*X la sintassi LABEL=/ UUID= è preferibile a quella con /dev/disk/by-*/ . === Denominazione persistente per id === by-id crea un nome univoco in base al numero seriale '''hardware'''; questi nomi sono destinati a rimanere immutati per una certa configurazione hardware. {{{ ~# ls -lh /dev/disk/by-id/ |
}}} === Con ID hardware === by-id crea un nome univoco in base al numero seriale dell'hardware; questi nomi sono destinati a rimanere immutati per una certa configurazione hardware. {{{ # ls -l /dev/disk/by-id/ |
| Line 182: | Line 115: |
| === Denominazione persistente per percorso === by-path crea un nome univoco in base al percorso fisico più corto (secondo sysfs), questi nomi contengono stringhe che indicano a quale sottosistema appartengono, non sono adatti a risolvere i problemi discussi all'inizio di questo articolo e non verranno approfonditi. == Abilitare la denominazione persistente == |
=== Con percorsi sysfs === by-path crea un nome univoco in base al percorso fisico più corto (secondo sysfs), questi nomi contengono stringhe che indicano a quale sottosistema appartengono, perciò non sono adatti a risolvere i problemi discussi all'inizio di questo articolo e non verranno approfonditi. == Gestione dei nomi persistenti == Si può ottenere una panoramica base di quali device siano associati a quali nomi persistenti semplicemente con il comando {{{ $ ls -lR /dev/disk }}} ma esiste anche un nuovo comodo comando blkid (che è in /sbin, ma non richiede privilegi di root). Fornisce diversi tipi di output utile; il più semplice è: {{{ $ /sbin/blkid /dev/sda1: LABEL=Root UUID="87f2b245-6ab3-4021-bf07-d069b4d387a1" TYPE="ext3" /dev/sda2: TYPE="swap" /dev/sda3: LABEL=Home UUID="a6f7a63f-71ac-4361-b49a-39d62b06f18a" TYPE="ext3" }}} Come si può notare, la partizione di swap non ha un UUID, l'installatore di Debian Lenny usa una versione di partman che non ne attribuisce uno alle partizioni di swap. Tutta via si possono dare nomi persistenti alle partizioni di swap usando mkswap nel modo descritto di seguito. === Assegnare nomi persistenti a partizioni di swap === Come prima cosa, assicurarsi di avere identificato correttamente la partizione di swap (vedere /proc/swaps)! (Come root) deattivare in modo sicuro l'attuale swap, reinizializzarlo (aggiungendo opzionalmente un'etichetta) e riattivarlo: {{{ # swapoff /dev/sda2 # mkswap -L Swap /dev/sda2 Setting up swapspace version 1, size = 1998737 kB LABEL=Swap, UUID=7cdfeb21-613b-4588-abb5-9d4049854e9a # swapon /dev/sda2 }}} (Come utente normale) verificare il risultato: {{{ $ /sbin/blkid /dev/sda1: LABEL=Root UUID="87f2b245-6ab3-4021-bf07-d069b4d387a1" TYPE="ext3" /dev/sda2: LABEL=Swap UUID="7cdfeb21-613b-4588-abb5-9d4049854e9a" TYPE="swap" /dev/sda3: LABEL=Home UUID="a6f7a63f-71ac-4361-b49a-39d62b06f18a" TYPE="ext3" $ free total used free shared buffers cached Mem: 33017956 298700 32719256 0 17060 148668 -/+ buffers/cache: 132972 32884984 Swap: 1951888 0 1951888 }}} == Usare i nomi persistenti == |
| Line 188: | Line 164: |
| Dopo aver scelto quale metodo di denominazione si desidera utilizzare, la si abiliterà per il sistema: | Dopo aver scelto quale metodo di denominazione si desidera utilizzare, lo si abiliterà per il sistema: |
| Line 192: | Line 168: |
| Abilitarla in /etc/fstab è semplice, basta sostituire il nome del device nella prima colonna con il nuovo nome persistente. In questo esempio verrà sostituito /dev/sda7 con uno dei seguenti: | Abilitare la denominazione persistente in /etc/fstab è semplice; basta sostituire il nome del device nella prima colonna (dove vi è qualcosa del tipo "/dev/sda7") con il nuovo nome persistente. Questo può essere fatto o sostituendo il percorso appropriato in /dev/disk, come: |
| Line 196: | Line 172: |
oppure |
o |
| Line 203: | Line 178: |
| Ripetere l'operazione per tutte le partizioni nel file fstab. Invece di fornire esplicitamente il device si può indicare il filesystem da montare tramite l'UUID o l'etichetta di volume, scrivendo LABEL=<etichetta> o UUID=<uuid>, ad esempio: {{{ LABEL=Boot }}} {{{ UUID=3e6be9de-8139-11d1-9106-a43f08d823a6 }}} === Denominazione persistente nel boot manager === |
Tuttavia, invece di fornire esplicitamente il percorso /dev/disk, il metodo solitamente raccomandato è quello di indicare come debba essere montato il filesystem scrivendo LABEL=<etichetta> o UUID=<uuid>; per esempio: {{{ LABEL=home }}} o {{{ UUID=31f8eb0d-612b-4805-835e-0e6d8b8c5591 }}} === Nel Boot Manager === (Le informazioni che seguono sono per lo più datate, e presumono l'uso di grub-legacy: la versione in Squeeze di grub; grub2, cioè, usa gli UUID in modo predefinito.) |
Contents
Panoramica: UUID, etichette e fstab
La denominazione persistente dei device a blocchi è stata resa possibile dall'introduzione di udev con alcuni vantaggi rispetto all'uso dei nomi tradizionali basati sul bus, come /dev/hda1 o /dev/sda2.
Nonostante le distribuzioni Linux e udev siano in evoluzione e il rilevamento dell'hardware sia sempre più affidabile, ci sono anche una serie di nuovi problemi e modifiche:
- Avendo più di un controller dischi SATA/SCSI o IDE che vengono aggiunti in ordine casuale, questo può portare a nomi di dispositivo come hdX e hdY che cambiano in modo casuale ad ogni avvio; lo stesso vale per sdX e sdY. La denominazione persistente permette di non preoccuparsene più.
- Con l'introduzione della nuova gestione dei PATA da parte di libata (standard nei kernel Squeeze), tutti i device IDE hdX diventeranno sdX. Anche qui, con la denominazione persistente non si noterà nemmeno.
- Le macchine con controller sia SATA che IDE sono oggigiorno comuni, con le modifiche di libata menzionate prima il primo problema diverrà sempre più frequente perché le unità SATA e IDE saranno entrambe identificate come sdX.
- Le grosse macchine con molte CPU veloci e molti adattatori Bus Fibre Channel, switch FC e Data Storage con carico e latenza variabili, controller SCSI, schede di rete ad alte prestazioni, possono avere problemi di asincronia quando gestiscono udev e multipath, con un ordine di rilevamento e assegnazione dei nomi dei device in fase di avvio quasi imprevedibili.
Ci sono altre ragioni ma queste sono al momento, e nel prossimo futuro, le più critiche; ecco perché Debian incoraggia a modificare la configurazione usando il sistema della denominazione persistente.
I quattro sistemi differenti per la denominazione persistente
Con UUID
UUID sta per Universally Unique Identifier ed è un meccanismo per fornire ad ogni filesystem un identificativo univoco. Tutti i filesystem Linux supportano UUID; FAT e NTFS no, ma vengono comunque elencati in /dev/disk/by-uuid con un identificatore univoco:
$ ls -l /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 10 Oct 16 10:27 2d781b26-0285-421a-b9d0-d4a0d3b55680 -> ../../sda1 lrwxrwxrwx 1 root root 10 Oct 16 10:27 31f8eb0d-612b-4805-835e-0e6d8b8c5591 -> ../../sda7 lrwxrwxrwx 1 root root 10 Oct 16 10:27 3FC2-3DDB -> ../../sda6 lrwxrwxrwx 1 root root 10 Oct 16 10:27 5090093f-e023-4a93-b2b6-8a9568dd23dc -> ../../sda2 lrwxrwxrwx 1 root root 10 Oct 16 10:27 912c7844-5430-4eea-b55c-e23f8959a8ee -> ../../sda5 lrwxrwxrwx 1 root root 10 Oct 16 10:27 B0DC1977DC193954 -> ../../sdb1 lrwxrwxrwx 1 root root 10 Oct 16 10:27 bae98338-ec29-4beb-aacf-107e44599b2e -> ../../sdb2
Come si può vedere, i filesystem FAT e NTFS hanno nomi più corti (sda6 e sdb1), ma sono comunque elencati con con un UUID. Il punto di avere stringhe a 32 cifre in base 36 è quello di rendere le collisioni astronomicamente improbabili; se accadesse che sda1 e sda2 avessero lo stesso UUID l'avvio del sistema fallirebbe.
Con etichetta
Quasi ogni tipo di filesystem può avere anche un'etichetta; tutti quelli che ne hanno una sono elencati nella directory /dev/disk/by-label:
$ ls -l /dev/disk/by-label lrwxrwxrwx 1 root root 10 Oct 16 10:27 data -> ../../sdb2 lrwxrwxrwx 1 root root 10 Oct 16 10:27 data2 -> ../../sda2 lrwxrwxrwx 1 root root 10 Oct 16 10:27 fat -> ../../sda6 lrwxrwxrwx 1 root root 10 Oct 16 10:27 home -> ../../sda7 lrwxrwxrwx 1 root root 10 Oct 16 10:27 root -> ../../sda1 lrwxrwxrwx 1 root root 10 Oct 16 10:27 swap -> ../../sda5 lrwxrwxrwx 1 root root 10 Oct 16 10:27 windows -> ../../sdb1
Anche se possono essere usate parole riconoscibili come etichette, è necessario prestare la massima attenzione per evitare conflitti di nomi; considerare la possbilità di avere unità USB/firewire inserite in modo casuale al riavvio.
Si possono modificare le etichette dei filesystem con questi comandi:
* ext2/ext3: e2label /dev/XXX <etichetta> * fat/vfat: dosfslabel /dev/XXX <etichetta> (bug #506786 in Lenny; o mlabel in mtools) * jfs: jfs_tune -L <etichetta> /dev/XXX * ntfs: ntfslabel /dev/XXX <etichetta> (o modificarla da Windows) * reiserfs: reiserfstune -l <etichetta> /dev/XXX * swap: mkswap -L <etichetta> /dev/XXX (ma vedere in seguito la procedura di swapoff/swapon) * xfs: xfs_admin -L <etichetta> /dev/XXX
Con ID hardware
by-id crea un nome univoco in base al numero seriale dell'hardware; questi nomi sono destinati a rimanere immutati per una certa configurazione hardware.
# ls -l /dev/disk/by-id/ total 0 lrwxrwxrwx 1 root root 10 2010-10-20 13:52 dm-name-grupo1-lvstripe1 -> ../../dm-8 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath0 -> ../../dm-0 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath1 -> ../../dm-1 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath2 -> ../../dm-2 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath3 -> ../../dm-3 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath4 -> ../../dm-4 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath5 -> ../../dm-5 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath6 -> ../../dm-6 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath7 -> ../../dm-7 lrwxrwxrwx 1 root root 10 2010-10-20 13:52 dm-uuid-LVM-OaDwNcuwdzuuZYAcrbeKNdYsE237BKX2YIEdUN5CsSgeU7WNn5dhtiQPBP9uHU25 -> ../../dm-8 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c000000000000000c -> ../../dm-0 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c000000000000000d -> ../../dm-1 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c000000000000000e -> ../../dm-2 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c000000000000000f -> ../../dm-3 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c0000000000000112 -> ../../dm-4 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c0000000000000113 -> ../../dm-5 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c0000000000000114 -> ../../dm-6 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c0000000000000115 -> ../../dm-7 lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-360026b9038e49f001270c8b707980d5c -> ../../sda lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-360026b9038e49f001270c8b707980d5c-part1 -> ../../sda1 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-360026b9038e49f001270c8b707980d5c-part2 -> ../../sda2 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-360026b9038e49f001270c8b707980d5c-part3 -> ../../sda3 lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-36005076308ffc36c000000000000000c -> ../../sdr lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-36005076308ffc36c000000000000000d -> ../../sdc lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-36005076308ffc36c000000000000000e -> ../../sdab lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-36005076308ffc36c000000000000000f -> ../../sdu lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-36005076308ffc36c0000000000000112 -> ../../sdn lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-36005076308ffc36c0000000000000113 -> ../../sdo lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-36005076308ffc36c0000000000000114 -> ../../sdp lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-36005076308ffc36c0000000000000115 -> ../../sdag lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath0 -> ../../dm-0 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath1 -> ../../dm-1 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath2 -> ../../dm-2 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath3 -> ../../dm-3 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath4 -> ../../dm-4 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath5 -> ../../dm-5 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath6 -> ../../dm-6 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath7 -> ../../dm-7
Con percorsi sysfs
by-path crea un nome univoco in base al percorso fisico più corto (secondo sysfs), questi nomi contengono stringhe che indicano a quale sottosistema appartengono, perciò non sono adatti a risolvere i problemi discussi all'inizio di questo articolo e non verranno approfonditi.
Gestione dei nomi persistenti
Si può ottenere una panoramica base di quali device siano associati a quali nomi persistenti semplicemente con il comando
$ ls -lR /dev/disk
ma esiste anche un nuovo comodo comando blkid (che è in /sbin, ma non richiede privilegi di root). Fornisce diversi tipi di output utile; il più semplice è:
$ /sbin/blkid /dev/sda1: LABEL=Root UUID="87f2b245-6ab3-4021-bf07-d069b4d387a1" TYPE="ext3" /dev/sda2: TYPE="swap" /dev/sda3: LABEL=Home UUID="a6f7a63f-71ac-4361-b49a-39d62b06f18a" TYPE="ext3"
Come si può notare, la partizione di swap non ha un UUID, l'installatore di Debian Lenny usa una versione di partman che non ne attribuisce uno alle partizioni di swap.
Tutta via si possono dare nomi persistenti alle partizioni di swap usando mkswap nel modo descritto di seguito.
Assegnare nomi persistenti a partizioni di swap
Come prima cosa, assicurarsi di avere identificato correttamente la partizione di swap (vedere /proc/swaps)!
(Come root) deattivare in modo sicuro l'attuale swap, reinizializzarlo (aggiungendo opzionalmente un'etichetta) e riattivarlo:
# swapoff /dev/sda2 # mkswap -L Swap /dev/sda2 Setting up swapspace version 1, size = 1998737 kB LABEL=Swap, UUID=7cdfeb21-613b-4588-abb5-9d4049854e9a # swapon /dev/sda2
(Come utente normale) verificare il risultato:
$ /sbin/blkid
/dev/sda1: LABEL=Root UUID="87f2b245-6ab3-4021-bf07-d069b4d387a1" TYPE="ext3"
/dev/sda2: LABEL=Swap UUID="7cdfeb21-613b-4588-abb5-9d4049854e9a" TYPE="swap"
/dev/sda3: LABEL=Home UUID="a6f7a63f-71ac-4361-b49a-39d62b06f18a" TYPE="ext3"
$ free
total used free shared buffers cached
Mem: 33017956 298700 32719256 0 17060 148668
-/+ buffers/cache: 132972 32884984
Swap: 1951888 0 1951888
Usare i nomi persistenti
Dopo aver scelto quale metodo di denominazione si desidera utilizzare, lo si abiliterà per il sistema:
In fstab
Abilitare la denominazione persistente in /etc/fstab è semplice; basta sostituire il nome del device nella prima colonna (dove vi è qualcosa del tipo "/dev/sda7") con il nuovo nome persistente. Questo può essere fatto o sostituendo il percorso appropriato in /dev/disk, come:
/dev/disk/by-label/home
o
/dev/disk/by-uuid/31f8eb0d-612b-4805-835e-0e6d8b8c5591
Tuttavia, invece di fornire esplicitamente il percorso /dev/disk, il metodo solitamente raccomandato è quello di indicare come debba essere montato il filesystem scrivendo LABEL=<etichetta> o UUID=<uuid>; per esempio:
LABEL=home
o
UUID=31f8eb0d-612b-4805-835e-0e6d8b8c5591
Nel Boot Manager
(Le informazioni che seguono sono per lo più datate, e presumono l'uso di grub-legacy: la versione in Squeeze di grub; grub2, cioè, usa gli UUID in modo predefinito.)
Per usare i nomi persistenti nel boot manager, devono essere soddisfatti tutti i seguenti requisiti:
- si deve utilizzare un'immagine mkinitcpio initramfs
- si deve avere udev abilitato in /etc/mkinitcpio.conf
- quando l'immagine initramfs è stata generata doveva essere installata la versione 101-3, o superiore, di klibc-udev (in qualsiasi versione precedente la denominazione persistente è corrotta); se si sta aggiornando klibc-udev da una versione precedente, rigenerare l'immagine initramfs prima di riavviare.
Nell'esempio precedente /dev/sda1 è la partizione di root, nel file menu.lst di grub la linea del kernel appare così:
kernel /boot/vmlinuz26 root=/dev/sda1 vga=0x318 ro
Modificarla in questo modo, a seconda del sistema di denominazione che si preferisce:
kernel /boot/vmlinuz26 root=/dev/disk/by-label/root vga=0x318 ro
oppure
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/2d781b26-0285-421a-b9d0-d4a0d3b55680 vga=0x318 ro
C'è un modo alternativo per usare l'etichetta inserita nel filesystem, ad esempio se (come sopra) il filesystem in /dev/sda1 è etichettato come "root", si può fornire questa riga a grub:
kernel /boot/vmlinuz26 root=LABEL=root vga=0x318 ro
Farne una copia di backup per sicurezza:
~# cp /boot/grub/menu.lst /boot/grub/menu.lst.old1
Usare il percorso /dev/disk/by-id e modificare /boot/grub/menu.lst
## AFM 22oct2010 ## kopt=root=/dev/sda3 ro # kopt=root=/dev/disk/by-id/scsi-360026b9038e754001270c9de079bca7c-part3 ro rootdelay=15 nodmraid
Aggiornare menu.lst usando lo stesso script usato dai pacchetti kernel:
:~# update-grub Searching for GRUB installation directory ... found: /boot/grub Searching for default file ... found: /boot/grub/default Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst Searching for splash image ... none found, skipping ... Found kernel: /vmlinuz-2.6.26-1-amd64 Updating /boot/grub/menu.lst ... done
