Trong bài viết này, chúng tôi sẽ nói về cách thay đổi kích thước đĩa máy ảo KVM cho các loại đĩa phổ biến. Chúng tôi sẽ trình bày cách tăng kích thước đĩa máy ảo một cách chính xác trong trình siêu giám sát KVM trên Linux mà không làm mất dữ liệu và thảo luận về các tùy chọn để giảm kích thước đĩa.
Làm cách nào để Tăng / Mở rộng Kích thước Đĩa Máy ảo KVM?
Tăng đĩa ảo trên KVM
Hãy xem xét một ví dụ về việc tăng kích thước của đĩa ảo 20 GB. Tắt máy ảo trước khi thay đổi cài đặt đĩa ảo của nó.
Để xem cài đặt đĩa ảo của máy ảo KVM, hãy sử dụng lệnh sau:
qemu-img info /path_to_disk
Bạn sẽ thấy kết quả như sau:
Chúng tôi thấy rằng có hai trường hiển thị kích thước:virtual_size và disk_size:
- virtual_size - là kích thước của đĩa ảo được đặt khi tạo hoặc mở rộng đĩa (trong ví dụ này, kích thước đĩa tối đa là 20GB);
- disk_size - là kích thước hiện tại của tệp đĩa, i. e., dung lượng đĩa chiếm trên máy chủ vật lý (chỉ áp dụng cho định dạng đĩa qcow). Trong ví dụ của chúng tôi, đĩa ảo chỉ chiếm 1,6 GB trên bộ nhớ.
Trong bước tiếp theo, tôi sẽ tăng kích thước của máy ảo lên 5GB (để mở rộng ổ đĩa đúng cách, máy ảo không được có bất kỳ ảnh chụp nhanh nào!).
# qemu-img resize /path to disk +5G
Đã thay đổi kích thước hình ảnh.
Nếu bạn kiểm tra cài đặt đĩa ảo, bạn sẽ nhận thấy rằng nó đã được mở rộng:
# qemu-img info /path_to_disk
image:/ path_to_diskfile format:qcow2virtual size:25G (26843535600 bytes) disk size:1.6Gcluster_size:65536Chúng tôi đã hoàn thành một phần công việc của mình, nhưng chúng tôi cũng cần một số hành động trong hệ điều hành khách của máy ảo. Bây giờ, chúng tôi sẽ hướng dẫn cách mở rộng kích thước đĩa trong CentOS 7 dành cho khách và Windows Server 2012 R2.
Nếu bạn định thêm một đĩa ảo khác cho máy ảo của mình trong KVM hypervisor, hãyqemu-img
vàvirsh
các công cụ được sử dụng.Cách mở rộng phân vùng trong máy ảo chạy CentOS Linux?
Sau khi tăng kích thước đĩa ảo ở phía máy chủ KVM, hãy khởi động máy ảo của bạn và kết nối với nó. Chúng tôi sẽ sử dụng công cụ quản lý phân vùng đĩa cứng fdisk để mở rộng phân vùng và kích thước hệ thống tệp.
Kết nối với Hệ điều hành khách VM qua SSH và đảm bảo rằng 5 Gb dung lượng đĩa bổ sung sẽ xuất hiện.
df –h
fdisk -l
Ảnh chụp màn hình cho thấy / dev / vda2 có kích thước 20GB và dung lượng ổ đĩa khả dụng là 25GB.
Hãy mở rộng / dev / vda2 đến kích thước tối đa hiện có:
# fdisk /dev/vda
Chào mừng bạn đến với fdisk (use-linux 2.23.2). Các thay đổi sẽ chỉ lưu trong bộ nhớ, cho đến khi bạn quyết định ghi chúng. Hãy cẩn thận trước khi sử dụng lệnh write.Command (m để được trợ giúp): d Số phân vùng (1,2, mặc định 2):Phân vùng 2 bị xóa Lệnh (m để được trợ giúp): n Loại phân vùng:p chính (1 chính, 0 mở rộng, 3 miễn phí) e mở rộngChọn (p mặc định): p Số phân vùng (2-4, mặc định 2):Khu vực đầu tiên (1050624-52428799, mặc định 1050624):Sử dụng giá trị mặc định 1050624 Khu vực cuối cùng, + khu vực hoặc + kích thước {K, M, G} (1050624-52428799, mặc định 52428799):Sử dụng giá trị mặc định 52428799Phân vùng 2 thuộc loại Linux và có kích thước 24,5 GiB là setCommand (m để được trợ giúp): w Bảng phân vùng đã được thay đổi! Gọi ioctl () để đọc lại bảng phân vùng CẢNH BÁO:Không thể đọc lại bảng phân vùng với lỗi 16:Thiết bị hoặc tài nguyên bận. Hạt nhân vẫn sử dụng bảng cũ. Bảng mới sẽ được sử dụng vào lần khởi động lại tiếp theo hoặc sau khi bạn chạy partprobe (8) hoặc kpartx (8) Đồng bộ hóa đĩa.Sau đó khởi động lại máy ảo và chạy lệnh sẽ áp dụng kích thước đĩa mới:
# xfs_growfs /dev/vda2
meta-data =/ dev / vda2 isize =512 agcount =4, agsize =1277888 blks =sectsz =512 attr =2, projid32bit =1 =crc =1 finobt =0 spinodes =0data =bsize =4096 blocks =5111552 , imaxpct =25 =sunit =0 swidth =0 blksnaming =version 2 bsize =4096 ascii-ci =0 ftype =1log =internal bsize =4096 blocks =2560, version =2 =sectsz =512 sunit =0 blks, lazy-count =1realtime =none extsz =4096 blocks =0, rtextents =0data blocks đã thay đổi từ 5111552 thành 6422272
# df -h
Kích thước hệ thống tệp đã sử dụng Thời gian sử dụng% được gắn ondevtmpfs 485M 0 485M 0% / devtmpfs 496M 0 496M 0% / dev / shmtmpfs 496M 6.6M 489M 2% / runtmpfs 496M 0 496M 0% / sys / fs / cgroup / dev / vda2 25G 1.3G 24G 6% // dev / vda1 488M 100M 353M 23% / boottmpfs 100M 0 100M 0% / run / user / 0Kết quả là chúng ta có một phân vùng mở rộng / dev / vda2. Đây là chính xác những gì chúng tôi đã làm:
- fdisk / dev / vda - chúng tôi đã chạy fdisk và kết nối với / dev / vda;
- / d - chúng tôi đã xóa phân vùng. Theo mặc định, đó là phân vùng 2 mà chúng tôi cần, vì vậy chúng tôi chỉ cần nhấn Enter trong mục tiếp theo;
- / n - chúng tôi đã tạo một phân vùng mới và nhấn Enter hoặc p , sau đó nhấn Enter một lần nữa, vì phân vùng chúng tôi đang cố tạo sẽ là 2 theo mặc định;
- Khi chỉ định khu vực đầu tiên và cuối cùng, chúng tôi cũng chỉ cần nhấn Enter nếu bạn muốn mở rộng phân vùng đến mức tối đa. Nếu bạn muốn đặt kích thước cụ thể, hãy nhập kích thước đĩa vào khu vực cuối cùng như được hiển thị trong menu + kích thước {K, M, G};
- / w - để áp dụng các cài đặt mới.
Sau khi máy ảo khởi động lại, hãy kiểm tra đĩa bằng lệnh sau:
xfs_growfs /dev/vda2
Một số nguồn khuyên bạn nên sử dụng lệnh sau:
resize2fs /dev/vda2
Nhưng nó sẽ không hoạt động với hệ thống tệp XFS!
Như vậy, bạn đã mở rộng kích thước đĩa trên máy ảo chạy CentOS 7.
Làm cách nào để tăng kích thước đĩa trong máy chủ Windows khách?
Kết nối với máy ảo Windows Server bằng RDP hoặc VNC và mở rộng đĩa.
- Open Server Manager -> Tools -> Computer Management;
- Chọn Bộ nhớ -> Quản lý đĩa trong ngăn bên trái. Tất cả các phân vùng ổ đĩa của bạn và không gian chưa được phân bổ đã thêm sẽ xuất hiện;
- Chọn phân vùng bạn muốn tăng và nhấp vào Mở rộng Âm lượng ;
- Theo mặc định, tất cả dung lượng có sẵn sẽ được cung cấp để tăng kích thước đĩa;
- Nhấp vào Tiếp theo để kết thúc tiện ích mở rộng. Sau đó, kích thước phân vùng của bạn sẽ được tăng lên.
Tôi muốn lưu ý rằng trước khi mở rộng đĩa máy ảo của bạn, tôi khuyên bạn nên sao lưu đĩa ảo. Dừng máy ảo và sao chép ảnh đĩa vào thư mục sao lưu có một số dung lượng trống. Nếu có sự cố xảy ra trong quá trình mở rộng, bạn sẽ luôn có thể khôi phục ảnh đĩa ảo từ bản sao lưu.
Làm cách nào để giảm kích thước đĩa của Máy ảo KVM?
Trong công việc của mình, tôi thường gặp vấn đề này, nhưng rất tiếc, bạn không thể giảm kích thước ổ đĩa của máy ảo trong KVM một cách an toàn. Cách duy nhất được chấp nhận để giảm kích thước đĩa ảo trên bộ lưu trữ vật lý là chuyển đổi đĩa.
Có rất nhiều hướng dẫn trên web về cách giảm dung lượng ổ đĩa trong máy ảo KVM, nhưng cách này không hiệu quả.
Tôi sẽ đưa ra một số ví dụ mà tôi đã xem qua và thử nghiệm.
Giảm kích thước đĩa KVM bằng Qemu
Một số tài nguyên mô tả các hành động bạn có thể thực hiện với công cụ qemu. Họ đề nghị giảm dung lượng đĩa máy ảo bằng lệnh này:
qemu-img resize /path_to_disk -5G
- để thu nhỏ dung lượng ổ đĩa bằng 5G
Hoặc tùy chọn sau mà bạn đặt kích thước đĩa ảo cụ thể:
qemu-img resize /path_to_disk 25G
- để đặt kích thước đĩa thành 25G
Điều gì xảy ra sau khi chạy lệnh này? Sau khi khởi động máy chủ, hệ thống sẽ không khởi động:
Không thể xác minh siêu khối, đang tiếp tục ... Rất tiếc, không thể tìm thấy siêu khối phụ hợp lệ. Đang thoát.
Trước tiên, tôi đã cố gắng giảm dung lượng đĩa trong hệ thống bằng fdisk, nhưng hệ thống sẽ không khởi động ngay cả khi bạn bỏ qua việc thu nhỏ đĩa của mình trên máy chủ vật lý. Và nó khá logic. Phân vùng chúng tôi đang cố gắng giảm là một hệ thống và hệ điều hành sẽ không khởi động được vì thông tin trên đó rõ ràng bị xóa khi cố gắng giảm kích thước của nó.
Giảm kích thước đĩa ảo bằng tính năng thay thế hình ảnh
Biến thể ít phổ biến hơn trong các hướng dẫn này là giảm dung lượng đĩa bằng cách sử dụng thay thế đĩa. Nó có nghĩa là bạn tạo một máy ảo mới với kích thước đĩa bạn cần. Sau đó, bạn thay thế hình ảnh đĩa mới bằng hình ảnh cũ và nó hoạt động dựa trên các mô tả trong các nguồn khác nhau. Tôi đã kiểm tra phương pháp này và hệ thống tệp không thể hoạt động như trong biến thể trước đó. Đây là một ví dụ về lệnh:
virt-resize /old_disk_image /new_disk_image
Cũng có một số phương pháp sử dụng chuyển đổi đĩa từ định dạng thô sang qcow2, nhưng ban đầu tôi đang tạo máy ở định dạng này và đây là giải thích tại sao tôi làm như vậy.
Định dạng đĩa KVM và Nén đĩa QCOW2
Trong phần đầu của bài viết, tôi đã đề cập đến hai định dạng đĩa này:raw và qcow.
Nguyên ưu điểm là hiệu suất tối đa và tính tổng quát. Nhưng nó có rất nhiều nhược điểm, trong số đó chính là:
- Tệp đĩa ảo chiếm tất cả dung lượng được cấp cho nó trên máy chủ vật lý;
- Bạn không thể chụp nhanh.
Qcow2 là định dạng siêu giám sát QEMU và QEMU-KVM gốc. Đây là định dạng đĩa ảo thuận tiện nhất so với tất cả các định dạng khác được hỗ trợ trong KVM. Hình ảnh đĩa tăng lên khi dữ liệu được tích lũy trong máy ảo và ảnh chụp nhanh được hỗ trợ.
Ưu điểm của qcow2 là gì? Bạn không cần phải giảm kích thước của đĩa ảo của mình vì nó chỉ chiếm nhiều dung lượng trên bộ lưu trữ máy chủ khi nó cần. Nếu dữ liệu liên tục bị ghi đè trên máy chủ của bạn và đĩa bị phồng lên, bạn có thể dễ dàng nén nó. Hãy xem xét tùy chọn này. Tôi sẽ lấp đầy một số không gian đĩa ảo bằng các số 0 và sau đó xóa tệp:
dd if=/dev/zero of=/mytempfile
rm -rf /mytempfile
Khi bạn kiểm tra nó từ máy chủ của mình, trước đó kích thước của hình ảnh đĩa là 2,4G và sau đó nó trở thành 5,9G:
# du -sh /image_path
2,4G *****
# du -sh / image_path
5,9G *****
Có nghĩa là sau khi xóa thông tin khỏi máy ảo, dung lượng đĩa ảo vẫn chưa bị thu hẹp. Để tệp đĩa ảo có thể có kích thước thực, tôi sử dụng phương pháp sau:
Sao lưu tệp đĩa ảo, dừng máy ảo và sau đó thực hiện các bước sau:
qemu-img convert -O qcow2 /old_image /new_image
Sau đó, bạn có thể so sánh kích thước của cả hai đĩa:
# du -sh /new_disk
1.6G / ****
# du -sh /old_disk
5,8G / ****
Như bạn có thể thấy, kích thước của đĩa nén là 1,6G. Đổi tên tệp ảnh đĩa mới khi bạn cần và khởi động máy ảo:
# df -h
Kích thước hệ thống tệp đã sử dụng Thời gian sử dụng% được gắn ondevtmpfs 485M 0 485M 0% / devtmpfs 496M 0 496M 0% / dev / shmtmpfs 496M 6.6M 489M 2% / runtmpfs 496M 0 496M 0% / sys / fs / cgroup / dev / vda2 25G 1.3G 24G 6% // dev / vda1 488M 100M 353M 23% / boottmpfs 100M 0 100M 0% / run / user / 0
Phương pháp này hoạt động. Trong suốt thời gian sử dụng, tôi chưa gặp trường hợp hệ thống tập tin trong máy ảo bị lỗi. Nhưng tôi thực sự khuyên bạn nên sao lưu đĩa trước khi làm bất cứ điều gì để không bị mất bất kỳ dữ liệu nào.
Đây là tất cả những gì tôi muốn kể trong bài viết này. Nếu bất kỳ ai của khách truy cập trang web này biết bất kỳ phương pháp thực sự có thể hành động nào khác để giảm kích thước đĩa trên KVM (không phải nén), hãy mô tả chúng ở đây và tôi sẽ kiểm tra chúng.