Phương pháp đầu cuối của định dạng ổ lưu trữ


59

Tôi muốn biết làm thế nào để định dạng một ổ lưu trữ từ thiết bị đầu cuối. Những điều hữu ích để cung cấp trong câu trả lời sẽ thường được sử dụng tùy chọn cho các lệnh và kiến ​​thức cơ bản mà người ta có thể sử dụng để ngoại suy các sử dụng trong tương lai. Cụ thể tôi muốn biết cách định dạng trong các hệ thống tệp khác nhau như NTFS, FAT32, EXT4, v.v. Thông tin về cách phân vùng ổ đĩa qua thiết bị đầu cuối cũng muốn.

Tôi đang cố gắng định dạng ổ cứng ngoài dung lượng cao (EHDD) thành NTFS - từ thiết bị đầu cuối.

Tôi biết tôi có thể sử dụng gparted cho việc này cũng như các chương trình GUI khác, nhưng bây giờ tôi vẫn muốn làm thế nào để làm điều đó từ thiết bị đầu cuối.


1
Đối với bất cứ ai sẽ trả lời: hãy đảm bảo giải thích tùy chọn -mtrên không gian dành riêng - nó có liên quan, bởi vì nó mang tính trực quan.
Volker Siegel

Câu trả lời:


66

Có một vài lựa chọn có sẵn:

  1. fdisk(cũ hơn, không hỗ trợ GPT 4 ).
  2. parted (anh em CLI của GParted).
  3. Các mkfschương trình khác nhau , nếu bạn đã có phân vùng và muốn định dạng.

fdiskpartedcó tính tương tác và có các lệnh trợ giúp, vì vậy bạn luôn có thể tìm kiếm trợ giúp trong chương trình. Cả hai cũng có kịch bản. Các mkfslệnh không tương tác.


fdisk

fdiskmong đợi một thiết bị (như /dev/sda) làm đối số. Nó có các lệnh sau:

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)

Tôi không sử dụng fdisknhiều như vậy. Tôi sẽ chỉ tập trung vào:


parted

partedkhông cần một đối số (nó cố gắng "đoán"), nhưng bạn phải luôn chỉ định đĩa. Đưa ra lựa chọn, partedlà chương trình bạn nên thích. Nó có các lệnh sau:

  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

Các lệnh có thể được ký hợp đồng với một tiền tố duy nhất (ví dụ: hviết tắt của help).

Tôi sẽ sử dụng một tệp tạm thời ( /tmp/part) tôi đã tạo để hiển thị cho bạn các lệnh, vì vậy kích thước sẽ hơi nhỏ. Bạn nên thay thế bằng thiết bị bạn cần ( /dev/sdaví dụ).

Đầu tiên, nếu đĩa của bạn không có bảng phân vùng, chúng ta phải tạo một bảng:

parted /tmp/part mklabel gpt

hoặc mklabel msdos, nếu bạn muốn điều phân vùng 4 trường tiểu học cũ (được gọi là bảng phân vùng MBR hoặc MSDOS ). Sau đó, chúng tôi tạo một phân vùng ext4 bắt đầu từ 3 GB (nghĩa là để 3G ban đầu miễn phí) và có kích thước 2 GB (nghĩa là kết thúc ở mức 5 GB). partedmong đợi các vị trí trong MB cho mkpartfs, nhưng chúng tôi có thể chỉ định hậu tố:

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

Và một cái khác, bây giờ là phân vùng NTFS 1GB:

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

Kết quả:

# 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

Lưu ý cách nó sử dụng tiền tố SI, trong khi GParted kiên định sử dụng tiền tố nhị phân (trong khi bỏ đi sự ngớ ngẩn i). Tôi sẽ gắn nhãn các phân vùng:

# 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

Mặc dù partedcó thể tạo phân vùng của hệ thống tệp ntfstốt nhưng nó không thể định dạng phân vùng hiện có (!) Thành 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".

Thật vậy, parted sẽ cho bạn biết rằng bạn nên sử dụng nó để thao tác phân vùng, không phải hệ thống tập tin , điều này đưa tôi đến:


mkfs

mkfs, giống như fsck, về cơ bản là một lối vào cho các lệnh cụ thể của hệ thống tập tin. Trên hệ thống của tôi ví dụ mkfs.bfs, mkfs.cramfs, mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.ext4dev, mkfs.fat, mkfs.minix, mkfs.msdos, mkfs.ntfs, mkfs.vfatcó sẵn.

Thật không may, trong khi partedhoạt động tốt trên một tệp, như tệp tôi đã sử dụng ở trên, mkfskhông thể tìm kiếm các phân vùng trong các tệp đó. Trong thực tế, nó hy vọng ngăn chặn các thiết bị, vì vậy nếu tôi sẽ sử dụng một tập tin mới /tmp/filecho mkfs, tôi phải buộc nó làm như vậy. Bạn sẽ sử dụng thiết bị khối tương ứng với phân vùng bạn muốn định dạng, chẳng hạn như /dev/sda2. Cú pháp chung cho mkfslà:

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

Như bạn có thể thấy, -tcờ cho phép chúng ta vượt qua các cờ cụ thể của hệ thống tệp. Ví dụ: cờ 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

Vì vậy, hãy tạo một phân vùng NTFS, với định dạng nhanh ( -Q), buộc nó phải hoạt động trên tệp không phải thiết bị chặn ( -F) và đặt nhãn ( -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.

Rõ ràng nó không thích làm việc trên một tập tin. :) Đừng lo lắng, nó sẽ tự động phát hiện hầu hết các giá trị khi làm việc trên đĩa thực. Ngay cả "tập tin" này hoạt động tốt như một hệ thống tập tin:

# 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

(Xem các quyền lạ?)


Ghi chú:

  1. Tôi chưa sử dụng sudobất cứ nơi nào trong câu trả lời này. Vì tôi đang vận hành trên các tệp và các tệp thuộc sở hữu của tôi, tôi không cần sudo. partedsẽ cảnh báo bạn về điều này. Đối với các thiết bị khối, thường được sở hữu bởi root, bạn sẽ cần sudo(hoặc bạn sẽ phải sử dụng trình bao gốc thông qua sudo -ihoặc sudo su -).
  2. partedlà một chương trình GNU, và giống như nhiều chương trình GNU, có tài liệu mở rộng theo infođịnh dạng. Cài đặt parted-doc( sudo apt-get install parted-doc) và sau đó chạy info parted. Bạn cũng có thể kiểm tra hướng dẫn sử dụng trực tuyến .
  3. GParted có thể định dạng phân vùng thành NTFS vì nó gọi mkfschương trình thích hợp trực tiếp ( mkntfs, trong trường hợp này - mkfs.ntfschỉ là một liên kết đến mkntfs). Nó cũng đặt một số tham số. Trong thực tế, đối với hầu hết các hoạt động, bạn có thể kiểm tra chi tiết của các thông báo GParted để xem lệnh nào đã được chạy.
  4. Tôi sẽ không đi sâu vào ưu điểm của các bảng phân vùng GPT so với MBR / MSDOS, nhưng GPT có thể được tìm thấy trên các thiết bị mới có UEFI, đặc biệt là nếu bạn có Windows 8 trên chúng. Tình trạng của các công cụ phân vùng? thảo luận về những công cụ có sẵn nếu bạn đang đối mặt với GPT.
  5. LVM, ZFS và btrfs là một trò chơi hoàn toàn khác. Tất cả đều có các công cụ đi kèm và bạn nên sử dụng chúng thay vì partedhoặc fdisk(ngoại trừ bước đầu tiên tạo phân vùng để sử dụng).

Lưu ý khi partedsử dụng:

Cú pháp của partedchương trình là:

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

Khi bạn chạy partedmà không có lệnh, như:

parted /tmp/parted

Bạn sẽ được trình bày một shell đơn giản, nơi bạn có thể chạy các lệnh trên. Tuy nhiên, các lệnh này cũng có thể được chạy trực tiếp bằng partedchương trình. Vì vậy, ba điều này là tương đương:

# 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

Cũng lưu ý rằng, khi tạo phân vùng bằng parted, một chỉ báo hữu ích về kết thúc phân vùng là -1s(đây là "1" giữa dấu gạch nối và "s"). Điều này rất hữu ích nếu bạn muốn phân vùng của mình trải dài từ một điểm bắt đầu được chỉ định đến phần còn lại của đĩa. Để cụ thể hơn, chạy

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

sẽ tạo một phân vùng /dev/sdabắt đầu từ 3G và kết thúc ở khu vực cuối cùng của /dev/sdađĩa (tức là nó trải dài từ 3G đến toàn bộ phần còn lại của đĩa). Lưu ý rằng điều --này là cần thiết, để 1skhông được hiểu là một tùy chọn không hợp lệ.


IMHO, gdisk, còn gọi là GPT fdisk, vượt trội hơn so với chia tay
Ethan Reesor

1
@FireLizzard tuyệt vời! Xin vui lòng gửi một câu trả lời chi tiết làm thế nào để sử dụng nó.
muru

Trong khi câu hỏi rõ ràng là về cách định dạng đĩa, tại sao bạn thậm chí còn đề cập đến parted và fdisk? Bạn thậm chí còn đề cập đến chính mình, rằng bạn không thể định dạng một đĩa với chia tay.
zunder

@kreide đọc lại: "Thông tin về cách phân vùng ổ đĩa qua thiết bị đầu cuối cũng muốn."
muru

11

Trước tiên, bạn làm thế nào để thực sự phân vùng ổ cứng của bạn với tiện ích fdisk.

Linux chỉ cho phép 4 phân vùng chính. Bạn có thể có số lượng phân vùng logic lớn hơn nhiều bằng cách chia một trong các phân vùng chính.

Chỉ một trong những phân vùng chính có thể được chia nhỏ.

fdisk được bắt đầu bằng cách gõ như thiết bị fdisk gốc tại dấu nhắc lệnh.

Thiết bị có thể là một cái gì đó như / dev / sda hoặc / dev / sdb

Các lệnh fdisk cơ bản bạn cần là:

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

Những thay đổi bạn thực hiện đối với bảng phân vùng sẽ không có hiệu lực cho đến khi bạn ban hành lệnh write (w).

Đây là bảng phân vùng mẫu:

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

Thí dụ:

Bắt đầu fdisk từ dấu nhắc shell:

sudo su
fdisk /dev/sdb 

Điều này cho biết rằng bạn đang sử dụng ổ đĩa thứ hai trên bộ điều khiển SATA của mình.

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

Bây giờ bảng phân vùng trông như thế này:

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

Cuối cùng, bạn tạo phân vùng đầu tiên có khả năng khởi động:

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

Kết quả cuối cùng:

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

Cuối cùng, Bạn đưa ra lệnh write (w) để ghi bảng trên đĩa.


tiện ích mkfs được sử dụng để tạo hệ thống tập tin (ext2, ext3, ext4, v.v.) trên hệ thống Linux của bạn.

Bạn nên chỉ định tên thiết bị cho mkfs mà hệ thống tập tin sẽ được tạo.

Xem các lệnh xây dựng hệ thống tập tin có sẵn

Các trình xây dựng hệ thống tập tin (lệnh mkfs *) thường được tìm kiếm trong các thư mục như / sbin /, / sbin / fs, /sbin/fs.d, / etc / fs và / etc.

Nếu không tìm thấy, cuối cùng nó tìm kiếm các thư mục được tìm thấy trong biến PATH.

Danh sách sau đây cho thấy các lệnh mkfs * có sẵn trong một hệ thống.

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

Xây dựng hệ thống tập tin trên một thiết bị cụ thể

Để xây dựng hệ thống tệp bằng lệnh mkfs, các đối số được yêu cầu là tên tệp thiết bị và loại hệ thống tệp như dưới đây.

Ví dụ sau đây tạo hệ thống tập tin ext4 trên phân vùng / 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   

Xin lưu ý rằng loại hệ thống tập tin mặc định cho lệnh mkfs là ext2.

Nếu bạn không chỉ định tùy chọn của Wikipedia -t, nó sẽ tạo hệ thống tập tin ext2.

Ngoài ra, bạn có thể sử dụng phương pháp chúng tôi đã thảo luận trước đó để xác định xem bạn có hệ thống tệp ext2 hoặc ext3 hoặc ext4 hay không.


Định dạng ổ đĩa NTFS

Trước tiên, bạn sẽ cần khả năng tạo các hệ thống tệp NTFS, vì vậy hãy cài đặt ntfspross:

sudo su 
apt-get install ntfs-3g

Thứ hai, Bạn thổi bay phân vùng và tạo lại nó dưới dạng 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

Ở bước cuối cùng, Bạn ngắt kết nối phân vùng, vì Ubuntu tự động gắn lại nó cho Bạn.

Bây giờ, bạn cần tạo hệ thống tập tin. Có hai cách để đi về nó: cách thiếu kiên nhẫn (Định dạng nhanh) hoặc cách tốt hơn nhưng dài hơn nhiều (Định dạng đầy đủ).

Định dạng nhanh

Điều này chỉ phân bổ không gian đĩa, nhưng không thoát ra khỏi ổ đĩa hoặc kiểm tra các thành phần xấu. Điều này có nghĩa là nó sẽ mất một vài giây.

sudo su 
mkfs.ntfs -f /dev/sdb1

Định dạng đầy đủ

Nếu bạn quan tâm nhiều hơn đến tính toàn vẹn dữ liệu và không ngại chờ đợi, hãy thực hiện định dạng đầy đủ.

Điều này có thể mất một vài giờ để bỏ ra một ổ đĩa lớn!

sudo su 
mkfs.ntfs /dev/sdb1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.