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.
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.
- Số cylinder đầu tiên của phân vùng cần tạo.
- 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ư (sda4, sda5 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.