EC2 ไม่สามารถปรับขนาดไดรฟ์ข้อมูลหลังจากเพิ่มขนาด


96

ฉันได้ทำตามขั้นตอนในการปรับขนาดโวลุ่ม EC2

  1. หยุดอินสแตนซ์
  2. ถ่ายภาพรวมของโวลุ่มปัจจุบัน
  3. สร้างไดรฟ์ข้อมูลใหม่จากสแนปชอตก่อนหน้าโดยมีขนาดใหญ่ขึ้นในภูมิภาคเดียวกัน
  4. ลบโวลุ่มเก่าออกจากอินสแตนซ์
  5. แนบโวลุ่มใหม่เข้ากับอินสแตนซ์ที่จุดเชื่อมต่อเดียวกัน

โวลุ่มเก่าคือ 5GB และที่ฉันสร้างคือ 100GB ตอนนี้เมื่อฉันรีสตาร์ทอินสแตนซ์และเรียกใช้df -h Iยังคงเห็นสิ่งนี้

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde1            4.7G  3.5G 1021M  78% /
tmpfs                 296M     0  296M   0% /dev/shm

นี่คือสิ่งที่ได้รับเมื่อวิ่ง

sudo resize2fs /dev/xvde1

The filesystem is already 1247037 blocks long.  Nothing to do!

ถ้าฉันวิ่งcat /proc/partitionsฉันเห็น

 202       64  104857600 xvde
 202       65    4988151 xvde1
 202       66     249007 xvde2

จากสิ่งที่ฉันเข้าใจว่าฉันทำตามขั้นตอนที่ถูกต้อง xvde ควรมีข้อมูลเดียวกันกับ xvde1 แต่ฉันไม่รู้วิธีใช้

ฉันจะใช้โวลุ่มใหม่หรือ umount xvde1 และเมานต์ xvde แทนได้อย่างไร

ฉันไม่เข้าใจว่าฉันทำอะไรผิด

ฉันยังพยายาม sudo ifs_growfs /dev/xvde1

xfs_growfs: /dev/xvde1 is not a mounted XFS filesystem

Btw นี่คือกล่อง linux ที่มี centos 6.2 x86_64

ขอบคุณล่วงหน้าสำหรับความช่วยเหลือของ

คำตอบ:


71

ขอบคุณวิลแมนที่คำสั่งของคุณทำงานได้อย่างถูกต้องจำเป็นต้องพิจารณาปรับปรุงเล็กน้อยหากเราเพิ่ม EBS ให้มีขนาดใหญ่ขึ้น

  1. หยุดอินสแตนซ์
  2. สร้างภาพรวมจากไดรฟ์ข้อมูล
  3. สร้างวอลลุ่มใหม่ตามสแนปชอตที่เพิ่มขนาด
  4. ตรวจสอบและจดจำจุดเชื่อมต่อโวลุ่มของปัจจุบัน (เช่น/dev/sda1)
  5. ถอดโวลุ่มปัจจุบัน
  6. แนบไดรฟ์ข้อมูลที่เพิ่งสร้างเข้ากับอินสแตนซ์โดยตั้งค่าจุดเชื่อมต่อที่แน่นอน
  7. รีสตาร์ทอินสแตนซ์
  8. เข้าถึงผ่าน SSH ไปยังอินสแตนซ์และเรียกใช้ fdisk /dev/xvde

    คำเตือน: โหมดที่เข้ากันได้กับ DOS เลิกใช้งานแล้ว ขอแนะนำอย่างยิ่งให้ปิดโหมด (คำสั่ง 'c') และเปลี่ยนหน่วยแสดงผลเป็นภาค (คำสั่ง 'u')

  9. กดpเพื่อแสดงพาร์ติชันปัจจุบัน

  10. กดdเพื่อลบพาร์ติชั่นปัจจุบัน (หากมีมากกว่าหนึ่งพาร์ติชั่นคุณต้องลบทีละพาร์ติชั่น) หมายเหตุ: ไม่ต้องกังวลว่าข้อมูลจะไม่สูญหาย
  11. ตีnเพื่อสร้างพาร์ติชันใหม่
  12. กดpเพื่อตั้งค่าเป็นหลัก
  13. ตี1เพื่อตั้งกระบอกแรก
  14. ตั้งค่าช่องว่างใหม่ที่ต้องการ (หากว่างจะสงวนพื้นที่ทั้งหมดไว้)
  15. กดaเพื่อให้สามารถบู๊ตได้
  16. ตี1และwเขียนการเปลี่ยนแปลง
  17. รีบูตอินสแตนซ์หรือใช้partprobe(จากpartedแพ็คเกจ) เพื่อบอกเคอร์เนลเกี่ยวกับตารางพาร์ติชันใหม่
  18. เข้าสู่ระบบผ่าน SSH และรัน resize2fs / dev / xvde1
  19. สุดท้ายตรวจสอบช่องว่างใหม่ที่รัน df -h

1
"คำเตือน: เลิกใช้โหมดที่เข้ากันได้กับ DOS แล้วขอแนะนำอย่างยิ่งให้ปิดโหมด (คำสั่ง 'c') และเปลี่ยนหน่วยแสดงผลเป็นเซ็กเตอร์ (คำสั่ง 'u')"สิ่งนี้ไม่จำเป็นสำหรับฉัน (Ubuntu 13.04) ได้ปิดความเข้ากันได้ของ DOS แล้วและใช้ Sectors ตามค่าเริ่มต้น กดcและuเปลี่ยนเป็นโหมดที่เลิกใช้งานจริง
wisbucky

6
โซลูชันนี้ใช้งานได้ดี แต่อินสแตนซ์ติดอยู่ที่ "ผ่านการตรวจสอบ 1/2 ครั้ง" โดยมีเครื่องหมายอัศเจรีย์ (ReadHat 6.5) ในการแก้ไขปัญหานี้ฉันได้ตั้งค่า"กระบอกแรก" เป็น 16 (เหมือนก่อนหน้านี้) หลังจากนั้นอินสแตนซ์เริ่มปกติโดย "ผ่านการตรวจสอบ 2/2 ครั้ง" หวังว่านี่จะช่วยใครสักคน ...
user3586516

1
ฉันก็ต้องเปลี่ยนกระบอกแรกเช่นกัน แต่ฉันต้องเปลี่ยนเป็น 2048 ฉันขอแนะนำให้ตรวจสอบการตั้งค่าพาร์ติชันปัจจุบันของคุณก่อนที่จะลบ
Doyley

9
หลังจากรีบูตอินสแตนซ์แล้วฉันไม่สามารถเชื่อมต่อผ่าน SSH ได้ การเชื่อมต่อหมดเวลาและคอนโซล aws แสดงว่าไม่สามารถเริ่มการตรวจสอบสถานะได้ คิดว่าตายแน่ ๆ มีความคิดว่าจะทำอย่างไร?
Richard

5
คำตอบนี้เลิกใช้แล้วตอนนี้ AWS สนับสนุนการปรับขนาดออนไลน์สำหรับไดรฟ์ข้อมูล EBS
Dale Anderson

310

ไม่จำเป็นต้องหยุดอินสแตนซ์และแยกระดับเสียง EBS เพื่อปรับขนาดอีกต่อไป!

13-Feb-2017 Amazon ประกาศ: "การอัปเดต Amazon EBS - ไดรฟ์ข้อมูลยืดหยุ่นใหม่เปลี่ยนทุกสิ่ง "

กระบวนการนี้ทำงานได้แม้ว่าโวลุ่มที่จะขยายจะเป็นวอลลุ่มรากของอินสแตนซ์ที่กำลังทำงานอยู่ก็ตาม!


สมมติว่าเราต้องการเพิ่ม boot drive ของ Ubuntu จาก 8G เป็น 16G "on-the-fly"

ขั้นตอนที่ 1) ลงชื่อเข้าใช้ AWS web console -> EBS -> คลิกเมาส์ขวาบนรายการที่คุณต้องการปรับขนาด -> "Modify Volume" -> เปลี่ยนช่อง "Size" แล้วคลิกปุ่ม [Modify]

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่


ขั้นตอนที่ 2) ssh ลงในอินสแตนซ์และปรับขนาดพาร์ติชัน:

แสดงรายการอุปกรณ์บล็อกที่แนบมากับกล่องของเรา:
lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0   8G  0 part /

อย่างที่คุณเห็น / dev / xvda1 ยังคงเป็นพาร์ติชัน 8 GiB บนอุปกรณ์ 16 GiB และไม่มีพาร์ติชันอื่น ๆ บนไดรฟ์ข้อมูล มาใช้ "growpart" เพื่อปรับขนาดพาร์ติชัน 8G สูงสุด 16G:

# install "cloud-guest-utils" if it is not installed already
apt install cloud-guest-utils

# resize partition
growpart /dev/xvda 1

ตรวจสอบผลลัพธ์ (คุณสามารถดู / dev / xvda1 ตอนนี้เป็น 16G):

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0  16G  0 part /

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


ขั้นตอนที่ 3) ปรับขนาดระบบไฟล์เพื่อขยายขนาดเพื่อใช้พื้นที่พาร์ติชันใหม่อย่างเต็มที่
# Check before resizing ("Avail" shows 1.1G):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  6.3G  1.1G  86% /

# resize filesystem
resize2fs /dev/xvda1

# Check after resizing ("Avail" now shows 8.7G!-):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       16G  6.3G  8.7G  42% /

ดังนั้นเราจึงไม่มีเวลาหยุดทำงานและมีพื้นที่ใหม่ให้ใช้มากมาย
สนุก!

อัปเดต: อัปเดต: ใช้ sudo xfs_growfs / dev / xvda1 แทน resize2fs เมื่อระบบไฟล์ XFS


การปรับขนาดพาร์ติชันช่วยได้มาก .... !! สิ่งที่ยอดเยี่ยมที่สุดคือมันใช้งานได้แม้กระทั่งสำหรับไดรฟ์ข้อมูลรูท
piyushmandovra

4
จะมีใครบ้างโปรดยอมรับว่านี่เป็นคำตอบที่ถูกต้องหรือไม่? เพียงเพราะ ... มันเป็น
eduardohl

แข็งขอบคุณตัน ... ฉันสงสัยมากในการปฏิบัติตามขั้นตอนที่กล่าวถึงในคำตอบข้างต้น แต่นี่มันเจ๋งมาก ...
AAgg

4
อืมเอกสารอย่างเป็นทางการไม่ได้พูดถึง Growpart ซึ่งเป็นสาเหตุที่ฉันไม่สามารถใช้งานได้ก่อนหน้านี้ ขอบคุณ!
อิบราฮิม

1
@ ชิฮาใช่ นั่นคือประเด็นทั้งหมด แม้แต่ไดรฟ์ที่ติดตั้ง "root" ที่สามารถบู๊ตได้ก็สามารถเพิ่มขึ้นได้อย่างปลอดภัยโดยไม่ต้องรีบูต!
Dmitry Shevkoplyas

42

ความคิดเห็นของนายอำเภอโดย jperelli ด้านบน

วันนี้ฉันประสบปัญหาเดียวกัน เอกสาร AWS ไม่ได้กล่าวถึง Growpart อย่างชัดเจน ฉันพบวิธีที่ยากและแน่นอนทั้งสองคำสั่งทำงานได้อย่างสมบูรณ์แบบบน M4.large & M4.xlarge กับ Ubuntu

sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1

คำตอบที่สองสำหรับการติดและคำตอบนี้สำหรับการปรับขนาด
Adiii

สุดทึ่ง! ทำงานบนอินสแตนซ์ t2.small ของฉัน ต๊าย. คิดว่ามันจะนองเลือดกว่านั้น ขอบคุณ!
publicknowledge

ฉันไม่สามารถติดตั้ง cloud-guest-utils ซึ่งมีส่วนขยายได้ Linux เวอร์ชัน 3.16.0-4-amd64
nettie

16

[แก้ไขแล้ว]

นี่คือสิ่งที่ต้องทำ

  1. หยุดอินสแตนซ์
  2. สร้างภาพรวมจากไดรฟ์ข้อมูล
  3. สร้างวอลลุ่มใหม่ตามสแนปชอตที่เพิ่มขนาด
  4. ตรวจสอบและจดจำจุดเชื่อมต่อโวลุ่มของปัจจุบัน (เช่น / dev / sda1)
  5. ถอดโวลุ่มปัจจุบัน
  6. แนบไดรฟ์ข้อมูลที่เพิ่งสร้างเข้ากับอินสแตนซ์โดยตั้งค่าจุดเชื่อมต่อที่แน่นอน
  7. รีสตาร์ทอินสแตนซ์
  8. เข้าถึงผ่าน SSH ไปยังอินสแตนซ์และเรียกใช้ fdisk /dev/xvde
  9. กดpเพื่อแสดงพาร์ติชันปัจจุบัน
  10. กดdเพื่อลบพาร์ติชั่นปัจจุบัน (หากมีมากกว่าหนึ่งพาร์ติชั่นคุณต้องลบทีละพาร์ติชั่น) หมายเหตุ: ไม่ต้องกังวลว่าข้อมูลจะไม่สูญหาย
  11. ตีnเพื่อสร้างพาร์ติชันใหม่
  12. กดpเพื่อตั้งค่าเป็นหลัก
  13. ตี1เพื่อตั้งกระบอกแรก
  14. ตั้งค่าช่องว่างใหม่ที่ต้องการ (หากว่างจะสงวนพื้นที่ทั้งหมดไว้)
  15. กดaเพื่อให้สามารถบู๊ตได้
  16. ตี1และwเขียนการเปลี่ยนแปลง
  17. รีบูตอินสแตนซ์
  18. เข้าสู่ระบบผ่าน SSH และเรียกใช้ resize2fs /dev/xvde1
  19. สุดท้ายตรวจสอบพื้นที่ใหม่ที่กำลังทำงานอยู่ df -h

นี่ไง

โชคดี!


1
ในไดรฟ์ข้อมูล Amazon EBS ดูเหมือนว่าจะมีความสำคัญที่จะต้องใช้จุดต่อเชื่อมเดียวกันใน resize2fs กับที่คุณใช้กับ fdisk df แสดงบางอย่างเช่น / dev / xvda1 เป็นไดรฟ์ข้อมูล EBS ที่แนบมา แต่คำสั่ง resize2fs ใช้ได้เฉพาะกับฉันเมื่อฉันใช้ตัวระบุ / dev / sdf1 ซึ่งฉันเคยใช้เมื่อฉันสร้างพาร์ติชันใหม่ใน fdisk
Garreth McDaid

สิ่งนี้อยู่ในเอกสาร AWS สิ่งที่น่าสงสารคือขั้นตอนของพวกเขายังไม่สมบูรณ์หลังจาก 3 ปีของสิ่งนี้เกิดขึ้น หากคุณมีภาพคุณสามารถถอยกลับได้แน่นอน เป็นไปได้เสมอที่จะแขวนดิสก์ใหม่ชั่วคราวจากอินสแตนซ์ที่ใช้งานเดสก์ท็อปด้วยเช่นกัน แต่จำเป็นต้องติดตั้งเพื่อปรับขนาดอาจเป็นปัญหาได้หากคุณคิดจะใช้ gparted gcloud ปรับขนาดได้ทันที
mckenzm

อุปกรณ์จัดเก็บข้อมูลของฉัน (/ dev / xvda1) เริ่มต้นที่ภาค 16065 ไม่ใช่ภาค 1 ดังนั้นขั้นตอนที่ 13 (ตี 1 เพื่อตั้งค่ากระบอกสูบแรก) ต้องเป็น 16065 ในกรณีของฉัน
Simon Paarlberg

อย่าใช้วิธีแก้ปัญหาเหล่านี้คุณอาจสูญเสียข้อมูลของคุณ อันที่จริงฉันคิดว่าอย่าไปใช้ตัวเลือกลบพาร์ติชันหากแสดงค่ารายการพาร์ติชันในตารางพาร์ติชันทำให้หากรายการอยู่ในนั้นมันจะลบพาร์ติชันอย่างแท้จริงดังนั้นข้อมูลจะหายไปแม้ว่าคำตอบจะระบุว่า "มันจะไม่ ลบ". มีวิธีในการขยายขนาดพาร์ติชันตรวจสอบที่ด้านล่างมียูทิลิตี้อื่น ๆ ที่จะช่วยในการขยายขนาดพาร์ติชันของคุณได้อย่างราบรื่น
piyushmandovra

6
  1. ลงชื่อเข้าใช้ AWS web Console -> EBS -> คลิกเมาส์ขวาบนรายการที่คุณต้องการปรับขนาด -> "Modify Volume" -> เปลี่ยนช่อง "Size" แล้วคลิกปุ่ม [Modify]

  2. growpart /dev/xvda 1

  3. resize2fs /dev/xvda1

นี่คือคำตอบของ Dmitry Shevkoplyas เวอร์ชันที่ตัดต่อเพื่อไล่ล่า เอกสาร AWS ไม่แสดงgrowpartคำสั่ง ใช้งานได้สำหรับ ubuntu AMI


6
  1. sudo growpart / dev / xvda 1
  2. sudo resize2fs / dev / xvda1

สองคำสั่งข้างต้นช่วยประหยัดเวลาของฉันสำหรับอินสแตนซ์ AWS ubuntu ec2



4

ในกรณีที่ใครก็ตามที่ใช้ GCP google cloud platform ให้
ลองทำดังนี้

sudo growpart /dev/sdb 1
sudo resize2fs /dev/sdb1

2

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


ไม่ฉันไม่ได้ทำ. ฉันควรทำอย่างไร? โปรดจำไว้ว่าไดรฟ์ข้อมูลใหม่ที่ฉันแนบมานี้ควรจะมีข้อมูลก่อนหน้านี้ทั้งหมดเนื่องจากเป็นภาพรวมของโวลุ่มดั้งเดิม
Wilman Arambillete

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

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

1

แฟล็กที่บูตได้ (a) ใช้ไม่ได้ในกรณีของฉัน (EC2, centos6.5) ดังนั้นฉันจึงต้องสร้างโวลุ่มใหม่จากสแนปชอต หลังจากทำซ้ำทุกขั้นตอนยกเว้นแฟล็กที่บูตได้ - ทุกอย่างทำงานได้อย่างไม่มีที่ติดังนั้นฉันจึงสามารถ resize2fs ได้หลังจากนั้น ขอบคุณ!


1

ขอบคุณ @Dimitry มันทำงานได้อย่างมีเสน่ห์ด้วยการเปลี่ยนแปลงเล็กน้อยเพื่อให้เข้ากับระบบไฟล์ของฉัน

แหล่ง: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#recognize-expanded-volume-linux

จากนั้นใช้คำสั่งต่อไปนี้แทนจุดต่อเชื่อมของระบบไฟล์ (ระบบไฟล์ XFS ต้องถูกเมาท์เพื่อปรับขนาด):

[ec2-user ~]$ sudo xfs_growfs -d /mnt
meta-data=/dev/xvdf              isize=256    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 262144 to 26214400

หมายเหตุหากคุณได้รับ xfsctl ล้มเหลว: ไม่สามารถจัดสรรข้อผิดพลาดของหน่วยความจำได้คุณอาจต้องอัพเดตเคอร์เนล Linux บนอินสแตนซ์ของคุณ สำหรับข้อมูลเพิ่มเติมโปรดดูเอกสารระบบปฏิบัติการเฉพาะของคุณ หากคุณได้รับระบบไฟล์นั้นมีความยาวบล็อก nnnnnnn อยู่แล้ว ไม่มีอะไรทำ! โปรดดูการขยายพาร์ติชัน Linux


0

มีตัวแทนไม่เพียงพอที่จะแสดงความคิดเห็นด้านบน แต่โปรดทราบตามความคิดเห็นด้านบนด้วยว่าคุณสามารถทำให้อินสแตนซ์ของคุณเสียหายได้หากคุณเริ่มต้นที่ 1 หากคุณกด 'u' หลังจากเริ่มต้น fdisk ก่อนที่คุณจะแสดงรายการพาร์ติชันของคุณด้วย 'p' สิ่งนี้จะทำให้คุณมีหมายเลขเริ่มต้นที่ถูกต้องดังนั้นคุณจึงไม่ทำให้ไดรฟ์ข้อมูลของคุณเสียหาย สำหรับ centos 6.5 AMI ตามที่กล่าวไว้ข้างต้น 2048 นั้นถูกต้องสำหรับฉัน


0

ดังนั้นในกรณีที่ใครก็ตามมีปัญหาที่พวกเขาพบปัญหานี้ด้วยการใช้งาน 100% และไม่มีพื้นที่แม้แต่จะเรียกใช้คำสั่ง growpart (เพราะสร้างไฟล์ใน / tmp)

นี่คือคำสั่งที่ฉันพบว่าข้ามแม้ในขณะที่กำลังใช้โวลุ่ม EBS และถ้าคุณไม่มีที่ว่างเหลือใน ec2 ของคุณและคุณอยู่ที่ 100%

/sbin/parted ---pretend-input-tty /dev/xvda resizepart 1 yes 100%

ดูเว็บไซต์นี้ที่นี่:

https://www.elastic.co/blog/autoresize-ebs-root-volume-on-aws-amis


ควรปฏิบัติตามคำสั่งนี้sudo resize2fs /dev/xvda1เพื่ออัปเดต/etc/fstabหลังจากนั้นdf -hจะแสดงเนื้อที่ดิสก์ที่โตขึ้น
karmendra

0

ใส่ช่องว่างระหว่างชื่อและหมายเลขเช่น:

sudo growpart /dev/xvda 1

โปรดทราบว่ามีช่องว่างระหว่างชื่ออุปกรณ์และหมายเลขพาร์ติชัน

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

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

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