Linux磁盤管理之分區(qū)、格式化與掛載磁盤的方法
1. 引言:為什么要學習Linux磁盤管理?
在Linux系統(tǒng)中,磁盤是存儲數(shù)據(jù)的核心硬件,無論是服務(wù)器部署、日常使用還是開發(fā)環(huán)境配置,都離不開磁盤管理。常見場景包括:
- 新服務(wù)器添加硬盤后,需要分區(qū)格式化才能存儲數(shù)據(jù);
- 系統(tǒng)磁盤空間不足時,需擴展分區(qū)或掛載新磁盤;
- 為不同數(shù)據(jù)類型(如系統(tǒng)文件、數(shù)據(jù)庫、日志)劃分獨立分區(qū),提升安全性和性能。
磁盤管理的核心流程可概括為:識別磁盤 → 分區(qū) → 格式化 → 掛載,這四個步驟環(huán)環(huán)相扣。本文將全程以實操為主,帶你從零掌握每個環(huán)節(jié)的具體操作。
2. 磁盤管理基礎(chǔ)概念(先搞懂這些再動手)
在動手操作前,先明確幾個關(guān)鍵概念,避免踩坑:
2.1 磁盤與分區(qū)表
- 磁盤標識:Linux中磁盤以
/dev/sdX(SATA/SCSI接口)或/dev/nvmeXnY(NVMe接口)命名,如/dev/sda(第一塊SATA硬盤)、/dev/nvme0n1(第一塊NVMe硬盤)。 - 分區(qū)表類型:磁盤必須先創(chuàng)建分區(qū)表,才能劃分分區(qū),主流類型有兩種:
| 分區(qū)表類型 | 支持最大磁盤容量 | 最大分區(qū)數(shù) | 適用場景 |
|---|---|---|---|
| MBR(Master Boot Record) | 2TB | 4個主分區(qū)(或3主+1擴展分區(qū)) | 舊設(shè)備、小容量磁盤 |
| GPT(GUID Partition Table) | 18EB | 理論無限制(默認128個) | 新設(shè)備、大容量磁盤(推薦) |
2.2 分區(qū)與文件系統(tǒng)
- 分區(qū):將一塊物理磁盤劃分為多個邏輯區(qū)域(如
/dev/sda1是第一塊SATA硬盤的第一個分區(qū)),每個分區(qū)獨立使用。 - 文件系統(tǒng):分區(qū)后需格式化(創(chuàng)建文件系統(tǒng)),才能存儲文件。Linux主流文件系統(tǒng):
| 文件系統(tǒng) | 特點 | 適用場景 |
|---|---|---|
| ext4 | 穩(wěn)定、兼容好、支持日志 | 系統(tǒng)分區(qū)、數(shù)據(jù)分區(qū)(通用首選) |
| XFS | 高性能、支持大容量、適合并行I/O | 服務(wù)器數(shù)據(jù)分區(qū)、數(shù)據(jù)庫存儲 |
| Btrfs | 支持快照、 RAID、動態(tài)擴容 | 需要高級功能的場景(如Docker存儲) |
| vfat | 跨平臺兼容(Windows/Linux) | U盤、移動硬盤(小文件存儲) |
2.3 掛載的核心邏輯
Linux中,分區(qū)不會自動被系統(tǒng)識別,需通過“掛載”將分區(qū)關(guān)聯(lián)到某個目錄(如 /data),此后訪問該目錄即操作對應分區(qū)。關(guān)鍵概念:
- 掛載點:用于關(guān)聯(lián)分區(qū)的目錄(如
/mnt/disk1),必須是空目錄; - 臨時掛載:重啟系統(tǒng)后失效(
mount命令); - 永久掛載:通過
/etc/fstab配置,重啟后自動生效(推薦)。
3. 第一步:識別磁盤(查看系統(tǒng)中的磁盤與分區(qū))
在進行任何操作前,先確認系統(tǒng)已識別新磁盤,常用命令如下:
3.1lsblk:直觀查看磁盤與分區(qū)結(jié)構(gòu)
lsblk(list block devices)是最常用的磁盤查看工具,輸出清晰易懂:
lsblk
輸出示例(解讀關(guān)鍵信息):
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 500M 0 part /boot # 系統(tǒng)引導分區(qū) └─sda2 8:2 0 99.5G 0 part / # 根分區(qū) sdb 8:16 0 200G 0 disk # 新添加的未分區(qū)磁盤(目標操作磁盤) nvme0n1 259:0 0 512G 0 disk └─nvme0n1p1 259:1 0 512G 0 part /home # NVMe硬盤的/home分區(qū)
TYPE列:disk表示物理磁盤,part表示分區(qū);MOUNTPOINT列:顯示已掛載的目錄(空表示未掛載)。
3.2fdisk -l:查看磁盤詳細信息(含分區(qū)表)
fdisk 是傳統(tǒng)磁盤工具,可查看磁盤容量、分區(qū)表類型等細節(jié):
sudo fdisk -l # 需要root權(quán)限
輸出示例(重點關(guān)注新磁盤 /dev/sdb):
Disk /dev/sdb: 200 GiB, 214748364800 bytes, 419430400 sectors Disk model: Virtual Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt # 分區(qū)表類型為GPT Disk identifier: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- 若
Disklabel type顯示dos,則為MBR分區(qū)表; - 新磁盤未分區(qū)時,會提示“no partitions”。
4. 第二步:磁盤分區(qū)(MBR/GPT分區(qū)實操)
分區(qū)工具選擇:
fdisk:支持MBR和GPT分區(qū)表,操作簡單(推薦入門);parted:支持大磁盤和GPT,功能更強大(適合高級場景)。
本文以 GPT分區(qū)表(推薦新磁盤使用)為例,演示分區(qū)流程,同時兼顧MBR分區(qū)方法。
4.1 用fdisk給新磁盤(/dev/sdb)創(chuàng)建GPT分區(qū)
4.1.1 進入fdisk工具(指定目標磁盤)
sudo fdisk /dev/sdb # 注意:是/dev/sdb(磁盤),不是分區(qū)(如/dev/sdb1)
進入后終端提示 Command (m for help):,輸入對應命令操作。
4.1.2 關(guān)鍵操作步驟(分步詳解)
- 查看幫助:輸入
m,查看所有支持的命令(無需記憶,按需查閱); - 轉(zhuǎn)換分區(qū)表類型(若為MBR需轉(zhuǎn)換):
若磁盤原是MBR分區(qū)表,輸入g轉(zhuǎn)換為GPT(新磁盤默認可能無分區(qū)表,輸入g會創(chuàng)建GPT):
Command (m for help): g Created a new GPT disklabel (GUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
(若需創(chuàng)建MBR分區(qū)表,輸入 o 即可);
創(chuàng)建分區(qū):輸入 n 新建分區(qū),按提示配置:
Command (m for help): n
Partition number (1-128, default 1): # 分區(qū)號(默認1,直接回車)
First sector (2048-419430399, default 2048): # 起始扇區(qū)(默認2048,回車)
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-419430399, default 419430399): +100G # 分區(qū)大?。ㄈ?100G表示100GB,直接回車則占滿剩余空間)
Created a new partition 1 of type 'Linux filesystem' and of size 100 GiB.
- 分區(qū)類型默認是
Linux filesystem(適用于ext4/XFS等); - 若需創(chuàng)建多個分區(qū),重復
n命令即可(如再創(chuàng)建一個50GB分區(qū));
查看分區(qū)結(jié)果:輸入 p 查看已創(chuàng)建的分區(qū):
Command (m for help): p Disk /dev/sdb: 200 GiB, 214748364800 bytes, 419430400 sectors ... Device Start End Sectors Size Type /dev/sdb1 2048 209717247 209715200 100G Linux filesystem /dev/sdb2 209717248 314574847 104857600 50G Linux filesystem
保存分區(qū)并退出:輸入 w 保存配置(若想放棄,輸入 q 退出):
Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
驗證分區(qū):退出后執(zhí)行 lsblk,確認分區(qū)已創(chuàng)建:
lsblk /dev/sdb
輸出應顯示 /dev/sdb1 和 /dev/sdb2 分區(qū)。
4.2 用parted工具創(chuàng)建分區(qū)(進階)
parted 支持交互式和命令行模式,適合大容量磁盤分區(qū),以創(chuàng)建100GB XFS分區(qū)為例:
sudo parted /dev/sdb # 進入parted交互式模式 (parted) mklabel gpt # 創(chuàng)建GPT分區(qū)表(若已存在可跳過) (parted) mkpart primary xfs 0% 100GB # 創(chuàng)建主分區(qū),文件系統(tǒng)xfs,大小0%-100GB (parted) print # 查看分區(qū) (parted) quit # 退出
5. 第三步:格式化分區(qū)(創(chuàng)建文件系統(tǒng))
分區(qū)后必須格式化,即創(chuàng)建文件系統(tǒng),才能存儲數(shù)據(jù)。使用 mkfs 命令(make filesystem),格式為 mkfs.文件系統(tǒng)類型 分區(qū)路徑。
5.1 常用格式化命令(代碼示范)
5.1.1 格式化為ext4(通用首選)
# 格式化/dev/sdb1為ext4(-F強制格式化,-L添加卷標,方便識別) sudo mkfs.ext4 -F -L data1 /dev/sdb1
輸出示例(顯示格式化進度和信息):
mke2fs 1.46.5 (30-Dec-2021) Creating filesystem with 26214400 4k blocks and 6553600 inodes Filesystem UUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Superblock backups stored on blocks: ... Writing inode tables: done Creating journal (131072 blocks): done Writing superblocks and filesystem accounting information: done
5.1.2 格式化為XFS(高性能場景)
XFS適合大文件和高并發(fā)I/O,常用于服務(wù)器數(shù)據(jù)分區(qū):
# 格式化/dev/sdb2為XFS(-f強制格式化,-L卷標) sudo mkfs.xfs -f -L data2 /dev/sdb2
5.1.3 格式化為vfat(跨平臺兼容)
適合U盤或移動硬盤(Windows和Linux均可訪問):
sudo mkfs.vfat -F 32 /dev/sdb3 # -F 32表示FAT32格式
5.2 關(guān)鍵注意事項
- 格式化會清除分區(qū)內(nèi)所有數(shù)據(jù),務(wù)必確認分區(qū)無重要數(shù)據(jù);
- 卷標(
-L參數(shù))可通過blkid命令查看,方便識別分區(qū); - 不要格式化系統(tǒng)分區(qū)(如
/dev/sda1、/dev/sda2),否則會導致系統(tǒng)崩潰。
6. 第四步:掛載磁盤(臨時與永久掛載)
格式化后,需將分區(qū)掛載到目錄才能訪問,分為臨時掛載(重啟失效)和永久掛載(推薦)。
6.1 臨時掛載(快速測試)
使用 mount 命令,格式:sudo mount 分區(qū)路徑 掛載點目錄。
6.1.1 操作步驟
創(chuàng)建掛載點目錄(必須是空目錄):
sudo mkdir -p /mnt/data1 # /mnt/data1為掛載點,可自定義(如/home/ubuntu/data) sudo mkdir -p /mnt/data2
掛載分區(qū):
# 掛載ext4分區(qū)/dev/sdb1到/mnt/data1 sudo mount /dev/sdb1 /mnt/data1 # 掛載XFS分區(qū)/dev/sdb2到/mnt/data2 sudo mount /dev/sdb2 /mnt/data2
驗證掛載:
# 方法1:df -h 查看掛載狀態(tài)(-h人類可讀格式) df -h
輸出示例(可見 /dev/sdb1 和 /dev/sdb2 已掛載):
Filesystem Size Used Avail Use% Mounted on /dev/sda2 995G 100G 845G 11% / /dev/sdb1 100G 20K 100G 1% /mnt/data1 /dev/sdb2 50G 53M 50G 1% /mnt/data2
或用 mount 命令直接查看:
mount | grep /dev/sdb
6.2 永久掛載(重啟不失效,核心推薦)
臨時掛載重啟后會失效,需通過 /etc/fstab 文件配置永久掛載,步驟如下:
6.2.1 步驟1:獲取分區(qū)UUID(推薦用UUID掛載,更穩(wěn)定)
UUID是分區(qū)的唯一標識,比 /dev/sdb1 更穩(wěn)定(磁盤順序變化不會影響掛載):
blkid # 查看所有分區(qū)的UUID和文件系統(tǒng)
輸出示例(重點復制目標分區(qū)的UUID):
/dev/sdb1: LABEL="data1" UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="ext4" PARTUUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" /dev/sdb2: LABEL="data2" UUID="YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY" TYPE="xfs" PARTUUID="YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
6.2.2 步驟2:編輯/etc/fstab文件
/etc/fstab 是系統(tǒng)啟動時自動掛載的配置文件,格式為:UUID=xxx 掛載點 文件系統(tǒng)類型 掛載參數(shù) 0 0。
備份fstab文件(重要!防止配置錯誤):
sudo cp /etc/fstab /etc/fstab.bak
編輯fstab:
sudo vim /etc/fstab # 用vim編輯,新手可改用nano:sudo nano /etc/fstab
添加掛載配置(在文件末尾添加以下內(nèi)容):
# 掛載/dev/sdb1(ext4)到/mnt/data1 UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /mnt/data1 ext4 defaults 0 2 # 掛載/dev/sdb2(xfs)到/mnt/data2 UUID=YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY /mnt/data2 xfs defaults 0 2
配置參數(shù)解讀:
defaults:默認掛載參數(shù)(rw、suid、dev、exec、auto、nouser、async);- 第5列(0):是否dump備份(0=不備份,1=備份);
- 第6列(2):是否開機自檢(0=不自檢,1=優(yōu)先自檢,2=次要自檢)。
6.2.3 步驟3:驗證配置并生效
測試掛載配置是否正確(關(guān)鍵!避免配置錯誤導致系統(tǒng)無法啟動):
sudo mount -a # 加載/etc/fstab中的所有配置,無報錯則正確
若報錯,檢查UUID、掛載點、文件系統(tǒng)類型是否正確;
驗證掛載:再次執(zhí)行 df -h,確認分區(qū)已掛載;
重啟測試(可選):重啟系統(tǒng)后,執(zhí)行 df -h 確認掛載依然生效:
sudo reboot
7. 常用磁盤管理輔助命令(必備工具)
7.1 查看磁盤使用情況
df -h # 查看所有掛載分區(qū)的使用情況 du -sh /mnt/data1/* # 查看掛載點下各文件/目錄的大?。?s匯總,-h人類可讀)
7.2 查看分區(qū)UUID和文件系統(tǒng)
blkid # 快速查看所有分區(qū)的UUID、LABEL、TYPE
7.3 卸載分區(qū)(如需修改或移除磁盤)
# 卸載/mnt/data1(確保當前不在該目錄下) sudo umount /mnt/data1 # 或通過分區(qū)路徑卸載 sudo umount /dev/sdb1
- 卸載前需退出掛載點目錄(如當前在
/mnt/data1,需先執(zhí)行cd ~); - 若提示“device is busy”(設(shè)備忙),用
fuser -m /mnt/data1查看占用進程,殺死進程后再卸載。
7.4 擴展分區(qū)(磁盤空間不足時)
若分區(qū)空間不夠,可擴展分區(qū)(以ext4為例):
- 先通過分區(qū)工具(fdisk/parted)擴展分區(qū)大小(需先刪除相鄰空閑分區(qū));
- 擴展文件系統(tǒng):
# 擴展ext4分區(qū)(需先卸載或在線擴展) sudo resize2fs /dev/sdb1 # 擴展XFS分區(qū)(無需卸載) sudo xfs_growfs /mnt/data2
8. 常見問題排查(避坑指南)
8.1 掛載失?。?ldquo;mount: /mnt/data1: can’t find in /etc/fstab.”
- 原因:使用
mount 掛載點時,未在/etc/fstab配置,需指定分區(qū)路徑:sudo mount /dev/sdb1 /mnt/data1。
8.2 重啟后掛載失效
- 原因:未配置
/etc/fstab,或配置錯誤; - 解決:按6.2節(jié)重新配置
/etc/fstab,執(zhí)行sudo mount -a測試。
8.3 系統(tǒng)無法啟動(因fstab配置錯誤)
- 原因:
/etc/fstab中UUID、掛載點或文件系統(tǒng)類型錯誤; - 解決:
- 啟動時按
e進入GRUB編輯模式; - 在linux內(nèi)核行末尾添加
init=/bin/bash,按Ctrl+X啟動; - 執(zhí)行
mount -o remount,rw /掛載根分區(qū)為可寫; - 編輯fstab:
vim /etc/fstab,修正錯誤配置; - 重啟:
reboot。
- 啟動時按
8.4 格式化時提示“Device or resource busy”
- 原因:分區(qū)已掛載,無法格式化;
- 解決:先卸載分區(qū):
sudo umount /dev/sdb1,再格式化。
9. 總結(jié)與實操建議
Linux磁盤管理的核心流程是 “識別→分區(qū)→格式化→掛載”,關(guān)鍵要點總結(jié):
- 新磁盤優(yōu)先選擇GPT分區(qū)表(支持大容量和多分區(qū));
- 文件系統(tǒng)推薦ext4(通用)或XFS(高性能);
- 永久掛載必須配置
/etc/fstab,且務(wù)必先用mount -a測試; - 操作前備份重要數(shù)據(jù),避免誤格式化系統(tǒng)分區(qū)。
實操建議:
- 新手可先用虛擬機(如VMware、VirtualBox)添加虛擬磁盤練習,避免損壞物理機數(shù)據(jù);
- 實際部署時,為系統(tǒng)分區(qū)、數(shù)據(jù)分區(qū)、日志分區(qū)劃分獨立磁盤/分區(qū),提升安全性和可維護性;
- 定期用
df -h查看磁盤使用情況,避免磁盤滿導致服務(wù)異常。
以上就是Linux磁盤管理之分區(qū)、格式化與掛載磁盤的方法的詳細內(nèi)容,更多關(guān)于Linux分區(qū)、格式化與掛載磁盤的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Unix/Linux系統(tǒng)下的nobody用戶與nologin詳細介紹
linux系統(tǒng)下的nobody用戶是什么用戶,nologin又是什么?本文為大家詳細介紹了這兩個no字輩2018-10-10
Linux系統(tǒng)中檢查系統(tǒng)重啟記錄方案
通過Linux系統(tǒng)的日志文件和特定命令,系統(tǒng)管理員可以有效監(jiān)控和分析系統(tǒng)的重啟歷史,以便及時發(fā)現(xiàn)并解決潛在的系統(tǒng)問題和安全漏洞,保證系統(tǒng)穩(wěn)定高效運行,利用/var/log目錄和命令如last、uptime和journalctl2024-10-10
Linux下gdb調(diào)試之打斷點的實現(xiàn)方法
這篇文章主要介紹了Linux下gdb調(diào)試之打斷點的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09

