openstack 安装记录

遇到过的问题:

  1. 配置文件贴错位置了
  2. 网络配置中漏掉了compute节点相关配置
  3. compute 节点qemu-kvm 版本低了一点
  4. mysql连接数被用完
    1. 配置了max_connections 也不管用,因为ulimit给限制了,修改ulimit后就可以了

解决思路:

  1. 根据id查日志 /var/log/

疑问:

  1. 创建机器的时候为什么指定的是网络的id,而不是子网的id?
  2. 在myservice network中,多个子网的情况下,因为无法指定子网id,如何确定机器是要放在哪个子网的?
    1. 可以明确指定ip地址来主动选择子网
  3. vxlan 端口号曾经是8472,后来修改为了4789,但是linux内核还在使用8472

其他:

  1. 路由器总是在控制节点上面的吗?
  2. 对于myservice网络,跨网段总是要求网关的,网关的压力势必会比较大,如何解决?
    1. provider 网络不存在该问题

原理:

  1. 浮动IP
    1. 浮动IP体现为路由器的网关接口的子接口
    2. provider网络默认是snat为true的,所以myservice网络默认是可以访问公网的,需要的话,可以将snat设置为false
    3. 浮动IP和绑定的vm之间的关系通过iptables规则实现,默认添加snat和dnat;需要的话:
      1. 可以只设置snat,则只允许出而不允许入;
      2. 也可以只设置dnat,只允许入不允许出
      3. 还可以让多个vm共享一个出口IP
    4. 这些都可以ip netns到相关路由器的名字空间中查看,注意:
      1. ip netns是通过/var/run/netns 中发现ns的,并非所有的netns都必须在这里注册的(docker 创建的netns就不放在这里)
      2. lsns 可以发现所有的ns,lsns是从/proc/$pid 中扫出来的
  2. 路由器
    1. 进入路由器所在网络名字空间中就可以查看路由器相关信息

php 之 stream编程

比较:

  1. 前者更加简单,后者显然复杂了一些
  2. 如果下载很大的文件,前者需要更多的内存,后者不需要
  3. PHP的stream wrapper的概念使得php的stream编程简单了许多
  4. 这两种方式都丢弃了http响应头信息,而对于请求头来讲,都可以通过context参数来设置

php curl sftp

首先, 验证php的curl模块是否支持sftp,验证方法:

有结果就是支持,否则就是不支持

 

curl 实现http文件上传的逻辑大致如下:

curl 实现sftp文件上传的方式是否可以如法炮制?

原以为修改下url地址(如: sftp://username:password@phpor.net/test.txt ) 就可以搞定,实际不然:(毕竟POSTFILDS 的内容就不太好解释),正确的姿势如下:

注意:

  1. 其中的 curl_setopt($s, CURLOPT_UPLOAD, true);  或 curl_setopt($s, CURLOPT_PUT, true); 是要有的,且: 换做curl_setopt($s, CURLOPT_PUT, true);  是不行的
  2. CURLOPT_INFILE 是一个文件流,不能是文件名

有时候,ssh2模块使用起来更加方便,但是真的没有的时候,curl也不算太复杂;另外,ssh2 附带注册了一个stream wrapper, 当安装了ssh2模块时,你甚至可以 fopen(“sftp://….”)

 

关于磁盘的基础知识

 

  1. 为什么msdos类型的分区表支持的最大磁盘容量为2T, 参考: https://en.wikipedia.org/wiki/Master_boot_record#PTE
    1. 分区表中使用了4字节来定义一个分区起始的逻辑扇区号,4字节能支持的最大的逻辑扇区号为2^32 ,每个扇区 512 Byte; 2^32*512 = 2T

 

 

参考:

https://www.howtogeek.com/193669/whats-the-difference-between-gpt-and-mbr-when-partitioning-a-drive/

https://en.wikipedia.org/wiki/Cylinder-head-sector

https://en.wikipedia.org/wiki/Master_boot_record

https://en.wikipedia.org/wiki/GUID_Partition_Table