【项目难度】:基础
【项目描述】:
在实际生产环境中不断出现overlayfs没有真正卸掉的出现了诸如quota统计数据持续增长等问题。对于现网环境目前没有好的办法去界定该类情况。overlayfs在实际使用过程中是有很多限制但是并没有在代码层面直接做限制,所以在使用过程会出现操作错误引入的一些奇怪的问题,往往这类问题表露出来的现象是比较奇怪的,定位起来比较耗时。基于这样的背景overlayfs的维测功能需要增强。
构想:
在“/sys/fs/“目录下增加overlayfs的目录,目录下记录各个挂载点的挂载信息,只有overlayfs被真正卸载掉目录下对应的目录才会删除。
目录结构构想如下,其中目录名称组成结构为:"merge_主设备号_次设备号"
【产出标准】:
1. 在"/sys/fs"目录下增加overlayfs目录,目录下记录各个挂载点的挂载信息
2. 只有在overlayfs被真正卸载掉时,目录下对应的目录才会被删除
【技术要求】:
1. C语言
2. Linux kernel
3. 存储
【导师姓名/导师邮箱】:yebin10@huawei.com
【成果提交仓库】:https://gitee.com/openeuler/kernel/tree/openEuler-22.09/
【相关参考资料】:https://gitee.com/openeuler/kernel
本次活动将面向全球学生,题目内容请同时提交中英文版本。
project name:Add sysfs file for overlayfs
【Difficulty】:basic
【Description】:
In the actual production environment, Overlayfs often occurs some problems, such as continuous growth of quota statistics. There is no good way to define this category for the current environment. Overlayfs has many restrictions in the actual use process but it has not directly restricted at the code level. Therefore, some strange problems introduced in operation errors will occur during the use process. It is time-consuming. Based on this background, Overlayfs's maintenance function needs to be enhanced.
This patch add sysfs file for overlayfs to recording the mount information. The sysfs file will be deleted only when Overlayfs is truly unloaded.
Idea:
Add the directory of overlayfs under the directory "/sys/fs/", and the directory records the mount information of each mount point, and the corresponding directory under the directory will be deleted only when the overlayfs is really unmounted.
The directory structure is conceived as follows, where the directory name composition structure is: "merge_primary_secondary_device_number"
【Output Requirements】:
1. Add the directory "/sys/fs" to the directory overlayfs, which records the mount information of each mount point
2. Only when overlayfs is actually unmounted, the corresponding directory will be deleted
【Technical Requirements】:
1. C language
2. Linux kernel
3. storage
【Mentor/Email】:yebin10@huawei.com
【Project Repository】:https://gitee.com/openeuler/kernel/tree/openEuler-22.09/
【Notes】:https://gitee.com/openeuler/kernel
Hi hiixfj, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here.
If you have any questions, please contact the SIG: Kernel, and any of the maintainers: @yangyingliang , @gatieme , @jiaoff , @zhengzengkai , @LiuYongQiang0816 , @wangxiongfeng , @kevinzhu1 , @jentlestea , @lujialin2 , @wuxu_buque , @xukuohai , @lengchao , @alvin-ling , @yuzenghui , @yuehaibing , @juntianlinux , @chenguangli , @gasonchen , @whoisxxx , @koulihong , @kailiu42 , @hanjun-guo , @woqidaideshi , @chiqijun , @wkfxxx , @thundertown , @guohaocs2c , @kylin-mayukun , @oskernel0719 , @liuxinux , @newbeats , @zhujianwei001 , @zhenpengzheng , @SuperSix173 , @colyli , @zhangyi089 , @htforge , @qiuuuuu , @xiexiuqi
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
验证记录:
运行环境:QEMU Debian GNU/Linux 10 debian ttyS0
挂载 overlayfs 文件系统:
root@debian:~# mount -t overlay -o lowerdir=lower,upperdir=upper,workdir=work overlay merge
root@debian:~# mount -t overlay -o \
lowerdir=testdir/lower:testdir/ller,\
upperdir=testdir/upper, \
workdir=testdir/work, \
overlay testdir/rename
测试添加到 /sys/fs/overlayfs 目录下的 sysfs 文件:
root@debian:~# cat /sys/fs/overlayfs/merge_0_46/upper
upper
root@debian:~# cat /sys/fs/overlayfs/merge_0_46/lower
lower
root@debian:~# cat /sys/fs/overlayfs/merge_0_46/merge
/root/merge
root@debian:~# cat /sys/fs/overlayfs/merge_0_46/work
work
root@debian:~# cat /sys/fs/overlayfs/merge_0_48/upper
testdir/upper
root@debian:~# cat /sys/fs/overlayfs/merge_0_48/lower
testdir/lower:testdir/ller
root@debian:~# cat /sys/fs/overlayfs/merge_0_48/merge
/root/testdir/rename
root@debian:~# cat /sys/fs/overlayfs/merge_0_48/work
testdir/work
在文件系统的挂载点下使用 umount -l 卸载文件系统,之后再次查看 sysfs 文件:
root@debian:~# cd merge/
root@debian:~/merge# umount -l .
root@debian:~/merge# cat /sys/fs/overlayfs/merge_0_46/upper
upper
root@debian:~/merge# cat /sys/fs/overlayfs/merge_0_46/lower
lower
root@debian:~/merge# cat /sys/fs/overlayfs/merge_0_46/merge
/root/merge
root@debian:~/merge# cat /sys/fs/overlayfs/merge_0_46/work
work
sysfs 文件未被删除,
退出挂载点目录后:
root@debian:~/merge# cd ..
root@debian:~# cat /sys/fs/overlayfs/merge_0_46/work
cat: /sys/fs/overlayfs/merge_0_46/work: No such file or directory
root@debian:~# ls /sys/fs/overlayfs/
merge_0_48
sysfs 文件被删除,
符合预期
边界条件测试
运行环境:QEMU Debian GNU/Linux 10 debian ttyS0
#!/bin/bash
tmpmerge="mergedir/"
merge="mergedir/"
while ((${#merge} < 2048))
do
mkdir $merge
if ((${#merge} + 9 >= 2048))
then
break
fi
merge=$merge$tmpmerge
done
echo mergelength ${#merge}
lower=""
tmplower="lowerdir/lower"
lowerbias=0
mkdir lowerdir
for ((i=0;i<200;i++))
do
tmp=$tmplower$lowerbias
((lowerbias += 1))
mkdir $tmp
lower=$lower$tmp
if ((i == 199))
then
break
fi
lower=$lower":"
done
echo lower length ${#lower}
mkdir upper
mkdir work
mount -t overlay -o upperdir=upper,lowerdir=$lower,workdir=work overlay $merge
查看 sysfs 文件内容:
root@debian:~/extreme# cat /sys/fs/overlayfs/merge_0_46/upper
upper
root@debian:~/extreme# cat /sys/fs/overlayfs/merge_0_46/work
work
root@debian:~/extreme# cat /sys/fs/overlayfs/merge_0_46/lower
lowerdir/lower0:lowerdir/lower1:lowerdir/lower2:lowerdir/lower3:lowerdir/lower4:lowerdir/lower5:lowerdir/lower6:lowerdir/lower7:lowerdir/lower8:lowerdir/lower9:lowerdir/lower10:lowerdir/lower11:lowerdir/lower12:lowerdir/lower13:lowerdir/lower14:lowerdir/lower15:lowerdir/lower16:lowerdir/lower17:lowerdir/lower18:lowerdir/lower19:lowerdir/lower20:lowerdir/lower21:lowerdir/lower22:lowerdir/lower23:lowerdir/lower24:lowerdir/lower25:lowerdir/lower26:lowerdir/lower27:lowerdir/lower28:lowerdir/lower29:lowerdir/lower30:lowerdir/lower31:lowerdir/lower32:lowerdir/lower33:lowerdir/lower34:lowerdir/lower35:lowerdir/lower36:lowerdir/lower37:lowerdir/lower38:lowerdir/lower39:lowerdir/lower40:lowerdir/lower41:lowerdir/lower42:lowerdir/lower43:lowerdir/lower44:lowerdir/lower45:lowerdir/lower46:lowerdir/lower47:lowerdir/lower48:lowerdir/lower49:lowerdir/lower50:lowerdir/lower51:lowerdir/lower52:lowerdir/lower53:lowerdir/lower54:lowerdir/lower55:lowerdir/lower56:lowerdir/lower57:lowerdir/lower58:lowerdir/lower59:lowerdir/lower60:lowerdir/lower61:lowerdir/lower62:lowerdir/lower63:lowerdir/lower64:lowerdir/lower65:lowerdir/lower66:lowerdir/lower67:lowerdir/lower68:lowerdir/lower69:lowerdir/lower70:lowerdir/lower71:lowerdir/lower72:lowerdir/lower73:lowerdir/lower74:lowerdir/lower75:lowerdir/lower76:lowerdir/lower77:lowerdir/lower78:lowerdir/lower79:lowerdir/lower80:lowerdir/lower81:lowerdir/lower82:lowerdir/lower83:lowerdir/lower84:lowerdir/lower85:lowerdir/lower86:lowerdir/lower87:lowerdir/lower88:lowerdir/lower89:lowerdir/lower90:lowerdir/lower91:lowerdir/lower92:lowerdir/lower93:lowerdir/lower94:lowerdir/lower95:lowerdir/lower96:lowerdir/lower97:lowerdir/lower98:lowerdir/lower99:lowerdir/lower100:lowerdir/lower101:lowerdir/lower102:lowerdir/lower103:lowerdir/lower104:lowerdir/lower105:lowerdir/lower106:lowerdir/lower107:lowerdir/lower108:lowerdir/lower109:lowerdir/lower110:lowerdir/lower111:lowerdir/lower112:lowerdir/lower113:lowerdir/lower114:lowerdir/lower115:lowerdir/lower116:lowerdir/lower117:lowerdir/lower118:lowerdir/lower119:lowerdir/lower120:lowerdir/lower121:lowerdir/lower122:lowerdir/lower123:lowerdir/lower124:lowerdir/lower125:lowerdir/lower126:lowerdir/lower127:lowerdir/lower128:lowerdir/lower129:lowerdir/lower130:lowerdir/lower131:lowerdir/lower132:lowerdir/lower133:lowerdir/lower134:lowerdir/lower135:lowerdir/lower136:lowerdir/lower137:lowerdir/lower138:lowerdir/lower139:lowerdir/lower140:lowerdir/lower141:lowerdir/lower142:lowerdir/lower143:lowerdir/lower144:lowerdir/lower145:lowerdir/lower146:lowerdir/lower147:lowerdir/lower148:lowerdir/lower149:lowerdir/lower150:lowerdir/lower151:lowerdir/lower152:lowerdir/lower153:lowerdir/lower154:lowerdir/lower155:lowerdir/lower156:lowerdir/lower157:lowerdir/lower158:lowerdir/lower159:lowerdir/lower160:lowerdir/lower161:lowerdir/lower162:lowerdir/lower163:lowerdir/lower164:lowerdir/lower165:lowerdir/lower166:lowerdir/lower167:lowerdir/lower168:lowerdir/lower169:lowerdir/lower170:lowerdir/lower171:lowerdir/lower172:lowerdir/lower173:lowerdir/lower174:lowerdir/lower175:lowerdir/lower176:lowerdir/lower177:lowerdir/lower178:lowerdir/lower179:lowerdir/lower180:lowerdir/lower181:lowerdir/lower182:lowerdir/lower183:lowerdir/lower184:lowerdir/lower185:lowerdir/lower186:lowerdir/lower187:lowerdir/lower188:lowerdir/lower189:lowerdir/lower190:lowerdir/lower191:lowerdir/lower192:lowerdir/lower193:lowerdir/lower194:lowerdir/lower195:lowerdir/lower196:lowerdir/lower197:lowerdir/lower198:lowerdir/lower199
root@debian:~/extreme# cat /sys/fs/overlayfs/merge_0_46/merge
mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/mergedir/
#!/bin/bash
tmpmerge="mergedir/"
merge="mergedir/"
while ((${#merge} < 4096))
do
mkdir $merge
if ((${#merge} + 9 >= 4096))
then
break
fi
merge=$merge$tmpmerge
done
echo mergelength ${#merge}
lower=""
tmplower="lowerdir/lower"
lowerbias=0
mkdir lowerdir
for ((i=0;i<200;i++))
do
tmp=$tmplower$lowerbias
((lowerbias += 1))
mkdir $tmp
lower=$lower$tmp
if ((i == 199))
then
break
fi
lower=$lower":"
done
echo lower length ${#lower}
mkdir upper
mkdir work
mount -t overlay -o upperdir=upper,lowerdir=$lower,workdir=work overlay $merge
查看 sysfs 文件内容:
root@debian:~/extreme# cat /sys/fs/overlayfs/merge_0_46/upper
upper
root@debian:~/extreme# cat /sys/fs/overlayfs/merge_0_46/work
work
root@debian:~/extreme# cat /sys/fs/overlayfs/merge_0_46/merge
mergedir
root@debian:~/extreme#
root@debian:~/extreme# cat /sys/fs/overlayfs/merge_0_46/lower
lowerdir/lower0:lowerdir/lower1:lowerdir/lower2:lowerdir/lower3:lowerdir/lower4:lowerdir/lower5:lowerdir/lower6:lowerdir/lower7:lowerdir/lower8:lowerdir/lower9:lowerdir/lower10:lowerdir/lower11:lowerdir/lower12:lowerdir/lower13:lowerdir/lower14:lowerdir/lower15:lowerdir/lower16:lowerdir/lower17:lowerdir/lower18:lowerdir/lower19:lowerdir/lower20:lowerdir/lower21:lowerdir/lower22:lowerdir/lower23:lowerdir/lower24:lowerdir/lower25:lowerdir/lower26:lowerdir/lower27:lowerdir/lower28:lowerdir/lower29:lowerdir/lower30:lowerdir/lower31:lowerdir/lower32:lowerdir/lower33:lowerdir/lower34:lowerdir/lower35:lowerdir/lower36:lowerdir/lower37:lowerdir/lower38:lowerdir/lower39:lowerdir/lower40:lowerdir/lower41:lowerdir/lower42:lowerdir/lower43:lowerdir/lower44:lowerdir/lower45:lowerdir/lower46:lowerdir/lower47:lowerdir/lower48:lowerdir/lower49:lowerdir/lower50:lowerdir/lower51:lowerdir/lower52:lowerdir/lower53:lowerdir/lower54:lowerdir/lower55:lowerdir/lower56:lowerdir/lower57:lowerdir/lower58:lowerdir/lower59:lowerdir/lower60:lowerdir/lower61:lowerdir/lower62:lowerdir/lower63:lowerdir/lower64:lowerdir/lower65:lowerdir/lower66:lowerdir/lower67:lowerdir/lower68:lowerdir/lower69:lowerdir/lower70:lowerdir/lower71:lowerdir/lower72:lowerdir/lower73:lowerdir/lower74:lowerdir/lower75:lowerdir/lower76:lowerdir/lower77:lowerdir/lower78:lowerdir/lower79:lowerdir/lower80:lowerdir/lower81:lowerdir/lower82:lowerdir/lower83:lowerdir/lower84:lowerdir/lower85:lowerdir/lower86:lowerdir/lower87:lowerdir/lower88:lowerdir/lower89:lowerdir/lower90:lowerdir/lower91:lowerdir/lower92:lowerdir/lower93:lowerdir/lower94:lowerdir/lower95:lowerdir/lower96:lowerdir/lower97:lowerdir/lower98:lowerdir/lower99:lowerdir/lower100:lowerdir/lower101:lowerdir/lower102:lowerdir/lower103:lowerdir/lower104:lowerdir/lower105:lowerdir/lower106:lowerdir/lower107:lowerdir/lower108:lowerdir/lower109:lowerdir/lower110:lowerdir/lower111:lowerdir/lower112:lowerdir/lower113:lowerdir/lower114:lowerdir/lower115:lowerdir/lower116:lowerdir/lower117:lowerdir/lower118:lowerdir/lower119:lowerdir/lower120:lowerdir/lower121:lowerdir/lower122:lowerdir/lower123:lowerdir/lower124:lowerdir/lower125:lowerdir/lower126:lowerdir/lower127:lowerdir/lower128:lowerdir/lower129:lowerdir/lower130:lowerdir/lower131:lowerdir/lower132:lowerdir/lower133:lowerdir/lower134:lowerdir/lower135:lowerdir/lower136:lowerdir/lower137:lowerdir/lower138:lowerdir/lower139:lowerdir/lower140:lowerdir/lower141:lowerdir/lower142:lowerdir/lower143:lowerdir/lower144:lowerdir/lower145:lowerdir/lower146:lowerdir/lower147:lowerdir/lower148:lowerdir/lower149:lowerdir/lower150:lowerdir/lower151:lowerdir/lower152:lowerdir/lower153:lowerdir/lower154:lowerdir/lower155:lowerdir/lower156:lowerdir/lower157:lowerdir/lower158:lowerdir/lower159:lowerdir/lower160:lowerdir/lower161:lowerdir/lower162:lowerdir/lower163:lowerdir/lower164:lowerdir/lower165:lowerdir/lower166:lowerdir/lower167:lowerdir/lower168:lowerdir/lower169:lowerdir/lower170:lowerdir/lower171:lowerdir/lower172:lowerdir/lower173:lowerdir/lower174:lowerdir/lower175:lowerdir/lower176:lowerdir/lower177:lowerdir/lower178:lowerdir/lower179:lowerdir/lower180:lowerdir/lower181:lowerdir/lower182:lowerdir/lower183:lowerdir/lower184:lowerdir/lower185:lowerdir/lower186:lowerdir/lower187:lowerdir/lower188:lowerdir/lower189:lowerdir/lower190:lowerdir/lower191:lowerdir/lower192:lowerdir/lower193:lowerdir/lower194:lowerdir/lower195:lowerdir/lower196:lowerdir/lower197:lowerdir/lower198:lowerdir/lower199
符合预期
登录 后才可以发表评论