自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

文件系統(tǒng)那些事兒,你學會了嗎?

開發(fā) 前端
隨著硬件技術的發(fā)展,文件系統(tǒng)技術也在不斷創(chuàng)新。尤其是SSD 閃存盤的普及,需要文件系統(tǒng)提供與之相適應的文件管理方式,如 BTRFS 的 COW(Copy On Write)方式,避免頻繁擦寫 SSD,提升了 I/O 性能也延長了 SSD 的使用壽命。

引言

“Everything is a file(一切皆文件)”是UNIX世界里的名言,也是UNIX系統(tǒng)的設計思想之一。在其之后演變出眾多UNIX、Linux,如開源的FreeBSD、OpenBSD、GNU/Linux或商業(yè)的AIX、HP-UX、Solaris等均繼承了該思想。不論是普通文件、目錄、字符設備、塊設備、socket套接字、網絡設備等,對操作系統(tǒng)來說都是文件。雖然類型不同,但操作系統(tǒng)都提供了一套統(tǒng)一的接口,即文件系統(tǒng)來對上述各種文件統(tǒng)一管理。本文講述了G行文件系統(tǒng)使用中遇到的一些有趣問題和解決辦法,供大家參考。

1、文件系統(tǒng)的基本功能

文件系統(tǒng)是操作系統(tǒng)的重要組成部分,定義了把文件存儲于硬盤時的數據結構及管理方式。硬盤是由很多扇區(qū)組成,為了訪問硬盤中的數據,就必須在文件和扇區(qū)之間建立聯系,比如需要知道文件從哪個扇區(qū)開始、一共占多少個扇區(qū)、文件有什么屬性……這就是文件系統(tǒng)要做的事情。

一個操作系統(tǒng)通常會建立多個文件系統(tǒng),每個文件系統(tǒng)都有獨立和完整的結構,當一個文件系統(tǒng)出現問題不會影響到其他文件系統(tǒng)。通過文件系統(tǒng)還可以實現配額管理,限制用戶的存儲空間容量,防止用戶無限制地使用存儲空間。

 一般來說,文件系統(tǒng)是和操作系統(tǒng)緊密結合在一起的,不同類型的操作系統(tǒng)默認使用不同的文件系統(tǒng),比如AIX的jfs2文件系統(tǒng)、HP-UX的vxfs文件系統(tǒng)、Linux的ext4文件系統(tǒng)等。

2、文件系統(tǒng)和LVM

文件系統(tǒng)通常建立在LVM(Logical Volume Manager)之上?;贚VM的管理功能,將硬盤或硬盤分區(qū)組合起來,創(chuàng)建一個邏輯層給文件系統(tǒng)使用,實現了靈活、方便、動態(tài)地管理各種存儲設備。各類UNIX/Linux在LVM管理上大同小異,如下圖所示:

圖片圖片

硬盤(或使用SCSI等協(xié)議連接的外置存儲)在LVM中被標記為物理卷(PV,Physical Volume),多個PV組成一個卷組(VG,Volume Group),然后,在VG中劃分出多個邏輯卷(LV,Volume Group),最后將LV格式化成文件系統(tǒng)(FS,File System)供用戶使用。這樣,一個文件系統(tǒng)的大小就突破了物理硬盤空間連續(xù)性的限制,也可以跨多個硬盤,提供更大的存儲空間。LVM也可用于提升I/O性能,通過對LV邏輯卷設置條帶化,使I/O落在多個PV物理卷上。

3、文件系統(tǒng)使用中遇到的典型問題

文件系統(tǒng)雖然有上述各種優(yōu)點,但是實際使用中也遇到過形形色色的問題,接下來我們分享幾個有代表性的文件系統(tǒng)問題。

案例1:某服務器在編譯Tuxedo ubb配置文件時,編譯報錯,并且沒有日志生成。

圖片圖片

從官方錯誤編碼解釋分析:編譯文件所在的目錄中,存在目錄名過長(大于78個字符)或目錄結構權限錯誤。

圖片圖片

但檢查確認該ubb所在的目錄中,不存在過長的目錄名。嘗試將權限都改成了777,編譯仍然報錯。

圖片圖片

對編譯命令進行truss跟蹤,發(fā)現編譯命令在檢查當前路徑的權限時報EACCES錯。EACCES錯誤的說明是“Search permission is denied on a component of the path prefix.”,Search permission也就是x(執(zhí)行)位的權限。

圖片圖片

根據報錯提示,執(zhí)行檢查命令,也驗證了Permission denied錯誤。通過AIX官方文檔資料確認,在AIX操作系統(tǒng)中,所有的jfs/jfs2文件系統(tǒng)都有兩套權限:文件系統(tǒng)權限和文件系統(tǒng)掛載點目錄權限。用戶要對文件系統(tǒng)和掛載點目錄都有r和x(searchable)的權限才能正常使用。卸載文件系統(tǒng)后,對掛載點目錄賦權755,重新掛載文件系統(tǒng),編譯順利通過。

圖片圖片

案例 2:某個批量任務每天自動創(chuàng)建 24 個目錄(每小時 1個)。某天運行該任務時突然報錯,顯示不能創(chuàng)建目錄。

圖片圖片

按照錯誤提示,手工檢查當前文件系統(tǒng)空間和 inode 使用率都不高。該批量任務報錯前創(chuàng)建了 9 個目錄,手工嘗試創(chuàng)建第 10個目錄也失敗了,報錯信息和批量任務的報錯信息一致。

圖片圖片

進一步排查發(fā)現批量任務腳本中對歷史文件打包備份后僅是清理了文件而未刪除目錄,導致目錄累計越來越多。當前目錄下的子目錄一共 32767 個,懷疑是一個目錄下的子目錄數量達到了上限。對這些歷史子目錄進行清理后,新子目錄創(chuàng)建成功。

圖片圖片

我們對 AIX、HP-UX、Linux 等操作系統(tǒng)進行了測試,結果表明 AIX 和 HP-UX 的文件系統(tǒng)的目錄有 32768 個子目錄的限制,Linux 內核版本小于等于 3.0.101 是有 32000 子目錄限制。于是,我們將一個目錄下的子目錄數量統(tǒng)計加入巡檢和監(jiān)控,當發(fā)現子目錄數量接近 30000 時會自動通知管理員進行清理。

案例 3:一個業(yè)務系統(tǒng)做壓力穩(wěn)定性測試時,發(fā)現四臺應用服務器中的一臺交易響應變慢。查看這臺服務器上的應用日志,發(fā)現有接近 15 秒的“斷檔”,沒有記錄。而同一時段的其他 3 臺應用服務器的日志記錄均是連貫的。

圖片圖片

查看這臺故障服務器的性能數據,發(fā)現故障時段 vxfsd 進程竟然占用了 8 顆 CPU。應用日志所在的目錄就是一個單獨的 vxfs文件系統(tǒng),vxfsd 又是 vxfs 文件系統(tǒng)的主進程,因此定位是 vxfs故障導致應用日志無法寫入。

圖片圖片

進一步排查發(fā)現這臺服務器應用日志文件系統(tǒng)的 lastid 計數器值遠遠小于其他 3 臺服務器的數值。

圖片圖片

圖片圖片

查看 vxfs 的官方文檔確認:lastid 計數器最大值是 2 的30 次方,約等于 10 億 7 千萬。超過最大值后,vxfsd 進程就會對 vxfs 文件系統(tǒng)元數據(包括 lastid)自動重置,重置耗時 15秒,期間會影響 I/O。

了解 vxfs 這個特性后,我們部署了巡檢和監(jiān)控:當一個 vxfs文件系統(tǒng)的 lasitd 達到 8 億時通知管理員。管理員選擇業(yè)務低峰時段主動對 lastid 這一元數據進行手工重置,避免在業(yè)務高峰時段因為 lastid 自動重置影響系統(tǒng)性能。

4、展望

隨著硬件技術的發(fā)展,文件系統(tǒng)技術也在不斷創(chuàng)新。尤其是SSD 閃存盤的普及,需要文件系統(tǒng)提供與之相適應的文件管理方式,如 BTRFS 的 COW(Copy On Write)方式,避免頻繁擦寫 SSD,提升了 I/O 性能也延長了 SSD 的使用壽命。再有,ZFS 等新一代文件系統(tǒng)自身就具備了對硬盤的條帶化和鏡像能力,已經不需要LVM 的支持了。但是,無論文件系統(tǒng)功能如何演進,它的基本原理沒有改變,值得我們深入探究。

責任編輯:武曉燕 來源: 匠心獨運維妙維效
相關推薦

2023-01-13 11:55:05

TY子系統(tǒng)設備

2024-01-02 12:05:26

Java并發(fā)編程

2023-08-01 12:51:18

WebGPT機器學習模型

2023-01-10 08:43:15

定義DDD架構

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2024-01-19 08:25:38

死鎖Java通信

2023-06-08 07:34:19

HDFS小文件壓縮包

2023-01-13 16:46:38

CRM系統(tǒng)建設

2022-06-16 07:50:35

數據結構鏈表

2022-12-06 07:53:33

MySQL索引B+樹

2023-07-30 22:29:51

BDDMockitoAssert測試

2023-10-06 14:49:21

SentinelHystrixtimeout

2024-02-02 11:03:11

React數據Ref

2024-03-06 08:28:16

設計模式Java

2022-07-13 08:16:49

RocketMQRPC日志

2023-01-31 08:02:18

2023-05-05 06:54:07

MySQL數據查詢

2023-08-26 21:34:28

Spring源碼自定義

2023-06-26 13:08:52

GraphQL服務數據
點贊
收藏

51CTO技術棧公眾號