作者:JackTian
文章首發(fā)于公眾號:【杰哥的IT之旅】
大家好度迂,我是杰哥档冬。
前段時間遇到一個服務(wù)器問題:非法重啟設(shè)備后樱报,服務(wù)器進(jìn)入救援模式放接,數(shù)據(jù)盤也不顯示掛載是否成功褐缠。
說來這個問題海雪,我覺得還挺奇葩草穆。今天就來跟大家分享下整個過程以及我的處理方法戚揭。避免大家在今后的學(xué)習(xí)或工作中遇到跟我同樣的問題柒瓣。
一儒搭、問題背景
有一天,研發(fā)小伙伴跟我反饋有一臺服務(wù)器連不上芙贫,一直卡在如下頁面搂鲫。
該頁面是 Xshell 連接某一臺服務(wù)器時,建立的連接磺平,按
Ctrl+Alt+]
鍵切換到本地 Shell 終端魂仍。當(dāng)我看到卡在該頁面時,毫無猶豫的自己也嘗試了起來拣挪,果然也是連不上擦酌。前一天還正常連接,第二天就出問題了菠劝?
還好服務(wù)器有配置遠(yuǎn)程管理地址赊舶,通過遠(yuǎn)程控制管理頁面的方式啟動 iKVM HTML5 和遠(yuǎn)程管理服務(wù)器,這樣就能登到這臺出故障的設(shè)備上查看服務(wù)器界面處于一種什么樣的狀態(tài)赶诊。
登到這臺故障的服務(wù)器后笼平,直接重啟了服務(wù)器,然后 Xshell 再次嘗試連接舔痪,是可以遠(yuǎn)程連接的寓调。難道這就是傳說中的重啟治百病,如此簡單粗暴锄码?
當(dāng)進(jìn)入系統(tǒng)后夺英,執(zhí)行簡單的命令都提示輸入/輸出錯誤。
過不久后滋捶,直接不建立連接了痛悯,徹底掛了。炬太。灸蟆。
再通過遠(yuǎn)程控制管理頁面查看服務(wù)器當(dāng)前狀態(tài),一看進(jìn)入到救援模式了亲族。
到該模式下后炒考,
- 輸入
journalctl -xb
命令,可查看系統(tǒng)日志 - 輸入
systemctl reboot
命令霎迫,重啟系統(tǒng) - 輸入
systemctl default
或^D
命令斋枢,再次嘗試進(jìn)入默認(rèn)模式 -
輸入 root 用戶密碼,則可以進(jìn)入系統(tǒng)
根據(jù)日志報錯提示:掛載文件系統(tǒng)可以糾正該問題知给。
二瓤帚、解決方案
執(zhí)行df -h
命令,用于在 Linux 操作系統(tǒng)下顯示文件系統(tǒng)的磁盤使用情況涩赢。
使用-h
選項以KB以上的單位來顯示戈次,可讀性高。
- 第一列:
Filesystem
文件系統(tǒng)的名稱 - 第二列:
Size
文件系統(tǒng)的容量 - 第三列:
Used
已用多少的磁盤空間 - 第四列:
Avail
可用多少的磁盤空間 - 第五列:
Use%
磁盤使用率 - 第六列:
Mounted On
掛載點(diǎn)
根據(jù)上圖結(jié)果來看筒扒,沒有/dev/sdb1
文件系統(tǒng)所掛載的/bigdata
目錄磁盤情況怯邪。
嘗試將/dev/sdb1
取消掛載,重新掛載花墩,反復(fù)報不同的錯誤悬秉。
通過 RAID 卡管理界面查看狀態(tài)也是 Online。
當(dāng)如果重啟設(shè)備冰蘑,能看到如下界面和泌,則說明正在初始化設(shè)備。
恰巧祠肥,這臺故障的服務(wù)器有多塊硬盤組成的 44T 的一個目錄有存放 46% 的數(shù)據(jù)武氓,在有數(shù)據(jù)的情況下,如何不格式化磁盤重新掛載呢仇箱?
取消掛載
umount /dev/sdb1
嘗試修復(fù)
若不確定掛載點(diǎn)屬于哪種文件類型時聋丝,可以執(zhí)行:df -Th
命令來判斷。
如果掛載點(diǎn)為xfs 文件類型
工碾,可以執(zhí)行:xfs_repair -L + 文件系統(tǒng)名稱路徑
命令進(jìn)行修復(fù)弱睦。
如果掛載點(diǎn)為fsck.ext2/3/4文件類型
,可以執(zhí)行:fsck.ext2/3/4文件類型 + 文件系統(tǒng)路徑
命令進(jìn)行修復(fù)渊额。
因為我這是xfs
的文件類型况木,按xfs_repair
命令來修復(fù)受損的 xfs 文件系統(tǒng),執(zhí)行如下命令進(jìn)行修復(fù)/dev/sdb1
旬迹。
xfs_repair -L /dev/sdb1
執(zhí)行修復(fù)是根據(jù)磁盤中的數(shù)據(jù)使用率來決定修復(fù)時長的火惊,所以時間會較長,我采用放后臺的形式執(zhí)行的奔垦,執(zhí)行完成后屹耐,查看還是否有進(jìn)程存在,如有則說明未修復(fù)完椿猎,如沒有則說明修復(fù)完成惶岭,然后再重新掛載寿弱。
mount /dev/sdb1 /bigdata
掛載完畢后,執(zhí)行df -h
命令來確定是否掛載成功按灶。
到此症革,就恢復(fù)掛載完畢了。
上面案例是針對磁盤有數(shù)據(jù)時且不格式化的情況下恢復(fù)并掛載鸯旁。
那么有小伙伴該問了噪矛,無存儲數(shù)據(jù)的情況下,如何掛載磁盤铺罢,我這里也給大家整理出來一個詳細(xì)的操作步驟:
第一步:
ll /dev/disk/by-path # 查看需要掛的磁盤名稱
fdisk -l # 查看磁盤信息
lsblk # lsblk 命令默認(rèn)情況下將以樹狀列出所有塊設(shè)備艇挨,包括查看磁盤掛載信息
第二步:
parted /dev/sdb mklabel gpt # 新建 /dev/sdb 的磁盤標(biāo)簽類型為 GPT
parted /dev/sdb mkpart primary 0 100% # 將 /dev/sdb 整個空間分給同一個分區(qū)
ignore # 忽略上述執(zhí)行命令后的告警
mkfs.xfs -f /dev/sdb # 格式化分區(qū)
注意:格式化分區(qū)可能會執(zhí)行慢些,需耐心等待韭赘。
第三步:
mkdir /bigdata # 創(chuàng)建目錄缩滨,自定義目錄名
mount /dev/sdb /bigdata # 將 sdb 掛載到 /bigdata 目錄下
第四步:
blkid # 查看 sdb 的 UUID 并復(fù)制
第五步:
vi /etc/fstab # 參考已掛載的磁盤,將 sdb 的 UUID 和掛載目錄關(guān)聯(lián)上辞居,保存后重啟設(shè)備
注意:UUID 一定要寫對楷怒,否則重啟后無法正常進(jìn)入系統(tǒng)。
第六步:
df -h # 檢查是否掛載成功
按照上述操作步驟執(zhí)行瓦灶,肯定能操作成功鸠删。如果你有更好的解決方案,也歡迎大家留言分享贼陶。
參考文獻(xiàn)
xfs_repair命令詳解 https://bbs.qunyingkeji.com/2052/
推薦閱讀
10 款你不知道的 Linux 環(huán)境下的替代工具!
以上就是今天所要分享的全部內(nèi)容了撮胧。
如果你覺得這篇文章對你有點(diǎn)用的話桨踪,為本文點(diǎn)個贊 、留個言或者轉(zhuǎn)發(fā)一下芹啥,讓更多的朋友看到锻离,因為這將是我持續(xù)輸出更多優(yōu)質(zhì)文章的最強(qiáng)動力!