Ceph 16 模拟坏盘和恢复
1. 准备工作为了方便模拟坏盘和恢复,我们需要先记下一些信息。
可以先看下 OSD 和设备的对应关系:
1ceph device ls
或:
1ceph device ls-by-host <hostname>
首先我们要决定模拟坏盘的 OSD 和对应的设备,我这里选择 osd.1,对应的设备为 /dev/sdc。
然后,我们需要看下选择设备的位置,命令如下:
1ll /sys/block/sdX
记下这个软连接中的 host 编号,方便后面恢复坏盘,我这里是 host0:
12ll /sys/block/sdclrwxrwxrwx 1 root root 0 Apr 17 16:08 /sys/block/sdc -> ../devices/pci0000:17/0000:17:02.0/0000:18:00.0/host0/target0:2:3/0:2:3:0/block/sdc/
2. 模拟坏盘从系统中删除设备,模拟坏盘。命令:
1echo 1 > /sys/block/sdX/device/delete
我这里是:
1echo 1 > /sys/ ...
Linux 不关机添加或删除设备
假设我们要操作设备 /dev/sdX。
1. 删除设备1echo 1 > /sys/block/sdX/device/delete
如果我们还有把这个设备加回来的打算,则最好记下这个设备的位置:
1ll /sys/block/sdX
记下输出路径中中的 hostX。
例如下面这个要记下位置 “host0”:
12ll /sys/block/sdclrwxrwxrwx 1 root root 0 Apr 17 16:08 /sys/block/sdc -> ../devices/pci0000:17/0000:17:02.0/0000:18:00.0/host0/target0:2:3/0:2:3:0/block/sdc/
2. 添加设备添加设备就是让内核重新扫描硬件。我们需要先知道所添加的设备位置(就是删除设备时记录的那个 hostX)。
1echo '- - -' > /sys/class/scsi_host/hostX/scan
注意替换 hostX。
注意设备号可能不会很快复用。
例如你的系统里目前有 /dev/sda ~ /dev/ ...
Linux 删除磁盘设备上的 LVM
我这里以设备 /dev/sdc 为例:
1234567# lsblk -o PATH,NAME,FSTYPE,FSSIZE,FSAVAIL,FSUSE%,MOUNTPOINTPATH NAME FSTYPE FSSIZE FSAVAIL FSUSE% MOUNTPOINT.../dev/sdc sdc LVM2_member /dev/mapper/ceph--3ed272cd--3dd6--4e30--8b ...
Windows 使用 Go + Wails 构建第一个桌面程序
1. 准备环境在开始前,我们需要系统内有依赖如下:
Go 1.18+
NPM (Node 15+)
Wails
前两个点击链接到官网自行下载,然后安装下 Wails:
1go install github.com/wailsapp/wails/v2/cmd/wails@latest
最后执行下 Wails 官方提供的检查命令:
1wails doctor
最后输出有输出 “ SUCCESS Your system is ready for Wails development!” 即为环境已经符合要求了。
2. 创建项目Wails 项目的目录结构相对复杂,所以官方提供了生成初始项目的命令。
我这里选择前端的技术栈为 Vue + TypeScript:
1wails init -n myproject -t vue-ts
更多前端技术栈见 https://wails.io/zh-Hans/docs/gettingstarted/firstproject 。
目录结构如下(不含 README.md 和 .gitignore):
12345678910.├── build/ # 项目 ...
Ceph Rados 性能测试方法
1. 测试准备1.1. 清理系统缓存在每次进行测试以前,我们清理下系统缓存,避免系统缓存对测试结果造成影响:
1sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches
1.2. 创建测试池Ceph 的 Pool 有两种策略,分别是副本池和纠删码池,创建方法如下:
123# 副本池ceph osd pool create {pool-name} [{pg-num} [{pgp-num}]] [replicated] \ [crush-rule-name] [expected-num-objects]
123# 纠删码池ceph osd pool create {pool-name} [{pg-num} [{pgp-num}]] erasure \ [erasure-code-profile] [crush-rule-name] [expected_num_objects] [--autoscale-mode ...
Linux 清理系统缓存
先说一个总结,彻底(尽可能的)清理干净 Linux 缓存:
1sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches
-
下面是关于 Linux 清理系统缓存方法的介绍。
我们可以通过操作写入 /proc/sys/vm/drop_caches 文件来清理 Linux 的缓存。
释放 Pagecache:
1echo 1 > /proc/sys/vm/drop_caches
释放可回收的 Slab 对象(包括 Dentry 和 Inode):
1echo 2 > /proc/sys/vm/drop_caches
释放 Pagecache 和可回收的 Slab 对象:
1echo 3 > /proc/sys/vm/drop_caches
有一些点我们需要关注下:
这是一个非破坏性操作,不会释放任何脏对象。
要增加此操作释放的对象数量,我们应该在写入 /proc/sys/vm/drop_caches 之前进行 sync。这将最大限度地减少系统上脏对象的数量,并创建更多要删除的候选对象。
写入 /proc/sys/v ...
Ceph Dashboard 重置密码
这里主要指的是忘记了现在的密码,需要强制修改。
首先登录 Mon 机器。
在一个文件内写入新密码,例如:
1vim passwd.txt
在里面写上密码,注意就直接密码,不需要任何格式。文件名也没有任何要求,随便起。
然后执行:
1ceph dashboard ac-user-set-password <username> -i <file> [--force-password]
username:用户名,比如管理员默认的 admin。
file:刚刚创建的包含了新密码的文件。
--force-password:强制修改,不加的话弱密码会被拒绝。
Ceph Pacific(16.2.z) Pool 常用操作
参考文档:
https://docs.ceph.com/en/pacific/rados/operations/pools/
https://docs.ceph.com/en/pacific/rados/operations/erasure-code/
1. 主要概念池(Pool)是用于存储对象的逻辑分区。
池提供以下几个特性:
弹性(Resilience,指恢复数据的能力):
对于副本池,弹性的定义为,可以保证发生故障而不丢失任何数据的 OSD 的数量。在多副本策略的池中,这个保证不丢失数据的 OSD 数量就是副本数量。
对于纠删码池,弹性的定义为,编码块的数量(例如,纠删码配置文件中的 m = 2)。
PG(Placement Group,放置组):
一个池存储了很多很多对象,为了更好的管理这些对象,Ceph 会把这些对象进行分组,每个组就是一个 PG。
一个池可以有很多 PG,每个 PG 只能归属一个池。
当多个池使用相同的 OSD 时,我们需要确保每个 OSD 的 PG 副本总和处于每个 OSD 所需的 PG 数量范围内。
典型配置的目标是每个 OSD 大 ...
Ubuntu 20.04 物理机集群部署 Ceph Pacifix (16.2.z)
本文将部署的 Ceph 版本为 Pacific (16.2.15)。
本文环境有三台机器,信息如下:
序号
Hostname
IP
Linux 发行版
Linux 内核
1
hostname1.cn
10.38.214.1
Ubuntu 20.04.2 LTS (Focal Fossa)
5.4.54-2
2
hostname2.cn
10.38.214.2
Ubuntu 20.04.2 LTS (Focal Fossa)
5.4.54-2
3
hostname3.cn
10.38.214.3
Ubuntu 20.04.2 LTS (Focal Fossa)
5.4.54-2
注:写这篇文章时我是使用公司机器操作的,所以对 hostname 和 ip 进行了替换,但对文章内容的理解应该没有影响。
参考文档:https://docs.ceph.com/en/pacific/install/
1. Ceph 管理工具 Cephadm1.1. Cephadm 简介安装 Ceph 的方法很多,本文使用官方最推荐的 Cephadm 工具进行。
官方是这样描述 Ce ...
fio smalloc OOM 问题记录
今天使用 fio 3.9 测试文件系统的时候,遇到了一个报错:
12smalloc: OOM. Consider using --alloc-size to increase the shared memory available.fio: filesetup.c:1482: alloc_new_file: Assertion `0' failed.
并不复杂,smalloc 分配共享内存失败了,OOM 错误,但是我机器的内存是足够大的:
1234$ free -h total used free shared buff/cache availableMem: 125G 15G 19G 4.7G 90G 103GSwap: 0B 0B 0B
所以并不是物理机内存不足的问题,我们看一下 fio 提示的解决方案,参数 --alloc-size 的解释:
123 ...