溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何解決生產(chǎn)環(huán)境分布式文件系統(tǒng)崩了問題

發(fā)布時(shí)間:2021-10-18 16:55:25 來源:億速云 閱讀:170 作者:iii 欄目:web開發(fā)

這篇文章主要講解了“如何解決生產(chǎn)環(huán)境分布式文件系統(tǒng)崩了問題”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何解決生產(chǎn)環(huán)境分布式文件系統(tǒng)崩了問題”吧!

問題定位

通過登錄服務(wù)器查看系統(tǒng)的訪問日志,發(fā)現(xiàn)日志文件中輸出了如下異常信息。

org.csource.common.MyException: getStoreStorage fail, errno code: 28  at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1629)  at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:639)  at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:162)  at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:180)

很明顯,是系統(tǒng)無法上傳文件導(dǎo)致的問題,這個(gè)日志信息很重要,對(duì)問題的排查起到了至關(guān)重要的作用。

分析原因

既然是上傳文件出現(xiàn)了問題,那我先試試能不能訪問以前上傳的文件呢?經(jīng)過驗(yàn)證,以前上傳的文件是可以訪問的,再次驗(yàn)證了是上傳文件的問題。

既然生產(chǎn)環(huán)境是使用的分布式文件系統(tǒng),一般情況下是沒啥問題的,上傳文件出現(xiàn)了問題,大概率的事件是服務(wù)器磁盤空間不足了。那我就來順著這個(gè)思路排查下問題。

于是乎,我使用df -h 查看服務(wù)器的存儲(chǔ)空間使用率,已經(jīng)達(dá)到91%了。

如何解決生產(chǎn)環(huán)境分布式文件系統(tǒng)崩了問題

嗯,磁盤空間有可能是引起問題的原因。接下來,再來進(jìn)一步確認(rèn)下是否是磁盤空間造成的問題。

于是,我再打開/etc/fdfs/目錄下的tracker.conf的配置,看到預(yù)留的存儲(chǔ)空間為10%(注:這里的分布式文件系統(tǒng)使用的是FastDFS)。

如何解決生產(chǎn)環(huán)境分布式文件系統(tǒng)崩了問題

看到這里,可以確定就是磁盤空間不足造成的無法上傳文件的問題。

總體原因就是:服務(wù)器磁盤空間已使用91%,而在分布式文件系統(tǒng)的配置中預(yù)留的磁盤空間為10%,實(shí)際在上傳文件的時(shí)候,系統(tǒng)已經(jīng)檢測(cè)到當(dāng)前服務(wù)器剩余的磁盤空間不足10%,拋出異常,拒絕上傳文件。

到此,問題出現(xiàn)的原因已經(jīng)確定了,接下來就是要解決問題了。

解決問題

首先,有兩種方式可以解決這個(gè)問題,一種就是刪除不需要的文件;另一種就是擴(kuò)容磁盤空間。

刪除不需要的文件

這種方式慎用,這里,我也簡單的介紹下這種方式。我給小伙伴們提供了幾種遞歸刪除的方式。

遞歸刪除.pyc格式的文件。

find . -name '*.pyc' -exec rm -rf {} \;

打印當(dāng)前文件夾下指定大小的文件

find . -name "*" -size 145800c -print

遞歸刪除指定大小的文件(145800)

find . -name "*" -size 145800c -exec rm -rf {} \;

遞歸刪除指定大小的文件,并打印出來

find . -name "*" -size 145800c -print -exec rm -rf {} \;

下面是對(duì)上述命令的一些簡要說明。

  • "." 表示從當(dāng)前目錄開始遞歸查找

  • “ -name '*.exe' "根據(jù)名稱來查找,要查找所有以.exe結(jié)尾的文件夾或者文件

  • " -type f "查找的類型為文件

  • "-print" 輸出查找的文件目錄名

  • -size 145800c 指定文件的大小

  • -exec rm -rf {} \; 遞歸刪除(前面查詢出來的結(jié)果)

擴(kuò)容磁盤空間

這里,冰河推薦使用這種方式,我修復(fù)生產(chǎn)環(huán)境的故障也是使用的這種方式。

通過查看服務(wù)器的磁盤空間發(fā)現(xiàn),/data目錄下的空間足足有5TB,呵呵,運(yùn)維哥們?yōu)樯恫话盐募到y(tǒng)的數(shù)據(jù)存儲(chǔ)目錄指向/data目錄呢。于是乎,我開始將文件系統(tǒng)的數(shù)據(jù)存儲(chǔ)目錄遷移到/data目錄下,整個(gè)過程如下所示。

注意:這里,我就簡單的模擬將 /opt/fastdfs_storage_data下的數(shù)據(jù)遷移至/data下。

(1)拷貝文件,遷移數(shù)據(jù)

cp -r /opt/fastdfs_storage_data  /data cp -r  /opt/fastdfs_storage  /data cp -r /opt/fastdfs_tracker /data

(2)修改路徑

這里需要修改文件系統(tǒng)的 /etc/fdfs/storage.conf ,mod_fastdfs.conf  ,client.conf,tracker.conf文件。

  • /etc/fdfs/storage.conf

store_path0=/data/fastdfs_storage_data  base_path=/data/fastdfs_storage
  • /etc/fdfs/mod_fastdfs.conf

store_path0=/data/fastdfs_storage_data  (有兩處) base_path=/data/fastdfs_storage
  • /etc/fdfs/client.conf

base_path=/data/fastdfs_tracker
  • /etc/fdfs/tracker.conf

base_path=/data/fastdfs_tracker

重新建立 M00 至存儲(chǔ)目錄的符號(hào)連接:ln -s /data/fastdfs_storage_data/data  /data/fastdfs_storage_data/data/M00

(3)殺掉進(jìn)程, 重啟存儲(chǔ)服務(wù) (追蹤器和存儲(chǔ)器)

依次執(zhí)行以下命令

pkill -9 fdfs  service fdfs_trackerd start  service fdfs_storaged start

(4)修改文件的讀取路徑 nginx配置

location ~/group1/M00{  root /data/fastdfs_storage_data/data; }

(5)重啟nginx

cd /opt/nginx/sbin ./nginx -s reload

感謝各位的閱讀,以上就是“如何解決生產(chǎn)環(huán)境分布式文件系統(tǒng)崩了問題”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)如何解決生產(chǎn)環(huán)境分布式文件系統(tǒng)崩了問題這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI