วิธีการขยายพาร์ติชัน Linux PV แบบออนไลน์หลังจากการเติบโตของดิสก์เสมือน


14

VMware ช่วยให้สามารถขยายขนาดของดิสก์เสมือนออนไลน์ - เมื่อ VM กำลังทำงาน ขั้นตอนต่อไปที่คาดไว้สำหรับระบบ Linux คือ:

  1. ขยายพาร์ติชัน: ลบและสร้างพาร์ติชันที่ใหญ่กว่าด้วย fdisk
  2. ขยายขนาด PV ด้วย pvresize
  3. ใช้ extents ฟรีสำหรับlvresizeการดำเนินงาน
  4. จากนั้นresize2fsสำหรับระบบไฟล์

แต่ฉันติดอยู่ในขั้นตอนแรก: fdiskและsfdiskยังคงแสดงขนาดเก่าสำหรับดิสก์

ดิสก์ของฉันเป็นดิสก์เสมือน SCSI ที่เชื่อมต่อด้วยคอนโทรลเลอร์ LSI Logic เสมือน

วิธีการรีเฟรชขนาดดิสก์เสมือนและข้อมูลตารางพาร์ติชันที่มีอยู่ในเคอร์เนล Linux โดยไม่ต้องรีบูต ?

เท่าที่ฉันรู้ว่าขั้นตอนทั้งหมดนั้นเป็นไปได้สำหรับ Windows ที่ใช้งานอยู่โดยไม่ต้องรีบูตและไม่ต้องดำเนินการใด ๆ กับผู้ใช้ด้วยเครื่องมือ VMWare บน Linux ฉันคาดว่าจะทำทุกขั้นตอนทางออนไลน์ด้วยและฉันก็รู้ขั้นตอนที่ 2, 3 และ 4 ทำงานทางออนไลน์อยู่แล้ว แต่ขนาดพาร์ติชั่นแรก - เปลี่ยนขนาดพาร์ติชันที่ประกาศในตารางพาร์ติชัน (ยังคง) ดูเหมือนจะต้องมีการรีบูต

อัปเดต:ระบบของฉันคือ Debian Lenny พร้อมเคอร์เนล 2.6.26 และดิสก์ที่ฉันขยายเป็นดิสก์หลักที่มี PV ขนาดใหญ่ที่มี "root" LV สำหรับ "/"

คำตอบ:


9

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

ข้อมูลเพิ่มเติม: http://theducks.org/2009/11/expanding-lvm-partitions-in-vmware-on-the-fly/


ฉันเห็นด้วย แต่สิ่งที่ฉันทำเพื่อสแกนไดรฟ์ SCSI ใหม่ฉันไม่เคยเห็นขนาดดิสก์ใหม่ใน fdisk ดังนั้นฉันจึงติดอยู่จนกระทั่งรีบูตครั้งแรก และ "partprobe" เป็นคำสั่งใหม่สำหรับฉัน แน่นอนฉันต้องทดสอบขั้นตอนนี้ ... ขอบคุณ
Yves Martin

สำหรับข้อมูลpartprobeคือคำสั่งจากpartedโครงการ
Yves Martin

หากคุณไม่เห็นขนาดดิสก์ใหม่fdiskแสดงว่าปัญหาไม่ได้เกิดขึ้นกับ LVM ฉันต้องถามว่าคุณสแกนอย่างไรเพราะโดยปกติแล้วขนาดดิสก์ใหม่จะมาถึงฉัน ฉันยังไม่แบ่งพาร์ติชันดิสก์ฉันจะใช้ LVM บนถ้าฉันสามารถช่วยได้ หากคุณpvcreateทั้งดิสก์การอัพเดตตารางพาร์ติชันเป็นสิ่งที่คุณต้องทำเมื่อคุณปรับขนาด
Bratchley

14

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

เราจะต้องสแกนดิสก์ที่เชื่อมต่อของคุณใหม่ก่อนอื่นให้ระบุดิสก์ที่คุณต้องการสแกนใหม่

ls /sys/class/scsi_disk/

ในตัวอย่างของฉันฉันเห็น symlink ชื่อ0:0:0:0ดังนั้นเราจึงสแกนดิสก์ scsi นี้อีกครั้ง

echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan

ฉันเพิ่งขยายดิสก์ VMware ของฉันด้วยและต้องค้นหาคำตอบอื่น ๆ เพื่อค้นหาคำสั่งที่ถูกต้อง หวังว่านี่จะช่วยผู้ค้นหาในอนาคตจากความพยายามที่ไร้ประโยชน์


ทำงานอย่างสมบูรณ์แบบ!
Emil Styrke

นอกจากนี้คุณยังสามารถหาดิสก์โดยพวกเขา "/ dev /" ในชื่อเพื่อให้คุณสามารถใช้เช่น/sys/block/ /sys/block/sda/device/rescan
mwfearnley

4

เท่าที่ระบบไฟล์ราก/ติดตั้งอยู่บนดิสก์ที่ถูกปรับขนาดแล้วตารางพาร์ติชันและขนาดดิสก์จะไม่รีเฟรชโดย SCSI rescan กับ Linux 2.6.26

ฉันหวังว่ามันจะดีขึ้นในไม่ช้ากับเวอร์ชั่นเคอร์เนลที่ใหม่กว่า

ดังนั้นฉันต้อง:

  • รีบูตเป็นครั้งแรกเพื่อดูขนาดดิสก์ใหม่ fdisk
  • ลบพาร์ทิชัน PV หลักเก่า fdisk
  • สร้างรายการพาร์ติชันด้วยหมายเลขเดียวกันและเริ่มเซกเตอร์จนถึงจุดสิ้นสุดของดิสก์
  • รีบูตครั้งที่สองหรือเรียกใช้partprobeจากpartedแพคเกจเฉพาะในกรณีที่/ไม่ได้ติดตั้งอยู่ที่นั่น
  • ตอนนี้ฉันสามารถรันpvresizeเพื่อรับพื้นที่ว่างใหม่lvextendและresize2fsเพื่อจัดสรรพื้นที่เพิ่มเติมให้กับระบบไฟล์

ฉันได้รับคำแนะนำให้ทิ้งตารางพาร์ทิชันเก่าที่โง่และเรียกใช้pvcreateบนอุปกรณ์โดยตรงเนื่องจาก Grub2 สามารถโหลดเคอร์เนลอิมเมจโดยตรงจากระบบไฟล์บนพาร์ติชัน LVM แต่การตั้งค่าดังกล่าวไม่ชัดเจนเลยด้วยตัวติดตั้งการกระจาย

อัปเดต:ฉันเพิ่งตรวจสอบกับ Debian GNU / Linux Jessie 8.2 ที่ใช้เคอร์เนล 3.16 และparted3.2 ซึ่งpartprobeตอนนี้ก็ประสบความสำเร็จหลังจากรุ่นตารางพาร์ทิชันcfdiskโดยไม่มีการรีบูต pvresizeทำงานได้ทันทีหลังจาก

หากคุณต้องการขยาย PV ที่เก็บไว้เป็นโลจิคัลพาร์ติชัน PC ตัวอย่างเช่น/dev/sda5บนพาร์ติชันหลักที่ขยายเพิ่ม/dev/sda2อย่าใช้fdiskแต่ต้องการparted:

parted /dev/sda2 -1
parted /dev/sda5 -1
pvresize /dev/sda5

คำสั่งท้ายไม่ทำงาน # แยก / dev / sda2 -1 -> แยก: ตัวเลือกที่ไม่ถูกต้อง - '1'
Oskar Berggren

3

คุณต้องสแกนดิสก์ใหม่ก่อนจึงจะสามารถสร้างพาร์ติชันที่ใหญ่กว่าได้

ใน Centos คุณสามารถทำได้โดย

ls /sys/class/scsi_host

จากนั้นสำหรับแต่ละโฮสต์

echo "- - -" > /sys/class/scsi_host/host#/scan

(แทนที่ # ด้วยหมายเลข)

นอกจากนี้ยังมีอีกหนึ่งขั้นตอนข้างต้นซึ่งขยาย ext หรือระบบไฟล์ใด ๆ ที่คุณใช้เมื่อคุณปรับขนาดพาร์ติชัน

คุณยังคงต้องยกเลิกการต่อเชื่อมพาร์ติชันนั้นในบางครั้ง สิ่งที่เรามักจะทำคือการเพิ่มดิสก์ vmware ตัวที่สองและใช้ lvm เพื่อขยายไปยังดิสก์ใหม่ (และลดการเก่าถ้ามันเป็นการทดแทน) เนื่องจากจะทำให้กระบวนการทั้งหมดเกิดขึ้นจริง


ระบบของฉันคือ Debian และฉันเรียกใช้ rescan-scsi-bus.sh จาก scsitools ฉันคิดว่ามันจะเทียบเท่ากับคำสั่งที่คุณนำเสนอใน sys / / ระดับ / scsi_host แต่ "fdisk" ยังคงแสดงขนาดเก่าบนดิสก์ของฉัน ...
อีฟมาร์ติน

มันรู้จักดิสก์ vmware ใหม่เมื่อคุณสแกนซ้ำหรือไม่
JamesRyan

ไม่ดิสก์นี้มีอยู่แล้วไม่ใช่ดิสก์ใหม่ ขนาดของดิสก์เพิ่มขึ้นในไคลเอนต์ vSphere
Yves Martin

ฉันตระหนักดีว่า แต่คุณควรลองเพิ่มใหม่เพื่อดูว่าเพื่อนของคุณสแกนมันขึ้นให้แคบลงปัญหา
JamesRyan

ฉันเห็นด้วยกับคุณและฉันรู้แล้วโดยการปฏิบัติที่เพิ่มดิสก์ SCSI ใหม่ไปยังเครื่อง Linux สามารถทำได้ออนไลน์สำหรับทุกขั้นตอนที่ระบุไว้ ในขณะที่ VM อาจทำงานเป็นเวลา 10 ปี ... ฉันกลัวจำนวนดิสก์ทั้งหมดในอนาคตอันใกล้นี้ ...
Yves Martin

2

ในฐานะที่เป็นคำตอบที่อัปเดตบน Ubuntu 16.04.1 ฉันสามารถทำสิ่งต่อไปนี้เพื่อปรับขนาดไดรฟ์จาก 1024GB เป็น 1.4TB:

echo '1' > /sys/class/scsi_disk/32\:0\:1\:0/device/rescan
pvresize /dev/sdb
lvextend -l +100%FREE /dev/nvr01-opt/opt
resize2fs /dev/nvr01-opt/opt

ไม่fdiskต้องการและพื้นที่ว่างทันที


3
โชคดีนะคุณ. เหตุผลก็เพราะคุณไม่มีตารางพาร์ติชัน แต่เปิดใช้งาน PV โดยตรง/dev/sdbซึ่งอาจเป็นข้อมูลแอปพลิเคชันของคุณเฉพาะดิสก์รอง แต่ไม่ใช่ดิสก์แรกของคุณที่มีระบบ (พูดถึงฉันกำหนดค่าระบบของฉันแบบเดียวกัน! คำถามของฉันเกี่ยวกับการขยาย PV ล่าสุด / พาร์ติชันของ "system disk" (โคลนจากเทมเพลต) เท่าที่การกระจาย Linux ไม่สนับสนุนการติดตั้งบน direct PV ในขณะที่ Linux kernel และ GRUB ควรสามารถบูตและรันบนดิสก์ระบบได้ ไม่มีตารางพาร์ทิชันเลย
Yves Martin

จุดยุติธรรม สำหรับผู้ที่พบสิ่งนี้ผ่านทาง Google: โปรดจำไว้ว่า
peelman

1

คุณไม่ได้ให้รายละเอียดเพียงพอแก่เราเพื่อบอกให้คุณทราบถึงคำสั่งที่แน่นอนที่คุณต้องการ แต่โดยพื้นฐานแล้วคุณจะต้องใช้lvextendคำสั่งเพื่อขยายโลจิคัลวอลุ่มจากนั้นe2fsckคำสั่งจากนั้นresize2fsคำสั่งเพื่อขยายระบบไฟล์ของคุณ คำสั่งเหล่านี้แต่ละคำสั่งจะต้องมีพารามิเตอร์เพิ่มเติมโดยเฉพาะข้อมูลอุปกรณ์และระบบไฟล์ที่เราไม่สามารถให้ได้ แต่คุณจะต้องรู้สิ่งเหล่านี้เพียงใช้ตัวเลือก --help สำหรับคำสั่งแต่ละคำสั่งเพื่อบอกวิธีใช้โดยเฉพาะรวมถึง คุณอาจจะจบลงด้วยการใช้pvdisplay, lvdisplayและmountคำสั่งที่จะช่วยเหลือในการกรอกพารามิเตอร์เหล่านี้


ฉันรู้คำสั่งทั้งหมดสำหรับขั้นตอนอื่น ๆ คำถามของฉันคือ: วิธีการขยายพาร์ติชันหลักที่ใช้เป็น PV โดยไม่ต้องรีบูต?
Yves Martin

ขออภัยคุณหมายถึง pvresize หรือไม่
Chopper3

ฉันเห็นด้วยคำถามของฉันไม่ชัดเจนพอ (แม้จะเป็นส่วนที่หนา) pvresize ถูกกล่าวถึงเป็นขั้นตอนที่ 2 ฉันติดอยู่ที่ขั้นตอนที่ 1: เพิ่มขนาดพาร์ติชัน "PCAT"
Yves Martin

คุณเพิ่มขนาด. vmdk ผ่าน VSClient แล้วหรือยัง
Chopper3

3
เพื่อยืนยัน/sbin/rescan-scsi-busdooes ไม่เปลี่ยนขนาดดิสก์ที่มีอยู่ แต่echo "1" > '/sys/class/scsi_disk/0:0:1:0/device/rescan'ทำได้
Yves Martin

0

ไม่มีใครโพสต์ชุดคำสั่งทั้งหมดดังนั้นเราจะไปที่นี่:

# the following steps are for adding a new HDD
apt install scsitools
rescan-scsi-bus
pvcreate /dev/sdX
vgextend /dev/vgname /dev/sdx
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

#if resizing existing HDD
fdisk /dev/sdX
create new partition
pvcreate /dev/sdXn
vgextend /dev/vgname /dev/sdXn
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

ขออภัยที่จะรบกวน แต่ฉันพบว่าการเพิ่มดิสก์พาร์ทิชันและ PV ในการเจริญเติบโตของดิสก์แต่ละ "น่าเกลียด" และไม่ได้ขนาด คำถามของฉันเกี่ยวกับการขยายพาร์ติชันหลักที่มีอยู่บนดิสก์โดยไม่ต้องเพิ่มดิสก์หรือพาร์ติชันหรือ PV
Yves Martin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.