71 votes

Méthode de formatage d'une unité de stockage

Je veux savoir comment formater un disque de stockage à partir du terminal. Les éléments utiles à fournir dans la réponse seraient les options souvent utilisées pour les commandes et les connaissances de base que l'on peut utiliser pour extrapoler les utilisations futures. Plus précisément, je voudrais savoir comment formater dans les différents systèmes de fichiers tels que NTFS, FAT32, EXT4, etc. Des informations sur la façon de partitionner le disque via un terminal sont également souhaitées.

J'essaie de formater un disque dur externe de grande capacité (EHDD) en NTFS - à partir du terminal.

Je sais que je peux utiliser gparted pour cela, ainsi que d'autres programmes d'interface graphique, mais je veux quand même savoir comment le faire à partir du terminal.

80voto

muru Points 180007

Quelques options sont disponibles :

  1. fdisk (plus ancien, ne prend pas en charge GPT 4 ).
  2. parted (le frère CLI de GParted).
  3. Les différents mkfs si vous avez déjà des partitions et que vous souhaitez les formater.

fdisk y parted sont interactifs et disposent de commandes d'aide, de sorte que vous pouvez toujours rechercher de l'aide dans le programme. Les deux sont également scriptables. Le site mkfs ne sont pas interactives.


fdisk

fdisk s'attend à ce qu'un dispositif (tel que /dev/sda ) comme argument. Il possède les commandes suivantes :

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)

Je n'utilise pas fdisk à ce point. Je vais juste me concentrer sur :


parted

parted n'a pas besoin de un argument (il essaie de "deviner"), mais vous devez toujours spécifier le disque. Si vous avez le choix, parted est le programme que vous devriez préférer. Il possède les commandes suivantes :

  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

Les commandes peuvent être contractées à un préfixe unique (par exemple, h est le diminutif de help ).

Je vais utiliser un fichier temporaire ( /tmp/part ) J'ai créé pour vous montrer les commandes, donc les tailles seront un peu petites. Vous devriez le remplacer par le dispositif dont vous avez besoin ( /dev/sda par exemple).

Tout d'abord, si votre disque n'a pas de table de partition, nous devons en créer une :

parted /tmp/part mklabel gpt

oder mklabel msdos si vous voulez la bonne vieille méthode à 4 partitions primaires (appelée Table de partition MBR ou MSDOS ). Puis nous créons, disons, une partition ext4 commençant à 3 Go (c'est-à-dire laissant la 3G initiale libre) et de taille 2 Go (c'est-à-dire se terminant à 5 Go). parted prévoit des emplacements dans le MB pour mkpartfs mais nous pouvons spécifier le suffixe :

parted /tmp/part mkpart primary ext4 3G 5G

Et une autre, maintenant une partition NTFS de 1 Go :

parted /tmp/part mkpart primary ntfs 5G 6G

Résultat :

# 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

Notez comment il utilise les préfixes SI, alors que GParted utilise résolument préfixes binaires (tout en laissant tomber le stupide i ). Je vais étiqueter les partitions :

# 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

Alors que parted peut créer des partitions du système de fichiers ntfs Il ne peut pas formater une partition existante ( !) en 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".

En effet, parted vous dira que vous devez l'utiliser pour manipuler les partitions, pas les systèmes de fichiers ce qui m'amène à :


mkfs

mkfs comme fsck est essentiellement une interface pour diverses commandes spécifiques au système de fichiers. Sur mon système par exemple, mkfs.bfs , mkfs.cramfs , mkfs.ext2 , mkfs.ext3 , mkfs.ext4 , mkfs.ext4dev , mkfs.fat , mkfs.minix , mkfs.msdos , mkfs.ntfs , mkfs.vfat sont disponibles.

Maintenant, malheureusement, alors que parted fonctionne très bien sur un fichier, comme celui que j'ai utilisé ci-dessus, mkfs ne peut pas aller chercher des partitions dans de tels fichiers. En fait, il s'attend à des périphériques de bloc, donc si je dois utiliser un nouveau fichier /tmp/file para mkfs je dois le forcer à le faire. Vous utiliserez le périphérique de bloc correspondant à la partition que vous souhaitez formater, par exemple /dev/sda2 . La syntaxe générale 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).

Comme vous pouvez le voir, le -t nous permet de passer des drapeaux spécifiques au système de fichiers. Par exemple, les drapeaux 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: ntfs-3g-devel@lists.sf.net
News, support and information:  http://tuxera.com

Faisons donc une partition NTFS, avec un formatage rapide ( -Q ), le forçant à opérer sur un fichier non-bloqué ( -F ), et définir une étiquette ( -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.

Il est clair qu'il n'a pas apprécié de travailler sur un fichier. :) Ne vous inquiétez pas, il devrait détecter automatiquement la plupart des valeurs lorsqu'il travaille sur un disque réel. Même ce "fichier" fonctionne bien comme un système de fichiers :

# 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

(Vous voyez les permissions bizarres ?)


Notes :

  1. Je n'ai pas utilisé sudo dans cette réponse pour l'instant. Puisque j'opérais sur des fichiers, et des fichiers qui m'appartenaient, je n'avais pas besoin de sudo . parted vous mettra en garde à ce sujet. Pour les périphériques en bloc, qui appartiennent généralement toujours à root vous aurez besoin de sudo (ou vous devrez utiliser un Shell racine par l'intermédiaire de sudo -i ou sudo su - ).
  2. parted est un programme GNU, et comme beaucoup d'autres programmes GNU, il dispose d'une documentation étendue dans le fichier info format. Installer parted-doc ( sudo apt-get install parted-doc ), puis exécutez info parted . Vous pouvez également consulter le manuel de l'utilisateur en ligne .
  3. GParted est capable de formater une partition en NTFS en appelant le programme approprié. mkfs directement ( mkntfs dans ce cas - mkfs.ntfs est juste un lien vers mkntfs ). Il fixe également un certain nombre de paramètres. En fait, pour la plupart des opérations, vous pouvez examiner les détails des messages de GParted pour savoir quelles commandes ont été exécutées.
  4. Je ne vais pas m'étendre sur les mérites des tables de partition GPT vs MBR/MSDOS, mais GPT est susceptible d'être trouvé sur les nouveaux appareils avec UEFI, surtout si vous avez Windows 8 sur eux. L'état des outils de partitionnement ? discute des outils disponibles si vous êtes confrontés aux TPG.
  5. LVM, ZFS et btrfs sont un tout autre jeu. Ils ont tous leurs outils d'accompagnement, et vous devriez les utiliser au lieu de parted ou fdisk (sauf peut-être pour une étape initiale de création de partitions pour leur utilisation).

Note sur parted l'usage :

La syntaxe du parted est le programme :

parted [options] [device [command [options...]...]]

Lorsque vous exécutez parted sans commande, comme :

parted /tmp/parted

On vous présentera un simple Shell, où vous pourrez exécuter les commandes ci-dessus. Cependant, ces commandes peuvent également être exécutées directement en utilisant la commande parted programme. Ces trois programmes sont donc équivalents :

# 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

Et

# 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

Et

parted /tmp/parted mklabel gpt

Notez également que, lors de la création de partitions avec parted un indicateur utile de la fin des partitions est -1s (c'est "1" entre le trait d'union et le "s"). Ceci est utile si vous voulez que votre partition s'étende d'un début spécifié au reste du disque. Pour être plus précis, l'exécution de

parted /dev/sda -- mkpart primary ext4 3G -1s

créera une partition de /dev/sda qui commence à la 3G et se termine au dernier secteur de la /dev/sda (c'est-à-dire qu'il s'étend de 3G à tout le reste du disque). Notez que le -- est nécessaire, pour 1s ne doit pas être interprété comme une option invalide.

13voto

kyodake Points 13991

Tout d'abord, comment partitionner votre disque dur avec l'utilitaire fdisk.

Linux ne permet que 4 partitions primaires. Vous pouvez avoir un nombre beaucoup plus important de partitions logiques en subdivisant l'une des partitions primaires.

Seule une des partitions primaires peut être subdivisée.

fdisk est lancé en tapant en tant que root fdisk device à l'invite de commande.

Le périphérique peut être quelque chose comme /dev/sda ou /dev/sdb.

Les commandes de base de fdisk dont vous avez besoin sont les suivantes :

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

Les modifications que vous apportez à la table de partition ne prennent pas effet tant que vous n'avez pas émis la commande write (w).

Voici un exemple de table de partition :

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

Beispiel:

Lancez fdisk à partir de l'invite Shell :

sudo su
fdisk /dev/sdb 

Ce qui indique que vous utilisez le deuxième disque sur votre contrôleur 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

Maintenant, la table de partition ressemble à ceci :

 Device Boot      Start       End    Blocks   Id  System
/dev/sdb1             1       196    395104   83  Linux
/dev/sdb2           197       262    133056   83  Linux

Enfin, vous rendez la première partition amorçable :

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

Le résultat 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

Enfin, vous lancez la commande d'écriture (w) pour écrire la table sur le disque.


L'utilitaire mkfs est utilisé pour créer un système de fichiers (ext2, ext3, ext4, etc) sur votre système Linux.

Vous devez spécifier le nom du périphérique à mkfs sur lequel le système de fichiers doit être créé.

Visualiser les commandes de construction de système de fichiers disponibles

Les constructeurs de systèmes de fichiers (commandes mkfs*) sont généralement recherchés dans des répertoires comme /sbin/, /sbin/fs, /sbin/fs.d, /etc/fs et /etc.

Si elle n'est pas trouvée, elle recherche finalement les répertoires trouvés dans la variable PATH.

La liste suivante présente les commandes mkfs* disponibles dans un système.

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

Construire un système de fichiers sur un périphérique spécifique

Afin de construire le système de fichiers en utilisant la commande mkfs, les arguments requis sont device-filename et filesystem-type comme indiqué ci-dessous.

L'exemple suivant crée un système de fichiers ext4 sur la partition /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   

Veuillez noter que le type de système de fichiers par défaut pour la commande mkfs est ext2.

Si vous ne spécifiez pas l'option "-t", il créera un système de fichiers ext2.

Vous pouvez également utiliser la méthode dont nous avons parlé précédemment pour identifier si vous avez un système de fichiers ext2, ext3 ou ext4.


Formater un disque NTFS

Tout d'abord, vous allez avoir besoin de la possibilité de créer des systèmes de fichiers NTFS, alors installez ntfsprogs :

sudo su 
apt-get install ntfs-3g

Deuxièmement, vous effacez la partition et la recréez en 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

Dans la dernière étape, vous démontez la partition, car Ubuntu l'a remontée automatiquement pour vous.

Maintenant, vous devez créer le système de fichiers. Il y a deux façons de procéder : la plus impatiente (Quick Format), ou la meilleure mais beaucoup plus longue (Full Format).

Format rapide

Cette opération se contente d'allouer l'espace disque, mais ne remet pas le lecteur à zéro et ne vérifie pas les secteurs défectueux. Cela signifie que cela prendra quelques secondes.

sudo su 
mkfs.ntfs -f /dev/sdb1

Format complet

Si vous êtes beaucoup plus préoccupé par l'intégrité des données et que vous n'avez pas peur d'attendre, faites un formatage complet.

Cela peut prendre quelques heures pour remettre à zéro un gros disque !

sudo su 
mkfs.ntfs /dev/sdb1

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X