Термінальний метод форматування накопичувача


59

Хочу знати, як відформатувати накопичувач із терміналу. Корисними речами, які можна надати у відповіді, часто використовуються варіанти команд та базових знань, які можна використовувати для екстраполяції майбутніх застосувань. Зокрема, я хотів би знати, як форматувати в різних файлових системах, таких як NTFS, FAT32, EXT4 тощо. Також потрібна інформація про те, як розділити диск через термінал.

Я намагаюся відформатувати зовнішній жорсткий диск великої ємності (EHDD) в NTFS - з терміналу.

Я знаю, що можу використовувати gparted для цього, як і інші програми GUI, але я все ще хочу зараз, як це зробити з терміналу.


1
Для того, хто буде вподобати: обов'язково поясніть параметр -mщодо зарезервованого простору - це актуально, оскільки він є інтелектуальним.
Волкер Зігель

Відповіді:


66

Є кілька варіантів:

  1. fdisk(старший, не підтримує GPT 4 ).
  2. parted (брат CLI GParted).
  3. Різні mkfsпрограми, якщо ви вже маєте розділи та бажаєте їх форматувати.

fdiskі partedє інтерактивними, і є команди довідки, так що ви завжди можете звернутися за допомогою в рамках програми. І те й інше - сценарій. Ці mkfsкоманди не інтерактивні.


fdisk

fdiskочікує, що пристрій (наприклад, /dev/sda) в якості аргументу. Він має такі команди:

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багато використовую . Я просто зупинюсь на:


parted

partedне потрібен аргумент (він намагається "здогадатися"), але ви завжди повинні вказувати диск. З огляду на вибір, partedчи варто віддати перевагу програмі. Він має такі команди:

  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

Команди можуть бути скорочені до унікального префікса (наприклад, hскорочено для help).

Я буду використовувати тимчасовий файл ( /tmp/part), який я створив, щоб показати вам команди, тому розміри будуть дещо невеликими. Ви повинні замінити це на потрібний вам пристрій ( /dev/sdaнаприклад,).

По-перше, якщо на вашому диску немає таблиці розділів, ми повинні створити його:

parted /tmp/part mklabel gpt

або mklabel msdos, якщо вам потрібна річ 4-первинного розділу старої школи (називається таблицею розділів MBR або MSDOS ). Тоді ми робимо, скажімо, розділ ext4, починаючи з 3 Гб (тобто залишаючи початковий 3G вільним) і розміром 2 Гб (тобто закінчуючи на 5 ГБ). partedочікує розташування в МБ для mkpartfs, але ми можемо вказати суфікс:

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

І ще один, тепер вже NTFS розділ 1 Гб:

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

Результат:

# 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

Зверніть увагу, як він використовує префікси SI, тоді як GParted впевнено використовує бінарні префікси (при цьому скидає дурні i). Я позначу розділи:

# 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

Хоча partedможна просто створити розділи файлової системи ntfs, але він не може відформатувати існуючий розділ (!) До 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, як fsck, по суті, є інтерфейсом до різних команд, характерних для файлової системи. У моїй системі, наприклад, mkfs.bfs, mkfs.cramfs, mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.ext4dev, mkfs.fat, mkfs.minix, mkfs.msdos, mkfs.ntfs, mkfs.vfatдоступні.

На жаль, поки partedфайл працює чудово, як і той, який я використав вище, mkfsне можна шукати розділи в таких файлах. Насправді, він очікує , що блокові пристрої, так що, якщо я буду використовувати новий файл /tmp/fileдля mkfsмене є , щоб змусити його зробити це. Ви будете використовувати блоковий пристрій, відповідний розділу, який ви хочете відформатувати, наприклад /dev/sda2. Загальний синтаксис для mkfs:

# 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).

Як бачите, -tпрапор дозволяє нам передавати прапори, характерні для файлової системи. Наприклад, прапорці 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

Тож давайте зробимо розділ NTFS з швидким форматуванням ( -Q), змусивши його працювати над файлом пристрою, що не блокується ( -F), і встановивши ярлик ( -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.

Очевидно, що не сподобалось працювати над файлом. :) Не хвилюйтесь, він повинен автоматично виявляти більшість значень під час роботи на фактичному диску. Навіть цей "файл" добре працює як файлова система:

# 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

(Бачите дивні дозволи?)


Примітки:

  1. У sudoцій відповіді я ще ніде не користувався. Оскільки я працював над файлами та власними файлами, мені це не потрібно sudo. partedпопередить вас про це. Для блокових пристроїв, якими зазвичай завжди належить root, вам знадобиться sudo(або вам доведеться використовувати кореневу оболонку через sudo -iабо sudo su -).
  2. partedє програмою GNU, і, як і багато програм GNU, має велику документацію у infoформаті. Встановіть parted-doc( sudo apt-get install parted-doc) та запустіть info parted. Ви також можете ознайомитись з посібником користувача в Інтернеті .
  3. GParted здатний відформатувати розділ до NTFS, оскільки він викликає відповідну mkfsпрограму безпосередньо ( mkntfsв даному випадку - mkfs.ntfsце лише посилання на mkntfs). Він також встановлює ряд параметрів. Насправді для більшості операцій ви можете вивчити деталі повідомлень GParted, щоб побачити, які команди виконувались.
  4. Я не буду вступати в достоїнства таблиць розділів GPT проти MBR / MSDOS, але, швидше за все, GPT можна знайти на нових пристроях з UEFI, особливо якщо у вас Windows 8. Стан інструментів перегородки? обговорює, які інструменти доступні, якщо ви стикаєтесь з GPT.
  5. LVM, ZFS та btrfs - це зовсім інша гра. Всі вони мають свої супровідні інструменти, і ви повинні використовувати їх замість partedабо fdisk(крім, можливо, для початкового кроку створення розділів для їх використання).

Примітка про partedвикористання:

Синтаксис partedпрограми:

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

Коли ви запускаєте partedбез команди, наприклад:

parted /tmp/parted

Вам буде запропоновано просту оболонку, де ви можете запускати вищезазначені команди. Однак ці команди також можна запустити безпосередньо за допомогою partedпрограми. Отже, ці три еквівалентні:

# 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

І

# 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

І

parted /tmp/parted mklabel gpt

Зауважте також, що при створенні розділів з parted, корисним індикатором кінця розділів є -1s(це "1" між дефісом та "s"). Це корисно, якщо ви хочете, щоб ваш розділ перейшов із заданого запуску на іншу частину диска. Якщо бути більш конкретним, бігайте

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

створить розділ, /dev/sdaякий починається з 3G і закінчується в останньому секторі /dev/sdaдиска (тобто він охоплює від 3G до всієї залишки диска). Зауважте, що --необхідне, щоб 1sне інтерпретуватися як недійсний варіант.


IMHO, gdisk, він же GPT fdisk, перевершує розлучення
Етан Резор

1
@FireLizzard чудово! Будь ласка, опублікуйте відповідь, де детально описано, як ним користуватися.
муру

в той час як питання чітко про те, як відформатувати диск, чому ви навіть згадуєте про розбір та fdisk? Ви навіть згадуєте про себе, що не можете відформатувати диск з проділом.
zunder

@kreide знову прочитав: "Також потрібна інформація про те, як розділити диск через термінал."
муру

11

Спочатку ви дізнаєтеся, як насправді розділити ваш жорсткий диск за допомогою утиліти fdisk.

Linux дозволяє лише 4 первинні розділи. Ви можете мати значно більшу кількість логічних розділів, поділивши один з первинних розділів.

Тільки один з первинних розділів можна розділити підрозділом.

fdisk запускається, ввівши як кореневий пристрій fdisk у командному рядку.

Пристрій може бути чимось на зразок / dev / sda або / dev / sdb

Основні команди fdisk, які вам потрібні:

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

Зміни, внесені в таблицю розділів, набувають чинності, поки не випустите команду write (w).

Ось зразок таблиці розділів:

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

Приклад:

Запустіть fdisk з підказки оболонки:

sudo su
fdisk /dev/sdb 

Що вказує на те, що ви використовуєте другий привід свого контролера 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

Тепер таблиця розділів виглядає так:

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

Нарешті, ви робите завантажувальний перший розділ:

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

Кінцевий результат:

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

Нарешті, ви видаєте команду write (w) для запису таблиці на диску.


Утиліта mkfs використовується для створення файлової системи (ext2, ext3, ext4 тощо) у вашій системі Linux.

Ви повинні вказати ім'я пристрою mkfs, на якому файлова система повинна бути створена.

Перегляд доступних команд для побудови файлової системи

Забудовники файлової системи (команди mkfs *) зазвичай шукають у таких каталогах, як / sbin /, / sbin / fs, /sbin/fs.d, / etc / fs та / etc.

Якщо його не знайти, нарешті, він шукає каталоги, знайдені в змінній PATH.

У наступному списку показані доступні команди mkfs * в системі.

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

Побудувати файлову систему на певному пристрої

Для того щоб побудувати файлову систему за допомогою команди mkfs, необхідними аргументами є пристрій-ім’я файлу та тип файлової системи, як показано нижче.

Наступний приклад створює файлову систему ext4 на розділі / 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   

Зверніть увагу, що тип файлової системи за замовчуванням для команди mkfs є ext2.

Якщо не вказати параметр «-t», він створить файлову систему ext2.

Також ви можете використовувати метод, про який ми говорили раніше, щоб визначити, чи є у вас файлова система ext2 або ext3 або ext4.


Відформатуйте диск NTFS

По-перше, вам знадобиться можливість створити файлові системи NTFS, тому встановіть ntfsprogs:

sudo su 
apt-get install ntfs-3g

По-друге, ви видуваєте розділ і створюєте його знову як 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

На останньому кроці ви демонтуєте розділ, оскільки Ubuntu автоматично встановив його знову для Вас.

Тепер вам потрібно створити файлову систему. Є два шляхи для цього: нетерплячий шлях (Швидкий формат) або кращий, але набагато довший шлях (Повний формат).

Швидкий формат

Це просто виділяє дисковий простір, але не зводить нанівець диск або перевіряє наявність поганих секторів. Це означає, що це займе кілька секунд.

sudo su 
mkfs.ntfs -f /dev/sdb1

Повний формат

Якщо вас більше турбує цілісність даних і не проти чекати, створіть повний формат.

Це може зайняти кілька годин, щоб нульовий привід вичерпав!

sudo su 
mkfs.ntfs /dev/sdb1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.