ฉันมีเซิร์ฟเวอร์ centos 7 (CentOS Linux release 7.3.1611 (Core))เมื่อฉันอัปเดตเซิร์ฟเวอร์ ฉันเห็นข้อผิดพลาด คุณต้องการพื้นที่เพิ่มเติม แต่ฉันมีดิสก์ 20GB บนเซิร์ฟเวอร์เมื่อฉันตรวจสอบพื้นที่ว่างในดิสก์ ฉันเห็นเพียงพาร์ติชัน 4.5GB ที่สร้างและพาร์ติชัน 16GB เป็นพื้นที่ว่างที่ไม่ได้ถูกจัดสรร ฉันจะขยายพาร์ติชั่นจากพื้นที่ว่าง 16GB ได้อย่างไร

lsblk:

NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0               2:0    1    4K  0 disk
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  500M  0 part /boot
└─sda2            8:2    0  4.5G  0 part
  ├─centos-root 253:0    0    4G  0 lvm  /
  └─centos-swap 253:1    0  512M  0 lvm  [SWAP]
sr0              11:0    1 1024M  0 rom

ใส่คำอธิบายภาพที่นี่

answer

มีสามขั้นตอนในการทำ:

  1. เปลี่ยนตารางพาร์ติชั่นของคุณให้sda2สิ้นสุดที่ส่วนท้ายของดิสก์
  2. อ่านตารางพาร์ติชั่นอีกครั้ง (จะต้องรีบูต)
  3. ปรับขนาด LVM pv ของคุณโดยใช้ pvresize

ขั้นตอนที่ 1 - ตารางพาร์ทิชัน

วิ่งfdisk /dev/sda. ปัญหาpในการพิมพ์ตารางพาร์ติชั่นปัจจุบันของคุณและคัดลอกผลลัพธ์นั้นไปยังที่ปลอดภัย ตอนนี้ปัญหาdตามมาด้วย2การลบพาร์ติชั่นที่สอง ปัญหาnในการสร้างพาร์ติชันที่สองใหม่ ตรวจสอบให้แน่ใจว่าการเริ่มต้นเท่ากับจุดเริ่มต้นของตารางพาร์ติชั่นที่คุณพิมพ์ก่อนหน้านี้ ตรวจสอบให้แน่ใจว่าจุดสิ้นสุดอยู่ที่ส่วนท้ายของดิสก์ (โดยปกติคือค่าดีฟอลต์)

ปัญหาtตามด้วย2ตามด้วย8eเพื่อสลับประเภทพาร์ติชันของพาร์ติชันที่สองใหม่ของคุณเป็น 8e (Linux LVM)

ปัญหาpในการตรวจสอบเค้าโครงพาร์ติชั่นใหม่ของคุณ และตรวจสอบให้แน่ใจว่าการเริ่มต้นของพาร์ติชั่นที่สองใหม่นั้นตรงกับที่พาร์ติชั่นที่สองเก่าอยู่

หากทุกอย่างถูกต้องwให้เขียนตารางพาร์ติชั่นลงดิสก์ คุณจะได้รับข้อความแสดงข้อผิดพลาดจาก partprobe ว่าไม่สามารถอ่านตารางพาร์ติชั่นซ้ำได้ (เนื่องจากมีการใช้งานดิสก์อยู่)

รีบูตระบบของคุณ

ขั้นตอนนี้จำเป็นเพื่อให้ตารางพาร์ติชั่นได้รับการอ่านซ้ำ

ปรับขนาด LVM PV

pvresize /dev/sda2หลังจากรีบูตระบบของคุณเรียก ตอนนี้วอลุ่ม Physical LVM ของคุณจะขยายส่วนที่เหลือของไดรฟ์ และคุณสามารถสร้างหรือขยายโลจิคัลวอลุ่มไปยังพื้นที่นั้นได้

คุณสามารถทำได้โดยไม่ต้องรีบูตใน CentOS 7 สมมติว่าดิสก์ของคุณคือ /dev/vda และการแบ่งพาร์ติชัน RHEL/CentOS มาตรฐาน:

ขยายพาร์ทิชั่น

# fdisk /dev/vda

Enter pเพื่อพิมพ์ตารางพาร์ติชั่นเริ่มต้นของคุณ

ป้อนd(ลบ) ตามด้วย2เพื่อลบคำจำกัดความของพาร์ติชั่นที่มีอยู่ (พาร์ติชั่น 1 มักจะเป็น /boot และพาร์ติชั่น 2 มักจะเป็นพาร์ติชั่นรูท)

ป้อนn(ใหม่) ตามด้วยp(หลัก) ตามด้วย2เพื่อสร้างพาร์ติชันหมายเลข 2 ใหม่ และenterยอมรับบล็อกเริ่มต้น และenterอีกครั้งเพื่อยอมรับบล็อกจุดสิ้นสุดซึ่งมีค่าเริ่มต้นอยู่ที่ส่วนท้ายของดิสก์

ป้อนt(ประเภท) จาก2นั้น8eเปลี่ยนประเภทพาร์ติชั่นใหม่เป็น "Linux LVM"

ป้อนpเพื่อพิมพ์ตารางพาร์ติชั่นใหม่ของคุณ และตรวจสอบให้แน่ใจว่าบล็อคเริ่มต้นตรงกับสิ่งที่อยู่ในตารางพาร์ติชั่นเริ่มต้นที่พิมพ์ด้านบน

Enter wเพื่อเขียนตารางพาร์ติชั่นลงดิสก์ คุณจะเห็นข้อผิดพลาดDevice or resource busyซึ่งคุณสามารถเพิกเฉยได้

อัปเดตตารางพาร์ติชั่นในหน่วยความจำเคอร์เนล

หลังจากเปลี่ยนตารางพาร์ติชั่นแล้ว ให้รันคำสั่งต่อไปนี้เพื่ออัพเดตเคอร์เนลในตารางพาร์ติชั่นในหน่วยความจำ:

# partx -u /dev/vda

ปรับขนาดฟิสิคัลวอลุ่ม

ปรับขนาด PV เพื่อรับรู้พื้นที่พิเศษ

# pvresize /dev/vda2

ปรับขนาด LV และระบบไฟล์

ในคำสั่งนี้centosคือ PV rootคือ LV และ/dev/vda2เป็นพาร์ติชั่นที่ขยาย ใช้pvsและlvsคำสั่งเพื่อดูชื่อฟิสิคัลและโลจิคัลวอลุ่มของคุณ หากคุณไม่ทราบ -rตัวเลือกในคำสั่งนี้ปรับขนาดระบบแฟ้มอย่างเหมาะสมเพื่อให้คุณไม่ต้องโทรresize2fsหรือxfs_growfsแยกต่างหาก

# lvextend -r centos/root /dev/vda2

สำหรับผู้ที่มีปัญหาในการขยายโลจิคัลวอลุ่มเช่นฉัน การอ่านโพสต์นี้อาจช่วยได้ สรุปคุณสามารถใช้lvextendเพื่อขยายปริมาณตรรกะของคุณ: lvextend -l +<PE> <LV_PATH> คุณสามารถได้รับจำนวนที่เหลือ PE (คน<PE>) โดยvgdisplayและได้รับเส้นทางของปริมาณตรรกะของคุณ ( LV_PATH) lvdisplayโดย

จากนั้นขึ้นอยู่กับการกระจายของคุณ คุณต้องการxfs_growfs <LV_PATH>(Centos 7) หรือresize2fs <LV_PATH>ปรับขนาดในที่สุด

ลองดูสิ — ทุกอย่างในบรรทัดเดียว ไม่มีคำถาม:

parted ---pretend-input-tty /dev/vda resizepart 2 100%;
partx -u /dev/vda; pvresize /dev/vda2;
lvextend -r centos/var /dev/vda2

ที่นี่:

  • partedขยายพาร์ติชั่น ( ---pretend-input-ttyเป็นแฟล็กแยกส่วนที่ซ่อนอยู่ )
  • partx อัพเดตเคอร์เนลพาร์ติชั่นในหน่วยความจำตาราง
  • pvresize ปรับขนาดฟิสิคัลวอลุ่ม
  • lvextend ปรับขนาดโลจิคัลวอลุ่มและระบบไฟล์

วิธีนี้ไม่จำเป็นต้องรีบูต

ข้างต้นบ่งบอกว่าคุณมีวอลุ่ม vd* และภายใต้vda2มีกลุ่มวอลุ่มcentoslvm และโลจิคัลวอลุ่ม lvm var:

$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0               2:0    1    4K  0 disk 
vda               8:0    0   40G  0 disk 
├─vda1            8:1    0    1G  0 part /boot
└─vda2            8:2    0   19G  0 part 
  ├─centos-var  253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sr0              11:0    1 1024M  0 rom

หากคุณมีโวลุ่ม sd* เช่นที่นี่:

$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0           2:0    1    4K  0 disk 
sda           8:0    0   40G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   19G  0 part 
  ├─cl-root 253:0    0   17G  0 lvm  /
  └─cl-swap 253:1    0    2G  0 lvm  [SWAP]
sr0          11:0    1 1024M  0 rom

คุณสามารถทำได้ในลักษณะเดียวกัน:

parted ---pretend-input-tty /dev/sda resizepart 2 100%;
partx -u /dev/sda; pvresize /dev/sda2;
lvextend -r /dev/cl/root /dev/sda2