AI大模型學習二十四、實踐QEMU-KVM 虛擬化:ubuntu server 25.04 下云鏡像創建Ubuntu 虛擬機

一、說明

雖然說大部分的場合,docker都能解決問題,但是有些大型的軟件安裝時如果修改配置會很麻煩,比方說前面遇到的code-server和dify 默認都是80和443端口要使用,安裝在一起就會端口沖突,通過該端口來解決問題,理論上都行,但是實際我在應用當中發現出現了一些意想不到的問題,也許別人沒有遇到過,但是我確實遇到了,沒辦法,只能把兩個安裝在各自獨立的系統中,這樣就完全隔離。都可以使用原版的軟件,另外保持服務器宿主機本身的完全干凈,畢竟我們平時安裝的東西太多,服務器又沒必要也不適合使用圖形界面,所以命令行安裝就有必要了,這里只是做個記錄,網上教程很多

在 Ubuntu Server 25.04 命令行中安裝 Ubuntu 虛擬機,可以使用?KVM/QEMU?虛擬化工具?

二、 安裝

1、確認系統支持虛擬化

egrep -c '(vmx|svm)' /proc/cpuinfo# 輸出值應大于 0。如果為 0,需在 BIOS 中啟用虛擬化支持。

?2、安裝 KVM/QEMU 及相關工具

sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst

3、 云鏡像下載以及安裝目錄和權限確定

# 目錄和權限設置后面用的到
mkdir -p ~/vm-data
sudo chown -R $USER:libvirt-qemu ~/vm-data
sudo chmod 775 ~/vm-data
sudo chown -R $USER:libvirt-qemu /home/mucuna
sudo chmod 775 /home/mucuna# 下載云鏡像
wget -O /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img https://cloud-images.ubuntu.com/releases/plucky/release/ubuntu-25.04-server-cloudimg-amd64.img

4、將用戶加入 libvirt 組

sudo usermod -aG libvirt $USER
newgrp libvirt  # 立即生效或重新登錄sudo systemctl enable --now libvirtd

5、檢測KVM情況

在 Ubuntu Server 中遇到?"WARNING KVM acceleration not available, using 'qemu'"?表示虛擬機無法使用硬件加速(KVM),將退回到純軟件模擬(QEMU),導致性能顯著下降

1、檢查 CPU 是否支持 Intel VT-x 或 AMD-V 技術:

?egrep -c '(vmx|svm)' /proc/cpuinfo

  • 輸出大于 0:CPU 支持虛擬化,但可能未啟用。

  • 輸出為 0:CPU 不支持或 BIOS 中禁用虛擬化

2、檢查 KVM 內核模塊是否加載

lsmod | grep kvm

  • 正常輸出:應顯示?kvm_intel?或?kvm_amd

3、驗證?/dev/kvm?權限

ls -l /dev/kvm

權限問題:若輸出顯示組為?kvm,將用戶加入?kvm?組:

sudo usermod -aG kvm $USER
newgrp kvm ?# 立即生效或重新登錄


mucuna@x58:~/vm-data$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
?

6、確保?osinfo-db?支持 Ubuntu 25.04

sudo apt install libosinfo-bin# 查看支持的 Ubuntu 版本
osinfo-query os | grep ubuntu# 更新數據庫(Ubuntu 中通常通過 apt)
sudo apt update
sudo apt install osinfo-db

7、編輯元數據信息

#配置用戶與SSH,并設置主機名。
cat > user-data << EOF
#cloud-config
user: root
password: 123456
chpasswd: { expire: False }
ssh_pwauth: True
package_update: true
packages:- qemu-guest-agent
EOFcat > meta-data << EOF
instance-id: dify-vm
local-hostname: dify
EOF

8、生成cloud-init ISO

sudo apt install genisoimagesudo genisoimage -output /home/mucuna/vm-data/ubuntu-cloud-vm.iso -volid cidata -joliet -rock user-data meta-data

9、配置網絡為橋接模式

network:version: 2ethernets:enp2s0:dhcp4: nodhcp6: nobridges:br0:interfaces: [enp2s0]dhcp4: nodhcp4: noaddresses:- "192.168.1.111/24"nameservers:addresses:- 8.8.8.8- 8.8.4.4search: []routes:- to: "default"via: "192.168.1.1"

?應用配置,立馬生效

sudo netplan apply
sudo netplan generate
sudo netplan --debug apply

查看命令

#不是最小安裝已經安裝過了
sudo apt install bridge-utils -ybrctl show

9、創建虛擬機

利用?virt-install?命令的?--import?選項,您可以直接從現有的云鏡像文件創建虛擬機,而無需進行操作系統安裝過程

sudo virt-install \
--name dify-vm \
--vcpus 4 \
--memory 8192 \
--disk path=/home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img \
--disk path=/home/mucuna/vm-data/ubuntu-cloud-vm.iso \
--import \
--os-variant ubuntu25.04 \
--network bridge=br0,model=virtio \
--graphics none \
--console pty,target_type=serial

參數說明:

  • --nographics: 禁用圖形輸出,強制使用控制臺。

  • --extra-args: 向安裝內核傳遞串口控制臺參數。

  • --location: 指定ISO路徑,自動檢測內核和initrd

  • --name: 虛擬機的名稱

  • --ram: 分配給虛擬機的內存,單位是MB,這里是2048MB(2GB)
  • --vcpus: 分配的虛擬CPU數量
  • --disk: 指定虛擬機的磁盤路徑和大小 ,path=/var/lib/libvirt/images/myvm.img是磁盤文件的路徑,size=20是磁盤大小(GB)
  • --os-variant: 操作系統的版本,用于 優化虛擬機配置
  • --network: 指定使用libvirt的默認NAT網絡(network=default
  • 115200n8: (也可以不寫) 串行端口的波特率設置,115200 是波特率,n?表示無奇偶校驗位,8?表示每個數據字節有 8 位
  • console=ttyS0: 將控制臺輸出重定向到第一個串行端口(ttyS0)?

安裝完后直接按回車,進入虛擬機登錄界面?,就是在宿主機的命令行界面

我們在元數據信息中設置用戶為root 密碼為123456用這個登錄,直接就進去了

?

這個時候已經進了虛擬機界面了 ,ping一下百度,可以連接外網

直接用shutdown now命令就可以關閉了

然后在用?virsh start dify-vm 就可以啟動虛擬機

用virsh console dify-vm可以進入上面的界面登錄

10、配置靜態ip

network:version: 2ethernets:enp1s0:dhcp4: nodhcp6: noaddresses:- "192.168.1.111/24"nameservers:addresses:- 8.8.8.8- 8.8.4.4search: []routes:- to: "default"via: "192.168.1.1"

11、管理虛擬機命令

virsh list --all           # 查看所有虛擬機
virsh start dify-vm     # 啟動虛擬機
virsh shutdown dify-vm   # 正常關閉
virsh destroy dify-vm    # 強制停止
virsh edit dify-vm       # 編輯虛擬機配置
virsh undefine dify-vm   # 刪除虛擬機(需先destroy)
virsh console dify-vm     # 進入命令行

?三、遠程ssh登錄

登錄時出現錯誤,修改配置

nano /etc/ssh/sshd_config

找到?#Authentication,將?PermitRootLogin?參數修改為?yes

找到?#Authentication,將?PasswordAuthentication?參數修改為 yes

?由于這個是安裝的云鏡像,

/etc/ssh/sshd_config.d目錄下的50-cloud-init.conf? , 60-cloudimg-settings.conf兩個文件中也有PasswordAuthentication?參數,也要改

修改后?sudo systemctl restart sshd

登錄成功

?四、設置虛擬機開機自啟動

我們有需求,就是在宿主機啟動時,同步啟動虛擬機,很簡單

直接執行

sudo virsh autostart dify-vm

?宿主機開機后,發現虛擬機已經運行了,說明自啟動成功

五、硬盤不夠,咋辦

靠,這云鏡像怎么搞的,這么點?

sudo virsh domblklist dify-vm

?通過執行虛擬磁盤來檢索有關虛擬磁盤的更多詳細信息,例如其當前大小。qemu-img info命令以 VM 磁盤的完整路徑為下:

#vda      /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img
#vdb      /home/mucuna/vm-data/ubuntu-cloud-vm.iso
sudo qemu-img info /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img

才3.5g啊?

檢查快照,有快照不能調節大小,下面顯示沒有

sudo virsh snapshot-list dify-vm

調整KVM虛擬磁盤的大小

調整為增加80g
sudo qemu-img resize /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img +80G
sudo qemu-img info /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81716.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81716.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81716.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安卓中0dp和match_parent區別

安卓中的 0dp 和 match_parent 的區別&#xff1f; 第一章 前言 有段時間&#xff0c;看到同事在編寫代碼的時候&#xff0c;寫到的是 0dp 有時候自己寫代碼的時候&#xff0c;編寫的是 match_parent 發現有時候效果很類似。 后來通過一個需求案例&#xff0c;才發現兩者有著…

二十、案例特訓專題3【系統設計篇】web架構設計

一、前言 二、內容提要 三、單機到應用與數據分離 四、集群與負載均衡 五、集群與有狀態無狀態服務 六、ORM 七、數據庫讀寫分離 八、數據庫緩存Memcache與Redis 九、Redis數據分片 哈希分片如果新增分片會很麻煩&#xff0c;需要把之前數據取出來再哈希除模 一致性哈希分片是…

基于Rust語言的Rocket框架和Sqlx庫開發WebAPI項目記錄(一)

前置說明 開發語言&#xff1a;Rust Web框架&#xff1a;Rocket 數據庫&#xff1a;PostgreSQL 開發步驟 新建項目&#xff1a; cargo new projectname 在Cargo.toml文件里配置如下依賴&#xff1a; [dependencies] rocket {version"0.5.0",features["json&qu…

中國城市間交通駕車距離矩陣(2024)

中國城市間交通駕車距離矩陣(2024) 1852 數據簡介 中國城市中心的交通駕車距離&#xff0c;該數據為通過審圖號GS(2024)0650的中國城市地圖得其城市中心距離&#xff0c;再通過高德地圖api計算得出其交通駕車最短距離矩陣&#xff0c;單位為KM&#xff0c;方便大家研究使用。…

MySQL替換瀚高數據庫報錯: TO_DAYS()不存在(APP)

文章目錄 環境癥狀問題原因解決方案報錯編碼 環境 系統平臺&#xff1a;中標麒麟&#xff08;海光&#xff09;7,中標麒麟&#xff08;飛騰&#xff09;7 版本&#xff1a;4.5 癥狀 MySQL替換為瀚高數據庫進行應用系統適配報錯&#xff1a;TO_DAYS&#xff08;&#xff09;不…

驅動-Linux定時-timer_list

了解內核定時相關基礎知識 文章目錄 簡要介紹timer_list 特點API 函數實驗測試程序 - timer_mod.c編譯文件-Makefile實驗驗證 注意事項總結 簡要介紹 硬件為內核提供了一個系統定時器來計算流逝的時間&#xff08;即基于未來時間點的計時方式&#xff0c; 以當前時刻為計時開始…

計算機網絡概要

?絡相關基礎知識 協議 兩設備之間使?光電信號傳輸信息數據 要想傳遞不同信息 那么?者?就需要約定好的數據格式 層 封裝 繼承 多態是計算機的性質 它們?持了軟硬件分層的實現 同層協議可以?接通信 同層協議?不直接通信 是各?調?下層提供的結構能?完成通信 分層…

QT 使用QPdfWriter和QPainter繪制PDF文件

QT如何生產pdf文件&#xff0c;網上有許多文章介紹&#xff0c;我也是看了網上的文章&#xff0c;看他們的代碼&#xff0c;自己琢磨琢磨&#xff0c;才有了本編博客&#xff1b; 其他什么就不詳細說了&#xff0c;本篇博客介紹的QPdfWriter和QPainter繪制PDF文件&#xff1b;…

企業標準信息公共服務平臺已開放標準通編輯器訪問入口

標準通 數字化標準編輯器 專業、高效、便捷 企業標準信息公共服務平臺 近日&#xff0c;企業標準信息公共服務平臺已開放標準通編輯器訪問入口&#xff0c;可進入官網指定版塊使用&#xff01; 核心功能亮點 解決企業痛點 傳統標準編制&#xff0c;需反復核對格式、逐條…

【Hadoop】--HA高可用搭建--3.2.2

修改環境配置文件 hadoop-env.sh # 在文件末尾添加以下內容&#xff1a; # java_home記得修改 export JAVA_HOME/usr/java/jdk1.8.0xxxx export HDFS_NAMENODE_USERroot export HDFS_DATANODE_USERroot export HDFS_ZKFC_USERroot export HDFS_JOURNALNODE_USERroot export YA…

【skywalking】index“:“skywalking_metrics-all“},“status“:404}

skywalking 啟動報錯 java.lang.RuntimeException: {"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index [skywalking_metrics-all]","resource.t ype":"inde…

【Android】從垂直同步到屏幕刷新機制(一)

【Android】從垂直同步到屏幕刷新機制 本文參考以及部分圖片來源&#xff1a; 垂直同步_小科普&#xff1a;“垂直同步”究竟是什么&#xff1f;-CSDN博客 “終于懂了” 系列&#xff1a;Android屏幕刷新機制—VSync、Choreographer 全面理解&#xff01;-騰訊云開發者社區-騰訊…

ACL完全解析:從權限管理到網絡安全的核心防線

訪問控制列表&#xff08;ACL&#xff09;是一種用于管理資源訪問權限的核心安全機制&#xff0c;廣泛應用于操作系統和網絡設備中。以下是對ACL的詳細解析&#xff1a; 1. 基本概念 定義&#xff1a;ACL是由多個訪問控制條目&#xff08;ACE&#xff09;組成的列表&#xff0…

代碼審計-php框架開發,實戰tp項目,打擊微交易,源碼獲取,擴大戰果

實戰&#xff0c;不安全寫法引發的注入 這個bc靶場源碼沒有&#xff0c;看老師演示 打開很明顯的tp框架源碼 拿到tp框架之后第一步&#xff0c;搜索版本信息5.0.5 兩個思路 1.代碼的不安全寫法 2.版本自身存在的漏洞 全局搜索where看看也沒有不安全的 哎&#xff1f;&…

大模型的實踐應用43-基于Qwen3(32B)+LangChain框架+MCP+RAG+傳統算法的旅游行程規劃系統

大家好,我是微學AI,今天給大家介紹一下大模型的實踐應用43-基于Qwen3(32B)+LangChain框架+MCP+RAG+傳統算法的旅游行程規劃系統。本報告將闡述基于大模型Qwen3(32B)、LangChain框架、MCP協議、RAG技術以及傳統算法構建的智能旅游行程規劃系統。該系統通過整合多種技術優勢,實…

Jsoup庫和Apache HttpClient庫有什么區別?

Jsoup 和 Apache HttpClient 是兩個功能不同的庫&#xff0c;它們在 Java 開發中被廣泛使用&#xff0c;但用途和功能有明顯的區別&#xff1a; Jsoup 用途&#xff1a;Jsoup 是一個用于解析 HTML 文檔的庫。它提供了非常方便的方法來抓取和解析網頁內容&#xff0c;提取和操作…

騰訊云存儲原理

我們來詳細展開你提到的兩個核心結構概念&#xff1a; 一、“基于分布式文件系統 對象存儲技術” 是什么&#xff1f; 1. 分布式文件系統&#xff08;DFS&#xff09;基礎 分布式文件系統是一種支持將數據分布在多個存儲節點上、并對上層用戶透明的文件系統。騰訊云COS雖然是…

python fastapi + react, 寫一個圖片 app

1. 起因&#xff0c; 目的: 上廁所的時候&#xff0c;想用手機查看電腦上的圖片&#xff0c;但是又不想點擊下載。此app 應運而生。 2. 先看效果 單擊圖片&#xff0c;能放大圖片 3. 過程: 過程很枯燥。有時候&#xff0c; 有一堆新的想法。 但是做起來太麻煩&#xff0c;…

Kubernetes控制平面組件:Kubelet詳解(五):切換docker運行時為containerd

云原生學習路線導航頁&#xff08;持續更新中&#xff09; kubernetes學習系列快捷鏈接 Kubernetes架構原則和對象設計&#xff08;一&#xff09;Kubernetes架構原則和對象設計&#xff08;二&#xff09;Kubernetes架構原則和對象設計&#xff08;三&#xff09;Kubernetes控…

QT6 源(111):閱讀與注釋菜單欄 QMenuBar,進行屬性與成員函數測試,信號與槽函數測試,并給出源碼

&#xff08;1&#xff09; &#xff08;2&#xff09; &#xff08;3&#xff09; &#xff08;4&#xff09; &#xff08;5&#xff09; &#xff08;6&#xff09; &#xff08;7&#xff09;以下源代碼來自于頭文件 qmenubar . h &#xff1a; #ifndef QMENUBAR_H #defi…