ubuntu-24.04.2-live-server-arm64基于cloud-init實現分區自動擴容(LVM分區模式)

1. 環境

虛擬機鏡像ISO:ubuntu-24.04.2-live-server-arm64.iso


2. 定制cloud-init鏡像

2.1 安裝OS

基于ubuntu-24.04.2-live-server-arm64.iso,通過virt-manager安裝操作系統,語言建議選擇英文,分區選擇基于LVM的自動分區,具體的操作系統安裝步驟可以查閱網上資料。

2.2 配置靜態IP地址

vim /etc/netplan/01-netcfg.yaml

network:version: 2renderer: networkdethernets:enp1s0: dhcp4: noaddresses:- 172.19.0.200/24routes:- to: defaultvia: 172.19.0.254nameservers:addresses:- 223.5.5.5

2.3 配置源

vim /etc/apt/sources.list.d/ubuntu.sources

Types: deb deb-src
URIs: http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg#Types: deb
#URIs: http://ports.ubuntu.com/ubuntu-ports/
#Suites: noble noble-updates noble-backports
#Components: main restricted universe multiverse
#Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
#
#Types: deb
#URIs: http://ports.ubuntu.com/ubuntu-ports/
#Suites: noble-security
#Components: main restricted universe multiverse
#Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

2.4 安裝開發包

sudo apt update
sudo apt build-dep linux linux-image-unsigned-$(uname -r)
sudo apt install fakeroot llvm libncurses-dev dwarves gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf git
apt source linux-image-unsigned-$(uname -r)
sudo apt install docker.io

2.5 安裝cloud-init

sudo apt install cloud-init cloud-guest-utils

2.6 配置啟用密碼登錄

vim /etc/cloud/cloud.cfg

disable_root: false

2.7 配置自動擴容

通過fdisk -l系統分區情況,如下所示:

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: gpt
Disk identifier: C992E753-0498-4FFE-B859-9B5B8C0EF2A5Device       Start      End  Sectors  Size Type
/dev/vda1     2048  1953791  1951744  953M EFI System
/dev/vda2  1953792  5623807  3670016  1.8G Linux filesystem
/dev/vda3  5623808 41940991 36317184 17.3G Linux filesystemDisk /dev/mapper/ubuntu--vg-ubuntu--lv: 10 GiB, 10737418240 bytes, 20971520 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

通過blkid查看塊設備詳情,如下所示:

/dev/sr0: BLOCK_SIZE="2048" UUID="2025-02-16-22-52-55-00" LABEL="Ubuntu-Server 24.04.2 LTS arm64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/ubuntu--vg-ubuntu--lv: UUID="99a93588-73ac-47d9-af78-5104f694157c" BLOCK_SIZE="4096" TYPE="ext4"
/dev/vda2: UUID="2a798038-e186-4211-a68e-40c5f0de176b" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="d87cecc0-0786-4b52-b2e8-a9e17c4deb75"
/dev/vda3: UUID="4BxQxy-zrfh-QVKZ-xqtA-WVbz-KGGt-2319JR" TYPE="LVM2_member" PARTUUID="e58c8695-ab27-4980-b52f-b7010f2fc1ce"
/dev/vda1: UUID="5D46-E9E3" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="dfcdd546-be2e-44eb-a1a5-7071fb372135"

根據以上信息,得知我們需要自動擴容vda3分區(growpart)、擴容LVM和ext4文件系統(runcmd)。
創建文件/etc/cloud/cloud.cfg.d/06_growpart.cfg
vim /etc/cloud/cloud.cfg.d/06_growpart.cfg

#cloud-config
growpart:mode: autodevices: [/dev/vda3]ignore_growroot_disabled: false
runcmd:- [pvresize,/dev/vda3]- [lvextend,-l,+100%FREE,/dev/mapper/ubuntu--vg-ubuntu--lv]- [resize2fs,/dev/mapper/ubuntu--vg-ubuntu--lv]

2.8 配置網絡位置為DHCP

vim /etc/netplan/01-netcfg.yaml

network:version: 2renderer: networkdethernets:enp1s0: dhcp4: yes

2.9 清理cloud-init信息

cat /etc/cloud/cloud-init.disabled

Disabled by Ubuntu live installer after first boot.
To re-enable cloud-init on this image run:sudo cloud-init clean --machine-id

執行如下命令,關閉虛擬機,鏡像制作完畢

sudo cloud-init clean --machine-id

2.10 上傳至云平臺

source /root/admin-openrc.sh
glance image-create --name ubuntu-24.04.2-live-server-arm64-20250418 --disk-format qcow2 --container-format bare --file ubuntu-24.04.2-live-server-arm64-20250418.qcow2 --property hw_scsi_model=virtio-scsi --property hw_disk_bus=virtio --property os_distro=kylin --visibility public --progress

注意:由于上述分區采用的是virtio模式,故這個屬性也必須設置為–property hw_disk_bus=virtio。

啟動虛擬機,指定相應的磁盤大小,如200GB,進入虛擬機查看根分區擴容情況,df -hl查看如下所示:

Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              792M  1.2M  791M   1% /run
efivarfs                           256K   13K  244K   5% /sys/firmware/efi/efivars
/dev/mapper/ubuntu--vg-ubuntu--lv  195G  6.3G  180G   4% /
tmpfs                              3.9G     0  3.9G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/vda2                          1.7G  100M  1.5G   7% /boot
/dev/vda1                          952M  6.4M  945M   1% /boot/efi
tmpfs                              792M   12K  792M   1% /run/user/0

虛擬機啟動和調整參考各個openstack發行版本或商業版本,可能略有不同,這里不再贅述。


3. 參考文獻

Kylin v10基于cloud-init實現分區自動擴容(LVM分區模式)
Kylin v4基于cloud-init實現分區自動擴容

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

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

相關文章

vue3專題1------父組件中更改子組件的屬性

理解 Vue 3 中父組件如何引用子組件的屬性是一個很重要的概念。 這里涉及到 defineExpose 和 ref 這兩個關鍵點。 方法:使用 defineExpose 在子組件中暴露屬性,然后在父組件中使用 ref 獲取子組件實例并訪問暴露的屬性。 下面我將詳細解釋這個過程&…

數據倉庫分層架構解析:從理論到實戰的完整指南??

數據倉庫分層是構建高效數據體系的核心方法論。本文系統闡述ODS、DWD、DWS、ADS四層架構的設計原理,結合電商用戶行為分析場景,詳解各層功能及協作流程,并給出分層設計的原則與避坑指南,幫助讀者掌握分層架構的落地方法。 一、為什…

從零搭建一套前端開發環境

一、基礎環境搭建 1.NVM(Node Version Manager)安裝 簡介 nvm(Node Version Manager) 是一個用于管理多個 Node.js 版本的工具,允許開發者在同一臺機器上輕松安裝、切換和使用不同版本的 Node.js。它特別適合需要同時維護多個項目&#xff…

計算機組成原理筆記(十六)——4.1基本算術運算的實現

計算機中最基本的算術運算是加法運算,加、減、乘、除運算最終都可以歸結為加法運算。 4.1.1加法器 一、加法器的基本單元 加法器的核心單元是 全加器(Full Adder, FA),而所有加法器都由 半加器(Half Adder, HA&…

利用Qt創建一個模擬問答系統

界面: 添加了聊天顯示區域(QTextEdit) 添加了發送按鈕和清空對話按鈕 優化了布局和窗口大小添加了時間戳顯示 2、功能: 支持實時對話可以清空對話歷史 支持按回車發送消息 添加了簡單的關鍵詞匹配響應系統 交互體驗&#x…

神經光子渲染:物理級真實感圖像生成——從麥克斯韋方程到深度學習

一、技術背景與核心突破 2025年,神經光子渲染(Photonic Neural Rendering, PNR)技術通過物理光學方程與神經輻射場的深度融合,在AIGC檢測工具(如GPTDetector 5.0)的識別準確率從98%降至12%。該技術突破性地…

Linux中手動安裝7-Zip軟件文檔

7zip位于EPEL源中,如果服務器可以聯網或者配置了本地EPEL源則可以直接安裝 yum install p7zip p7zip-plugins -y對于無法聯網且沒有配置本地EPEL源的服務器,可以通過官網下載安裝包后,上傳至服務器,手動安裝 ## 下載地址&#x…

[密碼學基礎]GM/T 0018-2023 密碼設備應用接口規范深度解析:技術革新與開發者實踐

GM/T 0018-2023 密碼設備應用接口規范深度解析:技術革新與開發者實踐 GM/T 0018-2023《密碼設備應用接口規范》是中國密碼行業的重要標準,于2023年12月4日發布,2024年6月1日正式實施,替代了2012年版標準。該標準旨在規范密碼設備…

8.QT-按鈕類控件|Push Button|Radio Button|Check Box|Tool Button(C++)

Push Button 使? QPushButton 表??個按鈕.這也是當前我們最熟悉的?個控件了. QPushButton 繼承? QAbstractButton .這個類是?個抽象類.是其他按鈕的?類 在Qt Designer中也能夠看到這?的繼承關系 屬性說明text按鈕中的?本icon按鈕中的圖標iconSize按鈕中圖標的尺?sh…

CFIS-YOLO:面向邊緣設備的木材缺陷檢測輕量級網絡解析

論文地址:https://arxiv.org/pdf/2504.11305 目錄 一、論文核心貢獻 二、創新點詳解 2.1 CARAFE動態上采樣 工作原理 優勢對比 2.2 C2f_FNB輕量模塊 計算效率 2.3 Inner-SIoU損失函數 三、實驗驗證 3.1 消融實驗 3.2 對比實驗 四、應用部署 4.1 邊緣設備部署流程…

BUUCTF PWN刷題筆記(1-9)

才知道,由于棧對齊,直接動調看棧估計會錯,用cyclic看 1.test_your_nc NC連接一下,這個網站似乎直接訪問是不中的,懷疑是沒開啟web的端口。NC鏈接輸入cat flag就OK了,應該只是讓我這樣的小菜鳥培養自信用的…

C#處理網絡傳輸中不完整的數據流

1、背景 在讀取byte數組的場景(例如:讀取文件、網絡傳輸數據)中,特別是網絡傳輸的場景中,非常有可能接收了不完整的byte數組,在將byte數組轉換時,因字符的缺失/增多,轉為亂碼。如下…

PostgreSQL 用戶資源管理

PostgreSQL 用戶資源管理 PostgreSQL 提供了多種機制來管理和限制用戶對數據庫資源的使用,以下是全面的資源管理方法: 1 連接限制 1.1 限制最大連接數 -- 在 postgresql.conf 中設置 max_connections 100 -- 全局最大連接數-- 為特定用戶設置連接限…

新書速覽|OpenCV計算機視覺開發實踐:基于Qt C++

《OpenCV計算機視覺開發實踐:基于Qt C》 本書內容 OpenCV是計算機視覺領域的開發者必須掌握的技術。《OpenCV計算機視覺開發實踐:基于Qt C》基于 OpenCV 4.10與Qt C進行編寫,全面系統地介紹OpenCV的使用及實戰案例,并配套提供全書示例源碼、PPT課件與作…

【上位機——MFC】消息映射機制

消息映射機制 Window消息分類消息映射機制的使用代碼示例 MFC框架利用消息映射機制把消息、命令與它們的處理函數映射起來。具體實現方法是在每個能接收和處理消息的類中,定義一個消息和消息函數指針對照表,即消息映射表。 在不重寫WindowProc虛函數的大…

docker學習筆記2-最佳實踐

一、在容器中啟動mysql的最佳實踐 (一)查找目錄 1、mysql的配置文件路徑 /etc/mysql/conf.d 2、mysql的數據目錄 /var/lib/mysql 3、環境變量 4、端口 mysql的默認端口3306。 (二)啟動命令 docker run -d -p 3306:3306 …

Vue3核心源碼解析

/packages/complier-core 定位??:??編譯時核心??,處理 Vue 模板的編譯邏輯。??核心功能??: ??模板解析??:將 .vue 文件的模板語法(HTML-like)解析為 ??抽象語法樹 (AST)??。??轉換優化…

n8n 中文系列教程_05.如何在本機部署/安裝 n8n(詳細圖文教程)

n8n 是一款強大的開源工作流自動化工具,可幫助你連接各類應用與服務,實現自動化任務。如果你想快速體驗 n8n 的功能,本機部署是最簡單的方式。本教程將手把手指導你在 Windows 或 MacOS 上通過 Docker 輕松安裝和運行 n8n,無需服務…

【python】pyCharm常用快捷鍵使用-(2)

pyCharm常用快捷鍵使用 快速導入任意類 【CTRLALTSPACE】代碼補全【CTRLSHIFTENTER】代碼快速修正【ALTENTER】代碼調試快捷鍵

Docker 鏡像、容器和 Docker Compose的區別

前言:Docker 的鏡像、容器和 Docker Compose 是容器化技術的核心組件,以下是對它們的詳細解析及使用場景說明。 ??1、Docker 鏡像(Image)?? ??定義??: 鏡像是只讀模板,包含運行應用程序所需的代碼、…