Quiero saber cómo formatear una unidad de almacenamiento desde la terminal. Lo más útil para proporcionar en la respuesta serían las opciones más utilizadas para los comandos y los conocimientos de base que uno puede utilizar para extrapolar los usos futuros. Específicamente me gustaría saber cómo formatear en los diferentes sistemas de archivos como NTFS, FAT32, EXT4, etc. También se desea información sobre cómo particionar la unidad a través de la terminal.
Estoy tratando de formatear un disco duro externo de alta capacidad (EHDD) en NTFS - desde la terminal.
Sé que puedo utilizar gparted para esto, así como otros programas de interfaz gráfica de usuario, pero todavía quiero ahora cómo hacerlo desde la terminal.
Hay algunas opciones disponibles:
fdisk
(antiguo, no soporta GPT4).parted
(el hermano CLI de GParted).mkfs
, si ya tienes particiones y quieres formatearlas.
fdisk
y parted
son interactivos, y tienen comandos de ayuda, así que siempre puedes buscar ayuda dentro del programa. Ambos son también scripts. Los comandos mkfs
no son interactivos.fdisk
fdisk
espera un dispositivo (como /dev/sda
) como argumento. Tiene los siguientes comandos:
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the DOS compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
fdisk
. Yo'sólo me centraré en:parted
parted
no necesita un argumento (intenta "adivinar"), pero siempre debes especificar el disco. Si puede elegir, parted
es el programa que debería preferir. Tiene los siguientes comandos:
align-check TYPE N check partition N for TYPE(min|opt) alignment
check NUMBER do a simple check on the file system
cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another partition
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkfs NUMBER FS-TYPE make a FS-TYPE file system on partition NUMBER
mkpart PART-TYPE [FS-TYPE] START END make a partition
mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system
resizepart NUMBER END resize partition NUMBER
move NUMBER START END move partition NUMBER
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition
quit exit program
rescue START END rescue a lost partition near START and END
resize NUMBER START END resize partition NUMBER and its file system
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER
unit UNIT set the default unit to UNIT
version display the version number and copyright information of GNU Parted
Los comandos se pueden contraer a un prefijo único (por ejemplo, h
es la abreviatura de help
).
Voy a utilizar un archivo temporal (/tmp/part
) que he creado para mostrarte los comandos, por lo que los tamaños serán algo pequeños. Deberías sustituirlo por el dispositivo que necesites (/dev/sda
, por ejemplo).
Primero, si tu disco no tiene una tabla de particiones, debemos crear una:
parted /tmp/part mklabel gpt
o mklabel msdos
, si quieres la vieja escuela de 4 particiones primarias (llamada MBR o tabla de particiones MSDOS).
Entonces hacemos, digamos, una partición ext4 empezando por 3GB (es decir, dejando los 3G iniciales libres) y de tamaño 2GB (es decir, terminando en 5GB). parted
espera ubicaciones en MB para mkpartfs
, pero podemos especificar el sufijo:
parted /tmp/part mkpart primary ext4 3G 5G
Y otra, ahora una partición NTFS de 1GB:
parted /tmp/part mkpart primary ntfs 5G 6G
Resultado:
# parted /tmp/part print
Model: (file)
Disk /tmp/blah: 10.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 3000MB 5000MB 2000MB primary
2 5000MB 6000MB 1000MB primary msftdata
Fíjate en que utiliza prefijos SI, mientras que GParted utiliza firmemente prefijos binarios (dejando de lado la tonta i
).
Yo'etiquetaré las particiones:
# parted /tmp/part name 1 hello
# parted /tmp/part name 2 world
# parted /tmp/part print
Model: (file)
Disk /tmp/blah: 10.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 3000MB 5000MB 2000MB hello
2 5000MB 6000MB 1000MB world msftdata
Mientras que parted
puede crear particiones del sistema de archivos ntfs
sin problemas, no puede formatear una partición existente (!) a NTFS:
mkfs partition fs-type
Make a filesystem fs-type on partition. fs-type can be one
of "fat16", "fat32", "ext2", "linux-swap", or "reiserfs".
mkfs
mkfs
, como fsck
, es esencialmente una interfaz para varios comandos específicos del sistema de archivos. En mi sistema, por ejemplo, mkfs.bfs
, mkfs.cramfs
, mkfs.ext2
, mkfs.ext3
, mkfs.ext4
, mkfs.ext4dev
, mkfs.fat
, mkfs.minix
, mkfs.msdos
,mkfs.ntfs
, mkfs.vfat
están disponibles.
Ahora, desafortunadamente, mientras que parted
funciona bien en un archivo, como el que usé arriba, mkfs
no puede' ir a la caza de particiones en tales archivos. De hecho, espera dispositivos de bloque, así que si voy a usar un nuevo archivo /tmp/file
para mkfs
, tengo que forzarlo a hacerlo. Usará el dispositivo de bloque correspondiente a la partición que quiere formatear, como /dev/sda2
.
La sintaxis general de mkfs
es
# mkfs --help
Usage: mkfs [options] [-t type fs-options] device [size]
Options:
-t, --type=TYPE file system type, when undefined ext2 is used
fs-options parameters to real file system builder
device path to a device
size number of blocks on the device
-V, --verbose explain what is done
defining -V more than once will cause a dry-run
-V, --version output version information and exit
-V as version must be only option
-h, --help display this help and exit
For more information, see mkfs(8).
Como puedes ver, la bandera -t
nos permite pasar banderas específicas del sistema de archivos. Por ejemplo, banderas de NTFS:
# mkfs.ntfs --help
Usage: mkntfs [options] device [number-of-sectors]
Basic options:
-f, --fast Perform a quick format
-Q, --quick Perform a quick format
-L, --label STRING Set the volume label
-C, --enable-compression Enable compression on the volume
-I, --no-indexing Disable indexing on the volume
-n, --no-action Do not write to disk
Advanced options:
-c, --cluster-size BYTES Specify the cluster size for the volume
-s, --sector-size BYTES Specify the sector size for the device
-p, --partition-start SECTOR Specify the partition start sector
-H, --heads NUM Specify the number of heads
-S, --sectors-per-track NUM Specify the number of sectors per track
-z, --mft-zone-multiplier NUM Set the MFT zone multiplier
-T, --zero-time Fake the time to be 00:00 UTC, Jan 1, 1970
-F, --force Force execution despite errors
Output options:
-q, --quiet Quiet execution
-v, --verbose Verbose execution
--debug Very verbose execution
Help options:
-V, --version Display version
-l, --license Display licensing information
-h, --help Display this help
Developers' email address: [email protected]
News, support and information: http://tuxera.com
Así que hagamos una partición NTFS, con formato rápido (-Q
), forzándola a operar en un archivo no bloqueado (-F
), y estableciendo una etiqueta (`-L "hola mundo").
# mkfs -t ntfs -F -Q -L "hello world" /tmp/file
/tmp/file is not a block device.
mkntfs forced anyway.
The sector size was not specified for /tmp/file and it could not be obtained automatically. It has been set to 512 bytes.
The partition start sector was not specified for /tmp/file and it could not be obtained automatically. It has been set to 0.
The number of sectors per track was not specified for /tmp/file and it could not be obtained automatically. It has been set to 0.
The number of heads was not specified for /tmp/file and it could not be obtained automatically. It has been set to 0.
Cluster size has been automatically set to 4096 bytes.
To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
Windows will not be able to boot from this device.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.
Está claro que no disfrutó trabajando en un archivo. :) No te preocupes, debería detectar automáticamente la mayoría de los valores al trabajar en un disco real. Incluso este "archivo" funciona bien como un sistema de archivos:
# mount -t ntfs-3g /tmp/file /mnt
# touch "/mnt/a file in mnt"
# ls -l /mnt
total 0
-rwxrwxrwx 1 root root 0 Aug 29 06:43 a file in mnt
# umount /mnt
# ls -l /mnt
total 0
sudo
en ninguna parte de esta respuesta. Como estaba operando sobre archivos, y archivos de mi propiedad, no necesitaba sudo
. parted
le advertirá sobre esto. Para los dispositivos de bloque, que suelen ser siempre propiedad de root
, necesitarás sudo
(o tendrás que usar un shell de root a través de sudo -i
o sudo su -
).parted
es un programa de GNU, y como muchos programas de GNU, tiene una extensa documentación en el formato info
. Instala parted-doc
(sudo apt-get install parted-doc
) y luego ejecuta info parted
. También puedes consultar el manual de usuario online.mkfs
apropiado (mkntfs
, en este caso - mkfs.ntfs
es sólo un enlace a mkntfs
). También establece una serie de parámetros. De hecho, para la mayoría de las operaciones, puede examinar los detalles de los mensajes de GParted para ver qué comandos se ejecutaron.parted
o fdisk
(excepto quizás para un paso inicial de creación de particiones para su uso).parted
:La sintaxis del programa parted
es:
parted [options] [device [command [options...]...]]
Cuando se ejecuta parted
sin un comando, como:
parted /tmp/parted
Se le presentará un simple intérprete de comandos, donde puede ejecutar los comandos anteriores. Sin embargo, estos comandos también pueden ser ejecutados directamente usando el programa parted
. Así que estos tres son equivalentes:
# parted /tmp/parted
GNU Parted 2.3
Using /tmp/parted
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
Y
# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /tmp/parted
Using /tmp/parted
(parted) mklabel gpt
Y
parted /tmp/parted mklabel gpt
Tenga en cuenta también que, al crear particiones con parted
, un indicador útil del final de las particiones es -1s
(esto es "1" entre el guión y la "s"). Esto es útil si quiere que su partición abarque desde un inicio especificado hasta el resto del disco. Para ser más específicos, ejecutando
parted /dev/sda -- mkpart primary ext4 3G -1s
creará una partición de /dev/sda
que comienza en 3G y termina en el último sector del disco /dev/sda
(es decir, abarca desde 3G hasta el resto del disco). Tenga en cuenta que el --
es necesario, para que 1s
no sea interpretado como una opción inválida.
En primer lugar, cómo particionar el disco duro con la utilidad fdisk.
Linux sólo permite 4 particiones primarias. Puedes tener un número mucho mayor de particiones lógicas subdividiendo una de las particiones primarias.
Sólo una de las particiones primarias puede ser subdividida.
fdisk se inicia escribiendo como root fdisk device en la línea de comandos.
El dispositivo puede ser algo como /dev/sda o /dev/sdb
Los comandos básicos de fdisk que necesitas son:
p print the partition table
n create a new partition
d delete a partition
q quit without saving changes
w write the new partition table and exit
Los cambios que realice en la tabla de particiones no tendrán efecto hasta que emita el comando write (w).
Aquí hay un ejemplo de tabla de particiones:
Disk /dev/sdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 184 370912+ 83 Linux
/dev/sdb2 185 368 370944 83 Linux
/dev/sdb3 369 552 370944 83 Linux
/dev/sdb4 553 621 139104 82 Linux swap
Ejemplo:
Inicie fdisk desde el prompt del shell:
sudo su
fdisk /dev/sdb
Lo que indica que está utilizando la segunda unidad en su controlador SATA.
Command (m for help): p
Disk /dev/hdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
That makes for 384Mb per partition.
Now You get to work.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-621, default 1):<RETURN>
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-621, default 621): +384M
Next, You set up the partition You want to use for swap:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (197-621, default 197):<RETURN>
Using default value 197
Last cylinder or +size or +sizeM or +sizeK (197-621, default 621): +128M
Ahora la tabla de particiones se ve así:
Device Boot Start End Blocks Id System
/dev/sdb1 1 196 395104 83 Linux
/dev/sdb2 197 262 133056 83 Linux
Finalmente, haces que la primera partición sea booteable:
Command (m for help): a
Partition number (1-4): 1
And You make the second partition of type swap:
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)
Command (m for help): p
El resultado final:
Disk /dev/sdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 196 395104+ 83 Linux
/dev/sdb2 197 262 133056 82 Linux swap
Finalmente, se emite el comando de escritura (w) para escribir la tabla en el disco.
La utilidad mkfs se utiliza para crear un sistema de archivos (ext2, ext3, ext4, etc) en su sistema Linux.
Debe especificar el nombre del dispositivo a mkfs en el que se creará el sistema de archivos.
Ver los comandos disponibles para la creación de sistemas de archivos
Los constructores de sistemas de archivos (comandos mkfs*) suelen buscarse en directorios como /sbin/, /sbin/fs, /sbin/fs.d, /etc/fs y /etc.
Si no se encuentran, finalmente se busca en los directorios que se encuentran en la variable PATH.
La siguiente lista muestra los comandos mkfs* disponibles en un sistema.
sudo su
cd /sbin
ls mkfs*
mkfs mkfs.bfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev
mkfs.minix mkfs.msdos mkfs.ntfs mkfs.vfat
Construir un sistema de archivos en un dispositivo específico
Para construir el sistema de archivos usando el comando mkfs, los argumentos requeridos son nombre-del-dispositivo y tipo-de-sistema-de-archivos como se muestra a continuación.
El siguiente ejemplo crea un sistema de archivos ext4 en la partición /dev/sdb1.
sudo su
mkfs -t ext4 /dev/sdb1
mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1120112 inodes, 4476416 blocks
223820 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
137 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Tenga en cuenta que el tipo de sistema de archivos por defecto para el comando mkfs es ext2.
Si no se especifica la opción "-t", se creará un sistema de archivos ext2.
También, puede usar el método que discutimos antes para identificar si tiene un sistema de archivos ext2 o ext3 o ext4.
Formatear una unidad NTFS
En primer lugar, vas a necesitar la capacidad de crear sistemas de archivos NTFS, así que instala ntfsprogs:
sudo su
apt-get install ntfs-3g
Segundo, borra la partición y vuelve a crearla como NTFS.
sudo su
umount /dev/sdb1
fdisk /dev/sdb
Options to select:
‘d’ to delete the partition
‘n’ to create a new partition
‘p’ for primary
‘1’ for partition number
‘Enter’ for first cylinder (default 1)
‘Enter’ for last cylinder (default of max size)
‘t’ for type
‘L’ to list codes, and enter code for HPFS/NTFS. In my case, it’s ‘7’
‘w’ to write changes to disk, and exit
umount /dev/sdb1
En el último paso, Usted desmonta la partición, ya que Ubuntu la volvió a montar automáticamente por Usted.
Ahora, necesitas crear el sistema de archivos. Hay dos maneras de hacerlo: la manera impaciente (Formato Rápido), o la mejor pero mucho más larga (Formato Completo).
Formato rápido
Esto sólo asigna el espacio del disco, pero no pone a cero la unidad ni comprueba si hay sectores defectuosos. Esto significa que tardará unos segundos.
sudo su
mkfs.ntfs -f /dev/sdb1
Formato completo
Si te preocupa mucho más la integridad de los datos y no te importa esperar, haz un formato completo.
Esto puede llevar algunas horas para poner a cero una unidad grande.
sudo su
mkfs.ntfs /dev/sdb1