docker 替換 jar 包提示
[root@xxxx merged]# mv sso-server-0.0.1.jar app.jarmv: overwrite ‘app.jar’? ymv: cannot move ‘sso-server-0.0.1.jar’ to ‘app.jar’: Stale file handle
排查
用 strace 跟蹤,沒啥有用的資訊。
[root@xxxx merged]# strace mv sso-server-0.0.1.jar app.jarexecve("/usr/bin/mv", ["mv", "sso-server-0.0.1.jar", "app.jar"], [/* 29 vars */]) = 0brk(NULL) = 0x1688000mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd6b349a000access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3fstat(3, {st_mode=S_IFREG|0644, st_size=27070, ...}) = 0mmap(NULL, 27070, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd6b3493000close(3) = 0open("/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320i\0\0\0\0\0\0"..., 832) = 832fstat(3, {st_mode=S_IFREG|0755, st_size=155784, ...}) = 0mmap(NULL, 2255184, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd6b3053000mprotect(0x7fd6b3077000, 2093056, PROT_NONE) = 0mmap(0x7fd6b3276000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23000) = 0x7fd6b3276000mmap(0x7fd6b3278000, 6480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd6b3278000close(3) = 0open("/lib64/libacl.so.1", O_RDONLY|O_CLOEXEC) = 3read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\37\0\0\0\0\0\0"..., 832) = 832fstat(3, {st_mode=S_IFREG|0755, st_size=37056, ...}) = 0mmap(NULL, 2130560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd6b2e4a000mprotect(0x7fd6b2e51000, 2097152, PROT_NONE) = 0mmap(0x7fd6b3051000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7fd6b3051000close(3) = 0open("/lib64/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\23\0\0\0\0\0\0"..., 832) = 832fstat(3, {st_mode=S_IFREG|0755, st_size=19896, ...}) = 0mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd6b3492000mmap(NULL, 2113904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd6b2c45000mprotect(0x7fd6b2c49000, 2093056, PROT_NONE) = 0mmap(0x7fd6b2e48000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fd6b2e48000close(3) = 0open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20&\2\0\0\0\0\0"..., 832) = 832fstat(3, {st_mode=S_IFREG|0755, st_size=2156160, ...}) = 0mmap(NULL, 3985888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd6b2877000mprotect(0x7fd6b2a3a000, 2097152, PROT_NONE) = 0mmap(0x7fd6b2c3a000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c3000) = 0x7fd6b2c3a000mmap(0x7fd6b2c40000, 16864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd6b2c40000close(3) = 0open("/lib64/libpcre.so.1", O_RDONLY|O_CLOEXEC) = 3read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\25\0\0\0\0\0\0"..., 832) = 832fstat(3, {st_mode=S_IFREG|0755, st_size=402384, ...}) = 0mmap(NULL, 2494984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd6b2615000mprotect(0x7fd6b2675000, 2097152, PROT_NONE) = 0mmap(0x7fd6b2875000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x60000) = 0x7fd6b2875000close(3) = 0open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\r\0\0\0\0\0\0"..., 832) = 832fstat(3, {st_mode=S_IFREG|0755, st_size=19288, ...}) = 0mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd6b3491000mmap(NULL, 2109712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd6b2411000mprotect(0x7fd6b2413000, 2097152, PROT_NONE) = 0mmap(0x7fd6b2613000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fd6b2613000close(3) = 0open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@m\0\0\0\0\0\0"..., 832) = 832fstat(3, {st_mode=S_IFREG|0755, st_size=142232, ...}) = 0mmap(NULL, 2208904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd6b21f5000mprotect(0x7fd6b220c000, 2093056, PROT_NONE) = 0mmap(0x7fd6b240b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7fd6b240b000mmap(0x7fd6b240d000, 13448, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd6b240d000close(3) = 0mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd6b3490000mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd6b348e000arch_prctl(ARCH_SET_FS, 0x7fd6b348e840) = 0mprotect(0x7fd6b2c3a000, 16384, PROT_READ) = 0mprotect(0x7fd6b240b000, 4096, PROT_READ) = 0mprotect(0x7fd6b2613000, 4096, PROT_READ) = 0mprotect(0x7fd6b2875000, 4096, PROT_READ) = 0mprotect(0x7fd6b2e48000, 4096, PROT_READ) = 0mprotect(0x7fd6b3051000, 4096, PROT_READ) = 0mprotect(0x7fd6b3276000, 4096, PROT_READ) = 0mprotect(0x61d000, 4096, PROT_READ) = 0mprotect(0x7fd6b349b000, 4096, PROT_READ) = 0munmap(0x7fd6b3493000, 27070) = 0set_tid_address(0x7fd6b348eb10) = 26657set_robust_list(0x7fd6b348eb20, 24) = 0rt_sigaction(SIGRTMIN, {0x7fd6b21fb820, [], SA_RESTORER|SA_SIGINFO, 0x7fd6b22045f0}, NULL, 8) = 0rt_sigaction(SIGRT_1, {0x7fd6b21fb8b0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fd6b22045f0}, NULL, 8) = 0rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0statfs("/sys/fs/selinux", 0x7ffdbc6102e0) = -1 ENOENT (No such file or directory)statfs("/selinux", 0x7ffdbc6102e0) = -1 ENOENT (No such file or directory)brk(NULL) = 0x1688000brk(0x16a9000) = 0x16a9000open("/proc/filesystems", O_RDONLY) = 3fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd6b3499000read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tr"..., 1024) = 309stat("/etc/sysconfig/64bit_strstr_via_64bit_strstr_sse2_unaligned", 0x7ffdbc60feb0) = -1 ENOENT (No such file or directory)read(3, "", 1024) = 0close(3) = 0munmap(0x7fd6b3499000, 4096) = 0access("/etc/selinux/config", F_OK) = 0open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3fstat(3, {st_mode=S_IFREG|0644, st_size=106075056, ...}) = 0mmap(NULL, 106075056, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd6abccb000close(3) = 0geteuid() = 0ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0stat("app.jar", {st_mode=S_IFREG|0644, st_size=81917312, ...}) = 0lstat("sso-server-0.0.1.jar", {st_mode=S_IFREG|0644, st_size=81919007, ...}) = 0lstat("app.jar", {st_mode=S_IFREG|0644, st_size=81917312, ...}) = 0geteuid() = 0renameat2(AT_FDCWD, "sso-server-0.0.1.jar", AT_FDCWD, "app.jar", 0) = -1 ESTALE (Stale file handle)open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3fstat(3, {st_mode=S_IFREG|0644, st_size=2502, ...}) = 0mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd6b3499000read(3, "# Locale name alias data base.\n#"..., 4096) = 2502read(3, "", 4096) = 0close(3) = 0munmap(0x7fd6b3499000, 4096) = 0open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)open("/usr/share/locale/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)open("/usr/share/locale/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)open("/usr/share/locale/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)open("/usr/share/locale/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)open("/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)open("/usr/lib64/charset.alias", O_RDONLY|O_NOFOLLOW) = -1 ENOENT (No such file or directory)write(2, "mv: ", 4mv: ) = 4write(2, "cannot move \342\200\230sso-server-0.0.1."..., 55cannot move ‘sso-server-0.0.1.jar’ to ‘app.jar’) = 55open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)open("/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)open("/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)open("/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)write(2, ": Stale file handle", 19: Stale file handle) = 19write(2, "\n", 1) = 1lseek(0, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)close(0) = 0close(1) = 0close(2) = 0exit_group(1) = ?+++ exited with 1 +++
fuser檢視被啥佔用了,無效資訊,這倆程序怎麼kill。。。
[root@xxxx merged]# fuser -m sso-server-0.0.1.jar /var/lib/docker/overlay2/a90ef58db2a05a8003c6bf8098841c5d58ffaf81177886353d0096fdb5fea809/merged/sso-server-0.0.1.jar: 26198c 27091rce[root@xxxx merged]# fuser -m app.jar/var/lib/docker/overlay2/a90ef58db2a05a8003c6bf8098841c5d58ffaf81177886353d0096fdb5fea809/merged/app.jar: 26198c 27091rce[root@xxxx merged]# fuser -m -v app.jar USER PID ACCESS COMMAND/var/lib/docker/overlay2/a90ef58db2a05a8003c6bf8098841c5d58ffaf81177886353d0096fdb5fea809/merged/app.jar: root kernel mount /var/lib/docker/overlay2/a90ef58db2a05a8003c6bf8098841c5d58ffaf81177886353d0096fdb5fea809/merged root 26198 ..c.. bash root 27091 Frce. java[root@xxxx merged]# ps -ef|grep 26198root 26198 26193 0 11:25 pts/3 00:00:00 -bashroot 27239 26198 0 11:43 pts/3 00:00:00 ps -efroot 27240 26198 0 11:43 pts/3 00:00:00 grep --color=auto 26198[root@xxxx merged]# ps -ef|grep 27091root 27091 27070 99 11:42 ? 00:01:14 java -server -Xmx2g -Xms2g -Xmn256m -XX:PermSize=256m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -jar /app.jarroot 27244 26198 0 11:43 pts/3 00:00:00 grep --color=auto 27091
github上看到這個,https://github.com/coreos/bugs/issues/2152 ,下面有人說升級核心解決問題。開動
解決方案升級核心網上的教程都有點問題了,會提示Error getting repository data for elrepo-kernel, repository not found,最後去官網看下。http://elrepo.org/tiki/HomePage,正確步驟如下:
匯入 public key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安裝ELRepo
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
同時切換到清華大學源 https://mirrors.tuna.tsinghua.edu.cn/help/elrepo/
編輯 /etc/yum.repos.d/elrepo.repo 檔案,在 mirrorlist= 開頭的行前面加 # 註釋掉;並將 elrepo.org/linux 替換為 mirrors.tuna.tsinghua.edu.cn/elrepo。
最後,更新軟體包快取
sudo yum makecache
安裝主線版核心
yum --enablerepo=elrepo-kernel install kernel-ml -y
發現還是很慢,於是到清華大學源搜尋包名下載安裝了。
wget https://mirrors.tuna.tsinghua.edu.cn/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-5.10.2-1.el7.elrepo.x86_64.rpmyum install kernel-ml-5.10.2-1.el7.elrepo.x86_64.rpm -y
更新grub,不管GRUB_TIMEOUT=0原來是啥,改為0
[root@xxxx ~]# cat /etc/default/grubGRUB_TIMEOUT=0GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"GRUB_DEFAULT=GRUB_DISABLE_SUBMENU=trueGRUB_TERMINAL_OUTPUT="console"GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet net.ifnames=0 vga=792 console=tty0 console=ttyS0,115200n8"GRUB_DISABLE_RECOVERY="true"
重新生成
[root@xxxx ~]# grub2-mkconfig -o /boot/grub2/grub.cfgGenerating grub configuration file ...Found linux image: /boot/vmlinuz-5.10.2-1.el7.elrepo.x86_64Found initrd image: /boot/initramfs-5.10.2-1.el7.elrepo.x86_64.imgFound linux image: /boot/vmlinuz-3.10.0-1062.18.1.el7.x86_64Found initrd image: /boot/initramfs-3.10.0-1062.18.1.el7.x86_64.imgFound linux image: /boot/vmlinuz-3.10.0-693.11.1.el7.x86_64Found initrd image: /boot/initramfs-3.10.0-693.11.1.el7.x86_64.imgFound linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.imgFound linux image: /boot/vmlinuz-0-rescue-201803271148b62cae480a0002020050Found initrd image: /boot/initramfs-0-rescue-201803271148b62cae480a0002020050.imgdone
重啟伺服器
驗證找到目錄
cd $(docker inspect --format='{{json .GraphDriver.Data.MergedDir}}' sso|sed 's/\"//g')
替換
[root@xxxx merged]# mv sso-server-0.0.1.jar app.jarmv: overwrite ‘app.jar’? y[root@xxxx merged]#
搞定!
最新評論