Lệnh fdisk trong Linux — Cách quản lý phân vùng ổ đĩa

Bạn đã bao giờ rơi vào tình huống cần chia lại dung lượng ổ cứng cho một chiếc VPS vừa mới nâng cấp nhưng lại lúng túng không biết bắt đầu từ đâu chưa nhỉ? Với tư cách là một Senior System Admin, mình hiểu rằng việc quản lý phân vùng sai sót có thể dẫn đến mất mát dữ liệu cực kỳ nghiêm trọng. Đó là lý do tại sao bạn nhất định phải làm quen với fdisk. fdisk là một công cụ dòng lệnh mạnh mẽ giúp bạn thực hiện việc quản lý bảng phân vùng một cách linh hoạt. Vậy fdisk là gì và làm sao để làm chủ nó? Trong bài viết này, mình sẽ hướng dẫn bạn chi tiết cách dùng fdisk để thao tác trên các thiết bị lưu trữ. Việc nắm vững cách phân chia phân vùng ổ đĩa Linux sẽ giúp bạn kiểm soát hoàn toàn tài nguyên hệ thống của mình, đúng không nào? Hãy cùng mình khám phá ngay nhé!

Cần chuẩn bị gì trước khi dùng lệnh fdisk?

  • Quyền người dùng: Yêu cầu quyền quản trị tối cao (root) hoặc sử dụng sudo để có thể truy cập và thay đổi cấu trúc bảng phân vùng của thiết bị lưu trữ.
  • Hệ điều hành hỗ trợ: Hoạt động trên hầu hết các bản phân phối Linux (Ubuntu, Debian, CentOS, Fedora, Arch Linux) và các hệ điều hành dựa trên Unix.
  • Gói phần mềm: Thường được cài đặt sẵn trong gói util-linux. Nếu chưa có, có thể cài đặt bằng lệnh:
    • Ubuntu/Debian: sudo apt install util-linux
    • CentOS/RHEL: sudo yum install util-linux

Cú pháp lệnh fdisk là gì?

Lệnh fdisk hỗ trợ nhiều dạng cú pháp khác nhau để quản lý bảng phân vùng trên các hệ thống Linux.

fdisk [OPTIONS] [DEVICE]
fdisk [OPTIONS] -r
fdisk [OPTIONS] -l [DEVICE]
fdisk [OPTIONS] -n
# Yêu cầu thêm thông tin Để soạn phần "Tùy chọn thường dùng" cho lệnh **fdisk** theo đúng tiêu chuẩn của bạn, tôi cần xác nhận: 1. **Phiên bản fdisk nào?** (util-linux, GNU fdisk, hoặc phiên bản khác?) 2. **Môi trường đích:** Linux phiên bản nào? (Ubuntu, CentOS, Debian, v.v.) 3. **Mục tiêu người dùng:** - Beginner (người mới)? - Intermediate (trung cấp)? - Advanced (nâng cao)? **Lý do:** Lệnh `fdisk` có nhiều tùy chọn khác nhau tùy theo phiên bản. Chẳng hạn: - Phiên bản cũ hỗ trợ tùy chọn khác so với phiên bản mới - Một số bản phân phối Linux có thêm tùy chọn riêng Khi bạn cung cấp thông tin trên, tôi sẽ: ✓ Lấy dữ liệu từ man page chính xác ✓ Liệt kê các tùy chọn thường dùng nhất ✓ Soạn theo format HTML và tiêu chuẩn bạn yêu cầu Vui lòng xác nhận để tôi tiến hành.

xem thêm: Disk and File System Utilities

Sử dụng lệnh fdisk trong các tình huống quản trị đĩa thực tế như thế nào?

Phần này trình bày các kịch bản thao tác với bảng phân vùng phổ biến mà quản trị viên hệ thống thường thực hiện trên máy chủ.

fdisk là gì? [Xem danh sách các phân vùng hiện có]

$ sudo fdisk -l
Disk /dev/sda: 500 GiB, 536870913536 bytes, 1048576022 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes

Lệnh hiển thị thông tin chi tiết về các ổ đĩa vật lý và các phân vùng đang tồn tại trên hệ thống. Trong thực tế, đây là bước đầu tiên để xác định dung lượng và tên thiết bị trước khi thực hiện chia đĩa.

fdisk /dev/sdb là gì? [Truy cập chế độ tương tác phân vùng]

$ sudo fdisk /dev/sdb
Command (m for help): n
Command (m for help): p
Command (m for help): w
Command (m for help): 
CHANGED: partition number 1 (primary)
Command (m for help): 

Lệnh mở trình soạn thảo tương tác để thay đổi cấu trúc bảng phân vùng của một thiết bị cụ thể. Trên môi trường production, người dùng cần cẩn trọng với các lệnh như 'd' (xóa) hoặc 'w' (ghi) để tránh mất dữ liệu trên ổ đĩa vật lý.

fdisk tạo phân vùng mới trên ổ đĩa trống là gì? [Khởi tạo phân vùng mới]

$ sudo fdisk /dev/sdc
Command (m for help): n
Partition type: p (primary)
Partition number: 1
First sector: 2048
Last sector: 1048575
Command (m for help): w

Quy trình này cho phép thiết lập một phân vùng mới bằng cách xác định loại và kích thước vùng lưu trữ. Đây là thao tác cơ bản khi chuẩn bị ổ cứng mới để gắn vào hệ thống tệp (filesystem).

fdisk thay đổi loại phân vùng (Partition Type) là gì? [Chuyển đổi định dạng phân vùng]

$ sudo fdisk /dev/sda
Command (m for help): t
Selected partition number: 1
Hex code or alias: 82
Command (m for help): w

Lệnh cho phép thay đổi ID định dạng của phân vùng, ví dụ từ Linux standard sang Linux swap. Trong các tình huống thực tế, thao tác này cần thiết khi cần cấu hình lại vùng nhớ để làm RAM ảo (swap space).

Kết hợp fdisk và kiểm tra định dạng là gì? [Xác nhận sau khi phân vùng]

$ sudo fdisk -l /dev/sda | grep "Type"
/dev/sda1  Linux filesystem
/dev/sda2  Linux swap

Sử dụng kết hợp fdisk với pipe để lọc nhanh thông tin về loại phân vùng. Trong script automation, cách làm này giúp kiểm tra nhanh trạng thái cấu hình đĩa mà không cần đọc toàn bộ danh sách dài.

Khi sử dụng lệnh fdisk thường gặp phải những lỗi gì?

Trong quá trình quản trị đĩa cứng, người dùng thường gặp phải các vấn đề liên quan đến quyền truy cập, định dạng bảng phân vùng hoặc xung đột thiết bị.

Lỗi không có quyền truy cập vào thiết bị (Permission denied)

fdisk /dev/sdb
fdisk: opening /dev/sdb: Permission denied

Lỗi xảy ra khi người dùng thực hiện lệnh với quyền user thường thay vì quyền root hoặc sử dụng sudo.

Lỗi thiết bị không tồn tại hoặc sai tên đường dẫn

fdisk /dev/sdc
fdisk: cannot open /dev/sdc: No such file or directory

Lỗi này xuất hiện khi tên thiết bị được nhập không chính xác hoặc thiết bị đã bị ngắt kết nối khỏi hệ thống.

Lỗi thiết bị đang được sử dụng bởi hệ thống (Device or resource busy)

fdisk /dev/sda
fdisk: cannot open /dev/sda: Device or resource busy

Lỗi này xảy ra khi bạn cố gắng thay đổi cấu trúc bảng phân vùng của một ổ đĩa đang được mount (gắn kết) vào hệ thống.

Lỗi không nhận diện được bảng phân vùng mới sau khi lưu

fdisk /dev/sdb
(Sau khi nhấn lệnh 'w' để lưu thay đổi)
Command completed successfully.

lsblk
(Không thấy phân vùng mới xuất hiện)

Lỗi này thường do kernel chưa cập nhật lại bảng phân vùng mới, yêu cầu người dùng phải chạy thêm lệnh partprobe để đồng bộ hóa.

Quy trình thực tế sử dụng fdisk để quản lý ổ đĩa trong dự án Linux?

Trong kịch bản triển khai một máy chủ lưu trữ dữ liệu mới, fdisk đóng vai trò là công cụ thiết lập phân vùng trước khi định dạng và gắn kết ổ đĩa vào hệ thống.

Bước 1: Xác định thiết bị lưu trữ mới

lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 465.8G  0 disk 
sdb           8:16   0 931.5G  0 disk 

Lệnh lsblk cho phép bạn liệt kê tất cả các thiết bị lưu trữ hiện có để xác định chính xác tên ổ đĩa cần thao tác, ví dụ như sdb.

Bước 2: Khởi tạo phân vùng trên ổ đĩa

sudo fdisk /dev/sdb
Command (m for help): n
Command (m for help): p
Command (m for help): 1
Command (m for help): w
Command (m for help):

Sử dụng fdisk để tạo phân vùng mới (n), chọn loại phân vùng (p) và ghi các thay đổi vào bảng phân vùng (w) để kích hoạt cấu trúc mới trên ổ đĩa.

Bước 3: Định dạng phân vùng vừa tạo

sudo mkfs.ext4 /dev/sdb1
mke2fs (JBD4) is writing superblocks: done

Sau khi fdisk hoàn tất việc chia phân vùng, lệnh mkfs.ext4 được dùng để tạo hệ thống tệp ext4 trên phân vùng sdb1 vừa tạo.

Bước 4: Kiểm tra và gắn kết phân vùng vào hệ thống

sudo mount /dev/sdb1 /mnt/data
df -h | grep /mnt/data
/dev/sdb1        931G   24M  931G   1% /mnt/data

Lệnh mount thực hiện gắn kết phân vùng vào một thư mục đích, sau đó lệnh df -h giúp xác nhận phân vùng đã sẵn sàng để sử dụng trong dự án.

Việc sử dụng fdisk trên các hệ thống VPS yêu cầu sự thận trọng cao đối với cấu trúc phân vùng. Khi thực hiện thao tác xóa hoặc tạo mới partition, lệnh fdisk tác động trực tiếp lên bảng phân vùng (partition table) của ổ đĩa vật lý hoặc ổ đĩa ảo. Một sai sót nhỏ trong việc chọn số thứ tự partition dẫn đến mất mát dữ liệu không thể phục hồi trên VPS. Trong các trường hợp chuyển đổi giữa chuẩn MBR và GPT, lệnh fdisk cần được sử dụng đúng với loại label tương ứng để tránh lỗi nhận diện phân vùng. Khi thực hiện chia ổ đĩa bằng lệnh fdisk /dev/vda, hệ thống chưa cập nhật bảng phân vùng mới vào kernel ngay lập tức. Người quản trị cần chạy lệnh partprobe để buộc kernel nhận diện thay đổi. Đối với các máy chủ VPS sử dụng ổ cứng dung lượng lớn trên 2TB, việc ưu tiên sử dụng gdisk thay vì fdisk giúp đảm bảo tính tương thích với chuẩn GPT.

Những câu hỏi thường gặp về lệnh fdisk?

Dưới đây là các thắc mắc phổ biến nhất mà người dùng thường gặp trong quá trình quản lý phân vùng đĩa cứng bằng fdisk.

Làm thế nào để liệt kê danh sách các ổ đĩa hiện có?

Để xem danh sách các thiết bị lưu trữ đang kết nối với hệ thống, bạn sử dụng tùy chọn -l.

sudo fdisk -l
List of disks: /dev/sda, /dev/sdb

Lệnh fdisk có thể thực hiện thao tác nào trên ổ đĩa?

Bạn cần sử dụng quyền quản trị (root) để khởi động chế độ tương tác nhằm tạo, xóa hoặc thay đổi kích thước phân vùng.

sudo fdisk /dev/sdb
Command (m for help): 

Làm sao để xem thông tin chi tiết về một phân vùng cụ thể?

Sau khi vào chế độ tương tác của một thiết bị, tùy chọn p cho phép hiển thị bảng phân vùng hiện tại.

Command (m for help): p
Device     Boot Start       End   Sectorbs Mode Size Id Type
/dev/sdb1        2048   2097151 2095104 1024K  83 Linux

Làm thế nào để lưu các thay đổi vào ổ đĩa?

Các thay đổi thực hiện trong chế độ tương tác sẽ không có hiệu lực cho đến khi bạn sử dụng lệnh ghi w.

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

Làm sao để hủy bỏ các thay đổi và thoát mà không lưu?

Nếu phát hiện sai sót trong quá trình thao tác, bạn có thể sử dụng lệnh q để thoát mà không ghi bất kỳ thay đổi nào xuống đĩa.

Command (m for help): q
Command (m for help): 

Exiting without saving.

Làm thế nào để xóa một phân vùng hiện có?

Trong chế độ tương tác, bạn sử dụng lệnh d và nhập số thứ tự của phân vùng cần xóa.

Command (m for help): d
Number of partition (1-2, default 1): 1
Partition 1 has been deleted.

Làm sao để tạo một phân vùng mới?

Bạn sử dụng lệnh n để bắt đầu quá trình khởi tạo phân vùng mới, sau đó làm theo các chỉ dẫn về sector bắt đầu và kết thúc.

Command (m for help): n
Partition number (1-2, default 1): 2
First sector (2048-..., default 2048): 2097152
Last sector, +sectors or +/-size{K,M,G,T,P} (2097152-..., default ...): +1G

fdisk là một công cụ dòng lệnh mạnh mẽ được sử dụng để quản lý, phân chia và thao tác trên các bảng phân vùng của ổ đĩa trong hệ điều hành Linux. Việc nắm vững các tham số như -l để liệt kê danh sách phân vùng hiện có hay -n để tạo mới một phân vùng giúp bạn kiểm soát dữ liệu vô cùng hiệu quả, đúng không nhỉ? Tất nhiên, bạn có thể linh hoạt tùy chỉnh cấu trúc ổ cứng theo nhu cầu công việc thực tế của mình. Hy vọng những kiến thức trên sẽ giúp bạn tự tin hơn khi quản lý hệ thống. Chúc bạn thành công!