跳到主要内容
版本:Next

模拟文件故障

本文主要介绍如何使用 Chaosd 模拟文件故障场景,包括创建文件、向文件追加数据、删除文件、修改文件权限、重命名文件以及替换文件数据等。

使用命令行模式创建实验​

本节介绍如何在命令行模式中创建文件故障实验。

在创建文件故障实验前,可运行以下命令行查看 Chaosd 支持的文件故障类型:

chaosd attack file -h

使用命令行模式向文件追加数据​

通过该功能以追加的方式将数据写到文件的末尾。

追加数据命令​

具体命令如下所示:

chaosd attack file append -h

追加数据相关配置说明​

配置项配置缩写说明值
countc写数据的次数int,默认值为 1
datad要写入文件的数据string,例如 "test",必须要设置
file-namef要写入数据的文件路径string,例如 "/tmp/test.txt",必须要设置

使用命令行模式向文件追加数据示例​

chaosd attack file append --count 2 --data "test" --file-name /tmp/test.txt

使用命令行模式创建文件​

通过该功能可以创建新的文件或者目录。

创建文件命令​

具体命令如下所示:

chaosd attack file create -h

创建文件相关配置说明​

配置项配置缩写说明值
dir-named创建的目录名称string,例如 "/tmp/test",dir-name 和 file-name 必须要设置其中一个
file-namef创建的文件名称string,例如 "/tmp/test.txt",dir-name 和 file-name 必须要设置其中一个

使用命令行模式创建文件示例​

chaosd attack file create --file-name "/tmp/test.txt"

使用命令行模式删除文件​

使用该功能删除文件或者目录。

删除文件命令​

具体命令如下所示:

chaosd attack file delete -h

删除文件相关配置说明​

配置项配置缩写说明值
dir-named删除的目录名称string,例如 "/tmp/test",dir-name 和 file-name 必须要设置其中一个
file-namef删除的文件名称string,例如 "/tmp/test.txt",dir-name 和 file-name 必须要设置其中一个

使用命令行模式删除文件示例​

chaosd attack file delete --file-name "/tmp/test.txt"

使用命令行模式修改文件权限​

使用该功能修改文件的权限。

修改文件权限命令​

具体命令如下所示:

chaosd attack file modify -h

修改文件权限相关配置说明​

配置项配置缩写说明值
file-namef要修改权限的文件名称string,例如 "/tmp/test.txt",必须要设置
privilegep将文件权限修改为该值uint32,例如 777,必须要设置

使用命令行模式修改文件权限示例​

chaosd attack file modify --file-name /tmp/test.txt --privilege 777

使用命令行模式重命名文件​

使用该功能重命名文件。

重命名文件命令​

具体命令如下所示:

chaosd attack file rename -h

重命名文件相关配置说明​

配置项配置缩写说明值
dest-filed目标文件名称string,例如 "/tmp/test2.txt",必须要设置
source-files源文件名称string,例如 "/tmp/test.txt",必须要设置

使用命令行模式重命名文件示例​

chaosd attack file rename --source-file /tmp/test.txt --dest-file /tmp/test2.txt

使用命令行模式替换文件内容​

使用该功能替换文件中的内容。

替换文件内容命令​

具体命令如下所示:

chaosd attack file replace -h

替换文件内容相关配置说明​

配置项配置缩写说明值
dest-stringd将文件中的内容替换为该值string,例如 "text",必须要设置
file-namef要替换内容的文件名称string,例如 "/tmp/test.txt",必须要设置
linel替换文件中哪一行的数据int,默认为 0,表示替换所有能匹配到 origin-string 的行的数据
origin-stringo文件中要替换的数据string,例如 "test",必须要设置

使用命令行模式替换文件内容示例​

chaosd attack file replace --origin-string test --dest-string text --file-name /tmp/test.txt --line 1

使用 HTTP 服务创建文件故障​

信息

文件 HTTP 接口从 Chaosd v1.6.0 开始提供。Chaosd v1.5.0 的文件故障仅支持命令行模式。

在目标文件所在的主机上启动 Chaosd:

chaosd server --host 127.0.0.1 --port 31767

选择一个已存在且 Chaosd 有权修改的文件。以下请求将 /tmp/test.txt 的权限修改为 600:

curl -X POST 'http://127.0.0.1:31767/api/attack/file' \
-H 'Content-Type: application/json' \
-d '{"action":"modify","file-name":"/tmp/test.txt","privilege":600}'

file-name 为 Chaosd 所在主机上的文件路径。privilege 为 JSON 数字,使用不带前导零的权限数字,例如 600 或 644。无需指定 kind。

保存请求返回的 UID。恢复原有权限时,将 <UID> 替换为该 UID,并发送恢复请求:

curl -X DELETE 'http://127.0.0.1:31767/api/attack/<UID>'

其他恢复限制请参阅查找和恢复实验。