Bạn đã bao giờ rơi vào tình huống tiến thoái lưỡng nan khi cần chia lại phân vùng ổ cứng trên một con VPS chạy dữ liệu quan trọng chưa nhỉ? Là một Senior System Admin, mình đã từng phải đối mặt với việc mở rộng dung lượng lưu trữ khẩn cấp mà không được phép làm gián đoạn dịch vụ, và đó chính là lúc mình cần đến một công cụ cực kỳ mạnh mẽ.
Parted là một công cụ dòng lệnh dùng để quản lý và thao tác với các bảng phân vùng trên ổ đĩa một cách chuyên nghiệp. Vậy thực chất parted là gì và tại sao nó lại được tin dùng đến thế trong giới quản trị hệ thống? Trong bài viết này, mình sẽ cùng bạn tìm hiểu chi tiết về parted Linux, cũng như hướng dẫn cách dùng parted để thực hiện các tác vụ phức tạp. Tất nhiên, chúng ta sẽ cùng khám phá cách chia phân vùng ổ đĩa một cách an toàn và chính xác nhất để bạn có thể hoàn toàn làm chủ hệ thống của mình, đúng không nào?
Cần chuẩn bị gì trước khi dùng lệnh parted?
- Quyền user: Yêu cầu quyền root hoặc sử dụng sudo để có thể thực hiện các thao tác thay đổi cấu trúc phân vùng đĩa cứng.
- Distro/OS hỗ trợ: Hỗ trợ hầu hết các hệ điều hành dựa trên Linux như Ubuntu, Debian, CentOS, RHEL, Fedora và các hệ thống Unix-like.
- Package dependencies: Nếu hệ thống chưa cài đặt sẵn, bạn có thể cài đặt thông qua trình quản lý gói:
Cú pháp lệnh parted là gì?
Lệnh parted hỗ trợ nhiều dạng cú pháp khác nhau để quản lý phân vùng trên các hệ thống Linux/Unix.
parted [OPTIONS] DEVICE [COMMAND [ARGUMENT...]] parted [OPTIONS] DEVICE [PRINT | MKLABEL label-type | MKPART part-type number start end | RESIZE partition end | MOVE partition new-start | REMOVE partition | SET partition flag value | NAME partition new-name | PROTECT all | MKDIR directory] parted [OPTIONS] [SCRIPT]
Các tùy chọn của lệnh parted là gì?
Lệnh parted cung cấp nhiều tùy chọn để quản lý và thao tác các phân vùng đĩa cứng, bao gồm các tùy chọn để hiển thị thông tin, chỉ định thiết bị, và kiểm soát chế độ hoạt động.
| Tùy chọn ngắn | Tùy chọn dài | Mô tả |
|---|---|---|
| -h | --help | parted -h hiển thị thông báo trợ giúp và danh sách các tùy chọn khả dụng. |
| -v | --version | parted -v hiển thị số phiên bản của lệnh parted. |
| -l | --list | parted -l liệt kê thông tin về tất cả các thiết bị đĩa cứng và phân vùng của chúng. |
| -m | --machine | parted -m xuất thông tin ở định dạng dễ phân tích (machine-readable format), thường sử dụng cùng với tùy chọn -l. |
| -s | --script | parted -s chạy lệnh ở chế độ script, không yêu cầu xác nhận từ người dùng. |
| -a | --align | parted -a alignment_type chỉ định kiểu căn chỉnh cho các phân vùng (none, cylinder, minimal, optimal). |
| --pretend-input-tty | parted --pretend-input-tty buộc parted hoạt động như có đầu vào từ bàn phím, hữu ích trong các tập lệnh tự động. | |
| --fix | parted --fix tự động sửa các vấn đề được phát hiện trên bảng phân vùng. |
xem thêm: Disk and File System Utilities
Sử dụng lệnh parted trong các tình huống thực tế như thế nào?
Các ví dụ dưới đây mô phỏng các thao tác quản lý phân vùng ổ đĩa thường gặp trong quá trình quản trị hệ thống và triển khai máy chủ.
parted là gì? [Hiển thị danh sách phân vùng hiện có]
$ sudo parted -l Models: ATA Disk /dev/sda: 500GB Partition Table: gpt Partition? Number Start End Size File system * 1 1049kB 512MB 511MB fat32
Lệnh hiển thị chi tiết thông tin về tất cả các thiết bị lưu trữ và sơ đồ phân vùng trên hệ thống. Trong thực tế, đây là bước đầu tiên để kiểm tra cấu trúc ổ đĩa trước khi thực hiện bất kỳ thay đổi nào.
parted resizepart là gì? [Mở rộng kích thước phân vùng hiện tại]
$ sudo parted /dev/sda (parted) resizepart 1 End? [1000MB]? 50GB Changed (parted) quit
Lệnh cho phép thay đổi điểm kết thúc của một phân vùng để tăng dung lượng sử dụng. Trên môi trường production, thao tác này thường được thực hiện sau khi đã mở rộng dung lượng đĩa vật lý trên các nền tảng ảo hóa như VMware hoặc AWS.
parted mklabel là gì? [Khởi tạo bảng phân vùng mới]
$ sudo parted /dev/sdb mklabel gpt Error: Not enough free space to create GPT to disk /dev/sdb $ sudo parted /dev/sdb mklabel msdos Created partition table: msdos
Lệnh thiết lập kiểu bảng phân vùng (GPT hoặc MSDOS) cho một ổ đĩa mới. Trong các quy trình tự động hóa triển khai server, việc xác định đúng chuẩn bảng phân vùng là bắt buộc để đảm bảo tương thích với chuẩn Boot (UEFI hoặc Legacy).
parted kết hợp với script là gì? [Tự động hóa chia phân vùng]
$ echo "mklabel gpt print quit" | sudo parted /dev/sdc Partition Table: gpt Disk /dev/sdc: 100GB Partition? Number Start End Size File system
Sử dụng kỹ thuật pipe để gửi chuỗi lệnh trực tiếp vào parted mà không cần tương tác thủ công. Đây là phương pháp tối ưu cho các kịch bản automation (như Ansible hoặc Shell script) nhằm chuẩn bị ổ đĩa mới ngay khi máy chủ vừa được khởi tạo.
Tại sao không thể sử dụng lệnh parted để thao tác trên ổ đĩa?
Trong quá trình quản trị hệ thống, người dùng thường gặp các lỗi liên quan đến quyền truy cập, định dạng bảng phân vùng hoặc trạng thái của thiết bị lưu trữ.
Lỗi thiếu quyền quản trị (Permission denied)
parted /dev/sdb Error: Error getting device driver: Permission denied
Lệnh thất bại do người dùng hiện tại không có quyền truy cập trực tiếp vào thiết bị phần cứng.
Lỗi không tìm thấy thiết bị (Device not found)
parted /dev/sdc Error: Error getting device driver: No such file or directory
Lệnh không thể thực thi vì tên thiết bị không tồn tại trong hệ thống hoặc thiết bị đã bị ngắt kết nối.
Lỗi xung đột bảng phân vùng (Partition table mismatch)
parted /dev/sda Error: The device /dev/sda is being used by another program.
Lệnh không thể ghi các thay đổi mới vì thiết bị đang được sử dụng bởi một tiến trình quản lý lưu trữ khác hoặc đã được mount.
Lỗi không tương thích giữa GPT và MBR
parted /dev/sdb Error: The device /dev/sdb is already using a GPT partition table.
Lỗi xảy ra khi người dùng cố gắng tạo bảng phân vùng mới (MSDOS) trên một ổ đĩa đã tồn tại cấu trúc bảng phân vùng GPT.
Quy trình thực tế dùng parted trong quản trị phân vùng ổ đĩa Linux?
Trong các kịch bản triển khai server mới, parted thường được sử dụng như một phần của quy trình chuẩn bị không gian lưu trữ trước khi thiết lập hệ điều hành hoặc cơ sở dữ liệu.
Bước 1: Kiểm tra danh sách ổ đĩa vật lý
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk └─sda1 8:1 0 465.8G 0 part
Lệnh này cho phép bạn xác định chính xác tên thiết bị lưu trữ (ví dụ: sda) cần thực hiện thao tác phân vùng.
Bước 2: Khởi tạo bảng phân vùng mới (Partition Table)
sudo parted /dev/sda mklabel gpt Created partition table: 'gpt'.
Sau khi xác định được ổ đĩa, lệnh này thiết lập cấu trúc bảng phân vùng GPT để hỗ trợ các ổ đĩa có dung lượng lớn.
Bước 3: Tạo phân vùng mới trên ổ đĩa
sudo parted /dev/sda mkpart primary ext4 1MiB 100GiB Partition created.
Lệnh cho phép bạn tạo một phân vùng mới với định dạng sơ bộ, xác định điểm bắt đầu và điểm kết thúc của không gian lưu trữ.
Bước 4: Kiểm tra lại cấu trúc phân vùng vừa tạo
sudo parted /dev/sda print Number Start End Size File system Name Flags 1 1MiB 100GiB 100GiB ext4 primary gpt
Việc kiểm tra lại giúp đảm bảo các thông số về kích thước và vị trí phân vùng đã chính xác trước khi tiến hành định dạng (format) thực tế.
Việc sử dụng lệnh parted trên các hệ thống VPS yêu cầu sự cẩn trọng cao do các thao tác thay đổi bảng phân vùng thường không thể hoàn tác. Trong các trường hợp quản trị VPS từ các control panel như DirectAdmin hoặc cPanel, việc chia lại phân vùng trực tiếp bằng parted có thể gây mất kết nối SSH nếu thao tác nhầm trên phân vùng hệ thống. Một lỗi phổ biến là sự không tương thích giữa bảng phân vùng MBR và GPT. Khi cấu hình VPS mới với dung lượng đĩa lớn trên 2TB, lệnh parted cần được khởi tạo với chuẩn GPT để nhận diện toàn bộ không gian lưu trữ. Ví dụ, lệnh parted /dev/sda mklabel gpt đảm bảo tính tương thích cho các ổ đĩa dung lượng lớn. Ngoài ra, việc thay đổi kích thước phân vùng đang được mount trực tiếp có thể dẫn đến lỗi hệ thống tệp. Quản trị viên cần thực hiện resize file system bằng lệnh resize2fs hoặc xfs_growfs ngay sau khi hoàn tất các thao tác với parted.
Những câu hỏi thường gặp về lệnh parted?
Dưới đây là tổng hợp các tình huống và thắc mắc phổ biến nhất khi người dùng bắt đầu sử dụng công cụ parted để quản lý phân vùng.
Làm thế nào để xem danh sách các phân vùng hiện có trên ổ đĩa?
Bạn có thể sử dụng lệnh print để hiển thị chi tiết cấu trúc phân vùng, bao gồm số thứ tự, kích thước và loại phân vùng.
sudo parted /dev/sda print Number Start End Size File system Name 1 1049kB 512MB 511MB ext4 2 512MB 10GB 9.5GB swap
Làm sao để thay đổi bảng phân vùng từ msdos sang gpt?
Bạn sử dụng tùy chọn mklabel để tạo lại bảng phân vùng mới với định dạng mong muốn, lưu ý việc này sẽ xóa toàn bộ dữ liệu trên ổ đĩa.
sudo parted /dev/sdb mklabel gpt Created '/dev/sdb' partition table: gpt
Cách tạo một phân vùng mới trên ổ đĩa là gì?
Sử dụng lệnh mkpart kèm theo loại phân vùng, điểm bắt đầu và điểm kết thúc để thiết lập phân vùng mới.
sudo parted /dev/sda mkpart primary ext4 1GB 10GB
Lệnh parted có thể xóa một phân vùng cụ thể không?
sudo parted /dev/sda rm 1 Removed: Partition /dev/sda1
Làm thế nào để thay đổi đơn vị đo lường (như MB, GB, %) khi hiển thị?
Sử dụng tùy chọn unit để điều chỉnh đơn vị hiển thị giúp việc đọc thông số kích thước trở nên dễ dàng hơn.
sudo parted /dev/sda unit GB print Model: VMware Virtual SATA Hard Drive Disk /dev/sda: 20GB Sector size: 512B Units: GB =============== Start End Size 1.000GB 10.000GB 9.000GB
Cách kiểm tra dung lượng tổng của ổ đĩa đang quản lý?
Lệnh print sẽ cung cấp thông tin chi tiết về tổng dung lượng đĩa cứng và kích thước sector.
sudo parted /dev/sda print Disk /dev/sda: 20GB Sector size: 512B Logical sector size: 512B Physical sector size: 4096B =============== Disk /dev/sda: 20GBLệnh parted là một công cụ quản lý phân vùng ổ đĩa mạnh mẽ, cho phép bạn thực hiện các thao tác chia, xóa và điều chỉnh kích thước phân vùng một cách linh hoạt. Bạn có thể dễ dàng sử dụng tham số print để kiểm tra cấu trúc hiện tại của ổ đĩa, hay dùng tham số resizepart khi cần mở rộng dung lượng phân vùng một cách nhanh chóng, đúng không nhỉ? Việc nắm vững công cụ này chắc chắn sẽ giúp quá trình quản trị hệ thống của bạn trở nên vô cùng hiệu quả và chuyên nghiệp hơn. Chúc bạn thành công!