【问题复现步骤】
1、后台执行bash kbimg.sh create vm-image -p /etc/yum.repos.d/euleros_9.82.201.30.repo -v X86_vm_v1 -b ../bin/os-agent -e '''$1$root$n2NycQKcfNnARaz/W29SN0'''
2、前台多次下发bash kbimg.sh create vm-image -p /etc/yum.repos.d/euleros_9.82.201.30.repo -v X86_vm_v1 -b ../bin/os-agent -e '''$1$root$n2NycQKcfNnARaz/W29SN0'''
【预期结果】
步骤2中下发的kbimg.sh全部因为防重入机制而失败,且步骤1中的后台kbimg.sh进程执行成功。
【实际结果】
步骤1中的kbimg.sh正在运行中:
[root@openEuler ~]# ps aux | grep kube
root 16628 12.1 2.7 354676 96728 pts/0 S+ 10:49 0:07 /usr/bin/python3 /usr/bin/yum -y --installroot=/opt/kubeOS/scripts/rootfs install --nogpgcheck --setopt install_weak_deps=False kernel passwd grub2-efi grub2-tools dhcp NetworkManager openssh-server docker kubernetes-kubeadm kubernetes-kubelet containernetworking-plugins socat conntrack-tools ebtables ethtool rsyslog vi net-tools hwinfo dracut coreutils gawk parted dosfstools grub2 grub2-efi-x64-modules grub2-pc-modules
root 16712 0.0 0.0 22112 2328 pts/2 R+ 10:50 0:00 grep --color=auto kube
[root@openEuler ~]# cd /opt/kubeOS/scripts/
[root@openEuler scripts]# df -h | grep kube
[root@openEuler scripts]# df -ha | grep kube
none 0 0 0 - /opt/kubeOS/scripts/rootfs/proc
devtmpfs 4.0M 0 4.0M 0% /opt/kubeOS/scripts/rootfs/dev
devpts 0 0 0 - /opt/kubeOS/scripts/rootfs/dev/pts
none - - - - /opt/kubeOS/scripts/rootfs/sys
步骤2下发第二个kbimg.sh脚本,虽然获取锁文件失败退出,但是在退出前会umount /opt/kubeOS/scripts/rootfs和rm -rf ./test.lock:
[root@openEuler scripts]# bash -x kbimg.sh create vm-image -p /etc/yum.repos.d/euleros_9.82.201.30.repo -v X86_vm_v1 -b ../bin/os-agent -e '''$1$root$n2NycQKcfNnARaz/W29SN0'''; echo $?
+ set -e
+ NAME=KubeOS
+ REPO=
+ VERSION=
+ AGENT_PATH=
+ PASSWD=
+ DOCKER_IMG=
+ LOCK=./test.lock
+ source common/globalVariables.sh
+ source common/log.sh
+ source common/utils.sh
+ source create/rootfsCreate.sh
+ source create/imageCreate.sh
+ trap clean_space EXIT
+ trap clean_img ERR
+ test_lock
+ file_lock ./test.lock
+ local lock_file=./test.lock
+ exec
+ flock -xn 10
+ clean_space
+ delete_dir /opt/kubeOS/scripts/rootfs
+ local ret=0
+ local dir=/opt/kubeOS/scripts/rootfs
+ unmount_dir /opt/kubeOS/scripts/rootfs
+ local dir=/opt/kubeOS/scripts/rootfs
+ '[' -L /opt/kubeOS/scripts/rootfs ']'
+ '[' -f /opt/kubeOS/scripts/rootfs ']'
+ '[' '!' -d /opt/kubeOS/scripts/rootfs ']'
++ readlink -e /opt/kubeOS/scripts/rootfs
+ local real_dir=/opt/kubeOS/scripts/rootfs
++ awk '{print $2}'
++ grep '^/opt/kubeOS/scripts/rootfs'
++ sort -r
+ local 'mnts=/opt/kubeOS/scripts/rootfs/sys
/opt/kubeOS/scripts/rootfs/proc
/opt/kubeOS/scripts/rootfs/dev/pts
/opt/kubeOS/scripts/rootfs/dev'
+ for m in ${mnts}
+ log_info_print 'Unmount /opt/kubeOS/scripts/rootfs/sys'
++ date '+%b %d %Y %H:%M:%S'
+ local 'logmsg=[ INFO ] - Aug 19 2022 10:51:00 Unmount /opt/kubeOS/scripts/rootfs/sys'
+ echo '[' INFO ']' - Aug 19 2022 10:51:00 Unmount /opt/kubeOS/scripts/rootfs/sys
[ INFO ] - Aug 19 2022 10:51:00 Unmount /opt/kubeOS/scripts/rootfs/sys
+ umount -f /opt/kubeOS/scripts/rootfs/sys
+ for m in ${mnts}
+ log_info_print 'Unmount /opt/kubeOS/scripts/rootfs/proc'
++ date '+%b %d %Y %H:%M:%S'
+ local 'logmsg=[ INFO ] - Aug 19 2022 10:51:00 Unmount /opt/kubeOS/scripts/rootfs/proc'
+ echo '[' INFO ']' - Aug 19 2022 10:51:00 Unmount /opt/kubeOS/scripts/rootfs/proc
[ INFO ] - Aug 19 2022 10:51:00 Unmount /opt/kubeOS/scripts/rootfs/proc
+ umount -f /opt/kubeOS/scripts/rootfs/proc
+ for m in ${mnts}
+ log_info_print 'Unmount /opt/kubeOS/scripts/rootfs/dev/pts'
++ date '+%b %d %Y %H:%M:%S'
+ local 'logmsg=[ INFO ] - Aug 19 2022 10:51:00 Unmount /opt/kubeOS/scripts/rootfs/dev/pts'
+ echo '[' INFO ']' - Aug 19 2022 10:51:00 Unmount /opt/kubeOS/scripts/rootfs/dev/pts
[ INFO ] - Aug 19 2022 10:51:00 Unmount /opt/kubeOS/scripts/rootfs/dev/pts
+ umount -f /opt/kubeOS/scripts/rootfs/dev/pts
+ for m in ${mnts}
+ log_info_print 'Unmount /opt/kubeOS/scripts/rootfs/dev'
++ date '+%b %d %Y %H:%M:%S'
+ local 'logmsg=[ INFO ] - Aug 19 2022 10:51:00 Unmount /opt/kubeOS/scripts/rootfs/dev'
+ echo '[' INFO ']' - Aug 19 2022 10:51:00 Unmount /opt/kubeOS/scripts/rootfs/dev
[ INFO ] - Aug 19 2022 10:51:00 Unmount /opt/kubeOS/scripts/rootfs/dev
+ umount -f /opt/kubeOS/scripts/rootfs/dev
+ return 0
+ ret=0
+ '[' 0 -eq 0 ']'
+ rm -rf /opt/kubeOS/scripts/rootfs
+ return 0
+ delete_dir /opt/kubeOS/scripts/mnt
+ local ret=0
+ local dir=/opt/kubeOS/scripts/mnt
+ unmount_dir /opt/kubeOS/scripts/mnt
+ local dir=/opt/kubeOS/scripts/mnt
+ '[' -L /opt/kubeOS/scripts/mnt ']'
+ '[' -f /opt/kubeOS/scripts/mnt ']'
+ '[' '!' -d /opt/kubeOS/scripts/mnt ']'
+ return 0
+ ret=0
+ '[' 0 -eq 0 ']'
+ rm -rf /opt/kubeOS/scripts/mnt
+ return 0
+ delete_file os.tar
+ local file=os.tar
+ '[' '!' -e os.tar ']'
+ return 0
+ rm -rf ./test.lock
1
[root@openEuler scripts]# df -ha | grep kube
此时若下发第三个kbimg.sh脚本,因为test.lock已经被删除,所以不会再被file_lock拦截,而造成多个kbimg.sh并存:
[root@openEuler scripts]# bash -x kbimg.sh create vm-image -p /etc/yum.repos.d/euleros_9.82.201.30.repo -v X86_vm_v1 -b ../bin/os-agent -e '''$1$root$n2NycQKcfNnARaz/W29SN0'''; echo $?
+ set -e
+ NAME=KubeOS
+ REPO=
+ VERSION=
+ AGENT_PATH=
+ PASSWD=
+ DOCKER_IMG=
+ LOCK=./test.lock
+ source common/globalVariables.sh
+ source common/log.sh
+ source common/utils.sh
+ source create/rootfsCreate.sh
+ source create/imageCreate.sh
+ trap clean_space EXIT
+ trap clean_img ERR
+ test_lock
+ file_lock ./test.lock
+ local lock_file=./test.lock
+ exec
+ flock -xn 10
+ '[' 0 -ne 0 ']'
+ kubeos_image_main create vm-image -p /etc/yum.repos.d/euleros_9.82.201.30.repo -v X86_vm_v1 -b ../bin/os-agent -e '$1$root$n2NycQKcfNnARaz/W29SN0'
+ local ret=
+ local cmd=create
+ '[' 10 -eq 1 ']'
+ case $cmd in
+ shift
+ verify_create_input vm-image -p /etc/yum.repos.d/euleros_9.82.201.30.repo -v X86_vm_v1 -b ../bin/os-agent -e '$1$root$n2NycQKcfNnARaz/W29SN0'
+ local ret=
+ local cmd=vm-image
+ case $1 in
+ shift
...
并且步骤1中的kbimg最后会因为rootfs被卸载而失败:
[root@openEuler scripts]# bash kbimg.sh create vm-image -p /etc/yum.repos.d/euleros_9.82.201.30.repo -v X86_vm_v1 -b ../bin/os-agent -e '''$1$root$n2NycQKcfNnARaz/W29SN0'''
install package..
Unable to detect release version (use '--releasever' to specify release version)
Euler 9.6 MB/s | 3.4 MB 00:00
everything 382 kB/s | 16 MB 00:43
EPOL 51 kB/s | 4.7 MB 01:35
Errors during downloading metadata for repository 'EPOL':
- Curl error (28): Timeout was reached for http://121.36.84.172/dailybuild/openEuler-22.09/openEuler-22.09/EPOL/main/x86_64/repodata/43052da1f5bc94b602e120f3e6f7e5896dc6035dff8aaf69289ad53c6a26a00a-filelists.xml.gz [Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds]
[Errno 2] No such file or directory: '/opt/kubeOS/scripts/rootfs/var/cache/dnf/metadata_lock.pid'
[root@openEuler scripts]#
Hi oh_thats_great, 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: sig-CloudNative, and any of the maintainers: @yangzhao_kl , @weibaohui , @biannm , @pixiake , @haomintsai , @Jianmin , @haozi007
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论