ฉันสามารถเปลี่ยนอุปกรณ์ EBS รูทของอินสแตนซ์ amazon EC2 ได้หรือไม่


107

ฉันมีอินสแตนซ์ Amazon EC2 ที่สนับสนุน EBS ฉันต้องการเปลี่ยนอุปกรณ์รูทในอินสแตนซ์นี้ คุณช่วยแนะนำวิธีที่ดีที่สุดในการดำเนินการนี้ได้ไหม

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

คำตอบ:


192

ใช่มันตายง่าย:

  1. หยุดอินสแตนซ์
  2. ถอดไดรฟ์ข้อมูลรูท EBS
  3. แนบโวลุ่ม EBS ทางเลือกเป็นรูท: /dev/sda1
  4. เริ่มอินสแตนซ์

สิ่งนี้สันนิษฐานว่าโวลุ่ม EBS สำรองของคุณสามารถบูตได้แน่นอน - ต้องมีอิมเมจระบบปฏิบัติการที่สามารถบู๊ตได้


50
ที่สำคัญคือ "เป็นราก" - /dev/sda1แน่นอน!
Aseem Kishore

6
ขอบคุณมันเยี่ยมมาก gotcha หนึ่งคือ DNS / IP สามารถเปลี่ยนแปลงได้เมื่อสิ่งนี้เกิดขึ้นดังนั้นอย่าลืมอัปเดต DNS / Elastic IPs และอื่น ๆ ฉันใช้เวลาสักพักในการพยายามหาสาเหตุว่าทำไมฉันถึงไม่สามารถ ssh ได้อีกต่อไปและนี่คือเหตุผล
mrooney

15
ทั้ง/dev/sdaมิได้/dev/sda1ทำงานให้ฉัน แต่/dev/xvdaไม่ได้ทำ
bhspencer

10
ผู้ชายนั่นน่ากลัว /dev/sda- ไม่ได้ผล /dev/sda1, dev/sdf- ใช้งานได้ แต่อินสแตนซ์ไม่สามารถบูตได้ /dev/xvdaทำงาน.
Alex Fortuna

13
ชื่อที่คุณควรใช้เป็นผลลัพธ์ของคำสั่งนี้aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceNameในกรณีของฉัน/dev/xvda
Neoecos

44

ฉันมีตัวแทนไม่เพียงพอที่จะเพิ่มความคิดเห็นให้กับคำตอบที่เลือก แต่ฉันต้องการชี้ให้เห็นว่าสำหรับฉัน/dev/sda1ไม่ได้ผล (ไม่ได้แนบเป็นรูท) แต่ใช้การ/dev/xvdaทำงาน (แนบเป็นรูท) อินสแตนซ์นี้เป็นหนึ่งใน t2.micro ที่ใหม่กว่าที่ใช้ HVM


ฉันคิดว่าเครื่องที่อยู่ใน VPC ชื่ออุปกรณ์ของรูปแบบ / dev / xv * นั้นใช้งานได้และคุณไม่จำเป็นต้องตั้งชื่อในรูปแบบ / dev / sd * นี่เป็นข้อสังเกต - ฉันไม่เชี่ยวชาญที่จะพูดสิ่งนี้ด้วยความมั่นใจ
Mayank Jaiswal

ฉันมีอินสแตนซ์ที่ตรงกับคำอธิบายนี้ซึ่งไม่สามารถบูตได้ ("ไม่พบอุปกรณ์รูท") หลังจากถอดและติดตั้งอุปกรณ์รูทใหม่ ฉันต้องการลองใช้คำตอบนี้ แต่ถ้าฉันไม่แนบเพราะ/dev/sda1AWS ปฏิเสธที่จะเริ่มอินสแตนซ์ของฉัน มีการตั้งค่าอื่น ๆ ที่ฉันต้องกำหนดค่าเพื่อใช้ชื่ออุปกรณ์รูทอื่นหรือไม่?
Jack O'Connor

/ dev / sda1 สำหรับ Linux / dev / xvda สำหรับ Windows
Luis

whoopse ให้แน่ใจว่าจะระบุพาร์ทิชัน / dev / SDA 1 , /dev/sdaไม่ถูกต้อง แต่/dev/sda1เป็นเรื่องปกติ
ThorSummoner

16

ในการอธิบายรายละเอียดเกี่ยวกับความคิดเห็นของ Diomidis Spinellis ในเธรดความคิดเห็นของคำตอบที่ได้รับการยอมรับสิ่งสำคัญคือต้องตรวจสอบป้ายชื่อระบบไฟล์ของอุปกรณ์ที่คุณกำลังพยายามเปลี่ยนเป็นอุปกรณ์รูทเครื่องใหม่ของคุณ ขณะแก้ไขปัญหาการย้ายเซิร์ฟเวอร์ของตัวเองฉันต้องทำสิ่งต่อไปนี้ก่อนที่อินสแตนซ์ของฉันจะบู๊ต:

ใช้e2labelคำสั่งเพื่อเปลี่ยนเลเบลบนระบบไฟล์ ext2 / ext3 / ext4 ที่คุณสร้างขึ้นสำหรับอุปกรณ์รูทใหม่ของคุณ

ขั้นแรกตรวจสอบป้ายระบบไฟล์สำหรับอุปกรณ์รูทปัจจุบันของคุณ

$ sudo e2label /dev/xvda1
cloudimg-rootfs

ตั้งค่าอุปกรณ์ใหม่ให้มีป้ายชื่อระบบไฟล์เดียวกัน

$ sudo e2label /dev/xvdg 'cloudimg-rootfs'

cloudimg-rootfsในกรณีของฉันฉลากเป็น /บางครั้งมันก็จะเป็น

สิ่งสำคัญคือต้องเข้าใจว่า e2label ทำงานอย่างไร ตรวจสอบman e2labelเครื่องของคุณหรือไปที่http://linux.die.net/man/8/e2labelสำหรับข้อมูลเพิ่มเติม


1
นี่เป็นเรื่องสำคัญมากฉันไม่เข้าใจว่าทำไมคำตอบนี้จึงไม่พบบ่อย
ays0110

3

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

หลังจากที่คุณเพิ่มคีย์ใหม่เสร็จแล้วคุณสามารถถอดออกและเชื่อมต่อกับอินสแตนซ์เดิมได้ที่ / dev / sda1

ฉันขอแนะนำให้สร้างสแนปชอตของไดรฟ์ข้อมูลรูทก่อนทำการเปลี่ยนแปลงใด ๆ

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


1

หากคุณต้องการดำเนินการผ่าน CloudFormation คุณจะต้องดำเนินการดังต่อไปนี้:

  1. สร้างสแนปชอตจากรูทวอลุ่มที่มีอยู่ (ผ่านคอนโซลหรือ CLI)
  2. สร้าง AMI ใหม่จากสแนปชอตนี้ - เพิ่มขนาดรูทวอลุ่มที่นี่ตรวจสอบให้แน่ใจว่าคุณได้เลือกเวลา virtualisation ที่ถูกต้อง (paravirtual หรือ HVM)
  3. บนทรัพยากร AWS :: EC2 :: Instance ของคุณให้ตั้งค่าพารามิเตอร์ ImageId เป็น AMI ใหม่ที่คุณเพิ่งสร้างขึ้น

ปรับใช้สแต็กของคุณ สิ่งนี้จะสร้างอินสแตนซ์ของคุณขึ้นใหม่ดังนั้นตรวจสอบให้แน่ใจว่าคุณใช้ที่อยู่ Elastic IP หรือมีการเข้าถึง DNS

เหตุผลที่คุณต้องทำวิธีแก้ปัญหานี้เนื่องจาก CF จะไม่ยอมให้คุณปรับขนาดวอลุ่มรูทบน EC2 BlockDeviceMappings หรือปรับ SnapshotId ของ Root Volume


0

เมื่อไดรฟ์ข้อมูลของคุณถูกเมาท์วอลลุ่มจะได้รับโพสต์ฟิกซ์พร้อมตัวเลขเช่นเมื่อ/dev/sdaถูกเมาท์การติดตั้งจะ/dev/sda1, /dev/sda2ขึ้นอยู่กับพาร์ติชันที่คุณทำ ในขณะที่เรากำลังติดตั้งอุปกรณ์รูทด้วยตัวมันเองมันจะถือว่าอุปกรณ์นั้นติดตั้งอยู่แล้วดังนั้นเราจึงจำเป็นต้องให้/dev/sda1สำหรับการติดตั้งโวลุ่มเป็นอุปกรณ์รูท หมายเหตุ: ไม่ควรมีไดรฟ์ข้อมูลรูทติดอยู่

ทำตามขั้นตอนเหล่านี้: 1) ไปที่ไดรฟ์ข้อมูลของคุณเลือกแนบไดรฟ์ข้อมูลจาก Action 2) เลือกอินสแตนซ์ของคุณ 3) สำหรับการติดตั้งในฐานะรูทให้ตั้งชื่ออุปกรณ์เป็น/dev/sda1 4) เริ่มอินสแตนซ์ของคุณ

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