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 的相关文章

  • kolla 部署 openstack v1.0

    准备 hosts配置 cat lt lt EOF gt gt etc hosts 192 168 179 90 kolla ansible controller 192 168 179 91 kolla ansible compute EO
  • OpenStack之仪表盘服务(Dashboard)

    一 Dashboard的基本 1 概念 OpenStack云计算平台可以通过命令行管理工具使用 或者其他应用通过应用程序接口被其他程序调用 但是都较为麻烦 不够直观 那么Dashboard随机应运而生了 其本质是一个web前端控制台 主要功
  • Pecemaker+Corosync+Haproxy高可用Openstack集群实战

    一 DRBD简介 DRBD的全称为 Distributed Replicated Block Device DRBD 分布式块设备复制 DRBD是由内核模块和相关脚本而构成 用以构建高可用性的集群 其实现方式是通过网络来镜像整个设备 它允许
  • Devstack部署多节点Openstack(转)

    平台工具介绍 操作系统 Windows7 工具 VirtualBox 5 0 24 镜像 ubuntu 14 04 5 server amd64 iso 下载地址 ubuntu14 04 5 server版 DevStack版本 Mitak
  • kolla-ansible部署openstack+opendaylight

    1 环境准备 准备三台机器 分别作为OpenStack的controller和compute节点 OpenDayLight节点 另外把controller作为本次的部署节点 其中controller和compute节点各两张网卡 odl节点
  • OpenStack官方认证(COA)正式回归!

    Certified OpenStack Administrator 简称 COA 是OpenStack基金会在2016年推出的唯一一个OpenStack官方管理员技术认证 对OpenStack的日常使用和管理 应该学习和掌握哪些技术 提出了
  • openstack安装之计算服务安装配置笔记

    1 设置本地实验ip 1 1 管理节点和计算节点更改hosts 使用ifconfig查看本地ip地址 vi etc hosts x x x x controller x x x x compute1 1 2 管理节点编辑chrony con
  • 【OpenStack实战—实验环境准备02】

    目录 前言 准备虚拟机 1 VMware workstation配置 2 控制节点虚拟机配置 3 计算节点虚拟机配置 4 存储节点虚拟机配置 一 配置静态IP IP规划 命令解释 二 关闭防火墙和selinux 命令解释 三 同步时间 命令
  • openstack创建域、项目、用户、角色报错

    报错出现 An unexpected error prevented the server from fulfilling your request HTTP 500 1 创建项目service openstack project crea
  • 超详细OpenStack一键式部署

    1 准备镜像文件 Cen1 创建新的虚拟机 1 创建虚拟机 点击关闭 2 安装Centos7 密码自己设置 不用跟着一样 2 生成动态IP地址 root localhost dhclient 3 查看生成的IP地址 root localho
  • 云计算1+X之openstack篇

    openstack之Keystone 服务运维 概述 OpenStack 框架中 Keystone OpenStack Identity Service 的功能是负责验证身份 校验服务规则和发布服务令牌的 它实现了 OpenStack 的
  • openstack实战之使用sysprep工具封装windows7镜像

    openstack实战之使用sysprep工具封装windows7镜像 在openstack云平台环境下 使用sysprep封装windows7系统主要目的是清理虚拟机的SID 避免使用同一windows7镜像克隆出的虚拟机出现相同的SID
  • 用python画星空源代码

    from turtle import from random import random randint screen Screen width height 800 600 screen setup width height screen
  • openstack-nova-compute.service起不来

    1 启动服务 2 查看compute nova日志tail var log nova nova compute log 发现身份验证机制AMQPLAIN拒绝登录 3 关闭防火墙 root controller systemctl stop
  • 如何设置docker容器的ip?

    有人可以告诉我如何将容器的 ip 设置为特定的 ip 吗 我不想将网桥设置为 IP 集 我在网络中得到的所有结果都是将 ips 范围设置为 docker 桥 您可以使用主机的现有 IP 如下所示 docker run p 127 0 0 1
  • 我可以在 Openstack Swift 中向现有对象追加或覆盖一些字节吗?

    我需要将一些字节附加到存储在 Openstack Swift 中的现有对象中 例如日志文件对象 并不断向其中附加新日志 这可能吗 此外 我可以将一些字节 指定偏移量和长度 更改 覆盖 到现有对象吗 我相信 ZeroVM zerovm org
  • 创建新的 docker-machine 实例始终无法使用 openstack 驱动程序验证证书

    每次我尝试通过创建一个新实例docker machine在开放堆栈上 我总是在验证证书时收到此错误 我必须在创建实例后立即重新生成证书才能使用这些实例 docker machine create driver openstack opens
  • 使用 python-boto 启动 Openstack 实例

    我正在尝试在 opensatck 设置上启动实例 并使用 python boto 配置多个网络 但我收到以下错误 EC2ResponseError EC2ResponseError 400 Bad Request
  • 错误:在openstack pike devstack上创建实例时未建立sql_connection参数

    我已经通过以下链接在我的 Ubuntu 16 04 上成功安装了 Openstack Devstack pike https www mirantis com blog how to install openstack on your lo
  • 如何使用 cloud-init 安装 docker?

    我想在 Openstack 中创建实例 在通过 ssh 连接之前 这些实例中已经安装了 Docker 所以我很自然地对 Cloud init 技术感兴趣 因为它允许我们在第一次启动时在虚拟机上安装软件包 所以现在我尝试在启动时在我的实例上安

随机推荐

  • 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