Se sei un amministratore di sistema, la gestione della partizione del disco rigido del tuo server Linux è un'attività critica.
In questo tutorial, ci concentreremo su come utilizzare l'utilità della riga di comando sfdisk per gestire le partizioni del disco rigido.
Sebbene sfdisk sia simile a fdisk, ci sono poche attività di manipolazione delle partizioni che sono molto facili da eseguire in sfdisk. Ad esempio, puoi creare nuove partizioni in un metodo non interattivo usando sfdisk.
Le seguenti attività di sfdisk sono trattate in questo tutorial:
- Visualizza partizioni disco esistenti
- Cambia unità di visualizzazione (dimensioni display in MB)
- Crea nuove partizioni del disco (metodo interattivo)
- Verifica la coerenza della tabella delle partizioni
- Visualizza la dimensione totale della partizione
- Esegui il dump dei dettagli della partizione del disco su un file di testo
- Crea nuove partizioni da file di testo (metodo non interattivo)
- Visualizza dettagli estesi sulla partizione
- Visualizza la geometria del disco per il debug
- Visualizza tutti i tipi di partizione del disco
- Gestisci solo una singola partizione del disco
- Modalità di prova per la verifica
- Segna una partizione specifica come avviabile
- Cambia tipo di partizione
- Crea nuove partizioni dallo script della shell (metodo non interattivo)
1. Visualizza le partizioni del disco esistenti
Usando l'opzione -l puoi visualizzare tutte le partizioni del tuo disco. -l sta per lista.
Per impostazione predefinita, verranno visualizzate le partizioni di tutti i dischi sui tuoi sistemi.
# sfdisk -l Disk /dev/sda: 1044 cylinders, 255 heads, 63 sectors/track Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sda1 * 0+ 1044- 1045- 8387584 83 Linux /dev/sda2 0 - 0 0 0 Empty /dev/sda3 0 - 0 0 0 Empty /dev/sda4 0 - 0 0 0 Empty Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track
In quanto sopra:
- Mostra le partizioni per entrambi i dispositivi sda e sdf.
- sda ha solo una partizione. cioè sda1. Ma l'opzione -l visualizzerà sempre tutte e 4 le informazioni sulla partizione primaria. Poiché, in questo esempio, sda ha solo una partizione (cioè sda1), le restanti 3 partizioni (sda2, sda3, sda4) indicheranno "Empty" nell'ultima colonna.
- Il dispositivo sdf non ha alcuna partizione. cioè Non è stato ancora creato nulla su questo dispositivo. Quindi, non elenca nulla per questo dispositivo.
Puoi anche visualizzare le partizioni del disco di un dispositivo specifico passando il nome del dispositivo come mostrato di seguito.
# sfdisk -l /dev/sdf
Invece di -l, puoi anche usare –list come mostrato di seguito.
sfdisk --list sfdisk --list /dev/sdf
Se sei nuovo nella gestione del disco rigido, potresti anche voler capire come utilizzare il normale comando fdisk affidabile:7 Esempi di comandi fdisk di Linux per gestire la partizione del disco rigido
2. Modifica unità di visualizzazione (dimensioni display in MB)
Per impostazione predefinita, sfdisk visualizzerà la dimensione in blocchi. Nell'output sfdisk -l sopra, guarda la colonna chiamata "#blocks".
Tuttavia, se vuoi visualizzare la dimensione in MB, usa l'opzione -u come mostrato di seguito. -u sta per Unit. Devi specificare il tipo di unità. In questo esempio, il tipo di unità che stiamo specificando è M (che è MB)
L'opzione -uM sostituirà la colonna "#cyls" dall'output sopra con "MiB" (dimensione in MB) come mostrato di seguito.
# sfdisk -l -uM Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track Units: 1MiB = 1024*1024 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End MiB #blocks Id System /dev/sdf1 0+ 8032- 8033- 8225279+ 83 Linux /dev/sdf2 8032+ 8189- 157- 160650 83 Linux /dev/sdf3 0 - 0 0 0 Empty /dev/sdf4 0 - 0 0 0 Empty
Di seguito sono riportati i diversi tipi di unità che puoi specificare:
- M per MB
- C per numero di cilindri (questa è l'impostazione predefinita)
- S per numero di settori
- B per numero di blocchi (questo viene visualizzato anche nell'output predefinito insieme a #cilindri)
# sfdisk -l -uM # sfdisk -l -uC # sfdisk -l -uS # sfdisk -l -uB
3. Crea nuove partizioni del disco (metodo interattivo)
Nell'esempio seguente, prenderemo un disco rigido vuoto (sdf) e creeremo partizioni su di esso usando sfdisk.
# sfdisk /dev/sdf
Quello che segue è l'output del comando precedente suddiviso in più sezioni per capirlo facilmente.
Innanzitutto, controllerà l'sdf per assicurarsi che non sia attualmente montato o utilizzato da qualcun altro.
Checking that no-one is using this disk right now ... OK
Successivamente, visualizzerà le informazioni sulla partizione corrente su questo dispositivo. Come visto da qui, attualmente non ci sono partizioni sul dispositivo sdf.
Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track sfdisk: /dev/sdf: unrecognized partition table type Old situation: sfdisk: No partitions found
Successivamente, ti chiederà di inserire la dimensione della partizione per tutte e 4 le partizioni primarie. Anche se desideri creare una sola partizione, ti verranno richiesti 4 orari diversi per tutte le partizioni primarie.
Di seguito:
- In questo esempio, mi piace creare due partizioni.
- Quindi, quando è stato richiesto "/dev/sdf1 :", sto creando la prima partizione. Qui, ho inserito "0 1024". 0 è l'inizio del cilindro e 1024 è la fine del cilindro per la prima partizione.
- Successivamente, quando è stato richiesto "/dev/sdf2 :", sto creando la seconda partizione. Qui, ho appena premuto invio, che occuperà tutto lo spazio rimanente e creerà la seconda partizione.
- Successivamente, ho appena premuto invio per sdf3 e sdf4. Poiché non è rimasto spazio su sdf, sarà semplicemente vuoto come mostrato di seguito.
- Inoltre, tieni presente che per impostazione predefinita creerà la partizione come tipo "Linux". Se vuoi cambiarlo in un tipo diverso, devi specificare il tipo.
Input in the following format; absent fields get a default value. <start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s> Usually you only need to specify <start> and <size> (and perhaps <type>). /dev/sdf1 :0 1024 /dev/sdf1 0+ 1023 1024- 8225279+ 83 Linux /dev/sdf2 : /dev/sdf2 1024 1043 20 160650 83 Linux /dev/sdf3 : /dev/sdf3 0 - 0 0 0 Empty /dev/sdf4 : /dev/sdf4 0 - 0 0 0 Empty
Ora, sfdisk mostrerà le partizioni che creerà. Come mostrato di seguito, creerà due partizioni (sdf1 e sdf2).
New situation: Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 0+ 1023 1024- 8225279+ 83 Linux /dev/sdf2 1024 1043 20 160650 83 Linux /dev/sdf3 0 - 0 0 0 Empty /dev/sdf4 0 - 0 0 0 Empty Warning: no primary partition is marked bootable (active) This does not matter for LILO, but the DOS MBR will not boot this disk.
Infine, chiederà conferma. Se hai commesso un errore e non vuoi creare le partizioni di cui sopra, digita "q" per uscire. Qui, ho digitato y per creare queste due nuove partizioni.
Do you want to write this to disk? [ynq] y Successfully wrote the new partition table Re-reading the partition table ... If you created or changed a DOS partition, /dev/foo7, say, then use dd(1) to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (See fdisk(8).)
Infine, ho verificato che le partizioni siano state create correttamente utilizzando sfdisk -l come mostrato di seguito.
# sfdisk -l /dev/sdf Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 0+ 1023 1024- 8225279+ 83 Linux /dev/sdf2 1024 1043 20 160650 83 Linux /dev/sdf3 0 - 0 0 0 Empty /dev/sdf4 0 - 0 0 0 Empty
In una nota correlata, per la creazione di partizioni di grandi dimensioni, fare riferimento a questo:Come creare partizioni su Linux per dimensioni>2 TB usando Parted GPT
4. Verifica la coerenza della tabella delle partizioni
Utilizzare l'opzione -V (V maiuscola) per eseguire il controllo di coerenza sulle tabelle delle partizioni. V sta per verifica.
Come mostrato nell'output seguente, dirà "OK" quando tutto è a posto. Verranno visualizzati anche eventuali messaggi di avviso.
# sfdisk -V Warning: partition 1 does not end at a cylinder boundary /dev/sda: OK Warning: no primary partition is marked bootable (active) This does not matter for LILO, but the DOS MBR will not boot this disk. /dev/sdf: OK
Puoi anche verificare solo un dispositivo specifico come mostrato di seguito.
# sfdisk -V /dev/sdf
Inoltre, puoi combinare l'opzione V e l come mostrato di seguito.
sfdisk -lV
Se stai eseguendo la verifica dall'interno di uno script di shell, puoi usare l'opzione -q insieme a V. q sta per quiet. In questo caso, non visualizzerà alcun output. Tuttavia, puoi controllare lo stato del comando per verificare se il controllo di coerenza è stato superato o meno, come mostrato di seguito.
# sfdisk -Vq # echo $? 0
Se vuoi verificare la coerenza del contenuto del disco stesso, usa questo metodo:10 esempi di comandi Linux Fsck per controllare e riparare il filesystem
5. Visualizza la dimensione totale della partizione
Per visualizzare la dimensione totale del disco comprese tutte le partizioni, utilizzare l'opzione -s. -s sta per dimensione.
Verrà visualizzata la dimensione totale della partizione in numero di blocchi.
Per impostazione predefinita, verrà visualizzata la dimensione totale della partizione per ogni singolo disco rigido del sistema. Inoltre, visualizzerà la dimensione totale di tutti i dischi del tuo sistema come mostrato di seguito.
# sfdisk -s /dev/sda: 8388608 /dev/sdf: 8388608 total: 16777216 blocks
Puoi anche specificare la singola partizione del disco rigido (o) come mostrato di seguito.
# sfdisk -s /dev/sdf 8388608 # sfdisk -s /dev/sdf1 1654694
6. Scarica i dettagli della partizione del disco su un file di testo
sfdisk fornisce anche l'opzione per scaricare tutte le informazioni sulla partizione del disco in un file di testo.
Per questo usa l'opzione -d. -d sta per dump.
Per impostazione predefinita, -d scaricherà l'output sullo schermo. Ciò includerà le informazioni sulla partizione per tutti i dispositivi sul tuo sistema.
# sfdisk -d
Puoi anche scaricare le informazioni sulla partizione di un particolare dispositivo come mostrato di seguito.
# sfdisk -d /dev/sda
Per scaricarlo in un file di testo, procedi come segue. Questo scaricherà le informazioni sulla partizione di sda nel file di testo sda.out.
# sfdisk -d /dev/sda > sda.out # cat sda.out # partition table of /dev/sda unit: sectors /dev/sda1 : start= 2048, size= 16775168, Id=83, bootable /dev/sda2 : start= 0, size= 0, Id= 0 /dev/sda3 : start= 0, size= 0, Id= 0 /dev/sda4 : start= 0, size= 0, Id= 0
7. Crea nuove partizioni da file di testo (metodo non interattivo)
Il bello dell'opzione -d è che puoi prendere un dump della partizione di un particolare dispositivo e usarlo per creare un dump della partizione simile su un altro dispositivo.
Ad esempio, se desideri replicare la partizione corrente sul dispositivo sda sul dispositivo sdf, puoi utilizzare l'opzione -d come mostrato di seguito.
Innanzitutto, prendi il dump del dispositivo sda come mostrato nell'esempio precedente nel file sda.out.
Nell'esempio sopra, come vediamo, abbiamo una partizione sul dispositivo sda.
Ora, sul dispositivo sdf, attualmente abbiamo due partizioni.
# sfdisk -l /dev/sdf Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 0+ 499 500- 4016249+ 83 Linux /dev/sdf2 500 1043 544 4369680 83 Linux /dev/sdf3 0 - 0 0 0 Empty /dev/sdf4 0 - 0 0 0 Empty
Ora usa il file sda.out dell'esempio precedente e usalo per creare partizioni simili sul dispositivo sdf come mostrato di seguito.
# sfdisk /dev/sdf < sda.out
Il comando precedente utilizzerà le informazioni sulla partizione dal file sda.out e le utilizzerà per creare automaticamente una nuova partizione su sdf senza chiedere alcun input all'utente come mostrato di seguito.
Checking that no-one is using this disk right now ... OK Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track Old situation: Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 0+ 499 500- 4016249+ 83 Linux /dev/sdf2 500 1043 544 4369680 83 Linux /dev/sdf3 0 - 0 0 0 Empty /dev/sdf4 0 - 0 0 0 Empty New situation: Units: sectors of 512 bytes, counting from 0 Device Boot Start End #sectors Id System /dev/sdf1 * 2048 16777215 16775168 83 Linux /dev/sdf2 0 - 0 0 Empty /dev/sdf3 0 - 0 0 Empty /dev/sdf4 0 - 0 0 Empty Warning: partition 1 does not end at a cylinder boundary Successfully wrote the new partition table Re-reading the partition table ... If you created or changed a DOS partition, /dev/foo7, say, then use dd(1) to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (See fdisk(8).)
Ora, come puoi vedere dal seguente output, sdf ha una nuova partizione, che è simile a sda.
# sfdisk -l Disk /dev/sda: 1044 cylinders, 255 heads, 63 sectors/track Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sda1 * 0+ 1044- 1045- 8387584 83 Linux /dev/sda2 0 - 0 0 0 Empty /dev/sda3 0 - 0 0 0 Empty /dev/sda4 0 - 0 0 0 Empty Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 * 0+ 1044- 1045- 8387584 83 Linux /dev/sdf2 0 - 0 0 0 Empty /dev/sdf3 0 - 0 0 0 Empty /dev/sdf4 0 - 0 0 0 Empty
8. Visualizza i dettagli estesi della partizione
x sta per partizione estesa. Quando si combina x con l, verranno visualizzate anche le partizioni estese non primarie come mostrato di seguito.
# sfdisk -lx /dev/sdf Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 0+ 205 206- 1654694+ 83 Linux /dev/sdf2 206 411 206 1654695 83 Linux /dev/sdf3 412 514 103 827347+ 82 Linux swap / Solaris /dev/sdf4 515 1043 529 4249192+ 5 Extended /dev/sdf5 515+ 617 103- 827347 83 Linux - 618 1043 426 3421845 5 Extended - 515 514 0 0 0 Empty - 515 514 0 0 0 Empty /dev/sdf6 618+ 1043 426- 3421844+ 83 Linux - 618 617 0 0 0 Empty - 618 617 0 0 0 Empty - 618 617 0 0 0 Empty
Puoi anche usare l'opzione -x quando crei nuove partizioni, nel qual caso sfdisk chiederà (o si aspetterà) dei descrittori di input per loro.
9. Visualizza la geometria del disco per il debug
Quando esegui il debug di eventuali problemi relativi alle tabelle delle partizioni, una delle cose che dovresti verificare è se le informazioni sulla tabella delle partizioni sono le stesse sul dispositivo come sono comprese dal kernel.
È una buona idea verificare che l'idea del kernel della geometria del dispositivo corrisponda alla geometria reale del dispositivo leggendo direttamente la tabella delle partizioni.
L'opzione -G (G maiuscola) visualizzerà la geometria reale del dispositivo leggendo direttamente la tabella delle partizioni come mostrato di seguito.
# sfdisk -G /dev/sda: 1044 cylinders, 255 heads, 63 sectors/track /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track
-g opzione (g minuscola) visualizzerà l'idea del kernel della geometria del dispositivo.
# sfdisk -g /dev/sda: 1044 cylinders, 255 heads, 63 sectors/track /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track
In questo esempio, entrambi gli output corrispondono come dovrebbero. Se questo non corrisponde, allora c'è qualche problema.
10. Visualizza tutti i tipi di partizione del disco
Per visualizzare tutti i tipi di partizione supportati che possono essere utilizzati durante la creazione di nuove partizioni utilizzando sfdisk, utilizzare l'opzione -T. T sta per tipo (cioè tipo di partizione).
Verrà visualizzato l'ID del tipo di partizione e il nome descrittivo. Durante la creazione della partizione, specificherai l'ID del tipo di partizione. Ad esempio, usa 82 come tipo per la partizione di scambio.
# sfdisk -T Id Name 0 Empty 1 FAT12 2 XENIX root 3 XENIX usr 4 FAT16 <32M 5 Extended 6 FAT16 .. .. 82 Linux swap / Solaris 83 Linux 84 OS/2 hidden C: drive 85 Linux extended 86 NTFS volume set 87 NTFS volume set 88 Linux plaintext 8e Linux LVM .. ..
Per quanto riguarda lo spazio di scambio:2 modi per aggiungere spazio di scambio utilizzando dd, mkswap e swapon
11. Manipola solo una singola partizione del disco
È possibile utilizzare l'opzione -N per manipolare una particolare partizione del disco. -N sta per numero (cioè numero di partizione).
Puoi usarlo per creare una nuova partizione su un disco esistente che ha già altre partizioni.
Nell'esempio seguente, nel dispositivo sdf, abbiamo già una partizione. Ma vogliamo creare una seconda partizione.
# sfdisk /dev/sdf -N2 Checking that no-one is using this disk right now ... OK Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track Old situation: Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 0+ 511 512- 4112639+ 83 Linux /dev/sdf2 0 - 0 0 0 Empty /dev/sdf3 0 - 0 0 0 Empty /dev/sdf4 0 - 0 0 0 Empty Input in the following format; absent fields get a default value. <start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s> Usually you only need to specify <start> and <size> (and perhaps <type>). /dev/sdf2 :512 1024 Warning: given size (1024) exceeds max allowable size (532) /dev/sdf2 :512 532 /dev/sdf2 512 1043 532 4273290 0 Empty New situation: Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 0+ 511 512- 4112639+ 83 Linux /dev/sdf2 512 1043 532 4273290 0 Empty /dev/sdf3 0 - 0 0 0 Empty /dev/sdf4 0 - 0 0 0 Empty Warning: no primary partition is marked bootable (active) This does not matter for LILO, but the DOS MBR will not boot this disk. Do you want to write this to disk? [ynq] y Successfully wrote the new partition table Re-reading the partition table ... If you created or changed a DOS partition, /dev/foo7, say, then use dd(1) to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (See fdisk(8).)
In quanto sopra:
- Abbiamo usato l'opzione -N2 per manipolare solo la seconda partizione.
- Ciò significa che sfdisk ti chiederà le informazioni sulla partizione solo per sdf2 come mostrato sopra.
- Questo non modificherà la partizione sdf1 esistente.
- Inoltre, questo non ti chiederà informazioni su sdf3 e sdf4
12. Modalità di prova per la verifica
Prima di creare davvero una nuova partizione o modificare qualsiasi informazione sulle tabelle delle partizioni, assicurati che la sintassi del comando che hai sia buona.
In tal caso, è meglio usare l'opzione -n, che eseguirà davvero tutti i movimenti senza fare nulla.
-n opzione è un'opzione di prova, che eseguirà qualsiasi cosa il comando dovrebbe fare, ma non salverà nulla o cambierà nulla.
Ad esempio, quando si modifica un tipo di partizione, è possibile utilizzare l'opzione -n, che passerà attraverso il comando ma non cambierà nulla come mostrato di seguito.
# sfdisk -n --change-id /dev/sdf 1 82 sfdisk: -n flag was given: Nothing changed
Puoi anche usarlo quando crei nuove partizioni come mostrato di seguito. Questo passerà attraverso il comando e visualizzerà tutto nell'output, ma senza creare davvero nuove partizioni.
sfdisk -n /dev/sdf < sda.out
13. Contrassegna una partizione specifica come avviabile
Utilizzare l'opzione -A per contrassegnare una partizione specifica come partizione di avvio. -A sta per attivare.
L'esempio seguente sta attivando la 2a partizione (sdf2) come partizione attiva (cioè contrassegnando come avvio). Tieni presente che se qualsiasi altra partizione su questo dispositivo (sdf) è già contrassegnata per l'avvio, ora non sarà contrassegnata.
# sfdisk -A2 /dev/sdf Done
Come si vede dal seguente output, viene attivato solo sdf2. Il "*" nella seconda colonna (cioè Boot) indica che questa è contrassegnata come partizione di avvio.
# sfdisk -l /dev/sdf Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 0+ 511 512- 4112639+ 83 Linux /dev/sdf2 * 512 1043 532 4273290 0 Empty /dev/sdf3 0 - 0 0 0 Empty /dev/sdf4 0 - 0 0 0 Empty
14. Cambia tipo di partizione
Puoi cambiare il tipo di partizione di una partizione esistente.
Innanzitutto, utilizzare l'opzione –print-id per visualizzare il tipo di partizione di una partizione specifica. Il comando seguente visualizzerà il tipo di partizione di sdf1. Qui 83 nell'output indica che sdf1 è un tipo di partizione Linux.
# sfdisk --print-id /dev/sdf 1 83
Il seguente output 0 indica che la partizione sdf2 è attualmente vuota.
# sfdisk --print-id /dev/sdf 2 0
Ora usa l'opzione –change-id come mostrato di seguito per cambiare il tipo di partizione di un dispositivo di partizione.
In questo esempio, stiamo cambiando il tipo di partizione della partizione sdf2 in 83 (che è la partizione Linux)
# sfdisk --change-id /dev/sdf 2 83 Done
Come puoi vedere dal seguente output, ora sdf2 è impostato sul tipo di partizione Linux (.e Guarda l'ultima colonna "Sistema")
# sfdisk -l /dev/sdf Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 0+ 511 512- 4112639+ 83 Linux /dev/sdf2 * 512 1043 532 4273290 83 Linux /dev/sdf3 0 - 0 0 0 Empty /dev/sdf4 0 - 0 0 0 Empty
15. Crea nuove partizioni dallo script della shell (metodo non interattivo)
Uno dei grandi vantaggi di sfdisk è che puoi creare partizioni al volo dalla riga di comando senza alcuna interazione da sfdisk.
Questo è molto utile quando vuoi automatizzare la creazione della partizione da uno script di shell.
Attualmente, come si vede dal seguente output, il dispositivo sdf è attualmente vuoto. Questo non ha partizioni.
# sfdisk -l /dev/sdf Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 0 - 0 0 0 Empty /dev/sdf2 0 - 0 0 0 Empty /dev/sdf3 0 - 0 0 0 Empty /dev/sdf4 0 - 0 0 0 Empty
Ora, esegui il comando seguente, che creerà automaticamente tre partizioni (sdf1, sdf2, sdf3) utilizzando i valori forniti di seguito.
# sfdisk /dev/sdf <<EOF 0,512 ,512 ; ; EOF
In quanto sopra:
- Dovrebbero esserci 4 righe nell'input sopra per tutte e 4 le partizioni primarie.
- La prima riga indica che dovrebbe iniziare dal 1° cilindro fino al 512 per creare la 1a partizione (cioè sdf1)
- La seconda riga indica che dovrebbe iniziare dall'ultimo cilindro disponibile come primo cilindro e da lì utilizzare +512 cilindri per creare la 2a partizione (cioè sdf2)
- La terza riga ha un punto e virgola, che indica che utilizzano i valori predefiniti e non richiedono nulla all'utente per la terza partizione. In questo caso, utilizzerà tutti i cilindri rimanenti sul disco e creerà la terza partizione (cioè sdf3)
- La quarta riga ha un punto e virgola, che indica che utilizzano i valori predefiniti e non richiedono nulla all'utente per la quarta partizione. In questo caso, poiché non è rimasto spazio, non creerà nulla per la 4a partizione (cioè sdf4)
Quello che segue è l'output del comando sfdisk sopra. Tieni presente che questo non richiede alcun input da parte dell'utente.
Checking that no-one is using this disk right now ... OK Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track Old situation: Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 0 - 0 0 0 Empty /dev/sdf2 0 - 0 0 0 Empty /dev/sdf3 0 - 0 0 0 Empty /dev/sdf4 0 - 0 0 0 Empty New situation: Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 0+ 511 512- 4112639+ 83 Linux /dev/sdf2 512 1023 512 4112640 83 Linux /dev/sdf3 1024 1043 20 160650 83 Linux /dev/sdf4 0 - 0 0 0 Empty Warning: no primary partition is marked bootable (active) This does not matter for LILO, but the DOS MBR will not boot this disk. Successfully wrote the new partition table Re-reading the partition table ... If you created or changed a DOS partition, /dev/foo7, say, then use dd(1) to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (See fdisk(8).)
Verifica che le tre partizioni siano state create automaticamente utilizzando i valori forniti.
# sfdisk -l /dev/sdf Disk /dev/sdf: 1044 cylinders, 255 heads, 63 sectors/track Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sdf1 0+ 511 512- 4112639+ 83 Linux /dev/sdf2 512 1023 512 4112640 83 Linux /dev/sdf3 1024 1043 20 160650 83 Linux /dev/sdf4 0 - 0 0 0 Empty