初始化雲端硬碟時,在CentOS 7系統mount本地碟時出現命令卡住現象,如何處理?

更新時間:
Copy as MD

本文介紹初始化雲端硬碟時,在CentOS 7系統mount本地碟時出現命令卡住現象的問題描述、問題原因和解決方案。

問題描述

CentOS 7系統使用ext4檔案系統批量初始化本地碟時,使用mount命令掛載本地碟時出現命令卡住的現象,然後使用ps命令查看mount進程為D狀態(睡眠狀態)。

問題原因

該問題是由於Linux2.6.37及更高的核心版本(通過uname -r查詢)預設啟用了lazy init功能導致。CentOS 7系統的核心版本是3.10,因此預設啟用了lazy init功能。

使用ext4檔案系統首次執行mount操作時需要初始化inode table。但是CentOS 7預設啟用了lazy init功能,導致在初始化ext4檔案系統時不會立刻去初始設定檔案系統的inode table,而是在mount掛載雲端硬碟時才進行。同時在3.10核心中mount時會有擷取IO鎖的操作,本地碟規格類型系列由於容量較大,系統需要隨機在雲端硬碟中寫入資料,初始化需要的時間長,會出現mount需要的IO鎖被lazy init長時間佔用的情況,因此導致mount命令卡住。

說明
  • 4.x版本核心中,對鎖機制進行了最佳化,因此沒有這個問題。

  • 關於本地碟的更多資訊,請參見本地碟

解決方案

方案一:關閉lazy init功能

在雲端硬碟初始化時執行以下命令,關閉lazy init功能。

mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0

此方案在資料盤容量較大時,初始化也比較耗費。例如32ecs.d3s.16xlarge規格的本地碟全部初始化掛載完成約耗時4.5~5小時。

雲端硬碟初始化的更多資訊,請參見初始化概述

方案二:使用xfs初始化

CentOS 7系統預設使用ext4檔案系統,建議您使用xfs檔案系統對雲端硬碟初始化。雲端硬碟初始化的更多資訊,請參見初始化概述

xfs檔案系統的初始化策略是按需分配,因此沒有ext4檔案系統全盤初始化的操作, 此方案對資料盤進行初始化時掛載速度較快。例如32ecs.d3s.16xlarge規格的本地碟全部初始化掛載完成僅需幾分鐘。

重要

CentOS 7系統預設使用ext4檔案系統,建議您在環境上使用xfs檔案系統時進行測實驗證後再進行業務操作,避免出現相容性問題。