我们正在使用Google的Filestore云服务在GCE VM之间共享文件。随机地,所有进程似乎都挂起了,特别是交互式SSH会话,经过调查后,我们确定我们的Filestore(普遍安装在所有VM上)已被修复,并且阻止了所有试图获取任何文件的进程。信息。
我能够以root用户身份登录并进行调查,发现所有交互式活动都将挂起,最终我将其精确定位为试图统计Filestore实例的挂载点。 strace df
会像这样挂起:
statfs("/sys/kernel/config", {f_type=0x62656570, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RELATIME}) = 0
stat("/sys/kernel/config", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
statfs("/sys/fs/selinux", {f_type=SELINUX_MAGIC, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RELATIME}) = 0
stat("/sys/fs/selinux", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
statfs("/proc/sys/fs/binfmt_misc", {f_type=BINFMTFS_MAGIC, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RELATIME}) = 0
stat("/proc/sys/fs/binfmt_misc", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
statfs("/dev/hugepages", {f_type=HUGETLBFS_MAGIC, f_bsize=2097152, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=2097152, f_flags=ST_VALID|ST_RELATIME}) = 0
stat("/dev/hugepages", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
statfs("/mnt/local-storage", {f_type=0x58465342, f_bsize=4096, f_blocks=131007745, f_bfree=86129973, f_bavail=86129973, f_files=262143488, f_ffree=262141571, f_fsid={2065, 0}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RELATIME}) = 0
stat("/mnt/local-extra", {st_mode=S_IFDIR|0755, st_size=75, ...}) = 0
statfs("/mnt/shared-storage" ***HANG***
除了等待修复操作完成之外,显然没有任何补救措施。 gcloud filestore operations list
当时没有任何操作正在进行。但是gcloud filestore instances list
会显示REPAIRING
状态,如下所示:
[root@vm ~]# gcloud filestore instances list
INSTANCE_NAME ZONE TIER CAPACITY_GB FILE_SHARE_NAME IP_ADDRESS STATE CREATE_TIME
shared-storage europe-west1-b STANDARD 1024 shared_storage **.**.**.** REPAIRING 2019-08-09T16:03:02
Google Cloud Status Dashboard从没出现过任何问题。
是否有人知道为什么会发生以及如何防止这种情况发生。如上面的输出所示,我们正在使用Filestore的标准层。
答案 0 :(得分:0)
我们已经配置了核心转储,以将其从两个虚拟机中写入共享,当我们的进程大量死亡时,似乎我们达到了共享(标准层)的吞吐量限制,这导致了共享进入REPAIRING
状态,进而阻止尝试访问它的所有内容。
如果您遇到类似的问题:请检查是否有可能达到共享的吞吐量限制。