Tôi có thể thay đổi thiết bị EBS gốc của phiên bản amazon EC2 của mình không?


107

Tôi có một phiên bản Amazon EC2 được EBS hỗ trợ. Tôi muốn thay đổi thiết bị gốc trong trường hợp này. Bạn có thể vui lòng tư vấn cách tốt nhất để đi về điều này?

Tôi chỉ tìm thấy tài liệu về việc thay đổi một số thuộc tính của thiết bị khối, nhưng chúng dường như không bao gồm việc đặt nó làm thiết bị gốc.

Câu trả lời:


191

Đúng, thật dễ dàng:

  1. Dừng ví dụ.
  2. Tách ổ đĩa EBS gốc.
  3. Đính kèm volume EBS thay thế làm gốc: /dev/sda1
  4. Bắt đầu phiên bản.

Điều này giả định rằng ổ đĩa EBS thay thế của bạn có thể khởi động được, tất nhiên - nó phải chứa hình ảnh hệ điều hành có thể khởi động.


50
Điều quan trọng là "như là gốc" - /dev/sda1thực sự!
Aseem Kishore

6
Cảm ơn, điều này thật tuyệt. Một điểm cần lưu ý là DNS / IP có thể thay đổi khi điều này xảy ra, vì vậy hãy đảm bảo cập nhật mọi DNS / IP đàn hồi, v.v. Tôi đã dành một thời gian để cố gắng tìm ra lý do tại sao tôi không thể lao vào nó nữa, và đây là lý do.
mrooney

13
Không /dev/sdavà cũng không /dev/sda1làm việc cho tôi, nhưng /dev/xvdađã làm.
bhspencer

8
Trời đất, thật đáng sợ. /dev/sda- không hoạt động. /dev/sda1, dev/sdf- hoạt động, nhưng phiên bản không khởi động. /dev/xvdađã làm việc.
Alex Fortuna

13
Tên mà bạn nên sử dụng là kết quả của lệnh này: aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceNametrong trường hợp của tôi/dev/xvda
Neoecos

42

Tôi không có đủ đại diện để thêm nhận xét cho câu trả lời đã chọn, nhưng tôi muốn chỉ ra rằng đối với tôi, /dev/sda1không hoạt động (không đính kèm dưới dạng root), nhưng sử dụng /dev/xvdađã làm việc (đính kèm dưới dạng gốc). Ví dụ là một trong những phiên bản t2.micro mới hơn sử dụng HVM.


Tôi nghĩ rằng các máy ở dạng VPC, tên thiết bị có định dạng / dev / xv * tự nó hoạt động và bạn không cần đặt tên ở định dạng / dev / sd *. Đây là một quan sát - tôi không phải là chuyên gia để nói điều này một cách tự tin.
Mayank Jaiswal

Tôi có một trường hợp khớp với mô tả này, không thể khởi động ("Không thể tìm thấy thiết bị gốc") sau khi tách và gắn lại thiết bị gốc. Tôi muốn thử câu trả lời này, nhưng nếu tôi không đính kèm /dev/sda1thì AWS từ chối bắt đầu phiên bản của tôi. Có một số cài đặt khác mà tôi cần định cấu hình để sử dụng tên thiết bị gốc thay thế không?
Jack O'Connor,

/ dev / sda1 cho Linux / dev / xvda cho Windows
Luis

dù sao, hãy đảm bảo xác định phân vùng / dev / sda 1 , /dev/sdakhông hợp lệ nhưng /dev/sda1vẫn ổn.
ThorSummoner:

16

Để giải thích rõ hơn về nhận xét của Diomidis Spinellis trong chuỗi nhận xét của câu trả lời được chấp nhận, điều quan trọng là phải kiểm tra nhãn hệ thống tệp của thiết bị bạn đang cố gắng chuyển sang làm thiết bị gốc mới của mình. Trong khi khắc phục sự cố di chuyển máy chủ của riêng tôi, tôi phải làm như sau trước khi phiên bản của tôi khởi động:

Sử dụng e2labellệnh để thay đổi nhãn trên hệ thống tệp ext2 / ext3 / ext4 mà bạn đã tạo cho thiết bị gốc mới của mình.

Trước tiên, hãy kiểm tra nhãn hệ thống tệp cho thiết bị gốc hiện tại của bạn.

$ sudo e2label /dev/xvda1
cloudimg-rootfs

Đặt thiết bị mới có cùng nhãn hệ thống tệp.

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

Trong trường hợp của tôi, nhãn là cloudimg-rootfs. Đôi khi nó chỉ đơn giản là như vậy /.

Điều quan trọng là phải hiểu cách hoạt động của e2label; kiểm tra man e2labeltrên máy của bạn hoặc truy cập http://linux.die.net/man/8/e2label để biết thêm thông tin.


1
Điều này cực kỳ quan trọng, tôi không thể hiểu tại sao câu trả lời này không được tìm thấy phổ biến hơn.
ays0110

3

Đây là giải pháp được đề xuất của aws Bạn có thể tách ổ đĩa gốc khỏi phiên bản gốc sau khi dừng nó. Tập tin gốc được đính kèm tại / dev / sda1. Khi cái này được tách ra, vui lòng đính kèm nó vào phiên bản mới. Sau khi ổ đĩa được đính kèm, bạn có thể phải gắn nó vào hệ điều hành. Sau khi nó được gắn kết, bạn sẽ thấy dữ liệu bên trong nó.

Sau khi bạn thêm khóa mới xong, bạn có thể tách nó ra và gắn vào phiên bản gốc tại / dev / sda1.

Tôi khuyên bạn nên tạo một ảnh chụp nhanh của ổ đĩa gốc trước khi thực hiện bất kỳ thay đổi nào.

Trước khi thử bất kỳ giải pháp nào, chỉ cần thử trong các trường hợp không quan trọng hoặc các trường hợp tại chỗ


1

Nếu bạn muốn thực hiện việc này thông qua CloudFormation, bạn sẽ cần phải làm như sau:

  1. Tạo ảnh chụp nhanh từ ổ đĩa gốc hiện có (thông qua bảng điều khiển hoặc CLI)
  2. Tạo AMI mới từ ảnh chụp nhanh này - tăng kích thước ổ đĩa gốc ở đây, đảm bảo bạn chọn đúng thời gian ảo hóa (ảo hóa hoặc HVM).
  3. Trên tài nguyên AWS :: EC2 :: Instance của bạn, hãy đặt thông số ImageId thành AMI mới mà bạn vừa tạo

Triển khai ngăn xếp của bạn. Thao tác này sẽ tạo lại phiên bản của bạn, vì vậy hãy đảm bảo rằng bạn đang sử dụng địa chỉ IP đàn hồi hoặc có quyền truy cập DNS.

Lý do bạn phải thực hiện giải pháp này là vì CF sẽ không cho phép bạn điều chỉnh kích thước khối lượng gốc trên EC2 BlockDeviceMappings hoặc để điều chỉnh SnapshotId của Khối lượng gốc.


0

Khi ổ đĩa của bạn được gắn kết, nó sẽ nhận được một bản sửa lỗi với các con số, ví dụ: khi nào /dev/sdađược gắn kết, nó được gắn kết /dev/sda1, /dev/sda2tùy thuộc vào phân vùng bạn tạo. Vì chúng tôi đang mount chính thiết bị gốc, nó giả định rằng thiết bị đã được gắn kết, vì vậy chúng tôi cần phải cung cấp /dev/sda1cho việc gắn volume làm thiết bị gốc. Lưu ý: Không nên đính kèm bất kỳ tập tin gốc nào.

Làm theo các bước sau: 1) Đi tới tập của bạn, chọn đính kèm tập từ Hành động. 2) Chọn phiên bản của bạn 3) Để gắn với quyền root, hãy đặt tên thiết bị là /dev/sda1 4) Bắt đầu phiên bản của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.