Skip to content

Commit 1833402

Browse files
committed
update
# Conflicts: # source/c08/c08_06.md
2 parents 21a6a0b + 5ace5aa commit 1833402

3 files changed

Lines changed: 99 additions & 3 deletions

File tree

source/c04/c04_20.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,18 @@
1010

1111
2、过滤关键字 用减号
1212

13+
谷歌搜索 `python parse 库` ,出现的都是 `urllib.parse`,可我实际想要找是 parse 库的相关资料。
14+
15+
![](http://image.iswbm.com/20200826102731.png)
16+
17+
那我可以使用 `-` ,过滤掉 urllib 的搜索结果
18+
1319
```
14-
Python协程 -CSDN
20+
python parse -urllib
1521
```
1622

23+
![](http://image.iswbm.com/20200826102136.png)
24+
1725
3、必须包含某关键字 用加号
1826

1927
```

source/c04/c04_21.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,20 @@ logout
292292

293293
```
294294

295+
**3.6 延长超时时间**
296+
297+
若网络情况不是很好,在安装某些包时经常会因为 ReadTimeout 而失败。
298+
299+
对于这种情况,一般重试几次就好了。
300+
301+
但是这样难免有些麻烦,有没有更好的解决方法呢?
302+
303+
有的,可以通过延长超时时间。
304+
305+
```shell
306+
$ pip install --default-timeout=100 <packages>
307+
```
308+
295309

296310

297311
## 4. 卸载软件包

source/c08/c08_06.md

Lines changed: 76 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,9 @@ config=eni.parse_deb_config('/etc/network/interfaces.d/50-cloud-init.cfg')
471471

472472
如果是按照旧虚拟机创建新的快照镜像,然后使用这个镜像创建新的虚拟机,有可能会在同一块网卡上出现新旧两个ip,这是因为虚拟机在启动过程中,会先读取原网络配置配置ip,然后才会运行 cloud-init 进行新ip的配置,而新ip的配置是使用 `ifup` 这个命令![](http://image.iswbm.com/Fp1TeHSiIMIQoZygbW9VSfAagB_d)
473473

474-
使用这种方式并不会将第一次配置的旧ip给清除掉。![](http://image.iswbm.com/Fh-5SQ8qYjhJEKovI6LmIpabSy2c)
474+
使用这种方式并不会将第一次配置的旧ip给清除掉。
475+
476+
![](http://image.iswbm.com/Fh-5SQ8qYjhJEKovI6LmIpabSy2c)
475477

476478
这个问题,目前我只在CentOS6 中遇到过。可以通过修改代码让其先 `ifdown``ifup` 就可以解决这个问题。![](http://image.iswbm.com/20190430231812.png)
477479

@@ -606,9 +608,81 @@ runcmd:
606608

607609
但这仅仅只是写入,若要执行这些命令,还需要你在 /etc/cloud/cloud.cfg 中配置 `scripts_user`,这样 cloud-init 才会去执行它。
608610

611+
## 8.6.5 如何读取修改缓存数据
612+
613+
当虚拟机启动时,cloudinit 会将 configdrive 里的数据读取并缓存,缓存文件是一个被序列化的二进制文件,名字固定为 `obj.pkl`
614+
615+
序列化的函数存在于 stages.py 文件
616+
617+
- `_pkl_store()`:序列化
618+
- `_pkl_load()`:反序列化
619+
620+
![](http://image.iswbm.com/20200807135831.png)
621+
622+
读取演示
623+
624+
```
625+
>>> from cloudinit import stages;
626+
>>> file=stages._pkl_load("/var/lib/cloud/instances/1242171a-bf72-4a3a-acb0-9e5393e97865/obj.pkl")
627+
>>> file.network_json
628+
>>> file.metadata
629+
```
630+
631+
写入演示
632+
633+
```
634+
>>> file.metadata["vhost_queues"]=1
635+
>>> stages._pkl_store(file, "/home/obj.pkl")
636+
True
637+
```
638+
639+
640+
641+
## 8.6.16 如何判断是新虚拟机
642+
643+
在 stages.py 下有一个函数 `is_new_instance()`
644+
645+
![](http://image.iswbm.com/20200807161244.png)
646+
647+
其中 `previous``nw_timestramp` 都是从 `/var/lib/cloud/instances/[instance_uud]/` 目录下直接读取的,导致旧虚拟机的信息。
648+
649+
而在 `/var/lib/cloud/instance` 目录下的信息,都是从 `/dev/sr0` 从读取的最新信息。
650+
651+
通过二者对比,就可以知道该虚拟机是否是一台新的虚拟机。
652+
653+
654+
655+
## 8.6.17 CentOS 6.x 如何更改网卡名
656+
657+
参考文章:[Changing the ethX to Ethernet Device Mapping in EL6](https://www.alteeve.com/w/Changing_the_ethX_to_Ethernet_Device_Mapping_in_EL6)
658+
659+
关闭network
660+
661+
```shell
662+
$ /etc/init.d/network stop
663+
```
664+
665+
修改ifcfg 文件里的 device 和 hwaddr
666+
667+
```shell
668+
$ vim /etc/sysconfig/network-scripts/ifcfg-eth*
669+
```
670+
671+
修改 udev 网卡规则文件
672+
673+
```shell
674+
vim /etc/udev/rules.d/70-persistent-net.rules
675+
```
676+
677+
重新加载 udev,启动 network
678+
679+
```shell
680+
$ start_udev && /etc/init.d/network start
681+
```
682+
609683

610684

611-
## 8.6.15 相关命令
685+
## 8.6.18 相关命令
612686

613687
```shell
614688
# 查看机器里有哪几张网卡

0 commit comments

Comments
 (0)