介紹
在云計算技術快速發展的背景下,OpenStack 作為開源的云計算管理平臺,憑借其靈活性、可擴展性和強大的組件生態,成為構建私有云、公有云和混合云的重要選擇。無論是云主機的創建與管理、存儲方案的配置(如 RAID 陣列、Swift 對象存儲、Cinder 塊存儲),還是網絡編排、權限控制、性能調優等,都是 OpenStack 運維與實踐中的核心環節。
本文基于實際操作場景,匯總了 OpenStack 私有云平臺的一系列關鍵實戰操作,涵蓋了從基礎組件配置(如 Heat 模板編寫、云主機與網絡創建)到進階功能實現(存儲后端切換、參數調優),再到故障排查與日常管理(如快照處理、容器部署、權限控制)等多個維度。內容包含詳細的命令步驟、配置示例及驗證方法,旨在為 OpenStack 初學者提供入門指引,同時也為有經驗的運維人員提供一份實用的操作參考手冊,助力快速解決實際場景中的技術問題。
1.Raid磁盤陣列管理
在OpenStack私有云平臺,創建一臺云主機(鏡像使用CentOS7.5,flavor可自定義),并創建一個40G大小的cinder塊存儲,將塊存儲連接到云主機,然后在云主機上對云硬盤進行操作。要求分出4個大小為5G的分區,使用這4個分區,創建名為/dev/md5、raid級別為5的磁盤陣列加一個熱備盤(/dev/vdb4為熱備盤)。
[root@controller ~]# openstack volume create --size 40 1 #1是卷名字 [root@controller ~]# openstack server add volume test 1 #tet云主機名字 [root@test ~]# mdadm -Cv /dev/md5 -l 5 -n 3 /dev/vdb1 /dev/vdb2 /dev/vdb3 -x 1 /dev/vdb4 [root@test ~]# mdadm -D /dev/md5 #mdadm -D:功能 (顯示RAID組詳細信息) mdadm -S /dev/md5 #停止陣列 /dev/md5: Version : 1.2 Creation Time : Mon Aug 16 12:21:50 2025 Raid Level : raid5 Array Size : 10475520 (9.99 GiB 10.73 GB) Used Dev Size : 5237760 (5.00 GiB 5.36 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent ? Update Time : Mon Aug 16 12:21:58 2021 State : clean, degraded, recovering Active Devices : 2 Working Devices : 4 Failed Devices : 0 Spare Devices : 2 ? Layout : left-symmetric Chunk Size : 512K ? Consistency Policy : resync ? Rebuild Status : 8% complete ? Name : test.novalocal:5 (local to host test.novalocal) UUID : 3238632c:7ab29c46:abb35387:c00bbaf5 Events : 2 ? Number Major Minor RaidDevice State 0 253 17 0 active sync /dev/vdb1 1 253 18 1 active sync /dev/vdb2 4 253 19 2 spare rebuilding /dev/vdb3 ? 3 253 20 - spare /dev/vdb4 ?
2.Raid使用場景
RAID5是一種存儲性能、數據安全和存儲成本兼顧的解決方案,RAID5需要3塊或者以上的物理磁盤,可以提供熱備盤顯現故障的恢復;采用奇偶校驗,可靠性強,且只有損壞兩塊硬盤時數據才會完全損壞,只損壞一塊盤時,系統會根據存儲的奇偶校驗位重建數據,臨時提供服務,此時如果有熱備盤,系統還會自動在熱備盤重建故障磁盤上的數據
RAID5使用的場景:
RAID5可以理解為RAID0和RAID5的折中方案。適合對性能和冗余都有一定的要求,又不是十分高的情況,比如MySQL的主從庫、存儲等。普通服務器為了減少維護成本,又保持一定冗余和讀性能都可以做RAID5.
-C ##建立
-a ##文件不存在建立文件
-l ##raid級別
-n ##設備個數
-x ##閑置設備個數
LVM管理:
lvm 邏輯卷,可以讓設備自由伸縮的一個設備管理軟件
pv 物理卷
vg 物理卷組
pe 物理拓展,lvm最小的存儲單元***********************************************************************************
創建volume卷時報錯error解決:
運行一些增加卷的命令到實例中去,會報錯,說volume的狀態是error,不能操作。我們首先進入mysql數據庫,選擇cinder數據庫,更改表volume。操作如下:
MariaDB [(none)]> use cinder;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [cinder]> show tables;
| volume_types |
| volumes |
| workers |
+----------------------------+
35 rows in set (0.00 sec)
更新volumes表MariaDB [cinder]> UPDATE volumes SET status= 'available' WHERE status = 'error';
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3 Changed: 3 Warnings: 0 查看卷的狀態,變成available了。
4.heat模板管理
heat_template_version : 必須,指定模板語法的版本,除了可以指定日期的格式,還可以直接指定 openstack 的版本, 如 rocky description : 可選,描述信息 parameter_groups : 可選,指明輸入參數該如何分組以及參數傳入的順序 parameters : 可選, 定義輸入參數 resources : 必須,定義模板資源 outputs : 可選,定義輸出參數 conditions : 可選,用來控制一個資源什么情況下可以被創建
模板解釋:
-
heat_template_version 在網頁路徑“項目-編排-模板版本”中選一個日期作為值
-
resources-type 在網頁路徑“項目-編排-資源類型”中選擇和題意相符的類型
-
resources-具體參數 在在網頁路徑“項目-編排-資源類型”中點進具體的type中的下面一塊屬性中有參數以及類型
-
outputs-value 在在網頁路徑“項目-編排-資源類型”中點進具體的type中的上面一塊屬性中有參數以及類型,為選填類型
4.1.heat創建用戶
在自行搭建的 OpenStack 私有云平臺或賽項提供的 all-in-one 平臺上,在/root 目錄下編寫 Heat 模板 create_user.yaml,創建名為 heat-user 的用戶,屬于 admin 項目,并賦予 heat-user用戶 admin 的權限,配置用戶密碼為 123456。
[root@controller ~]#iaas-install-heat.sh ? [root@controller ~]# cat create_user.yaml heat_template_version: 2014-10-16 resources: user: type: OS::Keystone::User properties: name: heat-user password: "123456" domain: demo default_project: admin roles: [{"role": admin, "project": admin}] [root@controller ~]#openstack stack create -t user_create.yaml heat_user1
4.2.heat創建flavor類型
在openstack私有云平臺上,在/root目錄下編寫模板server.yaml,創建名為“m1.flavor”、 ID 為 1234、內存為1024MB、硬盤為20GB、vcpu數量為 1的云主機類型。
[root@controller ~]# cat server.yaml heat_template_version: 2014-10-16 #heat_template_version resources: #資源: nova_flavor: type: OS::Nova::Flavor # properties: #屬性:##類型 name: m1.flavor disk: 20 is_public: True #設置共享,默認的 ram: 1024 vcpus: 1 flavorid: 1234 [root@controller ~]# openstack stack create -t server.yaml test [root@controller ~]# openstack flavor list +------+-----------+------+------+-----------+-------+-----------+ | ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public | +------+-----------+------+------+-----------+-------+-----------