作者簡介:一位在簡歷上沒有標注精通的運維工程師。希望大家多多關注作者,以下思維導圖展示了預計更新的內容和當前進度(不定期更新)。
linux磁盤相關的命令雖然不多,但在實際運維中卻非常重要,因為Linux系統和業務都依賴于硬盤。如果磁盤使用和配置不當,可能會導致系統無法啟動或業務系統無法提供預期的服務。
本文將從以下幾個方面介紹Linux磁盤管理:
- 分區介紹
- 創建分區
- MBR與gpt
- 格式化與掛載(本章節)
- inode與硬連接
- 磁盤操作命令
- 小結
在開始之前,我們如何判斷分區是MBR還是GPT呢?
# 安裝時選擇中文,可以使用中文過濾,dos即為MBR,gpt即為GPT。 [root@localhost ~]# fdisk -l | grep "磁盤標簽" 磁盤標簽類型:dos 磁盤標簽類型:gpt
本章節將介紹如何對使用MBR和GPT創建的分區進行格式化和掛載。
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 500M 0 part /boot └─sda2 8:2 0 19.5G 0 part / sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 20G 0 part sdc 8:32 0 3T 0 disk └─sdc1 8:33 0 3T 0 part sr0 11:0 1 942M 0 rom
在windows中,我們格式化時有兩種文件系統:NTFS和FAT32。而在Linux中,目前最常用的文件系統是ext4和xfs。我們將使用不同的方式格式化兩塊磁盤。
小知識:在ext4之前還有ext3和ext2,當然在其他類型的Linux中還有更多的文件系統。
- 格式化ext4
[root@localhost ~]# mkfs.ext4 /dev/sdc1 mke2fs 1.42.9 (28-Dec-2013) 文件系統標簽= OS type: Linux 塊大小=4096 (log=2) 分塊大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 196608000 inodes, 786431488 blocks 39321574 blocks (5.00%) reserved for the super user 第一個數據塊=0 Maximum filesystem blocks=293391564824000 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544 Allocating group tables: 完成 正在寫入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成
- 格式化xfs
[root@localhost ~]# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=5242624, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
- 掛載磁盤
前面提到,磁盤可以掛載到任何目錄,但系統自帶的目錄通常在安裝系統時就已配置完畢,一般不建議修改。我們將創建兩個新目錄進行掛載。掛載和卸載使用mount和umount命令。
[root@localhost ~]# mkdir /data /data1 [root@localhost ~]# mount /dev/sdb1 /data [root@localhost ~]# mount /dev/sdc1 /data1 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 500M 0 part /boot └─sda2 8:2 0 19.5G 0 part / sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 20G 0 part /data sdc 8:32 0 3T 0 disk └─sdc1 8:33 0 3T 0 part /data1 sr0 11:0 1 942M 0 rom ### [root@localhost ~]# umount /data1 ### 卸載時最常見的問題是磁盤正在使用中,無法卸載。這里可能會涉及到`lsof`和`fuser`命令,有興趣可以進一步了解。
- 配置fstab
如果掛載后直接使用沒有問題,但如果系統主動或被動重啟,磁盤會恢復到未掛載狀態。如何實現開機自動掛載呢?在Linux中,有一個文件可以配置磁盤的自動掛載。
在掛載時,我們使用的是設備地址,而在配置文件中使用的是UUID。它們有什么區別呢?每個磁盤的UUID是固定的,因此使用UUID更可靠。如果使用設備名稱,可能會因為磁盤故障或重啟導致設備名稱變化,從而引發問題。
確認配置方法后,參考上面的格式進行配置。配置完成后,最好重啟系統,以確保配置正確,避免正式使用后因重啟引發的問題。
良好的運維習慣是需要培養的。
[root@localhost ~]# cat /etc/fstab ## /etc/fstab # Created by anaconda on Fri Jun 7 19:56:34 2024 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=fb21e404-5ed7-400f-b936-ce2d8b631bfe / xfs defaults 0 0 UUID=15251c96-cf20-46c3-ac06-c5b86c4afe70 /boot xfs defaults 0 0
[root@localhost ~]# blkid /dev/sda1: UUID="15251c96-cf20-46c3-ac06-c5b86c4afe70" TYPE="xfs" /dev/sda2: UUID="fb21e404-5ed7-400f-b936-ce2d8b631bfe" TYPE="xfs" /dev/sdb1: UUID="9fcb9c55-b38c-472e-b8b7-07db7b243e4f" TYPE="xfs" /dev/sdc1: UUID="53e67bf0-fe14-4cd0-bcd9-8b9720e2360b" TYPE="ext4" PARTLABEL="primary" PARTUUID="cea97c50-59e7-4f79-9454-5b86fd67b7a0" /dev/sr0: UUID="2019-09-11-19-02-53-00" LABEL="centos 7 x86_64" TYPE="iso9660" PTTY
# 可以使用,但不推薦的方式 /dev/sdb1 /data xfs defaults 0 0 # 推薦的掛載方式 UUID=53e67bf0-fe14-4cd0-bcd9-8b9720e2360b /data1 ext4 defaults 0 0