gpt4 book ai didi

linux - python : How to wait until disk activity subsides?

转载 作者:太空狗 更新时间:2023-10-29 11:19:23 25 4
gpt4 key购买 nike

Hegle Jensens' wrote a great SnapBtr script它使用智能算法进行基于快照的备份,当可用空间变得稀缺时,该算法会选择要删除的旧备份。

不幸的是,BTRFS 文件系统有一个特点,即在执行任何删除命令后,它不会立即释放磁盘空间;相反,它只是安排删除每个节点。释放磁盘空间的实际过程发生在后台,只有在它完成后,我们才能知道有多少可用空间可用。

这就是为什么我想改进这个脚本,以便在删除一个备用子卷之后,它会等到没有硬盘驱动器事件才能获得实际的可用磁盘空间统计信息。

问题:知道周围有这么多 Python 库,你知道有什么会返回一些东西,我可以用它来获得硬盘驱动器事件饱和度的百分比吗?

如果有帮助,我已经制作了一个 Bash 脚本 wait-for-disk-idle.sh,它依赖于 iostat 来获取磁盘事件信息。但我想为如此简单的事情调用外部 Bash 进程是非常低效且容易出错的(如果未安装 iostat 怎么办?):

#! /bin/bash

USAGE="Usage: `basename $0` [-t sample time] [-p disk IO percent threshold] disk-device"

time=4
percent=10
# Parse command line options.
while getopts ":t:" OPT; do
case "$OPT" in
t)
time=$OPTARG
;;
:)
# getopts issues an error message
echo "`basename $0` version 0.1"
echo $USAGE >&2
exit 1
;;
\?)
# getopts issues an error message
echo "`basename $0` version 0.1"
echo $USAGE >&2
exit 1
;;
esac
done
while getopts ":p:" OPT; do
case "$OPT" in
p)
percent=$OPTARG
;;
:)
;;
\?)
# getopts issues an error message
echo "`basename $0` version 0.1"
echo $USAGE >&2
exit 1
;;
esac
done

# Remove the switches we parsed above.
shift `expr $OPTIND - 1`

# We want at least one non-option argument.
# Remove this block if you don't need it.
if [ $# -eq 0 ]; then
# getopts issues an error message
echo "`basename $0` version 0.1"
echo $USAGE >&2
exit 1
fi

echo percent: $percent, time: $time, disk: $1

while [[ $(iostat -d -x $time 2 $1 |
sed -n 's/.*[^0-9]\([0-9][0-9]*\)[\.,][^,^\.]*$/\1/p' | tail -1) > $percent
]]; do
echo wait
done

最佳答案

这是我从脚本(前)维护者那里得到的答案:

I am no longer cleaning up using the SnapBtr.py script, however you may be able to wait for the delete to complete with a btrfs filesystem sync.

关于linux - python : How to wait until disk activity subsides?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21208905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com