首页 文章 精选 留言 我的

精选列表

搜索[openstack],共3159篇文章
优秀的个人博客,低调大师

在 ML2 中配置 Vlan Network- 每天5分钟玩转 OpenStack(93)

上一节我们学习了 Neutron Vlan Network 的原理,今天讨论如何在 ML2 配置中 enable 它。 首先在 /etc/neutron/plugins/ml2/ml2_conf.ini 中设置 vlan network 相关参数。 tenant_network_types = vlan 指定普通用户创建的网络类型为 vlan。 然后指定 vlan 的范围: 上面配置定义了 label 为 “default” 的 vlan network,vlan id 的范围是 3001 - 4000。 这个范围是针对普通用户在自己的租户里创建 network 的范围。 因为普通用户创建 network 时并不能指定 vlan id,Neutron 会按顺序自动从这个范围中取值。 对于 admin 则没有 vlan id 的限制,admin 可以创建 id 范围为 1-4094 的 vlan network。 接着需要指明 vlan network 与物理网卡的对应关系: 如上所示: 在 [ml2_type_vlan] 中定义了 lable “default”,[linux_bridge] 中则指明 default 对应的物理网卡为 eth1。 这里 label 的作用与前面 flat network 中的 label 一样,只是一个标识,可以是任何字符串。 配置完成,重启 Neutron 服务后生效。 ​下一节将创建第一个 vlan network。

优秀的个人博客,低调大师

创建第一个 local network(II)- 每天5分钟玩转 OpenStack(81)

上一节通过 Web GUI 创建了“first_local_net”,本节我们需要搞清楚底层网络结构有了哪些变化? 点击 “first_local_net” 链接,显示 network 的 subnet 和 port 信息。 在 Ports 列表中已经创建了一个 port,名称为 “(a5bd3746-3f89)”,IP 为 172.16.1.2, Attached Device 是 network:dhcp。 这里我们只需要知道该 port 对应的是 dhcp 的 interface,至于 dhcp 如何工作后面有专门的章节详细讨论。 打开控制节点的 shell 终端,用 brctl show 查看当前 linux bridge 的状态。 可以看到 Neutron 自动创建了如下两个设备: bridge 设备 brqbb9b6d21-c6brqbb9b6d21-c6 对应 local network “first_local_net”,命名规则为 brqXXX,XXX 为 network ID 的前 11 个字符。 tap 设备 tapa5bd3746-3ftapa5bd3746-3f 对应 port (a5bd3746-3f89),命名规则为 tapYYY, YYY 为 port ID 的前 11 个字符。 该 tap 设备已经连接到 bridge,即连接到该 local 网络。 local network 准备好了,下一节我们将部署一个 instance 并将其连接到该 network。

优秀的个人博客,低调大师

创建第一个 local network(I) - 每天5分钟玩转 OpenStack(80)

在 ML2 配置文件中 enable local network 后,本节将开始创建第一个 local network。 我们将通过 Web GUI 创建第一个 local network。 首先确保各个节点上的 neutorn agent 状态正常。GUI 菜单 为 Admin -> System -> System Infomation -> Neutron Agents GUI 中有两个地方可以创建 network: 1. Project -> Network -> Networks这是普通用户在自己的 tenant 中创建 network 的地方。 2. Admin -> Networks这是 admin 创建 network 的地方。 我们先用第一种方式创建,点击 “Create Network” 按钮。 在创建网络的向导页面给 network 命名为 “first_local_net”。 点击 “Next”,创建 subnet,命名为 “subnet_172_16_1_0”,地址为 “172.16.1.0/24” 如果 Gateway IP 不设置,默认为 subnet 的第一个 IP,即 172.16.1.1。 点击 “Next”,设置 subnet 的 IP 地址范围为 172.16.1.2-172.16.1.100,instance 的 IP 会从这里分配。 默认会 “Enable DHCP”,同时还可以设置 subnet 的 DNS 和添加静态路由条目。 点击 “Create”,network 创建成功。 通过 GUI 创建 local network 相对比较简单。而对于我们来说,更重要的是理解操作背后的运行机制。下一节我们将讨论底层网络发生了怎样的变化?

优秀的个人博客,低调大师

启动第一个 KVM 虚机 - 每天5分钟玩转 OpenStack(4)

本节演示如何使用 virt-manager 启动 KVM 虚机。 首先通过命令 virt-manager 启动图形界面 # virt-manager 点上面的图标创建虚机 给虚机命名为 kvm1,这里选择从哪里启动虚机。如果是安装新的 OS,可以选择第一项。如果已经有安装好的镜像文件,选最后一项(如上图) 接下来需要告诉 virt-manager 镜像的位置。 点击 “Browser” 在我的系统中存放了一个 cirros-0.3.3-x86_64-disk.img 镜像文件 。cirros 是一个很小的 linux 镜像,非常适合测试用,大家可以到 http://download.cirros-cloud.net/ 下载,然后放到 /var/lib/libvirt/images/ 目录下,这是 KVM 默认查找镜像文件的地方。 为虚拟机分配 CPU 和内存 点击 “Forward”, 再确认一下信息,就可以启动虚机了。 virt-manager 会打开虚机 kvm1 的控制台窗口,可以看到启动情况 virt-manager 可以对虚机进行各种管理操作,界面直观友好,很容易上手。 同时我们也可以用命令 virsh 管理虚机,比如查看宿主机上的虚机 root@ubuntu:~# virsh list Id Name State -------------------------------- 8 kvm1 running 至此,第一个虚机已经跑起来了,采用的都是默认设置,后面我们会逐步讨论有关虚机更细节的内容,比如存储和网卡的设置。

优秀的个人博客,低调大师

实践 Neutron 前的两个准备工作 - 每天5分钟玩转 OpenStack(78)

上一节配置了 linux-bridge mechanism driver,本节再做两个准备工作: 1. 检视初始的网络状态。2. 了解 linux bridge 环境中的各种网络设备。 初始网络状态 我们首先考察实验环境最初始的网络状态。随着学习的深入,我们会对网络不断进行新的配置,大家也将看到网络一步一步发生的变化。 在我们的实验环境中,当前节点上只存在物理网卡设备 ethX,还没有 bridge 和 tap,状态如下: 控制节点 计算节点 了解 linux bridge 环境中的各种网络设备 在配置 linux bridge driver 之前先了解几种网络设备,后面会经常用到。 在 linux bridge 环境中,一个数据包从 instance 发送到物理网卡会经过下面几个类型的设备: tap interface 命名为 tapN (N 为 0, 1, 2, 3......)。 linux bridge 命名为 brqXXXX。 vlan interface 命名为 ethX.Y(X 为 interface 的序号,Y 为 vlan id)。 vxlan interface 命名为 vxlan-Z(z 是 VNI)。 物理 interface 命名为 ethX(X 为 interface 的序号)。 vlan interface 会在 vlan 网络中使用;vxlan interface 会在 vxlan 网络中使用。 linux-bridge 支持 local, flat, vlan 和 vxlan 四种 network type,目前不支持 gre。 有了上面的这些准备,我们可以开始深入学习 linux bridge 如何实现每种 network type 了。下一节将首先学习最简单的 local network。

优秀的个人博客,低调大师

创建第二个 vlan network "vlan101" - 每天5分钟玩转 OpenStack(96)

前面我们创建了 vlan100,并部署了 instance,今天将继续创建第二个 vlan network “vlan101”。 subnet IP 地址为 172.16.101.0/24。 底层网络发生了什么变化 Neutron 自动创建了 vlan101 对应的网桥 brq1d7040b8-01,vlan interface eth1.101,以及 dhcp 的 tap 设备 tap5b1a2247-32。 eth1.101 和 tap5b1a2247-32 已经连接到 brq1d7040b8-01,VLAN 101 的二层网络就绪。 现在,网络结构如下: 下一节将部署 instance 到 vlan101 并讨论 vlan100 与 vlan101 的连通性。

优秀的个人博客,低调大师

创建第一个 vlan network "vlan100" - 每天5分钟玩转 OpenStack(94)

上一节我们在 ML2 配置中 enable 了 vlan network,今天将创建 vlan100 并讨论底层网络变化。 打开菜单 Admin -> Networks,点击 “Create Network” 按钮。 显示创建页面。 Provider Network Type 选择 “VLAN”。 Physical Network 填写 “default”,必须与 ml2_conf.ini network_vlan_ranges 保持一致。 Segmentation ID 即 VLAN ID,设置为 100。 点击 “Create Network”,vlan100 创建成功。点击 vlan100 链接,进入 network 配置页面,目前还没有 subnet,点击 “Create Subnet” 按钮。 subnet_172_16_100_0,IP 地址为 172.16.100.0/24。 底层网络发生了什么变化 在控制节点上执行 brctl show,查看当前网络结构。 Neutron 自动新建了三个设备: 1. vlan100 对应的网桥 brq3fcfdb98-9d。 2. vlan interface eth1.100。 3. dhcp 的 tap 设备 tap1180bbe8-06。 eth1.100 和 tap19a0ed3d-fe 已经连接到了 brq3fcfdb98-9d,VLAN 100 的二层网络就绪,此时 vlan100 结构如图所示: 下一节将部署 instance 到 vlan100 并继续探讨底层网络结构的变化。

优秀的个人博客,低调大师

qemu-img 将qcow2转换为块设备(openstack image 2 volume)中的瘦供给

1、背景 qemu-img convert 可以将一个镜像里的数据以raw格式的方式写入一个块设备 这里一定要注意,如果convert目标是一个块设备,一定必须带-t none(以及上文中的参数)标记。否则后续的has_write_zeros属性不会开启。 如果convert目标是一个文件时刻,那么不用—t none都会设置discard_zeroes,has_write_zeroes和has _falloccate有了这些属性,写入目标文件时刻使用fallocate来实现文件的打洞。 2、qemu-img convert 在qemu-img convert函数中,如果配置了-t none(以及前述标记off,direct),那么目标设备打开的时候带有BDRV_O_NOCACHE。此标记会将目标设备块驱动(qemu 的blk驱动)设置has_write_zerors属性,当linux反馈块设备支持discardzero时刻再设置discard—zero属性;如果不带 BDRV_O_NOCACHE 那么设置has_write_zeros, discard_zero均不生效。 当qemu-img convert写入设备数据的时候,首先尝试运行清零动作。 在img-convert()主入口,写入真正数据之前调用: 2.1 判定是否使用清理卷: bdrv_can_write_zeroes_with_unmap(out_bs), 1)如果qemu-img convert -S 0 那么就会直接返回false,表示不能通过unmap进行清0动作。 2)在此函数里通过调用bdrv_get_info()--->raw_get_info()取得discard—zero标记判定。 此标记在raw_open_common()里判定块设备没有设置BDRV_O_NOCACHE标记时刻,设置discard-zero标记为Fasle,其他情况块设备如果通过ioctl查linux系统块设备设置BLKDISCARDZEROES标记时设置为True。也就是qemu-img convert -t none或者-t off 或者-t direct,discard-zero为False;或者linux查询设备状态反馈不支持discard-zero 如果discard-zero标记为True就需要清理卷,否则就不需要。此标记为真表示linux支持使用ioctl discard命令来格式化卷为全0. 2.2 如果判定无需清除卷: 那么后续的写入动作,就必须忠实的写入0. 对于qemu-img convert -t writethrough ,它在打开时刻没有设置BDRV_NONE_CACHE.所以discard-zero标记为false,所以判定无需预先使用discard清0. 2.3 如果判定需要清除卷: 如果判定输出块设备支持bdrv_make_zero(out_bs,BDRV_REQ_MAY_UNMAP)对整个卷走清零动作。此函数使用brdv_write_zero(BDRV_REQ_MAY_UNMAP) bdrv_co_write_zeroes(),此函数最终调用到raw-posix driver的hdev_co_write_zeroes().在此函数中检测blk驱动 1)如果没有设置BDRV_REQ_MAY_UNMAP(只有qemu-img convert -s 0此标记才会清理掉,表示不支持unmap清0) 它调用handle _aiocb_write_zeroes(),这个函数最终调用handle_aiocb_write_zeroes_block(),此函数最终判断设置了has_write_zeros 标记就调用ioctl(BLKZEROOUT)发往内核的scsi block。 Qemu-img convert -t none 和-t off -t direct就走的这个流程。 2)如果设置了BDRV_REQ_MAY_UNMAP且设置了disacard_zeros标记,最终调用handle_aiocb_discard() 此函数最终调用ioctl(BLKDISCARD) 内核(3.10) 内核收到BLKZEROOUT以后,将调用blk_ioctl_zeroout()--->blkdev_issue_zeroout-->blkdev_issue_write_same() 写入内容全部为零的页面。blkdev_issue_write_same()生成一个bio(块io请求),带REQ_WRITE_SAME. 当这个请求最终由内核的scsi driver驱动处理(ks3200 的iscsi lun在内核中最终体现为一个scsi disk)时,它产生一个WRITE_SAME 的scsi命令。 硬件 总结 qemu-img 转换为文件时刻,由于本地文件系统支持,所以即便目标是raw文件,原始镜像中的连续0也是不会占用实际物理空间的。 转换目标可以是一个块设备,按照raw格式将数据写入块设备。此时当块设备支持discard特性的时候(ssd设备),qemu 使用设备的blkdiscardzeros,最终落实到scsi的unmap命令,此时数据也不会被真正被写入;此时内核意识得到写入的零没有真正写入。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册