1

我们正在使用 Google 的 Filestore 云服务在我们的 GCE 虚拟机之间共享文件。随机地,所有进程似乎都挂起,尤其是交互式 SSH 会话,经过一些调查,我们确定我们的 Filestore,普遍安装在所有 VM 上,正在被修复并阻止所有试图获取任何信息的进程。

我能够以 root 身份登录并进行调查,我注意到我所有的交互活动都会挂起,最终我将其定位为试图统计 Filestore 实例的挂载点。Anstrace 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

谷歌云状态仪表板在当时或当时从未显示任何问题。

如果可能的话,有谁知道为什么会发生这种情况以及如何防止它发生。如上面的输出所示,我们使用的是 Filestore 的标准层。

4

1 回答 1

1

我们已将 coredump 配置为从两打 VM 写入共享,当我们的进程发生大规模死亡时,似乎我们达到了共享的吞吐量限制(标准层)并导致共享进入REPAIRING状态,进而阻止所有试图访问它的东西。

如果您有类似的问题:检查是否有可能以某种方式达到共享的吞吐量限制。

于 2019-09-07T21:58:52.367 回答