ภาพรวม
Parted เป็น PARTition EDitor สำหรับ Linux ใช้สร้าง จัดรูปแบบ ลบ ย่อ และขยายพาร์ติชันดิสก์ เครื่องมือนี้ใช้งานง่ายและมีในทุกการแจกจ่าย Unix/Linux ยังมีเวอร์ชัน GUI ชื่อ Gparted บทความนี้จะแสดงวิธีจัดการพาร์ติชันดิสก์ด้วย parted บน CentOS Linux (ทำงานเหมือนกันในทุกการแจกจ่าย Linux) Parted คือเครื่องมือ Linux ที่เทียบเท่ากับ diskpart ของ Windows
วิธีติดตั้ง Parted บน Linux
อัปเดตซอฟต์แวร์บนโฮสต์ Linux และติดตั้งแพ็กเกจ parted โดยใช้ตัวจัดการแพ็กเกจของการแจกจ่าย Linux บน CentOS 8 ที่ใช้ dnf (แทน yum) สามารถติดตั้ง parted จากที่เก็บพื้นฐานได้ด้วยคำสั่ง:
# dnf update -y
# dnf install parted -y

หรือใน Debian/Ubuntu:
# apt-get install parted
ตรวจสอบเวอร์ชันเครื่องมือ:
# parted --version
parted (GNU parted) 3.2

เพื่อใช้งาน parted ให้รัน:
# parted
GNU Parted 3.2 Using /dev/vdb Welcome to GNU Parted! Type 'help' to view a list of commands.
การจัดการตารางพาร์ติชันด้วย Parted
แสดงรายการดิสก์ที่มีอยู่:
# print
หรือใช้คำสั่ง parted:
$ sudo parted -l

มีดิสก์ 21 GB คือ /dev/vdb ไม่มีฉลากกำหนด (error /dev/vdb: unrecognized disk label)
สามารถสร้างตารางพาร์ติชัน msdos (MBR) บนดิสก์ได้:
# mklabel msdos
หรือตารางพาร์ติชัน gpt (GUID partition table รองรับขนาดพาร์ติชันเกิน 2 TB):
# mklabel gpt
โปรดทราบว่าไม่เหมือน fdisk parted ไม่มีคำสั่งเขียนการเปลี่ยนแปลง การเปลี่ยนแปลงทั้งหมดจะมีผลทันที
จากนั้น parted จะแสดงประเภทตารางพาร์ติชัน (เลย์เอาต์) บนดิสก์:
(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
เห็นว่ามีตารางพาร์ติชัน MBR บนดิสก์ แต่ยังไม่มีการสร้างพาร์ติชันดิสก์
หากมีหลายดิสก์บนเซิร์ฟเวอร์ สลับระหว่างกันได้ด้วยคำสั่ง:
# select /dev/diskname
วิธีสร้างพาร์ติชันใหม่ด้วย Parted
คำสั่ง mkpart ใช้สร้างพาร์ติชันใหม่ใน parted หลังรันคำสั่งในโหมดโต้ตอบ จะถามพารามิเตอร์ของพาร์ติชันใหม่
- Partition type — ระบุประเภทพาร์ติชัน (primary หรือ extended)
- File system type — ตั้งค่าไฟล์ระบบ ext2 เป็นค่าเริ่มต้น (จะเปลี่ยนภายหลัง)
- Start คือ섹เตอร์เริ่มต้นของพาร์ติชัน
- End คือ섹เตอร์สุดท้ายของพาร์ติชัน (ในหน่วยเมกะไบต์) ในตัวอย่างใส่ 5,000 หมายถึงสร้างพาร์ติชัน 5 GB
เพื่อแสดงพื้นที่ว่างบนดิสก์ ใช้คำสั่ง:
(parted) print free
สามารถสร้างพาร์ติชันครอบคลุมทั้งดิสก์ได้:
# (parted) mkpart primary 0 0
หรือระบุขนาดพาร์ติชันใดๆ:
# (parted) mkpart primary 0 1GB
ยังสามารถตั้งขนาดพาร์ติชันเป็น % และกำหนดฉลากได้:
# (parted) mkpart "home part" ext4 2.5GiB 100%
เพื่อออกจาก parted รันคำสั่ง:
# quit
จัดรูปแบบพาร์ติชันเป็นระบบไฟล์ 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
ตรวจสอบระบบไฟล์ของพาร์ติชันและยืนยันว่ามีการเปลี่ยนแปลง (คำสั่ง print แสดงรายการพาร์ติชันบนดิสก์ หมายเลข ประเภท ขนาด และระบบไฟล์)

สามารถสร้างพาร์ติชันและจัดรูปแบบโดยไม่ต้องเข้า shell parted ด้วยคำสั่งบรรทัดเดียว:
# parted -a opt /dev/vdb mkpart primary ext4 0% 100% && mkfs.ext4 /dev/vda1
คำสั่งนี้จะสร้างพาร์ติชันบนดิสก์ vdb และจัดสรรพื้นที่ว่างทั้งหมด
ดังนั้น คุณสามารถทำงานให้ง่ายขึ้น หรือเพิ่มคำสั่งลักษณะนี้ในสคริปต์ bash หรือไฟล์ kickstart
วิธีปรับขนาด (ขยายหรือย่อ) พาร์ติชันด้วย Parted
เพื่อขยายหรือย่อขนาดพาร์ติชัน ใช้คำสั่งย่อย resizepart ใน parted สามารถปรับขนาดพาร์ติชันแบบโต้ตอบได้ รันคำสั่งใน parted:
# resizepart
ยกเลิกการแม้าท์พาร์ติชันที่มีระบบไฟล์ ext2/3/4 ก่อนปรับขนาด
เครื่องมือจะขอให้ใส่หมายเลขพาร์ติชัน (จากเอาต์พุต print) และขนาดสุดท้ายของพาร์ติชัน ในตัวอย่างนี้ ขนาดพาร์ติชันจะขยายจาก 5 เป็น 10 GB:
(parted) resizepart Partition number? 1 End? [5000MB]? 10000

ขยายพาร์ติชันก่อน แล้วค่อยขยายระบบไฟล์บนมัน หากย่อขนาดพาร์ติชัน ต้องย่อขนาดระบบไฟล์ก่อน แล้วค่อยย่อพาร์ติชัน มิฉะนั้นอาจสูญเสียข้อมูล
เพื่อย่อขนาดระบบไฟล์ ใช้คำสั่งต่อไปนี้ สำหรับระบบไฟล์ ext2/3/4:
resize2fs /dev/sdab size
สำหรับ Btrfs:
btrfs filesystem resize /dev/sdab size
ยังสามารถเปลี่ยนแฟล็กพาร์ติชันใน parted ได้ สามารถตั้งค่าได้ดังนี้:
- boot
- root
- swap
- hidden
- raid
- lvm
- lba
- legacy_boot
- irst
- esp
- palo
ตัวอย่าง กำหนดให้พาร์ติชันเป็น bootable:
# set 1 boot on

การลบพาร์ติชันด้วย Parted
หากต้องการลบพาร์ติชันบนดิสก์ ใช้คำสั่ง rm ใน parted:
# rm 1
คำสั่งจะลบพาร์ติชันหมายเลข 1:
(parted) print Model: Virtio Block Device (virtblk) Disk /dev/vdb: 21.0GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags:
ระวังการใช้คำสั่งนี้ เนื่องจากไม่ต้องการยืนยันการลบ
วิธีกู้คืนพาร์ติชันดิสก์ที่ลบโดยผิดพลาดด้วย Rescue
สามารถกู้คืนพาร์ติชันที่ลบได้โดยใช้เครื่องมือ rescue ใน parted:
# rescue
คำสั่งจะขอให้ใส่ขนาดเริ่มต้นและสิ้นสุดของพาร์ติชัน หากมีข้อมูลพาร์ติชันในตำแหน่งเหล่านั้น จะพยายามกู้คืนพาร์ติชันที่ลบ

เห็นได้ว่า parted ใช้งานง่ายและสะดวกมากสำหรับการสร้าง/แก้ไขพาร์ติชันดิสก์