Metode terminal memformat drive penyimpanan

59

Saya ingin tahu cara memformat drive penyimpanan dari terminal. Hal-hal yang bermanfaat untuk diberikan dalam jawaban akan sering digunakan opsi untuk perintah dan basis pengetahuan yang dapat digunakan untuk memperkirakan penggunaan di masa depan. Secara khusus saya ingin tahu cara memformat dalam sistem file yang berbeda seperti NTFS, FAT32, EXT4, dll. Informasi tentang cara mempartisi drive melalui terminal juga diinginkan.

Saya mencoba memformat hard drive eksternal berkapasitas tinggi (EHDD) ke NTFS - dari terminal.

Saya tahu saya bisa menggunakan gparted untuk ini serta program GUI lainnya, tapi saya masih ingin sekarang bagaimana melakukannya dari terminal.

GoProCameraByGoPro
sumber
1
Bagi siapa pun yang akan melakukan anser: pastikan untuk menjelaskan opsi -mpada ruang yang dipesan - ini relevan, karena ini adalah intuitif.
Volker Siegel

Jawaban:

66

Ada beberapa opsi yang tersedia:

  1. fdisk(lebih tua, tidak mendukung GPT 4 ).
  2. parted (saudara CLI dari GParted).
  3. Berbagai mkfsprogram, jika Anda sudah memiliki partisi dan ingin memformat.

fdiskdan partedbersifat interaktif, dan memiliki perintah bantuan, sehingga Anda selalu dapat mencari bantuan di dalam program. Keduanya juga bisa skrip. The mkfsperintah tidak interaktif.


fdisk

fdiskmengharapkan perangkat (seperti /dev/sda) sebagai argumen. Ini memiliki perintah berikut:

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)

Saya tidak fdiskbanyak menggunakannya . Saya hanya akan fokus pada:


parted

partedtidak perlu argumen (mencoba "menebak"), tetapi Anda harus selalu menentukan disk. Diberi pilihan, partedadalah program yang harus Anda pilih. Ini memiliki perintah berikut:

  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

Perintah dapat dikontrakkan ke awalan unik (misalnya, hkependekan dari help).

Saya akan menggunakan file sementara ( /tmp/part) yang saya buat untuk menunjukkan kepada Anda perintah, jadi ukurannya akan sedikit kecil. Anda harus menggantinya dengan perangkat yang Anda butuhkan ( /dev/sda, misalnya).

Pertama, jika disk Anda tidak memiliki tabel partisi, kita harus membuatnya:

parted /tmp/part mklabel gpt

atau mklabel msdos, jika Anda menginginkan partisi 4-primary-school lama (disebut MBR atau tabel partisi MSDOS ). Kemudian kita membuat, katakanlah, sebuah partisi ext4 mulai dari 3GB (yaitu, meninggalkan 3G awal gratis) dan ukuran 2GB (yaitu, berakhir pada 5GB). partedmengharapkan lokasi dalam MB untuk mkpartfs, tetapi kita dapat menentukan akhiran:

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

Dan yang lainnya, sekarang merupakan partisi NTFS 1GB:

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

Hasil:

# 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

Perhatikan bagaimana menggunakan awalan SI, sedangkan GParted terus menggunakan awalan biner (sambil menjatuhkan konyol i). Saya akan memberi label partisi:

# 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

Meskipun parteddapat membuat partisi filesystem dengan ntfsbaik, ia tidak dapat memformat partisi yang ada (!) Ke 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".

Memang, parted akan memberi tahu Anda bahwa Anda harus menggunakannya untuk memanipulasi partisi, bukan filesystem , yang membawa saya ke:


mkfs

mkfs, seperti fsck, pada dasarnya adalah sebuah frontend untuk berbagai perintah khusus sistem file. Pada sistem saya misalnya, mkfs.bfs, mkfs.cramfs, mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.ext4dev, mkfs.fat, mkfs.minix, mkfs.msdos, mkfs.ntfs, mkfs.vfattersedia.

Sekarang, sayangnya, sementara partedberoperasi dengan baik pada file, seperti yang saya gunakan di atas, mkfstidak bisa pergi berburu untuk partisi dalam file tersebut. Bahkan, ia mengharapkan perangkat blok, jadi jika saya akan menggunakan file baru /tmp/fileuntuk mkfs, saya harus memaksanya melakukannya. Anda akan menggunakan perangkat blok yang sesuai dengan partisi yang ingin Anda format, seperti /dev/sda2. Sintaks umum untuk mkfsadalah:

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

Seperti yang Anda lihat, -tflag ini memungkinkan kami melewati flag khusus sistem file. Misalnya, bendera 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

Jadi mari kita membuat partisi NTFS, dengan pemformatan cepat ( -Q), memaksanya untuk beroperasi pada file non-blok-perangkat ( -F), dan pengaturan label ( -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.

Jelas itu tidak menikmati bekerja pada file. :) Jangan khawatir, itu akan secara otomatis mendeteksi sebagian besar nilai ketika bekerja pada disk yang sebenarnya. Bahkan "file" ini berfungsi dengan baik sebagai sistem file:

# 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

(Lihat izin aneh?)


Catatan:

  1. Saya belum pernah menggunakan sudojawaban ini. Karena saya mengoperasikan file, dan file milik saya, saya tidak perlu sudo. partedakan memperingatkan Anda tentang ini. Untuk perangkat blok, yang biasanya selalu dimiliki oleh root, Anda perlu sudo(atau Anda harus menggunakan shell root via sudo -iatau sudo su -).
  2. partedadalah program GNU, dan seperti banyak program GNU, memiliki dokumentasi yang luas dalam infoformatnya. Instal parted-doc( sudo apt-get install parted-doc) lalu jalankan info parted. Anda juga dapat memeriksa manual pengguna online .
  3. GParted dapat memformat partisi ke NTFS karena ia memanggil mkfsprogram yang sesuai secara langsung ( mkntfs, dalam hal ini - mkfs.ntfshanya tautan ke mkntfs). Ini juga menetapkan sejumlah parameter. Bahkan, untuk sebagian besar operasi, Anda dapat memeriksa detail pesan yang dipartisi untuk melihat perintah mana yang dijalankan.
  4. Saya tidak akan masuk ke manfaat tabel partisi GPT vs MBR / MSDOS, tetapi GPT kemungkinan akan ditemukan pada perangkat baru dengan UEFI, terutama jika Anda memiliki Windows 8. Keadaan alat partisi? membahas alat apa yang tersedia jika Anda menghadapi GPT.
  5. LVM, ZFS, dan btrf adalah keseluruhan permainan lainnya. Mereka semua memiliki alat yang menyertainya, dan Anda harus menggunakannya sebagai ganti partedatau fdisk(kecuali mungkin untuk langkah awal membuat partisi untuk penggunaan mereka).

Catatan tentang partedpenggunaan:

Sintaks partedprogram adalah:

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

Ketika Anda menjalankan partedtanpa perintah, seperti:

parted /tmp/parted

Anda akan disajikan shell sederhana, tempat Anda dapat menjalankan perintah di atas. Namun, perintah ini juga dapat dijalankan langsung menggunakan partedprogram. Jadi ketiganya setara:

# 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

Dan

# 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

Dan

parted /tmp/parted mklabel gpt

Perhatikan juga bahwa, ketika membuat partisi dengan parted, indikator berguna dari akhir partisi adalah -1s(ini adalah "1" antara tanda hubung dan "s"). Ini berguna jika Anda ingin partisi Anda membentang dari awal yang ditentukan ke seluruh disk. Untuk lebih spesifik, jalankan

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

akan membuat partisi /dev/sdayang dimulai dari 3G dan berakhir di sektor terakhir dari /dev/sdadisk (yaitu membentang dari 3G ke seluruh sisa disk). Perhatikan bahwa --ini perlu, agar 1stidak ditafsirkan sebagai opsi yang tidak valid.

muru
sumber
IMHO, gdisk, alias GPT fdisk, lebih baik daripada berpisah
Ethan Reesor
1
@ FireLizzard luar biasa! Silakan kirim jawaban yang menjelaskan cara menggunakannya.
muru
sementara pertanyaannya jelas tentang bagaimana memformat disk, mengapa Anda menyebutkan parted dan fdisk? Anda bahkan menyebut diri Anda, bahwa Anda tidak dapat memformat disk dengan parted.
zunder
@kreide baca lagi: "Informasi tentang cara mempartisi drive melalui terminal juga diinginkan."
muru
11

Pertama Anda bagaimana sebenarnya mempartisi hard drive Anda dengan utilitas fdisk.

Linux hanya membolehkan 4 partisi primer. Anda dapat memiliki jumlah partisi logis yang jauh lebih besar dengan membagi-bagi salah satu partisi primer.

Hanya satu dari partisi primer yang dapat dibagi.

fdisk dimulai dengan mengetik sebagai perangkat root fdisk pada command prompt.

Perangkat mungkin berupa / dev / sda atau / dev / sdb

Perintah dasar fdisk yang Anda butuhkan adalah:

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

Perubahan yang Anda buat pada tabel partisi tidak berlaku sampai Anda mengeluarkan perintah write (w).

Berikut adalah tabel partisi contoh:

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

Contoh:

Mulai fdisk dari prompt shell:

sudo su
fdisk /dev/sdb 

Yang menunjukkan bahwa Anda menggunakan drive kedua pada pengontrol SATA Anda.

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

Sekarang tabel partisi terlihat seperti ini:

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

Akhirnya, Anda membuat partisi pertama dapat di-boot:

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

Hasil akhirnya:

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

Akhirnya, Anda mengeluarkan perintah tulis (w) untuk menulis tabel pada disk.


Utilitas mkfs digunakan untuk membuat sistem file (ext2, ext3, ext4, dll) di sistem Linux Anda.

Anda harus menentukan nama perangkat untuk mkfs di mana sistem file yang akan dibuat.

Lihat Perintah Pembuat Sistem Files yang Tersedia

Pembuat filesystem (perintah mkfs *) biasanya dicari di direktori seperti / sbin /, / sbin / fs, /sbin/fs.d, / etc / fs dan / etc.

Jika tidak ditemukan, akhirnya ia mencari direktori yang ditemukan dalam variabel PATH.

Daftar berikut ini menunjukkan perintah mkfs * yang tersedia dalam suatu sistem.

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

Bangun Sistem File di Perangkat Tertentu

Untuk membangun filesystem menggunakan perintah mkfs, argumen yang diperlukan adalah device-filename dan filesystem-type seperti yang ditunjukkan di bawah ini.

Contoh berikut membuat filesystem ext4 di partisi / 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   

Harap dicatat bahwa tipe sistem file default untuk perintah mkfs adalah ext2.

Jika Anda tidak menentukan opsi "-t", itu akan menciptakan sistem file ext2.

Anda juga dapat menggunakan metode yang telah kita bahas sebelumnya untuk mengidentifikasi apakah Anda memiliki sistem file ext2 atau ext3 atau ext4.


Memformat Drive NTFS

Pertama, Anda akan membutuhkan kemampuan untuk membuat sistem file NTFS, jadi instal ntfsprogs:

sudo su 
apt-get install ntfs-3g

Kedua, Anda meniup partisi dan membuatnya kembali sebagai 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

Pada langkah terakhir, Anda melepas partisi, karena Ubuntu otomatis memasangnya lagi untuk Anda.

Sekarang, Anda perlu membuat sistem file. Ada dua cara untuk melakukannya: cara tidak sabar (Format Cepat), atau cara yang lebih baik tetapi lebih lama (Format Penuh).

Format cepat

Ini hanya mengalokasikan ruang disk, tetapi tidak nol drive atau memeriksa bad sector. Ini berarti perlu beberapa detik.

sudo su 
mkfs.ntfs -f /dev/sdb1

Format Penuh

Jika Anda jauh lebih mementingkan integritas data dan tidak keberatan menunggu, lakukan format penuh.

Ini bisa memakan waktu beberapa jam untuk mematikan drive yang besar!

sudo su 
mkfs.ntfs /dev/sdb1
Kyodake
sumber