[iyunv@node2 ~]# cd /var/lib/nova/instances/
[iyunv@node2 instances]# ls
b6ba588b-494d-4055-ac8e-5c3978ba9150 _base compute_nodes locks
b6ba588b-494d-4055-ac8e-5c3978ba9150目录为虚拟机的ID(可通过nova list查看),详细内容如下
console.log 终端输出到此文件中
disk 虚拟磁盘,后端文件/var/lib/nova/instances/_base/fed362a98366776009c94e3d0856df41750b4353,使用的是copy on write模式,基础镜像就是这里的后端文件,只有变动的内容才放到disk文件中
[iyunv@node2 b6ba588b-494d-4055-ac8e-5c3978ba9150]# file disk
disk: QEMU QCOW Image (v3), has backing file (path /var/lib/nova/instances/_base/fed362a98366776009c94e3d0856df417), 1073741824 bytes
[iyunv@node2 b6ba588b-494d-4055-ac8e-5c3978ba9150]# qemu-img info disk
image: disk
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 2.4M
cluster_size: 65536
backing file: /var/lib/nova/instances/_base/fed362a98366776009c94e3d0856df41750b4353
Format specific information:
compat: 1.1
lazy refcounts: false
disk.info disk的详情
[iyunv@node2 b6ba588b-494d-4055-ac8e-5c3978ba9150]# qemu-img info disk.info
image: disk.info
file format: raw
virtual size: 512 (512 bytes)
disk size: 4.0K
libvirt.xml 就是libvirt自动生成的xml,不可以改动此xml,因为改了也没什么卵用,此xml是启动虚拟机时动态生成的
compute_nodes记录了主机名和时间戳
[iyunv@node2 instances]# cat compute_nodes
{"node2.chinasoft.com": 1493295366.200245}
locks目录:类似于写shell脚本时的lock文件
学习metadata
metadata(元数据)
在创建虚拟机时可以添加或者修改虚拟机的默认属性,例如主机名,key-pair,ip地址等
在新创建的虚拟机上查看metadata的数据,这些都是可以通过metadata生成
账号cirros
密码cubswin:)
[iyunv@node2 instances]# ssh cirros@192.168.3.102
$ curl http://169.254.169.254/2009-04-04/meta-data
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
instance-action
instance-id
instance-type
local-hostname
local-ipv4
placement/
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
查看路由
$ ip ro li
default via 192.168.3.1 dev eth0
169.254.169.254 via 192.168.3.100 dev eth0
192.168.3.0/24 dev eth0 src 192.168.3.102
在控制节点查看网络的命名空间ns
[iyunv@node1 instances]# ip netns li
qdhcp-65c11cc3-8efb-46de-8d14-690431835bae (id: 0)
查看上述ns的具体网卡情况,也就是在命名空间中使用ip ad li并查看端口占用情况
[iyunv@node1 instances]# ip netns exec qdhcp-65c11cc3-8efb-46de-8d14-690431835bae ip ad li
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ns-436a0452-af@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether fa:16:3e:a3:76:b9 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.3.100/24 brd 192.168.3.255 scope global ns-436a0452-af
valid_lft forever preferred_lft forever
inet 169.254.169.254/16 brd 169.254.255.255 scope global ns-436a0452-af
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fea3:76b9/64 scope link
valid_lft forever preferred_lft forever
[iyunv@node1 instances]# ip netns exec qdhcp-65c11cc3-8efb-46de-8d14-690431835bae netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2867/python2
tcp 0 0 192.168.3.100:53 0.0.0.0:* LISTEN 10450/dnsmasq
tcp 0 0 169.254.169.254:53 0.0.0.0:* LISTEN 10450/dnsmasq
tcp6 0 0 fe80::f816:3eff:fea3:53 :::* LISTEN 10450/dnsmasq
udp 0 0 192.168.3.100:53 0.0.0.0:* 10450/dnsmasq
udp 0 0 169.254.169.254:53 0.0.0.0:* 10450/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 10450/dnsmasq
udp6 0 0 fe80::f816:3eff:fea3:53 :::* 10450/dnsmasq
总结
命名空间ns的ip地址dhcp服务分配的192.168.3.100而且还有一个169.254.169.254的ip,并在此启用了一个http服务(不仅提供http,还提供dns解析等),命名空间在neutron的dhcp-agent配置文件中启用了service_metadata_proxy = True而生效,
所以虚拟机的路由是命名空间通过dhcp推送(ip ro li查看出来的)的,key-pair就是通过命名空间在虚拟机生成时在/etc/rc.local中写一个curl的脚本把key-pair定位到.ssh目录下,并且改名即可,其他同理