ฉันมีอินสแตนซ์ Amazon EC2 ที่สนับสนุน EBS ฉันต้องการเปลี่ยนอุปกรณ์รูทในอินสแตนซ์นี้ คุณช่วยแนะนำวิธีที่ดีที่สุดในการดำเนินการนี้ได้ไหม
ฉันพบเพียงเอกสารเกี่ยวกับการเปลี่ยนแอตทริบิวต์ต่างๆของอุปกรณ์บล็อก แต่ดูเหมือนจะไม่รวมการตั้งค่าเป็นอุปกรณ์รูท
ฉันมีอินสแตนซ์ Amazon EC2 ที่สนับสนุน EBS ฉันต้องการเปลี่ยนอุปกรณ์รูทในอินสแตนซ์นี้ คุณช่วยแนะนำวิธีที่ดีที่สุดในการดำเนินการนี้ได้ไหม
ฉันพบเพียงเอกสารเกี่ยวกับการเปลี่ยนแอตทริบิวต์ต่างๆของอุปกรณ์บล็อก แต่ดูเหมือนจะไม่รวมการตั้งค่าเป็นอุปกรณ์รูท
คำตอบ:
ใช่มันตายง่าย:
/dev/sda1
สิ่งนี้สันนิษฐานว่าโวลุ่ม EBS สำรองของคุณสามารถบูตได้แน่นอน - ต้องมีอิมเมจระบบปฏิบัติการที่สามารถบู๊ตได้
/dev/sda
มิได้/dev/sda1
ทำงานให้ฉัน แต่/dev/xvda
ไม่ได้ทำ
/dev/sda
- ไม่ได้ผล /dev/sda1
, dev/sdf
- ใช้งานได้ แต่อินสแตนซ์ไม่สามารถบูตได้ /dev/xvda
ทำงาน.
aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceName
ในกรณีของฉัน/dev/xvda
ฉันมีตัวแทนไม่เพียงพอที่จะเพิ่มความคิดเห็นให้กับคำตอบที่เลือก แต่ฉันต้องการชี้ให้เห็นว่าสำหรับฉัน/dev/sda1
ไม่ได้ผล (ไม่ได้แนบเป็นรูท) แต่ใช้การ/dev/xvda
ทำงาน (แนบเป็นรูท) อินสแตนซ์นี้เป็นหนึ่งใน t2.micro ที่ใหม่กว่าที่ใช้ HVM
/dev/sda1
AWS ปฏิเสธที่จะเริ่มอินสแตนซ์ของฉัน มีการตั้งค่าอื่น ๆ ที่ฉันต้องกำหนดค่าเพื่อใช้ชื่ออุปกรณ์รูทอื่นหรือไม่?
/dev/sda
ไม่ถูกต้อง แต่/dev/sda1
เป็นเรื่องปกติ
ในการอธิบายรายละเอียดเกี่ยวกับความคิดเห็นของ 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สำหรับข้อมูลเพิ่มเติม
นี่คือโซลูชันที่แนะนำของ aws คุณสามารถแยกไดรฟ์ข้อมูลรูทออกจากอินสแตนซ์ดั้งเดิมได้หลังจากหยุดมัน ไดรฟ์ข้อมูลรากถูกแนบที่ / dev / sda1 เมื่อถอดออกแล้วโปรดแนบเข้ากับอินสแตนซ์ใหม่ หลังจากเชื่อมต่อโวลุ่มแล้วคุณอาจต้องต่อเชื่อมจากระบบปฏิบัติการ หลังจากติดตั้งแล้วคุณจะเห็นข้อมูลภายใน
หลังจากที่คุณเพิ่มคีย์ใหม่เสร็จแล้วคุณสามารถถอดออกและเชื่อมต่อกับอินสแตนซ์เดิมได้ที่ / dev / sda1
ฉันขอแนะนำให้สร้างสแนปชอตของไดรฟ์ข้อมูลรูทก่อนทำการเปลี่ยนแปลงใด ๆ
ก่อนที่จะลองใช้วิธีแก้ไขปัญหาใด ๆ ให้ลองใช้ในกรณีที่ไม่สำคัญหรือเฉพาะจุด
หากคุณต้องการดำเนินการผ่าน CloudFormation คุณจะต้องดำเนินการดังต่อไปนี้:
ปรับใช้สแต็กของคุณ สิ่งนี้จะสร้างอินสแตนซ์ของคุณขึ้นใหม่ดังนั้นตรวจสอบให้แน่ใจว่าคุณใช้ที่อยู่ Elastic IP หรือมีการเข้าถึง DNS
เหตุผลที่คุณต้องทำวิธีแก้ปัญหานี้เนื่องจาก CF จะไม่ยอมให้คุณปรับขนาดวอลุ่มรูทบน EC2 BlockDeviceMappings หรือปรับ SnapshotId ของ Root Volume
เมื่อไดรฟ์ข้อมูลของคุณถูกเมาท์วอลลุ่มจะได้รับโพสต์ฟิกซ์พร้อมตัวเลขเช่นเมื่อ/dev/sda
ถูกเมาท์การติดตั้งจะ/dev/sda1, /dev/sda2
ขึ้นอยู่กับพาร์ติชันที่คุณทำ ในขณะที่เรากำลังติดตั้งอุปกรณ์รูทด้วยตัวมันเองมันจะถือว่าอุปกรณ์นั้นติดตั้งอยู่แล้วดังนั้นเราจึงจำเป็นต้องให้/dev/sda1
สำหรับการติดตั้งโวลุ่มเป็นอุปกรณ์รูท หมายเหตุ: ไม่ควรมีไดรฟ์ข้อมูลรูทติดอยู่
ทำตามขั้นตอนเหล่านี้: 1) ไปที่ไดรฟ์ข้อมูลของคุณเลือกแนบไดรฟ์ข้อมูลจาก Action 2) เลือกอินสแตนซ์ของคุณ 3) สำหรับการติดตั้งในฐานะรูทให้ตั้งชื่ออุปกรณ์เป็น/dev/sda1
4) เริ่มอินสแตนซ์ของคุณ
/dev/sda1
แน่นอน!