Я хочу узнать, как отформатировать накопитель из терминала. Полезными вещами для предоставления в ответе были бы часто используемые опции для команд и базовые знания, которые можно использовать для экстраполяции будущих применений. В частности, я хотел бы узнать, как форматировать в различных файловых системах, таких как NTFS, FAT32, EXT4 и т. д. Также требуется информация о том, как разбить диск на разделы через терминал.
Я пытаюсь отформатировать внешний жесткий диск большой емкости (EHDD) в NTFS — через терминал.
Я знаю, что для этого можно использовать gparted, а также другие программы с графическим интерфейсом, но я все еще хочу узнать, как сделать это из терминала.
решение1
Доступно несколько вариантов:
fdisk
.parted
(CLI-брат GParted).- Различные
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 ГБ (т. е. оставляя начальные 3 ГБ свободными) и размером 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".
Действительно, parted скажет вам, что вы должны использовать его для управления разделами,не файловые системы, что приводит меня к следующему:
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
доступны.
Теперь, к сожалению, while 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: [email protected]
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
(Видите странные разрешения?)
Примечания:
- Я пока нигде в этом ответе не использовал
sudo
. Поскольку я оперировал файлами, а файлы принадлежали мне, мне не нужно былоsudo
.parted
предупрежу вас об этом. Для блочных устройств, которые обычно всегда принадлежатroot
, вам понадобитсяsudo
(или вам придется использовать оболочку root черезsudo -i
илиsudo su -
). parted
это программа GNU, и как и многие программы GNU, имеет обширную документацию вinfo
формате. Установитеparted-doc
(sudo apt-get install parted-doc
) и затем запуститеinfo parted
. Вы также можете проверитьонлайн руководство пользователя.- GParted может форматировать раздел в NTFS, поскольку он
mkfs
напрямую вызывает соответствующую программу (mkntfs
в данном случае -mkfs.ntfs
это просто ссылка наmkntfs
). Он также устанавливает ряд параметров. Фактически, для большинства операций вы можете изучить подробности сообщений GParted, чтобы увидеть, какие команды были запущены. - Я не буду вдаваться в подробности о преимуществах таблиц разделов GPT и MBR/MSDOS, но GPT, скорее всего, будет встречаться на новых устройствах с UEFI, особенно если на них установлена Windows 8.Состояние инструментов разбиения на разделы?обсуждает, какие инструменты доступны, если вы сталкиваетесь с GPT.
- 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
не интерпретироваться как недопустимая опция.
решение2
Сначала вы узнаете, как разбить жесткий диск на разделы с помощью утилиты fdisk.
Linux позволяет только 4 основных раздела. Вы можете иметь гораздо большее количество логических разделов, разделив один из основных разделов.
Только один из основных разделов может быть разделен.
fdisk запускается путем ввода в командной строке команды root fdisk device.
Устройство может быть похоже на /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
Изменения, внесенные в таблицу разделов, не вступят в силу, пока вы не выполните команду записи (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
Наконец, вы даете команду записи (w), чтобы записать таблицу на диск.
Утилита mkfs используется для создания файловой системы (ext2, ext3, ext4 и т. д.) в вашей системе Linux.
Вам следует указать mkfs имя устройства, на котором будет создана файловая система.
Просмотр доступных команд Filesystem Builder
Поиск построителей файловой системы (команды 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 необходимы аргументы device-filename и filesystem-type, как показано ниже.
В следующем примере создается файловая система 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