安装ubuntu操作系统
安装vmware,我这的版本是16 。
自行百度安装vmware软件。
创建虚拟机
-
打开新建虚拟机,选择自定义嘛
-
硬件兼容性我选择12是因为我服务器上的vmware的版本是12,所以我才选择12,你可以直接默认你当前版本。
-
选择镜像文件
-
自定义名称,用户名和密码
-
设置VMware中的这个系统名称和存放位置
-
选择cpu
-
内存必须大于8G
-
这些默认即可
-
容量大一点把 我这弄的200G
-
下面开启此虚拟机取消,点击完成
设置网络。【你没有啥特殊需求,忽略该步骤】
网络改为192.168.59
段【因为我服务器上的vmware是这个段,上面虚拟机很多不方便改,所以我就在制作这个镜像的时候改】
开启处理器虚拟化
编辑虚拟机,处理器中开启cpu虚拟化,并且确认网络是nat后就直接开起虚拟机
开始安装ubuntu系统
-
我这以安装20.4为例。
-
选择默认english回车
-
选择默认continiu回车
-
选择默认none回车
-
会自动获取到ip,然后默认none回车
-
选择默认none回车
-
方向键将地址改为华为云
https://repo.huaweicloud.com/ubuntu
【不改默认使用官网源,也不会报错,但安装过程会非常慢】,然后选择none回车
-
方向键选择none回车
-
选择none回车后再弹窗窗口选择continue回车【这里只是提示,磁盘将格式化,下一步后将无法后退,问是否继续】。
-
按下面说明输入名称
-
这个要按空格选中【回车和空格都能选择,选择后会显示
x
】,否则无法使用远程工具连接,若忘记勾选,也可以等系统安装完成后使用sudo apt-get install openssh-server -y
命令安装
-
什么都不选,直接方向键调到none回车
-
开始安装,过程可能有点久,耐心等待
-
弹出下面窗口证明系统已经安装成功了,此时不要选择跳过更新,容易错误。继续等待更新直到出现reboot出现。
-
等出现reboot或者reboot new的时候再选择回车【网速好40分钟网速慢一到两个小时都有可能】。
下面是我另一个镜像安装后提示的
-
重启后输入密码,进入系统
-
用工具登陆【xshell7登录,crt登录估计不行】
配置sshd和修改root密码
- 输入
sudo -i
进入root对sshd配置做更改,对下面几行取消注释【看下面说明】,然后重启sshd,并修改root密码
ccx@openstackccx:~$ sudo -i
[sudo] password for ccx:
root@openstackccx:~# vi /etc/ssh/sshd_config
# 下面内容前取消注释,并将PermitRootLogin 后面改为yes
Port 22
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
PermitRootLogin yes
root@openstackccx:~# systemctl restart sshd
root@openstackccx:~# passwd root
New password:
Retype new password:
passwd: password updated successfully
root@openstackccx:~#
修改静态IP和安装ifconfig命令
- 如果你要把这个包放到内网环境,最好配置为静态ip,就在本电脑使用,不配置静态ip也行的。
- 编辑下面文件,下面就已经是我改为静态ip的样子了。
- 编辑完成以后执行
sudo netplan apply
更新文件,这样静态ip就配置完成了。
stack@openstackccx:~/devstack$ cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens33:
addresses: [192.168.59.137/24]
dhcp4: no
optional: true
gateway4: 192.168.59.2
nameservers:
addresses: [114.114.114.114]
version: 2
stack@openstackccx:~/devstack$
- 安装ifconfig命令
sudo apt install net-tools
【ifconfig和route都是依赖下面这个包,直接安装就行】。
stack@openstackccx:~/devstack$ sudo apt install net-tools
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
net-tools
0 upgraded, 1 newly installed, 0 to remove and 86 not upgraded.
Need to get 196 kB of archives.
After this operation, 864 kB of additional disk space will be used.
Get:1 https://repo.huaweicloud.com/ubuntu focal/main amd64 net-tools amd64 1.60+git20180626.aebd88e-1ubuntu1 [196 kB]
Fetched 196 kB in 1s (231 kB/s)
Selecting previously unselected package net-tools.
(Reading database ... 116610 files and directories currently installed.)
Preparing to unpack .../net-tools_1.60+git20180626.aebd88e-1ubuntu1_amd64.deb ...
Unpacking net-tools (1.60+git20180626.aebd88e-1ubuntu1) ...
Setting up net-tools (1.60+git20180626.aebd88e-1ubuntu1) ...
Processing triggers for man-db (2.9.1-1) ...
stack@openstackccx:~/devstack$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.59.2 0.0.0.0 UG 0 0 0 ens33
172.24.4.0 0.0.0.0 255.255.255.0 U 0 0 0 br-ex
192.168.59.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
stack@openstackccx:~/devstack$
ubuntu常用命令
切换root和用户说明
- Ubuntu常用命令与centos命令基本通用,由于Ubuntu系统默认不能使用root,所以有些命令前需要加上sudo,在Ubuntu系统中每条命令前建议都加上
sudo
命令。 - 切换到root
用普通用户登录到虚拟机,执行sudo -i
,输入当前用户的密码即可到root用户。- 因为ubuntu默认没有root密码,所以通过普通用户进入root以后,执行
passwd root
定义root密码。 - 默认不能使用root用户登录,如果要开启root直登,root用户编辑sshd配置即可。
- 下面就是上述操作的命令记录
- 因为ubuntu默认没有root密码,所以通过普通用户进入root以后,执行
- 输入
sudo -i
进入root对sshd配置做更改,对下面几行取消注释【看下面说明】,然后重启sshd,并修改root密码
ccx@openstackccx:~$ sudo -i
[sudo] password for ccx:
root@openstackccx:~# vi /etc/ssh/sshd_config
# 下面内容前取消注释,并将PermitRootLogin 后面改为yes
Port 22
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
PermitRootLogin yes
root@openstackccx:~# systemctl restart sshd
root@openstackccx:~# passwd root
New password:
Retype new password:
passwd: password updated successfully
root@openstackccx:~#
ubuntu包管理命令apt和dpkg的用法
apt-get命令
-
apt-get是debian,ubuntu发行版的包管理工具,与红帽中的yum工具非常类似,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。apt-get在安装包的时候是根据
/etc/apt/sources.list
文件中指定的源来寻找的安装包,你可以根据自己的需要对这个文件进行修改。 -
apt-get命令一般需要root权限执行,所以一般跟着sudo命令。
sudo pip list $package_name
#查看已安装的包信息sudo apt-get install package
安装包 【也可以直接apt install,如:sudo apt install net-tools
】sudo apt-get install package - - reinstall
重新安装包sudo apt-get -f install
修复安装"-f = ——fix-missing"sudo apt-get remove package
删除包sudo apt-get remove package - - purge
删除包,包括删除配置文件等sudo apt-get autoremove package
删除包及其依赖的软件包sudo apt-get update
更新源sudo apt-get upgrade
更新已安装的包sudo apt-get dist-upgrade
升级系统sudo apt-get dselect-upgrade
使用 dselect 升级sudo apt-get build-dep package
安装相关的编译环境sudo apt-get source package
下载该包的源代码sudo apt-get clean && sudo apt-get autoclean
清理无用的包sudo apt-get check
检查是否有损坏的依赖
-
apt-get包含的常用的一些工具:
工具 | 说明 |
---|---|
install |
其后加上软件包名,用于安装一个软件包 |
update |
从软件源镜像服务器上下载/更新用于更新本地软件源的软件包列表 |
upgrade |
升级本地可更新的全部软件包,但存在依赖问题时将不会升级,通常会在更新之前执行一次update |
dist-upgrade |
解决依赖关系并升级(存在一定危险性) |
remove |
移除已安装的软件包,包括与被移除软件包有依赖关系的软件包,但不包含软件包的配置文件 |
autoremove |
移除之前被其他软件包依赖,但现在不再被使用的软件包 |
purge |
与remove相同,但会完全移除软件包,包含其配置文件 |
clean |
移除下载到本地的已经安装的软件包,默认保存在/var/cache/apt/archives/ |
autoclean |
移除已安装的软件的旧版本软件包 |
- apt-get常用的参数:
参数 | 说明 |
---|---|
-y |
自动回应是否安装软件包的选项,在一些自动化安装脚本中使用这个参数将十分有用 |
-s |
模拟安装 |
-q |
静默安装方式,指定多个q或者-q=#,#表示数字,用于设定静默级别,这在你不想要在安装软件包时屏幕输出过多时很有用 |
-f |
修复损坏的依赖关系 |
-d |
只下载不安装 |
--reinstall |
重新安装已经安装但可能存在问题的软件包 |
--install-suggests |
同时安装APT给出的建议安装的软件包 |
apt-cache命令
- apt-cache主要用于搜索包。
sudo apt-cache search package
搜索包sudo apt-cache show package
获取包的相关信息,如说明、大小、版本等sudo apt-cache showpkg package
显示软件包信息,包括包的依赖关系,包的提供者,sudo apt-cache pkgnames
打印软件包列表中所有包的名字sudo apt-cache dumpavail
打印软件包列表中所有包的简介信息sudo apt-cache depends package
了解使用依赖sudo apt-cache rdepends package
是查看该包被哪些包依赖
dpkg命令
-
dpkg是Debian系统的后台包管理器,类似RPM。也是Debian包管理系统的中流砥柱,负责安全卸载软件包,配置,以及维护已安装的软件包。由于ubuntu和Debian乃一脉相承,所以很多命令是不分彼此的。
-
Ubuntu中所有packages的信息都在
/var/lib/dpkg/
目录下,其中子目录/var/lib/dpkg/info
用于保存各个软件包的配置文件列表.不同后缀名代表不同类型的文件,如:.conffiles
记录了软件包的配置文件列表。.list
保存软件包中的文件列表,用户可以从.list的信息中找到软件包中文件的具体安装位置。
.md5sums
记录了软件包的md5信息,这个信息是用来进行包验证的。.prerm
脚本在Debian报解包之前运行,主要作用是停止作用于即将升级的软件包的服务,直到软件包安装或升级完成。.postinst
脚本是完成Debian包解开之后的配置工作,通常用于执行所安装软件包相关命令和服务重新启动。/var/lib/dpkg/available
文件的内容是软件包的描述信息,该软件包括当前系统所使用的Debian安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包。
-
命令
dpkg –l | grep package
查询deb包的详细信息,没有指定包则显示全部已安装包dpkg -s package
查看已经安装的指定软件包的详细信息dpkg -L package
列出一个包安装的所有文件清单dpkg -S file
查看系统中的某个文件属于哪个软件包,搜索已安装的软件包dpkg -i
安装指定deb包dpkg -R
后面加上目录名,用于安装该目录下的所有deb安装包dpkg -r
remove,移除某个已安装的软件包dpkg -P
彻底的卸载,包括软件的配置文件dpkg -c
查询deb包文件中所包含的文件dpkg -L
查看系统中安装包的的详细清单,同时执行 -c
一键部署openstack环境
- 通过上面版本镜像安装好操作系统。
准备stack包
- 如果能找到资源自行下载,如果找不到资源【也可以去openstack官网跟着手册自己手动搭建】,也可以选择下载我的【别问为什么是vip资源,我花了2万多报名华为hcie-cloud得到的这个包,虽然不是啥涉密的东西,但我以vip资源上传已经是你相当于白嫖就能接触到的东西了,而且这个包的使用我自己试了很多次都失败最后问老师才得到的下面最终可用,你能看到这个文章就已经是缘分。】
openstack安装包+ubuntu20.4iso+DB数据库软件.txt - 将包上传到系统并移动到/opt目录中
root@openstackccx:~# mv /home/ccx/stack3_without_data.tar.gz /opt
root@openstackccx:~# cd /opt
root@openstackccx:/opt# ls
stack3_without_data.tar.gz
root@openstackccx:/opt#
- 给该文件777权限
root@openstackccx:/opt# chmod 777 stack3_without_data.tar.gz
root@openstackccx:/opt#
- 更新源
root@openstackccx:/opt# sudo apt-get update
开始部署
-
开始部署前,最好给虚拟机做一个快照,如果失败了,直接恢复快照最为稳妥。
-
创建stack用户
root@openstackccx:/opt# sudo useradd -s /bin/bash -d /opt/stack -m stack
- 赋予权限
root@openstackccx:/opt# echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
- 切换到stack并做下面操作
root@openstackccx:/opt# su - stack
stack@openstackccx:~$ cd /opt
stack@opecattnstackccx:/opt$ tar -xzvf stack3_without_data.tar.gz
stack@openstackccx:/opt$ vim /opt/stack/tempest/tox.ini #注释下面行内容,如果不注释,会报错。
stack@openstackccx:/opt$ cat /opt/stack/tempest/tox.ini | grep pass
#passenv = OS_STDOUT_CAPTURE OS_STDERR_CAPTURE OS_TEST_TIMEOUT OS_TEST_LOCK_PATH TEMPEST_CONFIG TEMPEST_CONFIG_DIR http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY ZUUL_CACHE_DIR REQUIREMENTS_PIP_LOCATION GENERATE_TEMPEST_PLUGIN_LIST
stack@openstackccx:/opt$
stack@openstackccx:/opt$ cd /opt/stack/devstack/
stack@openstackccx:~/devstack$ ./stack.sh
# 开始安装后就是漫长的自动部署,时间和装系统差不多,慢慢等。
安装成功并测试
- 安装成功显示内容
=========================
DevStack Component Timing
(times are in seconds)
=========================
wait_for_service 13
pip_install 1009
apt-get 241
run_process 41
dbsync 4
apt-get-update 1
test_with_retry 4
async_wait 239
osc 326
-------------------------
Unaccounted time 89
=========================
Total runtime 1967
=================
Async summary
=================
Time spent in the background minus waits: 349 sec
Elapsed time: 1967 sec
Time if we did everything serially: 2316 sec
Speedup: 1.17743
This is your host IP address: 192.168.59.135
This is your host IPv6 address: ::1
Horizon is now available at http://192.168.59.135/dashboard
Keystone is serving at http://192.168.59.135/identity/
The default users are: admin and demo
The password: wei
Services are running under systemd unit files.
For more information see:
https://docs.openstack.org/devstack/latest/systemd.html
DevStack Version: yoga
Change: 9616d22938305dd1a56067810484c15912b37d8d Write safe.directory items to system git config 2022-04-19 01:43:33 +0000
OS Version: Ubuntu 20.04 focal
2023-03-03 08:25:46.970 | stack.sh completed in 1967 seconds.
stack@openstackccx:~/devstack$
- 注意看,其中有列出dashboard的地址,这个很重要
Horizon is now available at http://192.168.59.135/dashboard
Keystone is serving at http://192.168.59.135/identity/
-
我们直接复制dashboard的地址用浏览器打开,就会弹出登录界面了
默认用户admin
,默认密码wei
-
登录成功,部署完成。后面就可以做实验啦
-
一切正常以后,就可以再次创建一个快照【下面环境glans值改完以后再创建快照】,最主要用途其实就是后面做实验后可以恢复到刚装好的状态。
将环境放到内网环境执行
- 将虚拟机关机,将整个目录打包,放到其他地方用vmware打开就可以了【注意vmware之间的兼容性问题,创建虚拟机的时候会提示,看第二张图】,导出之前执行
route -n
记录ip和路由信息,放到新主机上导入的时候确保这些信息没有改变。
- 如,我这导入到12版本的vmware上【要注意nat网络,ip段和网关必须和导出主机的vmware网络信息保持一致,如我这的内网必须是192.168.59段,网关必须是59.2,因为我这个包里面的ip就是这个段和这个网关】,是可以正常打开的,打开的时候会提示让我安装vmtool,忽略即可】
- openstack的dashboard能正常登录即正常。
- 创建虚拟机能正常创建即可以正常使用了【注意浏览器,我用搜狗浏览器就不行,后面改用火狐就正常了】
openstack版本查看【Yoga版本】
- 我之前有文章说了如何查看openstack版本的。
stack@openstackccx:~/devstack$ openstack --version
/usr/lib/python3/dist-packages/secretstorage/dhcrypto.py:15: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
from cryptography.utils import int_from_bytes
/usr/lib/python3/dist-packages/secretstorage/util.py:19: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
from cryptography.utils import int_from_bytes
openstack 6.0.0
stack@openstackccx:~/devstack$
stack@openstackccx:~/devstack$ rpm -qa | grep nova
Command 'rpm' not found, but can be installed with:
apt install rpm
stack@openstackccx:~/devstack$ pip list | grep nova
/usr/lib/python3/dist-packages/secretstorage/dhcrypto.py:15: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
from cryptography.utils import int_from_bytes
/usr/lib/python3/dist-packages/secretstorage/util.py:19: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
from cryptography.utils import int_from_bytes
nova 25.0.1.dev7 /opt/stack/nova
python-novaclient 17.7.0
stack@openstackccx:~/devstack$
- 上面知道nova为25版本,去官网看到Yoga版本的nova即为25.
报错说明
报错1
- 报错内容
+++lib/tempest:configure_tempest:630 mktemp
++lib/tempest:configure_tempest:630 tmp_cfg_file=/tmp/tmp.NoXFlwL8AT
++lib/tempest:configure_tempest:631 cd /opt/stack/tempest
++lib/tempest:configure_tempest:632 [[ False != \T\r\u\e ]]
++lib/tempest:configure_tempest:633 tox -revenv-tempest --notest
venv-tempest: remove tox env folder .tox/tempest
venv-tempest: failed with pass_env values cannot contain whitespace, use comma to have multiple values in a single line, invalid values found 'OS_STDOUT_CAPTURE OS_STDERR_CAPTURE OS_TEST_TIMEOUT OS_TEST_LOCK_PATH TEMPEST_CONFIG TEMPEST_CONFIG_DIR http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY ZUUL_CACHE_DIR REQUIREMENTS_PIP_LOCATION GENERATE_TEMPEST_PLUGIN_LIST'
venv-tempest: FAIL code 1 (0.00 seconds)
evaluation failed :( (0.62 seconds)
+lib/tempest:configure_tempest:1 exit_trap
+./stack.sh:exit_trap:521 local r=1
++./stack.sh:exit_trap:522 jobs -p
+./stack.sh:exit_trap:522 jobs=
+./stack.sh:exit_trap:525 [[ -n '' ]]
+./stack.sh:exit_trap:531 '[' -f /tmp/tmp.EuHGoTCybs ']'
+./stack.sh:exit_trap:532 rm /tmp/tmp.EuHGoTCybs
+./stack.sh:exit_trap:536 kill_spinner
+./stack.sh:kill_spinner:431 '[' '!' -z '' ']'
+./stack.sh:exit_trap:538 [[ 1 -ne 0 ]]
+./stack.sh:exit_trap:539 echo 'Error on exit'
Error on exit
+./stack.sh:exit_trap:541 type -p generate-subunit
+./stack.sh:exit_trap:542 generate-subunit 1677773207 1787 fail
+./stack.sh:exit_trap:544 [[ -z /opt/stack/logs ]]
+./stack.sh:exit_trap:547 /usr/bin/python3.8 /opt/stack/devstack/tools/worlddump.py -d /opt/stack/logs
World dumping... see /opt/stack/logs/worlddump-2023-03-02-163634.txt for details
+./stack.sh:exit_trap:556 exit 1
root@openstackccxhero:/opt#
- 原因,下面操作没做,做了问题即可解决
stack@openstackccx:/opt$ vim /opt/stack/tempest/tox.ini #注释下面行内容,如果不注释,会报错。
stack@openstackccx:/opt$ cat /opt/stack/tempest/tox.ini | grep pass
#passenv = OS_STDOUT_CAPTURE OS_STDERR_CAPTURE OS_TEST_TIMEOUT OS_TEST_LOCK_PATH TEMPEST_CONFIG TEMPEST_CONFIG_DIR http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY ZUUL_CACHE_DIR REQUIREMENTS_PIP_LOCATION GENERATE_TEMPEST_PLUGIN_LIST
报错2
- 报错内容
+lib/neutron_plugins/ovn_agent:wait_for_sock_file:178 die 178 'Socket /var/run/openvswitch/ovnnb_db.sock no
+functions-common:die:264 local exitcode=0
+functions-common:die:265 set +o xtrace
[Call Trace]
./stack.sh:1282:start_ovn_services
/opt/stack/devstack/lib/neutron-legacy:516:start_ovn
/opt/stack/devstack/lib/neutron_plugins/ovn_agent:698:wait_for_sock_file
/opt/stack/devstack/lib/neutron_plugins/ovn_agent:178:die
[ERROR] /opt/stack/devstack/lib/neutron_plugins/ovn_agent:178 Socket /var/run/openvswitch/ovnnb_db.sock not
Error on exit
World dumping... see /opt/stack/logs/worlddump-2023-03-02-151104.txt for details
root@openstackccx:/opt#
root@openstackccx:/opt# ls
run_yoga.sh stack stack3_without_data.tar.gz
root@openstackccx:/opt# ls stack
async bin bindep-venv cinder data devstack devstack.subunit glance heat horizon keystone logs ne
root@openstackccx:/opt#
- 原因,是第二次安装,照着
第二次安装流程
做问题即可解决。
安装报错后再次安装说明
安装报错后需要重新安装,执行下面命令
如果依然无法解决,重装系统。
root@openstackccxhero:~#
root@openstackccxhero:~# cd /opt/stack/
root@openstackccxhero:/opt/stack# ls
async bindep-venv data devstack.subunit heat keystone neutron novnc requirements
bin cinder devstack glance horizon logs nova placement tempest
root@openstackccxhero:/opt/stack# rm -rf bindep-venv/
root@openstackccxhero:/opt/stack# cd /opt/stack/devstack/
stack@openstackccxhero:~/devstack$ ls
clean.sh files HACKING.rst Makefile run_tests.sh stack.sh
CONTRIBUTING.rst functions inc openrc samples tests
data functions-common lib playbooks setup.cfg tools
doc FUTURE.rst LICENSE README.rst setup.py tox.ini
extras.d gate local.conf roles stackrc unstack.sh
stack@openstackccxhero:~/devstack$ ./unstack.sh
stack@openstackccxhero:~/devstack$ ./clean.sh
stack@openstackccxhero:~/devstack$ ./stack.sh
修改环境keystone的glans值
-
准备修改数据库keystone的一个镜像数据值,当前默认为1000,如果不修改的话我们用命令上传镜像超过1000M的就会失败,如果通过网页上传就不影响。所以我们还是将这个1000修改为10000,最为稳妥。避免后面实验报错。
-
安装DBeaver软件,第一次打开会提示是否创建一个示例数据库,我们选择否哈
登录keyston数据库
- 点击链接mariadb
- 地址就是虚拟机地址ip,数据库
keystone
,用户名root
,root密码是数据库密码而不是root用户密码,数据库root密码为wei
- 点击完成以后等待驱动安装【驱动报错和登录报错继续往下看】
驱动下载报错和登录报错解决方法
- 下载驱动报错提示下面内容
Error resolving dependencies
-
解决方法
- (1)点击窗口–首选项–驱动—maven—添加
- (2)添加,输入框中替换成http://maven.aliyun.com/nexus/content/groups/public/
- (3)重试,可以正常下载
-
报错内容
RSA public key is not available client side (option serverRsaPublicKeyFile not set)
-
解决方法
- 右键添加的数据库,选择编辑连接
- 然后
连接设置-驱动属性-allowPublicKeyRetrieval
,将后面的false
值改为true
即可。
- 右键添加的数据库,选择编辑连接
修改glans值
- 数据库-keystone-表
- 找到
registered_limit
,双击,然后点击弹出窗口的数据,定位到image_size_total/image_stage_total
可以看到右边的值均为1000
- 我们将这2个值都改为
10000
然后点击保存即可
1000M改为10000M嘛,这是镜像大小,不改后面命令行上传镜像就容易出问题。