Lệnh fdisk - Quản lý phân vùng đĩa trong Linux

fdisk là một tiện ích thao tác đĩa dựa trên dòng lệnh thường được sử dụng nhất cho các hệ thống Linux/Unix. Với sự trợ giúp của lệnh fdisk, bạn có thể xem, tạo, thay đổi kích thước, xóa, di chuyển, sao chép và di chuyển các phân vùng trên ổ cứng sử dụng giao diện dựa trên văn bản điều khiển menu thân thiện với người dùng.

Công cụ này rất hữu ích khi tạo không gian cho các phân vùng mới, tổ chức không gian cho các ổ đĩa mới, sắp xếp lại các ổ đĩa cũ và sao chép hoặc di chuyển dữ liệu sang đĩa mới. Nó cho phép bạn tạo tối đa bốn phân vùng chính mới và một số phân vùng mở rộng (logical), dựa trên kích thước ổ cứng có trong hệ thống của bạn.

fdisk command examples

Bài viết này giải thích 10 lệnh cơ bản của fdisk để quản lý bảng phân vùng trong các hệ thống dựa trên Linux. Bạn phải là người dùng root để chạy lệnh fdisk, nếu không, bạn sẽ gặp lỗi “command not found”.

Cảnh báo – Không Tạo, Xóa hoặc Sửa Đổi Phân vùng Nếu Bạn không Biết Bạn Đang Làm Gì!

1. Xem tất cả các Phân vùng Đĩa trong Linux

Câu lệnh cơ bản sau đây liệt kê tất cả các phân vùng đĩa hiện có trên hệ thống của bạn. Đối số ‘-l‘ được sử dụng với lệnh fdisk để xem tất cả các phân vùng có sẵn trên Linux. Các phân vùng được hiển thị theo tên thiết bị của chúng. Ví dụ: /dev/sda/dev/sdb hoặc /dev/sdc.

[root@tecmint.com ~]# fdisk -l

Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2624    20972857+  83  Linux
/dev/sda3            2625        4582    15727635   83  Linux
/dev/sda4            4583       77541   586043167+   5  Extended
/dev/sda5            4583        5887    10482381   83  Linux
/dev/sda6            5888        7192    10482381   83  Linux
/dev/sda7            7193        7845     5245191   83  Linux
/dev/sda8            7846        8367     4192933+  82  Linux swap / Solaris
/dev/sda9            8368       77541   555640123+  8e  Linux LVM

2. Xem Phân vùng Cụ thể trong Linux

Để xem tất cả các phân vùng của một ổ cứng cụ thể, sử dụng tùy chọn ‘-l‘ với tên thiết bị. Ví dụ, lệnh sau sẽ hiển thị tất cả các phân vùng đĩa của thiết bị /dev/sda. Nếu bạn có các tên thiết bị khác nhau, chỉ cần viết tên thiết bị như /dev/sdb hoặc /dev/sdc.

[root@tecmint.com ~]# fdisk -l /dev/sda

Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2624    20972857+  83  Linux
/dev/sda3            2625        4582    15727635   83  Linux
/dev/sda4            4583       77541   586043167+   5  Extended
/dev/sda5            4583        5887    10482381   83  Linux
/dev/sda6            5888        7192    10482381   83  Linux
/dev/sda7            7193        7845     5245191   83  Linux
/dev/sda8            7846        8367     4192933+  82  Linux swap / Solaris
/dev/sda9            8368       77541   555640123+  8e  Linux LVM

3. Kiểm tra tất cả các Lệnh fdisk Hiện có

Nếu bạn muốn xem tất cả các lệnh có sẵn cho fdisk. Chỉ cần sử dụng lệnh sau bằng cách đề cập tên ổ cứng như /dev/sda như được hiển thị bên dưới. Lệnh sau sẽ cho bạn đầu ra tương tự như dưới đây.

[root@tecmint ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help):

Gõ ‘m‘ để xem danh sách tất cả các lệnh có sẵn của fdisk mà bạn có thể thực hiện trên ổ cứng /dev/sda. Sau khi tôi gõ ‘m‘ trên màn hình, bạn sẽ thấy tất cả các tùy chọn có sẵn cho fdisk mà bạn có thể sử dụng trên thiết bị /dev/sda.

[root@tecmint ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): m
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)

Command (m for help):

4. In tất cả các Bảng Phân vùng trong Linux

Để in tất cả các bảng phân vùng của ổ cứng, bạn phải ở chế độ lệnh của ổ cứng cụ thể, ví dụ /dev/sda.

[root@tecmint ~]# fdisk /dev/sda

Từ chế độ lệnh, gõ ‘p‘ thay vì ‘m‘ như chúng ta đã làm trước đây. Khi tôi gõ ‘p‘, nó sẽ in ra bảng phân vùng cụ thể của /dev/sda.

Command (m for help): p

Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2624    20972857+  83  Linux
/dev/sda3            2625        4582    15727635   83  Linux
/dev/sda4            4583       77541   586043167+   5  Extended
/dev/sda5            4583        5887    10482381   83  Linux
/dev/sda6            5888        7192    10482381   83  Linux
/dev/sda7            7193        7845     5245191   83  Linux
/dev/sda8            7846        8367     4192933+  82  Linux swap / Solaris
/dev/sda9            8368       77541   555640123+  8e  Linux LVM

Command (m for help):

5. Làm thế nào để Xóa một Phân vùng trong Linux

Nếu bạn muốn xóa một phân vùng cụ thể (ví dụ /dev/sda9) từ ổ cứng cụ thể như /dev/sda. Bạn phải ở chế độ lệnh fdisk để thực hiện điều này.

[root@tecmint ~]# fdisk /dev/sda

Tiếp theo, gõ ‘d‘ để xóa bất kỳ tên phân vùng đã cho nào khỏi hệ thống. Khi tôi gõ ‘d‘, nó sẽ yêu cầu tôi nhập số phân vùng mà tôi muốn xóa khỏi ổ cứng /dev/sda. Giả sử tôi nhập số ‘4‘ ở đây, sau đó nó sẽ xóa phân vùng số ‘4’ (tức /dev/sda4) và hiển thị không gian trống trong bảng phân vùng. Nhập ‘w‘ để ghi bảng lên đĩa và thoát sau khi thực hiện các thay đổi mới cho bảng phân vùng. Các thay đổi mới chỉ có hiệu lực sau khởi động lại hệ thống. Điều này có thể dễ hiểu từ đầu ra dưới đây.

[root@tecmint ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): d
Partition number (1-4): 4

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
You have new mail in /var/spool/mail/root

Cảnh báo : Hãy cẩn thận khi thực hiện bước này, vì việc sử dụng tùy chọn ‘d‘ sẽ xóa hoàn toàn phân vùng khỏi hệ thống và có thể mất toàn bộ dữ liệu trong phân vùng.

6. Làm thế nào để Tạo một Phân vùng Mới trong Linux

Nếu bạn còn không gian trống trên một trong các thiết bị của bạn, ví dụ như /dev/sda và muốn tạo một phân vùng mới dưới nó. Bạn phải ở chế độ lệnh fdisk của /dev/sda. Gõ lệnh sau để vào chế độ lệnh của ổ cứng cụ thể.

[root@tecmint ~]# fdisk /dev/sda

Sau khi vào chế độ lệnh, bây giờ gõ lệnh “n” để tạo một phân vùng mới dưới /dev/sda với kích thước cụ thể. Điều này được minh họa bằng đầu ra được cung cấp dưới đây.

[root@tecmint ~]# fdisk  /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e

Khi tạo một phân vùng mới, nó sẽ yêu cầu bạn hai tùy chọn ‘extended’ hoặc ‘primary’ để tạo phân vùng. Nhấn ‘e‘ để tạo phân vùng mở rộng và ‘p’ để tạo phân vùng chính. Sau đó, nó sẽ yêu cầu bạn nhập hai đầu vào sau đây.

  1. Số cylinder đầu tiên của phân vùng cần tạo.
  2. Số cylinder cuối cùng của phân vùng được tạo (cylinder cuối, + số cylinder hoặc + kích thước).

Bạn có thể nhập kích thước của cylinder bằng cách thêm “+5000M” vào cylinder cuối cùng. Ở đây, ‘+’ có nghĩa là cộng và 5000M có nghĩa là kích thước phân vùng mới (tức là 5000MB). Vui lòng nhớ rằng sau khi tạo một phân vùng mới, bạn nên chạy lệnh ‘w‘ để thay đổi và lưu các thay đổi mới vào bảng phân vùng và cuối cùng là khởi động lại hệ thống để xác minh phân vùng mới được tạo.

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

7. Làm thế nào để Format một Phân vùng trong Linux

Sau khi tạo phân vùng mới, đừng bỏ qua việc định dạng phân vùng mới bằng lệnh ‘mkfs‘. Gõ lệnh sau trong cửa sổ terminal để định dạng một phân vùng. Ở đây /dev/sda4 là phân vùng mới được tạo.

[root@tecmint ~]# mkfs.ext4 /dev/sda4

8. Làm thế nào để Kiểm tra Kích thước của một Phân vùng trong Linux

Sau khi định dạng phân vùng mới, hãy kiểm tra kích thước của phân vùng đó bằng cờ ‘s‘ (hiển thị kích thước theo số khối) với lệnh fdisk. Điều này giúp bạn kiểm tra kích thước của bất kỳ thiết bị cụ thể nào.

[root@tecmint ~]# fdisk -s /dev/sda2
5194304

9. Làm thế nào để Sửa bảng Phân vùng

Nếu bạn đã xóa một phân vùng logic và tạo nó lại, bạn có thể gặp vấn đề ‘partition out of order’ hoặc thông báo lỗi như ‘Partition table entries are not in disk order’.

Ví dụ: Khi ba phân vùng logic như (sda4sda5 và sda6) bị xóa, và tạo phân vùng mới, bạn có thể mong đợi tên phân vùng mới sẽ là sda4. Nhưng hệ thống sẽ tạo nó như là sda5. Điều này xảy ra vì, sau khi các phân vùng bị xóa, phân vùng sda7 đã được di chuyển thành sda4 và không gian trống dịch chuyển lên cuối.

Để sửa các vấn đề liên quan đến thứ tự phân vùng như vậy và gán sda4 cho phân vùng mới được tạo, gõ ‘x‘ để nhập phần chức năng bổ sung và sau đó gõ lệnh ‘f‘ lệnh chuyên gia để sửa thứ tự bảng phân vùng như hiển thị bên dưới.

[root@tecmint ~]# fdisk  /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): x

Expert command (m for help): f
Done.

Expert command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

Sau khi chạy lệnh ‘f’, đừng quên chạy lệnh ‘w’ để lưu và thoát khỏi chế độ lệnh fdisk. Sau khi sửa bảng phân vùng, bạn sẽ không còn nhận được thông báo lỗi nữa.

10. Làm thế nào để Vô hiệu hóa Cờ khởi động (*) của một Phân vùng

Theo mặc định, lệnh fdisk hiển thị cờ khởi động (tức là ‘*’) trên mỗi phân vùng. Nếu bạn muốn bật hoặc tắt cờ khởi động trên một phân vùng cụ thể, làm theo các bước sau.

[root@tecmint ~]# fdisk  /dev/sda

Gõ lệnh ‘p’ để xem bảng phân vùng hiện tại, bạn sẽ thấy có một cờ khởi động (dấu  asterisk (‘*’) trong màu cam) trên /dev/sda1 dĩ nhiên như được hiển thị bên dưới.

[root@tecmint ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2624    20972857+  83  Linux
/dev/sda3            2625        4582    15727635   83  Linux
/dev/sda4            4583       77541   586043167+   5  Extended
/dev/sda5            4583        5887    10482381   83  Linux
/dev/sda6            5888        7192    10482381   83  Linux
/dev/sda7            7193        7845     5245191   83  Linux
/dev/sda8            7846        8367     4192933+  82  Linux swap / Solaris
/dev/sda9            8368       77541   555640123+  8e  Linux LVM

Tiếp theo gõ lệnh ‘a’ để vô hiệu hóa cờ khởi động, sau đó nhập số phân vùng ‘1’ như (tức/dev/sda1) trong trường hợp của tôi. Điều này sẽ vô hiệu hóa cờ khởi động trên phân vùng /dev/sda1. Điều này sẽ loại bỏ dấu  asterisk (‘*’).

Command (m for help): a
Partition number (1-9): 1

Command (m for help): p

Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          13      104391   83  Linux
/dev/sda2              14        2624    20972857+  83  Linux
/dev/sda3            2625        4582    15727635   83  Linux
/dev/sda4            4583       77541   586043167+   5  Extended
/dev/sda5            4583        5887    10482381   83  Linux
/dev/sda6            5888        7192    10482381   83  Linux
/dev/sda7            7193        7845     5245191   83  Linux
/dev/sda8            7846        8367     4192933+  82  Linux swap / Solaris
/dev/sda9            8368       77541   555640123+  8e  Linux LVM

Command (m for help):

Tôi đã cố gắng hết sức để bao gồm gần như tất cả các lệnh cơ bản của lệnh fdisk, nhưng vẫn còn nhiều lệnh chuyên gia khác của fdisk bạn có thể sử dụng bằng cách nhập ‘x’. Đối với thông tin chi tiết hơn, hãy xem lệnh ‘man fdisk’ từ cửa sổ terminal. Nếu tôi đã bỏ sót bất kỳ lệnh quan trọng nào, hãy chia sẻ với tôi qua phần bình luận.