管理)
文章目錄1. 核心概念從物理磁盤到文件系統(tǒng)2. 磁盤使用率與健康度查看2.1 查看磁盤空間占用df (Disk Free)2.2 統(tǒng)計(jì)目錄/文件大小du (Disk Usage)2.3 查看磁盤塊設(shè)備與分區(qū)列表lsblk fdisk3. 實(shí)戰(zhàn)給服務(wù)器添加新硬盤分區(qū)、格式化、掛載3.1 步驟 1對(duì)磁盤進(jìn)行分區(qū)3.2 步驟 2格式化文件系統(tǒng)3.3 步驟 3掛載文件系統(tǒng) (Mount)3.4 步驟 4配置開(kāi)機(jī)自動(dòng)掛載修改 /etc/fstab4. 生產(chǎn)環(huán)境高頻問(wèn)題排查場(chǎng)景文件刪除了但 df -h 空間沒(méi)有釋放5. 總結(jié)在 Linux 系統(tǒng)中“一切皆文件”對(duì)存儲(chǔ)設(shè)備硬盤、SSD、U 盤的管理本質(zhì)上就是對(duì)分區(qū)、文件系統(tǒng)掛載與使用率監(jiān)控的管理。無(wú)論是擴(kuò)展服務(wù)器存儲(chǔ)、掛載新硬盤還是排查磁盤空間爆滿問(wèn)題掌握磁盤與文件系統(tǒng)管理都是 Linux 運(yùn)維與開(kāi)發(fā)的基本功。1. 核心概念從物理磁盤到文件系統(tǒng)硬盤接入服務(wù)器后不能直接寫入數(shù)據(jù)需要經(jīng)過(guò)以下三個(gè)步驟┌─────────────────┐ 分區(qū) (Partition) ┌─────────────────┐ │ 物理磁盤 (Block)│ ────────────────────── │ 磁盤分區(qū) /dev/sdb1 │ └─────────────────┘ └────────┬────────┘ │ │ 格式化 (Format) ▼ ┌─────────────────┐ 掛載 (Mount) ┌─────────────────┐ │ 目錄節(jié)點(diǎn) /data │ ────────────────────── │ 文件系統(tǒng) (ext4/xfs)│ └─────────────────┘ └─────────────────┘磁盤設(shè)備命名Linux 中所有設(shè)備都在/dev/目錄下。SATA / SAS / SCSI 硬盤命名為/dev/sda、/dev/sdb等字母代表第幾塊盤數(shù)字代表第幾個(gè)分區(qū)如/dev/sda1。NVMe M.2 固態(tài)硬盤命名為/dev/nvme0n1、/dev/nvme0n1p1。分區(qū)表格式MBR較老最大支持 2TB 磁盤最多 4 個(gè)主分區(qū)。GPT現(xiàn)代標(biāo)準(zhǔn)支持 2TB 大盤幾乎無(wú)分區(qū)數(shù)量限制。文件系統(tǒng) (File System)定義數(shù)據(jù)在磁盤上的組織方式。常用文件系統(tǒng)ext4Linux 傳統(tǒng)通用文件系統(tǒng)兼容性好。xfsCentOS/RHEL 默認(rèn)文件系統(tǒng)在大文件與高性能 I/O 表現(xiàn)上更優(yōu)秀。2. 磁盤使用率與健康度查看2.1 查看磁盤空間占用df(Disk Free)df用于查看文件系統(tǒng)級(jí)別的整體容量與使用率。# -h: 人性化顯示 (Human-readable, MB/GB)# -T: 顯示文件系統(tǒng)類型 (ext4/xfs 等)df-hT常見(jiàn)坑點(diǎn)df -h沒(méi)滿但寫不進(jìn)文件輸入df -i查看Inode 使用率。如果系統(tǒng)中產(chǎn)生了數(shù)百萬(wàn)個(gè)小文件如小日志、緩存可能會(huì)出現(xiàn)“磁盤空間還很多但 Inode 已 100% 耗盡”的情況。2.2 統(tǒng)計(jì)目錄/文件大小du(Disk Usage)du用于深入具體目錄查找“到底是誰(shuí)占用了大空間”。# 查看當(dāng)前目錄下各個(gè)文件夾的大小深度為 1du-h--max-depth1/var/log# 快速找出當(dāng)前目錄下最大的前 10 個(gè)文件/目錄du-ah.|sort-rh|head-n102.3 查看磁盤塊設(shè)備與分區(qū)列表lsblkfdisk# 查看系統(tǒng)所有磁盤及分區(qū)的樹(shù)狀結(jié)構(gòu)非常直觀lsblk# 查看磁盤分區(qū)的具體細(xì)節(jié)需 root 權(quán)限sudofdisk-l3. 實(shí)戰(zhàn)給服務(wù)器添加新硬盤分區(qū)、格式化、掛載假設(shè)你為服務(wù)器新增了一塊 100GB 的磁盤/dev/sdb需要將其掛載到/data目錄供業(yè)務(wù)使用。3.1 步驟 1對(duì)磁盤進(jìn)行分區(qū)使用fdisk對(duì)磁盤進(jìn)行交互式分區(qū)sudofdisk/dev/sdb輸入n新建分區(qū)。依次按回車選擇默認(rèn)的主分區(qū)和范圍。輸入w保存分區(qū)表并退出。此時(shí)通過(guò)lsblk可以看到生成了新分區(qū)/dev/sdb1。3.2 步驟 2格式化文件系統(tǒng)創(chuàng)建完分區(qū)后需要將其寫入指定的格式如ext4或xfs# 格式化為 ext4 文件系統(tǒng)sudomkfs.ext4 /dev/sdb1# 或者格式化為 xfs 文件系統(tǒng)sudomkfs.xfs /dev/sdb13.3 步驟 3掛載文件系統(tǒng) (Mount)將格式化好的分區(qū)連接到系統(tǒng)中的空目錄# 1. 創(chuàng)建掛載點(diǎn)目錄sudomkdir-p/data# 2. 臨時(shí)掛載重啟后失效sudomount/dev/sdb1 /data# 3. 驗(yàn)證掛載結(jié)果df-h|grep/data3.4 步驟 4配置開(kāi)機(jī)自動(dòng)掛載修改/etc/fstab如果只做了mount服務(wù)器重啟后掛載就會(huì)丟失。必須將掛載信息寫入/etc/fstab。為了防止磁盤設(shè)備名如/dev/sdb1在重啟后漂移強(qiáng)烈推薦使用 UUID# 1. 查詢 /dev/sdb1 的 UUIDsudoblkid /dev/sdb1# 輸出示例: /dev/sdb1: UUIDa1b2c3d4-e5f6-7890-abcd-1234567890ab TYPEext4# 2. 編輯 /etc/fstab 文件sudonano/etc/fstab# 3. 在文件末尾添加一行格式UUID 掛載點(diǎn) 文件系統(tǒng)類型 掛載參數(shù) 備份 檢查UUIDa1b2c3d4-e5f6-7890-abcd-1234567890ab /data ext4 defaults02# 4. ?? 極其關(guān)鍵的一步測(cè)試 fstab 配置是否正確sudomount-a??高危提醒如果/etc/fstab語(yǔ)法寫錯(cuò)服務(wù)器下次重啟時(shí)會(huì)無(wú)法開(kāi)機(jī)并直接進(jìn)入緊急恢復(fù)模式Emergency Mode修改后必須運(yùn)行sudo mount -a如果沒(méi)有報(bào)錯(cuò)才說(shuō)明配置正確。4. 生產(chǎn)環(huán)境高頻問(wèn)題排查場(chǎng)景文件刪除了但df -h空間沒(méi)有釋放原因當(dāng)某個(gè)日志文件正在被某個(gè)運(yùn)行中的進(jìn)程如 Nginx、Java持續(xù)寫入時(shí)你直接使用rm app.log刪除了文件名但進(jìn)程依然持有該文件的文件句柄導(dǎo)致磁盤空間并未真正釋放。排查方法# 查找已經(jīng)被刪除但依然被進(jìn)程占用的文件 (deleted)sudolsof|grepdeleted解決辦法重啟占用該句柄的服務(wù)如sudo systemctl restart nginx。針對(duì)日后清空日志**不要直接rm**使用清空文件內(nèi)容的方式 app.log或cat /dev/null app.log。5. 總結(jié)監(jiān)控三板斧用df -h看整體空間用df -i看 Inode 消耗用du -sh *定位大文件。掛載標(biāo)準(zhǔn)流程分區(qū) (fdisk) ? 格式化 (mkfs) ? 臨時(shí)掛載 (mount) ? 寫入/etc/fstab? 校驗(yàn) (mount -a)。安全規(guī)范寫入/etc/fstab時(shí)優(yōu)先采用UUID方式修改完畢務(wù)必執(zhí)行mount -a確認(rèn)無(wú)誤。 感謝閱讀想了解更多 我的博客網(wǎng)站 | 記錄思考分享干貨 我的個(gè)人主頁(yè) | 關(guān)于我、開(kāi)源項(xiàng)目