Quiero saber cómo formatear una unidad de almacenamiento desde la terminal. Las cosas útiles para proporcionar en la respuesta serían opciones de uso frecuente para comandos y conocimientos básicos que se pueden utilizar para extrapolar 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 intentando formatear un disco duro externo de alta capacidad (EHDD) en NTFS, desde la terminal.
Sé que puedo usar gparted para este y otros programas GUI, pero todavía quiero saber cómo hacerlo desde la terminal.
Respuesta1
Hay algunas opciones disponibles:
fdisk
.parted
(el hermano CLI de GParted).- Los diversos
mkfs
programas, si ya tiene particiones y desea formatear.
fdisk
Son parted
interactivos y tienen comandos de ayuda, por lo que siempre puedes buscar ayuda dentro del programa. Ambos también son programables. Los mkfs
comandos 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)
No uso fdisk
tanto. Me centraré únicamente en:
parted
parted
nonecesidadun argumento (intenta "adivinar"), pero siempre debes especificar el disco. Si tiene la opción, 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 usar un archivo temporal ( /tmp/part
) que creé para mostrarles los comandos, por lo que los tamaños serán algo pequeños. Debes reemplazarlo con el dispositivo que necesitas ( /dev/sda
, por ejemplo).
Primero, si tu disco no tiene tabla de particiones, debemos crear una:
parted /tmp/part mklabel gpt
o mklabel msdos
, si quieres la vieja escuela de 4 particiones primarias (llamadaTabla de particiones MBR o MSDOS). Luego hacemos, digamos, una partición ext4 que comienza en 3 GB (es decir, dejando libre el 3G inicial) y de tamaño 2 GB (es decir, termina en 5 GB). 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
Observe cómo usa prefijos SI, mientras que GParted usa firmementeprefijos binarios(mientras suelta el tonto i
). 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
Si bien 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".
De hecho, parted le dirá que debe usarlo para manipular particiones,no sistemas de archivos, lo que me lleva a:
mkfs
mkfs
, como fsck
, es esencialmente una interfaz para varios comandos específicos del sistema de archivos. En mi sistema mkfs.bfs
, mkfs.cramfs
por ejemplo mkfs.ext2
, están mkfs.ext3
disponibles .mkfs.ext4
mkfs.ext4dev
mkfs.fat
mkfs.minix
mkfs.msdos
mkfs.ntfs
mkfs.vfat
Ahora, desafortunadamente, aunque parted
funciona bien en un archivo, como el que usé anteriormente, mkfs
no puedo buscar particiones en dichos archivos. De hecho, espera bloquear dispositivos, por lo /tmp/file
que si voy a usar un archivo nuevo mkfs
, tengo que forzarlo a hacerlo. Utilizará el dispositivo de bloque correspondiente a la partición que desea formatear, como /dev/sda2
. La sintaxis general para 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 puede ver, la -t
bandera nos permite pasar banderas específicas del sistema de archivos. Por ejemplo, banderas 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
Entonces, creemos una partición NTFS, con formato rápido ( -Q
), forzándola a operar en un archivo de dispositivo sin bloque ( -F
) y estableciendo una etiqueta ( -L "hello world"
).
# 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.
Claramente no le gustaba trabajar en un archivo. :) No te preocupes, debería detectar automáticamente la mayoría de los valores cuando se trabaja en un disco real. Incluso este "archivo" funciona bien como 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
(¿Ves los extraños permisos?)
Notas:
- Todavía no lo he usado
sudo
en ninguna parte de esta respuesta. Como estaba operando con archivos y archivos de mi propiedad, no necesitabasudo
.parted
te advertirá sobre esto. Para los dispositivos de bloque, que generalmente siempre son propiedad deroot
, necesitarásudo
(o tendrá que usar un shell raíz a través desudo -i
osudo su -
). parted
es un programa GNU y, como muchos programas GNU, tiene una extensa documentación en elinfo
formato. Instaleparted-doc
(sudo apt-get install parted-doc
) y luego ejecuteinfo parted
. También puedes consultar elmanual de usuario en línea.- GParted puede formatear una partición en NTFS ya que llama
mkfs
directamente al programa apropiado (mkntfs
en este caso,mkfs.ntfs
es solo un enlace amkntfs
). 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. - No entraré en los méritos de las tablas de particiones GPT vs MBR/MSDOS, pero es probable que GPT se encuentre en dispositivos nuevos con UEFI, especialmente si tienes Windows 8.¿El estado de las herramientas de partición?analiza qué herramientas están disponibles si se enfrenta a GPT.
- LVM, ZFS y btrfs son un juego completamente diferente. Todos tienen sus herramientas adjuntas y usted debe usarlas en lugar de
parted
ofdisk
(excepto quizás en un paso inicial de crear particiones para su uso).
Nota sobre parted
el uso:
La sintaxis del parted
programa es:
parted [options] [device [command [options...]...]]
Cuando ejecutas parted
sin un comando, como:
parted /tmp/parted
Se le presentará un shell simple, donde podrá ejecutar los comandos anteriores. Sin embargo, estos comandos también se pueden ejecutar directamente usando el parted
programa. Entonces 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
(este es "1" entre el guión y la "s"). Esto es útil si desea que su partición se extienda desde un inicio específico hasta el resto del disco. Para ser más específico, ejecutar
parted /dev/sda -- mkpart primary ext4 3G -1s
creará una partición /dev/sda
que comienza en 3G y termina en el último sector del /dev/sda
disco (es decir, se extiende desde 3G hasta todo el resto del disco). Tenga en cuenta que --
es necesario para 1s
no interpretarse como una opción no válida.
Respuesta2
Primero, aprenda cómo particionar su disco duro con la utilidad fdisk.
Linux permite sólo 4 particiones primarias. Puede tener una cantidad mucho mayor de particiones lógicas subdividiendo una de las particiones primarias.
Sólo se puede subdividir una de las particiones primarias.
fdisk se inicia escribiendo como dispositivo fdisk raíz en el símbolo del sistema.
El dispositivo podría ser algo así como /dev/sda o /dev/sdb
Los comandos básicos de fdisk que necesita 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 surtirán efecto hasta que emita el comando de escritura (w).
Aquí hay una tabla de particiones de muestra:
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 símbolo del shell:
sudo su
fdisk /dev/sdb
Lo que indica que está utilizando la segunda unidad de 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 de arranque:
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 final resulto:
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, 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 en mkfs en el que se creará el sistema de archivos.
Ver los comandos disponibles del generador de sistemas de archivos
Los constructores del sistema de archivos (comandos mkfs*) generalmente se buscan en directorios como /sbin/, /sbin/fs, /sbin/fs.d, /etc/fs y /etc.
Si no lo encuentra, finalmente 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
Cree un sistema de archivos en un dispositivo específico
Para construir el sistema de archivos usando el comando mkfs, los argumentos requeridos son nombre de archivo 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 predeterminado para el comando mkfs es ext2.
Si no especifica la opción "-t", se creará el sistema de archivos ext2.
Además, puede utilizar el método que comentamos anteriormente para identificar si tiene un sistema de archivos ext2, ext3 o ext4.
Formatear una unidad NTFS
Primero, necesitará la capacidad de crear sistemas de archivos NTFS, así que instale ntfsprogs:
sudo su
apt-get install ntfs-3g
En segundo lugar, elimina la partición y la vuelve a crear 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, porque Ubuntu la volvió a montar automáticamente.
Ahora, necesitas crear el sistema de archivos. Hay dos formas de hacerlo: la forma impaciente (formato rápido) o la forma mejor, pero mucho más larga (formato completo).
Formato rápido
Esto simplemente asigna el espacio en disco, pero no pone a cero la unidad ni comprueba si hay sectores defectuosos. Esto significa que tomará unos segundos.
sudo su
mkfs.ntfs -f /dev/sdb1
Formato completo
Si está mucho más preocupado por la integridad de los datos y no le importa esperar, realice un formato completo.
¡Esto puede tardar algunas horas en poner a cero un disco grande!
sudo su
mkfs.ntfs /dev/sdb1