Parted là công cụ PARTition EDitor cho Linux để tạo, định dạng, xóa, thu nhỏ và mở rộng các phân vùng đĩa. Công cụ này dễ sử dụng và có sẵn trong hầu hết các bản phân phối Unix/Linux. Phiên bản GUI cũng có sẵn, gọi là Gparted. Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách quản lý phân vùng đĩa bằng parted trên CentOS Linux (hoạt động tương tự trên các bản phân phối Linux khác). Parted là đối ứng của công cụ diskpart trên Windows.
Cách cài đặt Parted trên Linux?
Cập nhật phần mềm trên máy chủ Linux và cài đặt gói parted bằng trình quản lý gói của bản phân phối Linux bạn dùng. Trên CentOS 8 với trình quản lý gói dnf (thay thế yum), bạn có thể cài đặt parted từ kho cơ bản bằng lệnh:
# dnf update -y
# dnf install parted -y

Hoặc trên Debian/Ubuntu:
# apt-get install parted
Để kiểm tra phiên bản công cụ, chạy lệnh sau:
# parted –v
parted (GNU parted) 3.2

Để sử dụng parted, nhập:
# parted
GNU Parted 3.2 Using /dev/vdb Welcome to GNU Parted! Type 'help' to view a list of commands.
Quản lý bảng phân vùng với Parted
Hiển thị danh sách các đĩa có sẵn:
# print
Hoặc sử dụng parted:
$ sudo parted -l

Có một đĩa 21 GB là /dev/vdb chưa có nhãn được gán (error /dev/vdb: unrecognized disk label).
Bạn có thể tạo bảng phân vùng msdos (MBR) trên đĩa:
# mklabel msdos
Hoặc bảng phân vùng gpt (GUID partition table hỗ trợ kích thước phân vùng trên 2 TB):
# mklabel gpt
Lưu ý rằng khác với fdisk, parted không có lệnh ghi thay đổi. Tất cả thay đổi được áp dụng ngay lập tức.
Sau đó parted sẽ hiển thị loại bảng phân vùng (bố cục) trên đĩa:
(parted) print Model: Virtio Block Device (virtblk) Disk /dev/vdb: 21.0GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags
Như bạn thấy, có bảng phân vùng MBR trên đĩa, nhưng chưa tạo phân vùng nào.
Nếu bạn có nhiều đĩa trên máy chủ, bạn có thể chuyển đổi giữa chúng bằng lệnh:
# select /dev/diskname
Cách tạo phân vùng mới với Parted?
Lệnh mkpart được dùng để tạo phân vùng mới trong parted. Sau khi chạy lệnh này ở chế độ tương tác, các câu hỏi về tham số của phân vùng mới sẽ xuất hiện.

- Partition type — chỉ định loại phân vùng (primary hoặc extended)
- File system type — đặt hệ thống tệp. ext2 được cung cấp mặc định (sẽ thay đổi sau);
- Start là sector khởi đầu của phân vùng;
- End là sector cuối cùng của phân vùng (tính bằng megabyte). Trong ví dụ, chúng ta nhập 5,000, nghĩa là sẽ tạo phân vùng 5 GB.
Để hiển thị dung lượng trống còn lại trên đĩa, dùng lệnh:
(parted) print free
Bạn có thể tạo phân vùng trải dài toàn bộ đĩa:
# (parted) mkpart primary 0 0
hoặc chỉ định kích thước phân vùng bất kỳ như sau:
# (parted) mkpart primary 0 1GB
Bạn cũng có thể đặt kích thước phân vùng theo % và gán nhãn:
# (parted) mkpart "home part" ext4 2.5GiB 100%
Để thoát parted, chạy lệnh:
# quit
Hãy định dạng phân vùng sang hệ thống tệp ext4:
# mkfs.ext4 /dev/vdb1
mke2fs 1.44.6 (5-Mar-2019) Creating filesystem with 1220352 4k blocks and 305216 inodes Filesystem UUID: 5c9daa97-c0f4-44bc-9cfa-f466ebd8895e Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done
Kiểm tra hệ thống tệp của phân vùng và đảm bảo nó đã thay đổi (lưu ý lệnh print hiển thị danh sách phân vùng trên đĩa, số thứ tự, loại, kích thước và hệ thống tệp).

Bạn có thể tạo phân vùng và định dạng nó mà không cần vào shell parted. Sử dụng lệnh một dòng sau:
# parted -a opt /dev/vdb mkpart primary ext4 0% 100% && mkfs.ext4 /dev/vda1
Sử dụng lệnh này, chúng ta sẽ tạo phân vùng trên đĩa vdb và cấp phát toàn bộ không gian trống cho nó.
Như vậy, bạn có thể làm cho công việc dễ dàng hơn hoặc thêm các lệnh tương tự vào script bash hoặc file kickstart.
Cách thay đổi kích thước (Mở rộng hoặc Thu nhỏ) phân vùng với Parted?
Để mở rộng hoặc thu nhỏ kích thước phân vùng, lệnh con resizepart được dùng trong parted. Bạn có thể thay đổi kích thước phân vùng tương tác. Chạy lệnh sau trong parted:
# resizepart
Hãy umount các phân vùng với hệ thống tệp ext2/3/4 trước khi thay đổi kích thước.
Công cụ sẽ nhắc bạn nhập số phân vùng (có thể lấy từ đầu ra print) và kích thước cuối cùng của phân vùng. Trong ví dụ này, kích thước phân vùng sẽ được mở rộng từ 5 lên 10 GB:
(parted) resizepart Partition number? 1 End? [5000MB]? 10000

Trước tiên, mở rộng phân vùng, sau đó mở rộng hệ thống tệp trên nó. Nếu bạn thu nhỏ phân vùng, bạn phải giảm kích thước hệ thống tệp trước, rồi mới giảm phân vùng. Nếu không, bạn có thể mất dữ liệu.
Để giảm kích thước hệ thống tệp, các lệnh sau được dùng. Cho hệ thống tệp ext2/3/4:
resize2fs /dev/sdab size
Cho Btrfs:
btrfs filesystem resize /dev/sdab size
Bạn cũng có thể thay đổi cờ phân vùng trong parted. Bạn có thể đặt cờ bạn muốn:
- boot
- root
- swap
- hidden
- raid
- lvm
- lba
- legacy_boot
- irst
- esp
- palo
Ví dụ, hãy đánh dấu phân vùng là có thể boot:
# set 1 boot on

Xóa phân vùng với Parted
Nếu bạn muốn xóa một phân vùng trên đĩa, bạn có thể dùng lệnh rm trong parted:
# rm 1
Lệnh sẽ xóa phân vùng có số 1:
(parted) print Model: Virtio Block Device (virtblk) Disk /dev/vdb: 21.0GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags:
Hãy cẩn thận với lệnh này, vì nó không yêu cầu xác nhận xóa.
Cách khôi phục phân vùng đĩa bị xóa nhầm với Rescue?
Bạn có thể khôi phục phân vùng bị xóa bằng công cụ rescue có sẵn trong parted:
# rescue
Lệnh sẽ yêu cầu bạn nhập kích thước bắt đầu và kết thúc của phân vùng. Nếu có thông tin về phân vùng ở các vị trí này, lệnh sẽ cố gắng khôi phục phân vùng đã xóa.

Như bạn thấy, parted dễ sử dụng và rất tiện lợi để tạo/sửa đổi phân vùng đĩa.