诺志
软硬件开发技术笔记

简单介绍virtualenv的使用和原理
本文在centos7.6系统上实践

可以通过pip或者yum安装virtualenv,推荐使用pip安装,因为pip安装版本较新,老版本有些参数已经在新版本中废弃
pip安装virtualenv

yum安装virtualenv

...

本文演示如何在docker中运行zookeeper,以及链接方式
centos7.6系统上实验,其他环境操作类似

已经搭建好docker环境的本章节可以跳过
docker基本使用可以参见之前的文章,此处仅简单描述安装docker过程
宿主机准备源:

安装docker并启动

...
2022-01-16

本文简单记录下在centos7.6 1801上安装和使用docker的过程

以centos7.6minimal安装(最小化安装)为基础环境

默认使用操作系统自带的源也可以,不过下载包可能比较慢,本文使用aliyun的源替代操作系统自带源

...

使用的zookeeper版本为zookeeper-release-3.4.14
当版本和其他版本可通过zookeeper项目下载
当前版本也可以从本站备份下载
本文在centos7.6上编译,其他平台操作类似

以centos7.6 minimal安装(最小化安装)为基础环境

默认使用操作系统自带的源也可以,不过下载包可能比较慢,本文使用aliyun的源替代操作系统自带源

...

方法一 通过setopt参数覆盖默认reposdir配置

setopt的作用是可以设置/etc/yum.conf中的属性值,也可以说是覆盖那些属性信息。

方法二 修改/etc/yum.conf配置文件,指定reposdir参数

...

Python2 两种表示字符序列的类型

Python3 两种表示字符序列的类型

Unicode是表现形式,utf-8 是存储形式,utf-8 虽然是使用最广泛的编码,但也仅仅是 Unicode 的一种存储形式罢了。

...

寻找mount源码来源util-linux-xxx/sys-utils/mount.cmk_exit_code函数

结论:
如代码所示,当底层存储返回EACCESEROFS错误返回码,会给出相应的提示,然后通过goto try_readonly;重新以readonly的方式尝试挂载。
所以mount只是在第一次挂载是感知到错误后,尝试以readonly的方式挂载。

...

分析hasattr在python2/python3下遇到的不同行为的问题

先说结论:
python2和python3的hasattr实现,实际是调用getattr,然后判断是否会抛出异常,如果抛出异常,则判定为没有指定的属性返回false,否则返回true。但是python2会捕获所有的异常,而python3仅捕获PyExc_AttributeError异常,其他异常会继续向上抛,导致上层逻辑收到异常。

相关依据:
python2的hasattr文档描述看这里,代码实现看这里
python3的hasattr文档描述看这里,代码实现看这里

...

qemu要运行aarch64必须先安装aarch64支持:qemu-system-aarch64,centos/rhel下该包需要自己编译安装,Fedora源带该包,为简单操作本文直接在Fedora上实践

宿主机选用的Fedora版本 : Fedora-Server-dvd-x86_64-30-1.2.iso
虚拟机选用的rhel-7.4-aarch64版本 : rhel-alt-server-7.4-aarch64-dvd.iso (用centos的aarch64也可以)

配置桥接目的是在后面安装好的aarch64系统里面可以配置和宿主机Fedora在同一个网段的IP,如果不需要桥接,该章节可以跳过

...

1.配置dns,保证机器可以使用公网网络源
2.额外添加几个盘,作为数据盘,此处我加了/dev/vdb /dev/vdc /dev/vdd三块100G的盘

添加centos源和epel源,本文全部使用阿里云的源

添加ceph源,在/etc/yum.repos.d/目录下创建ceph.repo文件,粘贴以下内容

...
分类
2篇
c
1篇
8篇
19篇
9篇
2篇
k8s
2篇
搜索