OpenStack--部署块存储cinder

2023-11-03

通过 cinder 使用 lvm 卷提供后端存储:
官方部署文档:https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/cinder.html

1、数据库准备:
#1:创建数据库并授权:
[root@linux-host5 ~]# mysql -uroot –p
MariaDB [(none)]> CREATE DATABASE cinder;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder123';
MariaDB [(none)]> flush privileges;

#2:控制端验证数据访问:
[root@linux-host1 ~]# mysql -ucinder -h192.168.10.100 -pcinder123
2、控制端 cinder 服务注册:
#1:创建 cinder 用户并授权:
[root@linux-host1 ~]# source admin-ocata.sh 
[root@linux-host1 ~]# openstack user create --domain default --password-prompt cinder
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | 81672c29064942aea8fb754820ddb76a |
| enabled | True |
| id | f12af1d5583e4b179354c3b4d8d0d778 |
| name | cinder |
| options | {} |
| password_expires_at | None | +---------------------+----------------------------------+ #授权 admin 权限
[root@linux-host1 ~]# openstack role add --project service --user cinder admin

#2:创建服务: #v2 版本
[root@linux-host1 ~]# openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | 8077b7de84fc4b32a288306459bad10b |
| name | cinderv2 |
| type | volumev2 |
+-------------+----------------------------------+ #v3 版本
[root@linux-host1 ~]# openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | 4234b69629ac4e6bbabcd72c8bb0ab81 |
| name | cinderv3 |
| type | volumev3 | +-------------+----------------------------------+

#3:注册 V2 版本 endpoint: #公共端点:
[root@linux-host1 ~]# openstack endpoint create --region RegionOne volumev2 public http://192.168.10.100:8776/v2/%\(project_id\)s
+--------------+----------------------------------------------+
| Field | Value |
+--------------+----------------------------------------------+
| enabled | True |
| id | cf87da53a7754996972b7ef2baf73933 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 8077b7de84fc4b32a288306459bad10b |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://192.168.10.100:8776/v2/%(project_id)s |
+--------------+----------------------------------------------+ #私有端点:
[root@linux-host1 ~]# openstack endpoint create --region RegionOne volumev2 internal 
http://192.168.10.100:8776/v2/%\(project_id\)s
+--------------+----------------------------------------------+
| Field | Value |
+--------------+----------------------------------------------+
| enabled | True |
| id | 4d8cfb82cd4a4015876df6aafc8bb219 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 8077b7de84fc4b32a288306459bad10b |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://192.168.10.100:8776/v2/%(project_id)s |
+--------------+----------------------------------------------+ #管理端点:
[root@linux-host1 ~]# openstack endpoint create --region RegionOne volumev2 admin 
http://192.168.10.100:8776/v2/%\(project_id\)s
+--------------+----------------------------------------------+
| Field | Value | +--------------+----------------------------------------------+
| enabled | True |
| id | 686d554b483a4a52b36c6b6a6c3a2feb |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 8077b7de84fc4b32a288306459bad10b |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://192.168.10.100:8776/v2/%(project_id)s |
+--------------+----------------------------------------------+

#4:注册 V3 版本 endpoint: #公共端点:
[root@linux-host1 ~]# openstack endpoint create --region RegionOne volumev3 public 
http://192.168.10.100:8776/v3/%\(project_id\)s
+--------------+----------------------------------------------+
| Field | Value |
+--------------+----------------------------------------------+
| enabled | True |
| id | 729e23316e964ff6bc6315f4d95e590a |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 4234b69629ac4e6bbabcd72c8bb0ab81 |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://192.168.10.100:8776/v3/%(project_id)s |
+--------------+----------------------------------------------+ #私有端点:
[root@linux-host1 ~]# openstack endpoint create --region RegionOne volumev3 internal 
http://192.168.10.100:8776/v3/%\(project_id\)s
+--------------+----------------------------------------------+
| Field | Value |
+--------------+----------------------------------------------+
| enabled | True |
| id | 0541cfdf2d99477fb4105aac045f0399 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 4234b69629ac4e6bbabcd72c8bb0ab81 |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://192.168.10.100:8776/v3/%(project_id)s |
+--------------+----------------------------------------------+ #管理端点:
[root@linux-host1 ~]# openstack endpoint create --region RegionOne volumev3 admin 
http://192.168.10.100:8776/v3/%\(project_id\)s
+--------------+----------------------------------------------+
| Field | Value |
+--------------+----------------------------------------------+
| enabled | True |
| id | 3b45ed17bb724479a49df89e49a0e2ae |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 4234b69629ac4e6bbabcd72c8bb0ab81 |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://192.168.10.100:8776/v3/%(project_id)s |
+--------------+----------------------------------------------+ 
3、配置 haproxy 负载:
[root@linux-host4 ~]# vim /etc/haproxy/haproxy.cfg
listen cinder
 bind 192.168.10.100:8776
 mode tcp
 log global
 balance source
 server cinder-server 192.168.10.201:8776 check inter 5000 rise 3 fall 3
4、安装并配置 cinder 组件:
#1:控制端安装 cinder:
[root@linux-host1 ~]# yum install openstack-cinder –y

#2:编辑配置文件 cinder.conf:
[root@linux-host1 ~]# vim /etc/cinder/cinder.conf
3545 connection = mysql+pymysql://cinder:cinder123@192.168.10.100/cinder
3243 transport_url = rabbit://openstack:123456@192.168.10.205
376 auth_strategy = keystone
3767 [keystone_authtoken]
3768 auth_uri = http://192.168.10.100:5000
3769 auth_url = http://192.168.10.100:35357
3770 memcached_servers = 192.168.10.100:11211
3771 auth_type = password
3772 project_domain_name = default
3773 user_domain_name = default
3774 project_name = service
3775 username = cinder
3776 password = cinder
4012 lock_path = /var/lib/cinder/tmp
263 my_ip = 192.168.10.201
#当前配置:
[root@linux-host1 ~]# grep -n "^[a-Z\[]" /etc/cinder/cinder.conf 
1:[DEFAULT]
263:my_ip = 192.168.10.201
376:auth_strategy = keystone
3243:transport_url = rabbit://openstack:123456@192.168.10.205
3518:[database]
3546:connection = mysql+pymysql://cinder:cinder123@192.168.10.100/cinder
3767:[keystone_authtoken]
3768:auth_uri = http://192.168.10.100:5000
3769:auth_url = http://192.168.10.100:35357
3770:memcached_servers = 192.168.10.100:11211
3771:auth_type = password
3772:project_domain_name = default
3773:user_domain_name = default
3774:project_name = service
3775:username = cinder
3776:password = cinder
3996:[oslo_concurrency]
4012:lock_path = /var/lib/cinder/tmp

#3:同步并验证数据库:
[root@linux-host1 ~]# su -s /bin/sh -c "cinder-manage db sync" cinder

#4:验证数据库同步成功:
[root@linux-host1 ~]# mysql -ucinder -h192.168.10.100 -pcinder123

#5:控制端重启 nova-api 服务:
[root@linux-host1 ~]# systemctl restart openstack-nova-api.service

#6:启动块存储服务 cinder:
[root@linux-host1 ~]# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
[root@linux-host1 ~]# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

#7:验证 cinder 日志:
[root@linux-host1 ~]# tail -f /var/log/cinder/*.log
5、配置计算节点使用 cinder 存储:
#1:编辑配置文件 nova.conf:
[root@linux-host2 ~]# vim /etc/nova/nova.conf
3982 [cinder]
4031 os_region_name=RegionOne
#2:重启 nova 服务:
[root@linux-host2 ~]# systemctl restart libvirtd.service openstack-nova-compute.service
#3:验证 cinder 控制端:
[root@linux-host1 ~]# openstack volume service list
6、配置存储节点:
#1:添加磁盘: 在负载服务器(或其他指定服务器)新添加一块 50G 的磁盘然后点确定:

#2:安装 LVM 包:
[root@linux-host5 ~]# yum install lvm2 -y

#3:启动 LVM 并设置为开机启动:
[root@linux-host5 ~]# systemctl enable lvm2-lvmetad.service
[root@linux-host5 ~]# systemctl start lvm2-lvmetad.service

#4:动态识别新磁盘:
[root@linux-host5 ~]# ll /sys/class/scsi_host/host
host0/ host1/ host2/
[root@linux-host5 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
[root@linux-host5 ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
[root@linux-host5 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan

#5:验证磁盘:

#6:创建物理卷和卷组:
[root@linux-host4 ~]# pvcreate /dev/sdb
 Physical volume "/dev/sdb" successfully created.
[root@linux-host4 ~]# vgcreate cinder-volumes /dev/sdb
 Volume group "cinder-volumes" successfully created
 
#7:配置只有实例可以访问存储卷组:
[root@linux-host4 ~]# vim /etc/lvm/lvm.conf
142 filter = [ "a/sdb/", "r/.*/"]
7、存储安装并配置组件:
#1:安装组件:
[root@linux-host4 ~]# yum install openstack-cinder targetcli python-keystone –y

#2:编辑配置文件 cinder.conf:
[root@linux-host4 ~]# vim /etc/cinder/cinder.conf
1210 transport_url = rabbit://openstack:123456@192.168.10.205
3749 connection = mysql+pymysql://cinder:cinder123@192.168.10.100/cinder
400 auth_strategy = keystone
3973 [keystone_authtoken]
3974 auth_uri = http://192.168.10.100:5000
3975 auth_url = http://192.168.10.100:35357
3976 memcached_servers = 192.168.10.100:11211
3977 auth_type = password
3978 project_domain_name = default
3979 user_domain_name = default
3980 project_name = service
3981 username = cinder
3982 password = cinde
283 my_ip = 192.168.10.205
4904:[lvm]
4905:volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
4906:volume_group = cinder-volumes
4907:iscsi_protocol = iscsi
4908:iscsi_helper = lioadm
4909:volume_backend_name=Openstack-lvm
404 enabled_backends = lvm #后端名字是任意的,这是驱动的名称
288 glance_api_servers = http://192.168.10.100:9292
4263 lock_path = /var/lib/cinder/tmp
#当前配置
[root@linux-host4 ~]# grep -n "^[a-Z\[]" /etc/cinder/cinder.conf 
1:[DEFAULT]
283:my_ip = 192.168.10.205
288:glance_api_servers = http://192.168.10.100:9292
400:auth_strategy = keystone
404:enabled_backends = lvm
1210:transport_url = rabbit://openstack:123456@192.168.10.205
3730:[database]
3749:connection = mysql+pymysql://cinder:cinder123@192.168.10.100/cinder
3973:[keystone_authtoken]
3974:auth_uri = http://192.168.10.100:5000
3975:auth_url = http://192.168.10.100:35357
3976:memcached_servers = 192.168.10.100:11211
3977:auth_type = password
3978:project_domain_name = default
3979:user_domain_name = default
3980:project_name = service
3981:username = cinder
3982:password = cinder
4249:[oslo_concurrency]
4263:lock_path = /var/lib/cinder/tmp
4904:[lvm]
4905:volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
4906:volume_group = cinder-volumes
4907:iscsi_protocol = iscsi
4908:iscsi_helper = lioadm
4909:volume_backend_name=Openstack-lvm

#3:启动服务并设置为开机启动:
[root@linux-host4 ~]# systemctl enable openstack-cinder-volume.service target.service
[root@linux-host4 ~]# systemctl start openstack-cinder-volume.service target.service

#4:验证日志:

#5:控制端验证 cinder 注册:
[root@linux-host1 ~]# openstack volume service list
8、验证卷使用:
#1:创建卷:使用 admin 或者 demo 用户登录到管理界面,点击卷—创建卷:
#2:填写卷信息:
#3:查看卷状态:
#4:关联到虚拟机:
#5:关联到目标虚拟机:
#6:连接后的卷状态:
#7:虚拟机验证磁盘:
#8:格式化磁盘:
#9:挂载磁盘并复制数据:
#10:磁盘挂载至其他虚拟机: 新创建一个虚拟机,用于将上一步关联的卷分离后挂载到新的虚拟机上进行测试。
#10.1:卸载卷: 在之前的虚拟机将卷卸载。
#10.2:磁盘分离: 点击项目-卷-管理连接:
#10.3:分离卷: 
#10.4:确认分离: #分离中:
#10.5:挂载至新实例: 在管理连接界面,将卷关联至test-vm2:
#10.6:关联中: 
#10.7:关联成功: 
#10.8:新实例验证磁盘: 验证可以挂载关联的磁盘并可以查看之前的数据
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenStack--部署块存储cinder 的相关文章

  • OpenStack中制作和上传Docker镜像

    一 在docker节点新建dockerfile文件 vim dockerfie 二 文件里面填 无需任何修改 FROM ubuntu 14 04 MAINTAINER ZhangKe lt 294667739 qq com gt RUN a
  • OpenStack--部署块存储cinder

    通过 cinder 使用 lvm 卷提供后端存储 官方部署文档 https docs openstack org ocata zh CN install guide rdo cinder html 1 数据库准备 1 创建数据库并授权 ro
  • Devstack部署多节点Openstack(转)

    平台工具介绍 操作系统 Windows7 工具 VirtualBox 5 0 24 镜像 ubuntu 14 04 5 server amd64 iso 下载地址 ubuntu14 04 5 server版 DevStack版本 Mitak
  • 云计算实验——OpenStack的安装与使用

    实验目的 1 掌握Linux虚拟机的安装方法 2 掌握OpenStack的单机安装方法 3 熟悉OpenStack的核心组件 实验环境 Windows10 20H2 VirtualBox 6 1 18 r142142 Ubuntu 18 0
  • OpenStack的部署(六)------Neutron项目

    目录 一 CT控制节点 1 创建数据库neutron 并进行授权 2 创建用户 服务并赋权 3 注册API 4 安装提供者网络 桥接 并修改相关配置文件 5 重启相关服务 二 C1 C2计算节点操作 1 部署neutron服务 2 配置Li
  • 云平台学习笔记(三)-MobaXterm使用

    内网 外网的IP都可以 这个界面方面可视化管理
  • 查看OpenStack的版本

    show openstack version root localhost openstack version openstack 4 0 2 Using openstack version will only give you the v
  • openstack 安装并验证 Nova( 计算节点 + 控制节点)

    安装数据库 登录数据库创建 nova nova api nova cell0 数据库 root controller etcd mysql uroot pmaster Welcome to the MariaDB monitor Comma
  • OpenStack常用命令搜集 —— 筑梦之路

    之前学习搭建过OpenStack 好久都没有使用了 这里主要搜集下OpenStack的常用命令 温故而知新 OpenStack 搭建记录 筑梦之路 筑梦之路的博客 CSDN博客 查看日志 日志位置 使用devstack方式部署 默认日志路径
  • openstack镜像的管理与使用

    1 创建项目和用户 1 1 创建项目和用户 用SSH工具连接控制节点 这里是10 10 83 3 使用admin用户权限 执行如下命令 root admin openrc 1 2创建一个test项目 openstack project cr
  • CentOS7安装OpenStack(Liberty)

    1 安装yum源 yum install https buildlogs centos org centos 7 cloud x86 64 openstack liberty centos release openstack liberty
  • openstack用户管理笔记

    1 创建项目 1 1 创建项目 需要确认集群环境是否初始化完毕 实验初始化需要几分钟时间 访问控制节点IP dashboard 如果正常弹出登录页面即初始化完毕 假设控制节点IP为172 20 6 22 则访问地址为 172 20 6 22
  • 用python画星空源代码

    from turtle import from random import random randint screen Screen width height 800 600 screen setup width height screen
  • Openstack - 更改仪表板的管理员密码

    在哪里可以更改 Openstack 中仪表板的管理员密码 我使用 packstack 安装程序安装了 openstack keystonerc admin 文件中的密码也不起作用 我使用 CentOS 6 3 并且我可以访问配置文件 用户名
  • 如何在 devstack 中管理用户/密码?

    我已经安装了devstack到一个干净的 Ubuntu 机器 我可以访问 OpenStack 仪表板 http localhost auth login 但是 我不知道如何管理用户或我的初始凭据是什么 此信息保存在哪里 该信息保存在 Key
  • 如何设置docker容器的ip?

    有人可以告诉我如何将容器的 ip 设置为特定的 ip 吗 我不想将网桥设置为 IP 集 我在网络中得到的所有结果都是将 ips 范围设置为 docker 桥 您可以使用主机的现有 IP 如下所示 docker run p 127 0 0 1
  • 如何在 cirros OS 中安装软件包

    如何在 cirros 镜像中安装软件包 我在 devstack 安装附带的 cirros 映像中找不到任何可用的安装程序 正如 Harikrishnan 评论的那样 cirros 不包含包管理器 Cirros 主要用于验证云是否正常工作 虚
  • Openstack.Net SDK无法访问带区域的服务

    使用我们自己的硬件 我们安装了带有所有组件的普通 openstack 但是由于区域问题 我在访问除身份之外的服务时遇到问题 使用的代码如下 使用我们创建的管理员帐户和管理员租户进行调用 public static void TestAcce
  • 使用 python-boto 启动 Openstack 实例

    我正在尝试在 opensatck 设置上启动实例 并使用 python boto 配置多个网络 但我收到以下错误 EC2ResponseError EC2ResponseError 400 Bad Request
  • NoValidHost:未找到有效主机。没有足够的可用主机

    当我在仪表板中创建实例时 出现错误 未找到有效的主机 没有足够的可用主机 In the var log nova nova conductor log文件 有日志 2017 08 05 00 22 29 046 3834 WARNING n

随机推荐

  • JDBC之多种开源数据库连接池介绍

    目录 一 多种开源的数据库连接池 二 C3P0数据库连接池 三 DBCP数据库连接池 四 Druid 德鲁伊 数据库连接池 一 多种开源的数据库连接池 1 JDBC 的数据库连接池使用 javax sql DataSource 来表示 Da
  • Element-ui 使用详细介绍

    一 后台搭建 使用 vue admin template 来快速搭建后台管理 它包含了 Element UI axios iconfont permission control lint 这些搭建后台必要的东西 Element是 饿了么团队
  • 六、Docker安装微服务

    一 编译所有的所需jar包 二 上传到服务器 三 编写Docerfile FROM java 8 ADD registry center 1 0 SNAPSHOT jar registry center 1 0 SNAPSHOT jar E
  • js将数组中,每个元素中的逗号分隔的前两位相同的,第三位拼接到一起

    js重新组合数组中的元素 过程可能复杂了 尽力了 谁有简单的留言一下 互相交流学习一下 感谢 var arr 1 20 103 1 28 66 1 20 456 1 21 22 1 21 13 1 20 23 1 21 55 var cou
  • 从零搭建antv数据可视化大屏(轻量级vite-react-ts)

    摘 要 之前Ofter详细介绍过用Vue从零开始编写可视化大屏 今天我们来介绍下如何用React编写可视化图表 为什么我们还要学习React 因为轻量化 像antv可视化图表就全部用的React语言 虽然ant也出了个viser 支持Rea
  • Chrome 网页翻译扩展推荐

    1 沉浸式翻译 网页双语翻译扩展 免费使用 支持 Deepl Google 腾讯 火山翻译等多个翻译服务 支持 Firefox Chrome 油猴脚本 亦可在 iOS Safari 上使用 官网地址 Chrome 网页翻译扩展推荐 2 划词
  • 查找窗口句柄

    HWND SearchWindow CString strWinName 获得桌面窗口 CWnd pDesktopWnd CWnd GetDesktopWindow 获得第一个子窗口 CWnd pWnd pDesktopWnd gt Get
  • strong man

    1 执行力强 注意力放在面对问题 解决问题而不是抱怨上 2 有利他性 看白身的格局 有大局观 会从更高的维度去思考 有更大的责任感3 从容淡定 有足够的自信 对自己的信任和信念 不需要用力过猛 疲于奔命 4 内在自治 跟自己相处和谐 不自我
  • I like play indoor bicycle trainer

    Kurt kinetic road bicycle training machine is a bicycle trainer I bought for me This is a superb quality very silent and
  • 二进制的神奇应用

    谜题 这是一个在坐标轴上玩的 关于 坐标集合 a1 a2 am b1 b2 bl 的游戏 首先 Bob分别在坐标a1 a2 am放上一个球 接下来Bob分别在坐标b1 0 5 b2 0 5 bl 0 5挖了一个洞 最后Bib会将所有球往前推
  • Python 进阶(五):数据库操作之 SQLite

    1 简介 SQLite 是一种嵌入式关系型数据库 其本质就是一个文件 它占用资源低 处理速度快 跨平台 可与 Python Java 等多种编程语言结合使用 SQLite 是一个进程内的库 可以自给自足 无服务器 无需配置 支持事务 Pyt
  • 百度超详细面经(附答案)

    点击上方蓝字关注我们吧 百度 一面 上来照例还是问了问项目 答 我介绍了自己的项目背景 项目的整个流程 由于是一个多人合作的项目 还介绍了自己负责项目的哪个模块 以及这个模块如何实现的 我感觉我个人说话语速比较快 建议大家尽量语速慢一些 可
  • 阿里P8架构师(花名:霍州)Java程序性能优化“学习日记”

    Java程序性能优化是一门 优化的技术 这门功课值得我们一直去探索 本篇我们会系统的介绍性能的基本概念 两个重要的定律 木桶原理和 Amdahl 定律 以及系统调优的一般过程与注意事项 接下来我们将会学习性能相关的设计模式 组件以及有助于改
  • 折磨我两天的c3p0线程死锁问题终于解决了,其原因竟然是这个!

    折磨我两天的c3p0线程死锁问题终于解决了 其原因竟然是这个 com mchange v2 async ThreadPoolAsynchronousRunner DeadlockDetector 177bb7a APPARENT DEADL
  • Qt网络编程:QNetworkReply

    一 描述 QNetworkReply 类封装了使用 QNetworkAccessManager 发布的请求相关的回复信息 QNetworkReply 是 QIODevice的子类 这意味着一旦从对象中读取数据 它就不再由设备保留 因此 如果
  • Flutter SDK安装

    SDK下载安装 Flutter集成了Dart 因此不需要单独安装dart sdk Flutter的SDK可以从官网下载 https flutter io docs development tools sdk archive tab wind
  • PHP 魔术方法(1)

    PHP 魔术方法 文章目录 PHP 魔术方法 概述 1 构造函数和析构函数 2 sleep 3 wakeup 概述 PHP 魔术方法 一个预定义好的 在特定情况下自动触发的行为方法 魔术方法相关进制 触发时机 功能 参数 返回指 1 构造函
  • 生命在于学习——SQL注入绕过

    一 SQL注入绕过介绍 SQL注入绕过技术已经是一个老生常淡的内容了 防注入可以使用某些云waf加速乐等安全产品 这些产品会自带waf属性拦截和抵御SQL注入 也有一些产品会在服务器里安装软件 例如iis安全狗 d盾 还有就是在程序理论对输
  • C语言奇奇怪怪表达式‘abcd‘,及操作符详解

    前言 回顾操作符和一些表达式方面的知识 表达式及操作符 前言 算术操作符 位操作符 gt gt lt lt gt gt 算数右移 逻辑右移 lt lt 小结 有0则为0 两个1才为1 有1则为1 两个0才为0 按位取反 符号位要参与吗 要参
  • OpenStack--部署块存储cinder

    通过 cinder 使用 lvm 卷提供后端存储 官方部署文档 https docs openstack org ocata zh CN install guide rdo cinder html 1 数据库准备 1 创建数据库并授权 ro