【背景】
回家路上,接到运维兄弟的电话,说一线上环境,某个DN异常了,原因是有个磁盘写满了,他准备将这个盘剔除出去,重启下DN,问我数据会不会丢失。
我说数据不会丢,我们的数据都是多副本的。
这位兄弟再三确认不会丢数据后,挂了电话就去操作了。
可我回头一想,磁盘异常导致DN异常倒是碰到过,磁盘写满也能导致DN异常?
带着疑问做了一番梳理,接下来我们就来聊聊。
【DN运行过程中磁盘写满会怎样】
首先,DN运行时,单块磁盘写满,是否会引发问题?
答案是不会的,DN内部处理写block逻辑时,会过滤可用空间不满足条件的磁盘(准确的说法应该是卷目录,但一般而言DN会配置多个卷目录,不同的目录位于不同的磁盘上,为了方面理解,后面都先称为磁盘)。
例如:先将某个磁盘写满(如下图所示)
此后,继续向hdfs写入文件,发现写入的文件都正常,已经写满的磁盘不会继续存储新