灵感来源:刻意练习:如何从新手到大师
日拱一卒,只管去做。
我是小王同学,保持健康工作,今天就是美好一天。

提问13:CTDB入门
CTDB是集群Samba中的集群数据库组件,可提供高可用性负载共享CIFS服务器集群
samba+ctdb+分布式文件系统
CTDB本身不是HA解决方案,但与集群文件系统相结合,它可以提供简单且高效的HA集群解决方案: 集群配置两组IP:Private IP用于heartbeat和集群内部通信。
Public IP用于对外提供虚拟访问IP,当内部的节点发生宕机故障时,CTDB将调度其他可用节点接管其原先分配的Public IP,故障节点恢复后,漂移的Public IP会重新被接管,保证服务不中断。 这个过程对客户端是透明的,保证应用不会中断,也就是我们这里所说的高可用HA。
提问12:
cap是MDS分配给client对inode的操作能力权限
cephfs cap组成
每个元数据可以按照内容划分为5个部分,
p - pin指该inode存在
A - 代表Auth,即对于mode、uid、gid的操作能力
L - Link,即inode和dentry相关的count的操作能力
X - 代表Xattrs,即对于扩展属性的操作能力
F -代表File,即对文件大小(size)、文件数据和mtime的操作能力
另外每个部分最多对应有6种对应操作能力
s - shared 共享能力,即改数据可由多客户端获得,1对多的模型
x - exclusive 独占能力,只有该客户端
r - read 具有读能力
w -write 具有写能力
c -cache 读具有缓存能力,可以在客户端缓存读数据
b - buffer 客户端有缓存写的能力,即写的数据可以缓存在本地客户端
几种常见举例
一般ALX对应s或者x
AsLsXs - 只有客户端可以读和本地缓存相关的元数据状态
AxLxXx - 只有该客户端可以读和改变相关的元数据状态
Fs - 可以在本地缓存和读取mtime和文件大小的能力
Fx - 拥有在本地写mtime和文件大小的能力
Fr -可同步地从OSD中读取数据
Fc -可从缓存读取客户端中的数据
Fw - 拥有同步地写入OSD中数据的能力
Fb - 拥有优先写入缓存的能力,即先入objectcacher然后异步写入OSD
作者:要厉害的 链接:www.jianshu.com/p/ce476ac6e… 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
后端存储ObjectStore|BlueStore
www.talkwithtrend.com/Article/242…
Ceph数据存储原理

rrmtnr41efil
File:client读写的文件 object:是将File切块后的存储实体 oid:(object id) = ino(File的ID)+ono(切块序号) mask:PG总数m(m为2的整数幂)-1 PG(Placement Group):放置组(标识为 PGID)是一个逻辑的概念,一个PG存放多个对象,每个存储节点有上百个PG。 OSD(Object Storage Device):对象存储设备,提供存储资源。

提问8:linux使用dd命令快速生成1G大文件
dd if=/dev/zero of=/tmp/test bs=1M count=1024
青铜提问7:
window 如何通过任务管理计划做开机启动 一个软件?
1. bat启动.exe程序
2. 设置任务管理器

青铜提问6:
javascript 过程中 知识需要了什么
在学习JavaScript的过程中,你需要掌握以下知识:
-
语法和基本概念:了解JavaScript的语法结构,包括变量、数据类型、运算符、条件语句、循环和函数等基本概念。
-
DOM(文档对象模型)操作:学习如何使用JavaScript与HTML文档进行交互,通过操作DOM元素来改变页面内容、样式和结构。
-
事件处理:理解事件处理机制,学习如何监听和响应用户的交互行为,例如点击、鼠标移动、键盘输入等。
-
异步编程:掌握JavaScript中的异步编程模式,包括回调函数、Promise、async/await等,以处理网络请求、定时器和其他异步操作。
-
函数和作用域:深入理解JavaScript中的函数概念,包括函数的定义、调用、参数和返回值,以及作用域、闭包和变量提升等相关概念。
-
数组和对象:熟悉JavaScript中的数组和对象,了解它们的特性、常见操作和遍历方法。
-
错误处理和调试:学会处理JavaScript代码中的错误,并掌握调试工具和技巧,以快速定位和修复问题。
-
AJAX和HTTP请求:了解如何使用JavaScript进行AJAX(异步JavaScript和XML)通信,发送HTTP请求和处理响应数据。
-
浏览器对象模型(BOM):学习与浏览器窗口、历史记录、定时器和浏览器事件等相关的JavaScript API。
-
ES6+特性:熟悉ES6(ECMAScript 2015)及其后续版本的新特性,如箭头函数、模板字面量、解构赋值、模块化等。
-
Web开发工具和框架:掌握常用的Web开发工具和框架,如Webpack、Babel、React、Vue等,以提高开发效率和代码质量。
-
安全性和最佳实践:了解常见的Web安全问题和防范措施,学习编写安全的JavaScript代码和遵循最佳实践。
持续学习和实践是掌握JavaScript的关键。通过编写代码、阅读文档、参与项目和与其他开发者交流,不断拓展你的JavaScript知识和技能。
青铜提问5:理解 JavaScript 的 async/await
zhuanlan.zhihu.com/p/172378607
青铜提问4:VMware ESXi6.7 自定义镜像及安装
how:
-
在centos中如何查看子网掩码和网关?
-
netstat -rn
-
route -n
[root@VM-8-8-centos ~]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 1**0.0.8.**1 0.0.0.0 UG 0 0 0 eth0 10.0.8.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0
-
断网的情况下 如何使用本地ios镜像提供安装包
-
在VMware挂载本地iso光盘镜像、配置yum软件仓库
方式1;挂载 iso 文件 : 将iso文件拷贝到系统
mkdir /media/iso # 建立挂载点目录
mount -o loop /home/user/xxxx.ios /media/iso #执行挂载
方式2:挂载光驱: 将cdrom 放入光驱。
mkdir /media/cdrom # 建立挂载点目录
mount /dev/cdrom /media/cdrom #挂载光驱,
可能是其他设备 sr0
/dev/sr0是光驱的设备名,/dev/cdrom代表光驱
cdrom是sr0的软链接.你ll /dev/cdrom和ll /dev/sr0看看显示
vi /etc/yum.repos.d/beegfs-local.repo
[baseos]
name=Rocky Linux $releasever - Media - BaseOS
baseurl=file:///var/rocky84/BaseOS
gpgcheck=0
enabled=1

-
lsblk
-
mkfs.ext4 /dev/sdb
-
mount /dev/sdb /mnt/mydisk
青铜提问3: 我有三个节点,如何通过ceph-deploy部署ceph集群,请给出具体操作命令
why
执行步骤 :ceph-deploy disk zap node12:sdb
问题:[ceph_deploy][ERROR ] RuntimeError: zap command needs both HOSTNAME and DISK but got "None node12:sdb"
解决办法:ceph-deploy disk zap node12 /dev/sdb注意中间是空格,一个是名称,一个是设备
执行步骤 :ceph-deploy osd create --data /dev/ssd
问题:
[error: /dev/sda1 is a partition,](error: /dev/sda1 is a partition,)
access.redhat.com/solutions/6…
disk lvm part区别
解决办法:
- 删除逻辑卷
dmsetup remove –force [lvm名称];
- 格式化磁盘
sgdisk –z /dev/sdc
- 重新执行ceph-deploy disk zap node1 /dev/sdc
解决办法:
青铜提问2:
- what
stackoverflow.com/questions/2…
int Thread::join(void **prval)
{
int status = pthread_join(thread_id, prval); //返回值35
//在Linux系统中,一个程序返回35的状态码通常表示一个称为EDEADLK(死锁)的错误。
//在使用pthread_join函数时,如果等待的线程与调用线程相同,则会出现死锁。因此,当您在等待线程结束时,需要确保调用线程与等待线程不同。
if (status != 0) { //35 不等于0 true
char buf[256];
snprintf(buf, sizeof(buf), "Thread::join(): pthread_join "
"failed with error %d\n", status);
dout_emergency(buf);
ceph_assert(status == 0); //true 符合条件 ,程序继续,false 触发core
如果计算结果为false,则断言失败,抛出AssertionError
}
thread_id = 0;
return status;
}
- why 问题拆分
2.1 低于gdb7 如何打印 map值
-
GDB 7.0 will include support for writing pretty-printers in Python.
~/.gdbinit.
-
gdb-stl-views is a set of GDB macros that can display the contents of many STL containers
-
验证上面效果不好,直接p (MDSRank)地址,地址是map中元素地址
思考: 发现是变量不对,但是为什么不对呢,代码明明已经处理了?
3 how
青铜提问1:发送邮件报错AttributeError: module ‘smtplib‘ has no attribute ‘SMTP_SSL‘
what
配置
-
云主机 Centos8
-
Python3.11
smtpObj = smtplib.SMTP_SSL(mail_host) # 启用SSL发信, 端口一般是465
^^^^^^^^^^^^^^^^
AttributeError: module 'smtplib' has no attribute 'SMTP_SSL'
在其他环境可用说明代码没有问题。手工进行验证
Last login: Sun Jul 2 12:34:26 2023 from 58.56.96.29
[root@VM-8-8-centos ~]# python3
Python 3.11.0 (main, Apr 15 2023, 14:31:30) [GCC 8.5.0 20210514 (Red Hat 8.5.0-18)] on linux
>>> from smtplib import SMTP_SSL
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name 'SMTP_SSL' from 'smtplib' (/usr/local/python311/lib/python3.11/smtplib.py)
>
why
stackoverflow.com/questions/6…
cat /usr/local/python311/lib/python3.11/smtplib.py)
查找smtplib.SMTP_SSL的源码,
发现SMTP_SSL类是在have_ssl为True时才成立,
而have_ssl这个变量需要ssl的依赖才为True,
那么问题找到了,linux上并没有ssl依赖


how
- 升级openssl版本-编译安装
- 安装部署
//命令方式:尝试结果不行
yum install openssl openssl-devel
openssl version -a
Modules/_ssl.c:4575: undefined reference to `SSL_CTX_get_cert_store
//源码方式:更高版本
wget https://github.com/openssl/openssl/releases/download/openssl-3.1.1/openssl-3.1.1.tar.gz
yum -y install perl-IPC-Cmd zlib-devel gcc-c++
dnf install perl
./config --prefix=/usr/local/openssl --libdir=lib enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers -DOPENSSL_NO_GOST zlib shared
make install
openssl 编译参数选项
shared
no-shared
是否生成动态连接库。
备份和替换
mv /usr/bin/openssl /usr/bin/openssl.old mv /usr/include/openssl /usr/include/openssl.old ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl/include/openssl /usr/include/openssl echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf ldconfig
- pyton3.11 重新编译安装
进入你的python3.11目录(我的源码按照目录)
cd /root/bin/Python-3.11.0/Modules
修改Setup文件,改动如下,将147行处的5行代码取消注释
vim Setup


编译
./configure --prefix=/usr/local/python311 --with-openssl=/usr/local/openssl
make && make install
ln -sf /usr/local/python311/bin/python3.11 /usr/bin/python3
ln -sf /usr/local/python311/bin/pip3.11 /usr/bin/pip3
/configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl
最终还是没有解决: openssl python311最后 编译后提示 步正确:
pyton3.11 源码编译改为命令安装
yum install epel-release
dnf remove python3
dnf install python3.11
curl bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
白银回答: 源码编译 ssl+py3 并没有解决问题,centos8默认是3.6,但是通过dnf install python3.11
dnf search python3.11 确定是存在安装包的.

青铜提问2:
青铜提问2:
在centos中如何查看子网掩码和网关?
www.talkwithtrend.com/Article/242…
cephfs cap组成
每个元数据可以按照内容划分为5个部分,
p - pin指该inode存在
A - 代表Auth,即对于mode、uid、gid的操作能力
L - Link,即inode和dentry相关的count的操作能力
X - 代表Xattrs,即对于扩展属性的操作能力
F -代表File,即对文件大小(size)、文件数据和mtime的操作能力
另外每个部分最多对应有6种对应操作能力
s - shared 共享能力,即改数据可由多客户端获得,1对多的模型
x - exclusive 独占能力,只有该客户端
r - read 具有读能力
w -write 具有写能力
c -cache 读具有缓存能力,可以在客户端缓存读数据
b - buffer 客户端有缓存写的能力,即写的数据可以缓存在本地客户端
几种常见举例
一般ALX对应s或者x
AsLsXs - 只有客户端可以读和本地缓存相关的元数据状态
AxLxXx - 只有该客户端可以读和改变相关的元数据状态
Fs - 可以在本地缓存和读取mtime和文件大小的能力
Fx - 拥有在本地写mtime和文件大小的能力
Fr -可同步地从OSD中读取数据
Fc -可从缓存读取客户端中的数据
Fw - 拥有同步地写入OSD中数据的能力
Fb - 拥有优先写入缓存的能力,即先入objectcacher然后异步写入OSD
作者:要厉害的 链接:www.jianshu.com/p/ce476ac6e… 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文由mdnice多平台发布