linux保留空间,linux – 在复制文件之前保留磁盘空间

我想在rsync发生之前保留(或者是关键字“声明”?)一些磁盘空间,这样其他程序就会认为磁盘空间较小(因为在rsync之后,磁盘的空间会大大减少).

背景

bash脚本rsync是一个位置的大量数据,有些工作,然后删除rsynced数据. bash脚本的多个实例可以同时运行.问题是,偶尔,多个脚本同时rsync并使用所有可用磁盘空间然后崩溃.

伪代码

这是当前的算法

check:

$disk_A = source disk

$disk_X = pick a different disk

$space_need = 12345 # disk space needed

$space_avail = space_available(some disk X) # disk space available on $disk_X

if $space_need < $space_avail then

rsync $disk_A/data $disk_X/data # this step takes much time

else

goto check:

do work

remove $disk_X/data

我想将步骤更改为(…与先前的伪代码相同)

...

if ... then

reserve $space_avail on $disk_X

# space_available() should now report $disk_X as $space_avail - original

# HOW TO DO THAT?

rsync $disk_A/data $disk_X/data # this step takes much time

else

...

...

release $disk_X $space_avail # HOW TO DO THAT?

利用修改的伪代码,空间被立即保留(或“声明”).其他脚本看到space_available()会立即返回更少的空间.目前,space_available()将返回一个下降的数字,而其他rsync实例运行.

解决方法:

如果您坚持使用独立于文件系统的工具,除了实际分配磁盘空间之外我无法想到这样做的方法,即保留需要创建一个所请求大小的(非稀疏!)文件,而且你’ d需要在启动rsync之前删除此文件.

如果文件位于ext2 / ext3 / ext4卷上,并且对某些操作使用root访问权限是可以接受的,则可以使用其reserved space功能.保留空间通常用于root,但您可以将其提供给其他用户或其他组.以该用户/组的身份运行rsync进程,并在运行rsync之前使用tune2fs -m调整保留空间.

对于ZFS或Btrfs池,可能​​有一个更灵活的解决方案,但我不知道该怎么做.

标签:linux,rsync,files,disk-usage,file-copy

来源: https://codeday.me/bug/20190814/1658694.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值