Có thể thay đổi kích thước đĩa trực tuyến với KVM?


14

Chúng tôi đang đánh giá KVM cho ảo hóa Linux trên một vài dự án. Tất cả đang diễn ra tốt đẹp cho đến nay. Nhưng một trong những yêu cầu của chúng tôi là khả năng thêm dung lượng đĩa cho một khách đang chạy mà không cần khởi động lại hoặc mang nó ngoại tuyến. Điều này có thể với KVM không?

Điều duy nhất tôi tìm thấy cho đến nay (nhưng chưa được thử nghiệm) là khả năng cắm các đĩa vào máy. Nếu tôi đi theo lộ trình này, thì tôi luôn có thể thêm đĩa mới vào nhóm âm lượng LVM trên máy khách và sau đó mở rộng ổ đĩa logic đã chọn. Nhược điểm lớn nhất của phương pháp này là theo thời gian chúng ta có thể kết thúc với việc khách có số lượng đĩa ảo thay đổi. Không gian đĩa "thực" sẽ được cung cấp cho máy chủ qua SAN, vì vậy chúng tôi luôn có thể thêm nhiều không gian hơn cho máy chủ bất cứ khi nào.


(Và "Có", điều đó là có thể.)
poige

Câu trả lời:


4

Tôi nghĩ rằng bạn đang bị mắc kẹt khi làm những gì bạn đã đề cập nếu bạn muốn làm điều đó mà không cần tắt máy.

Tại sao không chỉ cung cấp cho các máy ảo LUN ngay lập tức SAN và quản lý không gian ở đó? Điều này hoạt động tốt hơn nếu bạn muốn sử dụng các tính năng như di chuyển trực tiếp.

KVM dựa trên QEMU, vì vậy tất cả sự hỗ trợ định dạng hình ảnh của nó đều đến từ dự án đó. Đây là một cách tốt để thay đổi kích thước các định dạng khác nhau mà Qemu / KVM hỗ trợ. Nhưng diễn đàn Qemu sẽ là một nơi tốt để đặt câu hỏi này nếu bạn không nhận được bất kỳ câu trả lời chắc chắn nào ở đây.

Một tùy chọn khác có thể không lý tưởng là sử dụng qcow2 thực sự lớn hoặc định dạng hình ảnh thưa thớt khác cho các ổ đĩa. Vì vậy, bạn có thể cung cấp cho mỗi máy một ổ đĩa nhỏ cho HĐH và hình ảnh thưa thớt lớn cho dữ liệu theo LVM. Điều này ít nhất sẽ giữ số lượng ổ đĩa / hình ảnh ảo mà bạn phải quản lý. Nhưng việc cung cấp mỏng này có thể là một vấn đề mặc dù nếu bạn làm điều này với 1000 máy và mọi người sẽ đưa bạn lên không gian trống mà họ thấy.

XEN tôi tin rằng có những hạn chế tương tự hiện nay.


Khi xem xét thêm, gắn bộ lưu trữ SAN từ bên trong chính khách mà bạn đề cập có lẽ là cách để đi. Và cảm ơn cho các thông tin bổ sung là tốt.
Eil

cung cấp mỏng có thể tốn kém vì phân mảnh, quá.
wazoox

14

Tôi biết đó là một câu hỏi cũ nhưng tôi đã tìm thấy nó trong khi tìm kiếm giải pháp và hy vọng nó có thể giúp đỡ người khác.

Đối với ngày nay nó có thể thay đổi kích thước ổ cứng trên máy tính này. Tôi đã tìm thấy một cách làm việc ở đây:

https://ormszilla.redhat.com/show_orms.cgi?id=648594

Các bước sau đây phải được thực hiện:

  1. Tìm tên tập tin và tên thiết bị KVM của ổ cứng bạn muốn thay đổi kích thước:

    root@vhstage02:/data# virsh dumpxml test | xpath -e /domain/devices/disk
    Found 2 nodes in stdin:
    -- NODE --
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2" />
      <source file="/data/test.img" />
      <backingStore />
      <target dev="vda" bus="virtio" />
      <alias name="virtio-disk0" />
      <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0" />
    </disk>
    -- NODE --
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw" />
      <source file="/data/images/debian-8.2.0-amd64-netinst.iso" />
      <backingStore />
      <target dev="hda" bus="ide" />
      <readonly />
      <alias name="ide0-1-1" />
      <address type="drive" controller="0" bus="1" target="0" unit="1" />
    </disk>
    

Một điều thú vị đối với chúng tôi là đĩa. Bạn nên tìm kiếm sourcealiaskhối. Đối với tôi tên tập tin là test.imgvà tên bí danh là virtio-disk0. Để tên này, bạn cần phải thêm trước drive-để có được tên ổ đĩa qemu.

  1. Bây giờ chúng tôi thực sự thay đổi kích thước ổ đĩa bằng cách sử dụng màn hình qemu:

    virsh qemu-monitor-command test block_resize  drive-virtio-disk0  100G --hmp
    

Lưu ý rằng tên tệp đã được sử dụng mà không có phần mở rộng .img và ổ đĩa- đã được thêm vào bí danh đĩa. 100G là kích thước kết quả của ổ đĩa mà chúng tôi muốn có

  1. Đăng nhập vào máy và kiểm tra xem kích thước thực tế đã được thay đổi:

    root@test:~# fdisk -l
    
    Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x7e6e7f71
    
    Device     Boot  Start       End   Sectors  Size Id Type
    /dev/vda1  *      2048    499711    497664  243M 83 Linux
    /dev/vda2       501758 167770111 167268354 79.8G  5 Extended
    /dev/vda5       501760 167770111 167268352 79.8G 8e Linux LVM
    

Đó là nó! Bây giờ bạn có thể tạo phân vùng mới hoặc thay đổi kích thước những cái hiện có.


1
Cảm ơn đã trở lại và thêm câu trả lời này! Làm cho mọi thứ đơn giản hơn nhiều so với cách làm cũ.
Dave Sherohman

3

AFAIK, điều này là không thể - bạn có thể thêm hình ảnh đĩa mới và khi bạn chỉ ra, bạn cũng có thể thêm hình ảnh mới vào ổ đĩa LVM, nhưng để thay đổi kích thước hình ảnh đĩa có thể khởi động, bạn cần có thể tắt nó xuống và chỉnh sửa các phân vùng.

Đây là một lời giải thích tốt cho việc mở rộng một hình ảnh. Mặc dù nó yêu cầu tắt máy, nhưng bạn có thể thoát khỏi chỉ với một vài phút ngừng hoạt động, đặc biệt là nếu bạn tránh tùy chọn hình ảnh --nonsparse và đưa đĩa gparted vào tệp iso và cài đặt trước máy khách KVM của bạn. Hi vọng điêu nay co ich.


2
Vấn đề không thực sự liên quan đến KVM; từ Linux, bạn đơn giản không thể thay đổi kích thước đĩa bạn đã khởi động từ đó. Nó cũng áp dụng cho mảng RAID vật lý.
wazoox

3

Có thể di chuyển một hệ thống Linux giữa các đĩa trong khi nó đang chạy. Hạn chế là bạn không thể thay đổi các phân vùng trên đĩa có phân vùng đang sử dụng.

Để làm điều này, hệ thống tập tin gốc của bạn phải nằm trên LVM, điều này thường có nghĩa là bạn phải có một hệ thống tập tin khởi động riêng (tuy nhiên, điều này không cần thiết, nó chỉ giúp mọi việc dễ dàng hơn)

Sau khi cắm vào đĩa mới, bạn thêm nó vào LVM bằng vgextend, sử dụng pvmove để di chuyển rootfs sang đĩa mới, sử dụng lvextend và resize2fs để mở rộng ổ đĩa logic và hệ thống tệp tương ứng sau đó sử dụng vgreduce để xóa ổ đĩa cũ khỏi ổ đĩa cũ nhóm. Sau khi loại bỏ âm lượng cũ có thể được rút ra.

Đối với trường hợp đơn giản, bạn có một đĩa nhỏ cho hệ thống tập tin khởi động mà bạn không bao giờ phải chạm vào. Nhưng nếu nó tự sở hữu thì dễ dàng ngắt kết nối, rút ​​phích cắm mới và xây dựng lại đĩa khởi động mà không cần dừng hệ thống. (chỉ không gặp sự cố trong khi bạn đang làm điều đó)

Lưu ý: resize2fs cũng có thể thu nhỏ hệ thống tập tin.


0

Không thể atm, nhưng afaik nó là một tính năng đang được phát triển. Thay vào đó, những gì bạn có thể làm là kết nối với mục tiêu iSCSI từ VM và quản lý không gian trên mục tiêu đó ở phía SAN.


Bạn đã không trả lời câu hỏi bằng một câu trả lời anh ta có thể sử dụng.
Mei

@David: và điều gì khiến bạn nghĩ như vậy và thậm chí hạ thấp câu trả lời của tôi? Làm thế nào để câu trả lời của tôi không cung cấp một cách giải quyết cho vấn đề trong tay?
dyasny

Bạn đã nói "Không thể atm ..." sau đó nói với anh ta về một tính năng không thể có vào lúc này. (Bây giờ, gần hai năm sau, nó có thể khác - nhưng câu trả lời này không nói lên điều đó.)
Mei

1
Vì vậy, hai năm trước tôi nên nói với anh ta "nó sẽ có thể trong hai năm"? Tôi trông giống như một nhà tiên tri cho bạn? Trước đó, hotplugging đang được phát triển, và đó chính xác là những gì tôi đã nói. Sau đó, tôi đưa ra một cách tiếp cận khác để nhận lưu trữ được gắn vào VM, nó sẽ độc lập với toàn bộ bộ tính năng qemu. Không bao giờ tuyên bố đó là cách tiếp cận duy nhất, nhưng nó là một cách.
dyasny

Bây giờ tôi đã hiểu ... Tôi đã chỉnh sửa câu trả lời của bạn để thể hiện rõ hơn ý định của bạn.
Mei
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.