Linux基礎之文件系統管理


這裏是一段防爬蟲文本,請讀者忽略。
本文原創首發於CSDN,作者IDYS
博客首頁:https://blog.csdn.net/weixin_41633902/
本文鏈接:https://blog.csdn.net/weixin_41633902/article/details/105784761


- 寫在開頭的話

  • 請記住:實踐是掌握知識的最快方法
  • 如果你只是懷着看看的態度去快速瀏覽文章,而不去認認真真的把文章裏面講的任何一個知識點去實踐一遍,那麼你永遠也掌握不了它
  • 生命不息,折騰不止!

- Linux文件系統


- CentOS上各個版本流行的文件系統

  • CentOS 5.x
    • ext2
  • CentOS 6.x
    • ext3,ext4
  • CentOS 7.x
    • ext4,xfs,btrfs,ReiserFS,jfs

- 其它文件系統

  • swap : 交換分區(虛擬內存)
  • 光盤:ISO9660
  • Windows:
    • fat32,ntfs
    • Uinx:FFS,UFS,JFS2
    • 網絡文件系統NFS,CIFS
  • 集羣文件:GFS2,OCFS2
  • 分佈式文件系統:
    • moosefs,mogilefs,GlusterFS,Lustre
  • 根據其是否支持“journal功能”
    • 日誌型文件系統:ext3,ext4,xfs
    • 非日誌型文件系統:ext2,vfat
  • 文件系統的組成部分
    • 內核中的模塊:ext4,xfs,vfat
    • 用戶空間管理工具:mkfs.ext4,mkfs.xfs,mkfs.vfat
  • Linux的虛擬文件系統:VFS
  • btrfs 文件系統支持容量的擴展,而且支持快照

- 文件系統管理查看類命令

- 文件系統管理

  • 創建文件系統:
    • mkfs.FS_TYPE /dev/DEVICE
      • mkfs.ext4
      • mkfs.xfs
      • mkfs.btrfs
      • mkfs.vfat
    • mkfs -t FS_TYPE /DEV/DEVICE[NUM]
      • -L ‘LABEL’:設定卷標
    • mke2fs:ext系列文件系統專用管理工具
      • -t:{ext2 | ext3 | ext4}
      • -b:{1024 | 2048 | 4096} 設置塊大小
      • -L ‘LABEL’
      • -j:相當於-t ext3 創建ext3文件系統
        • mkfs.ext3
        • mkfs -t ext3
        • mke2fs -j
        • mke2fs -t ext3
      • -i #:爲數據空間中每多少個字節創建一個inode 此大小不能小於塊(block)大小
      • -N #:爲數據空間創建多少個inode
      • -m #:爲管理人員預留的空間佔據的百分比:通常爲5%
      • -O FEATURE[,…]:啓用指定特性
        • -O ^FEATURE:關閉指定特性
	    -b指定塊大小 -m指定預留空間百分比  -L 設置卷標
mke2fs -b 1024 -m 3 -L MYDATA -i 

  • mkswap:創建交換分區
    • mkswap [options] device
      • -L ‘LABEL’
    • 前提:調整其分區ID爲82
# 修改分區ID號
[root@dayuanshuai /]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap / Solaris)

Command (m for help): p

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd406d040

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1           2       16033+  83  Linux
/dev/sdb2               3           4       16065   82  Linux swap / Solaris

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

# 讀取硬盤分區表
[root@dayuanshuai /]# partx -a -n 2 /dev/sdb
BLKPG: Device or resource busy
error adding partition 2 #雖然提示error但是沒事
BLKPG: Device or resource busy
error adding partition 3

#設置爲交換分區
[root@dayuanshuai /]# mkswap /dev/sdb2 
Setting up swapspace version 1, size = 16060 KiB
no label, UUID=09727f1e-eb7c-4b64-9a17-542cb6879b59

# 查看分區信息
[root@dayuanshuai /]# blkid /dev/sdb2 
/dev/sdb2: UUID="09727f1e-eb7c-4b64-9a17-542cb6879b59" TYPE="swap" 

  • 查看Linux支持的文件系統類型:cat /proc/filesystems
    • 每個文件系統都有一個內核模塊
    • 使用 lsmod查看在內核中裝載的所有模塊
#查看Linux支持的文件系統類型 

[root@dayuanshuai ~]# cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   cpuset
nodev   tmpfs
nodev   devtmpfs
nodev   binfmt_misc
nodev   debugfs
nodev   securityfs
nodev   sockfs
nodev   usbfs
nodev   pipefs
nodev   anon_inodefs
nodev   inotifyfs
nodev   devpts
nodev   ramfs
nodev   hugetlbfs
        iso9660
nodev   pstore
nodev   mqueue
nodev   selinuxfs
nodev   drm
        ext4

# 查看Linux文件系統裝載的所有內核模塊

[root@dayuanshuai ~]# lsmod
Module                  Size  Used by
tcp_diag                1041  0 
inet_diag               9430  1 tcp_diag
ib_ipoib               81191  0 
rdma_ucm               15739  0 
ib_ucm                 12360  0 
ib_uverbs              40532  2 rdma_ucm,ib_ucm
ib_umad                13519  0 
rdma_cm                36651  1 rdma_ucm
ib_cm                  37444  3 ib_ipoib,ib_ucm,rdma_cm
iw_cm                  33136  1 rdma_cm
ib_sa                  24188  4 ib_ipoib,rdma_ucm,rdma_cm,ib_cm
ib_mad                 41628  3 ib_umad,ib_cm,ib_sa
ib_core                83020  10 ib_ipoib,rdma_ucm,ib_ucm,ib_uverbs,ib_umad,rdma_cm,ib_cm,iw_cm,ib_sa,ib_mad
.....  #省略

  • 下面介紹磁盤文件系統的格式化
# 格式化分區,劃分文件系統

[root@dayuanshuai ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系統標籤=
操作系統:Linux
塊大小=1024 (log=0)
分塊大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
4016 inodes, 16032 blocks
801 blocks (5.00%) reserved for the super user
第一個數據塊=1
Maximum filesystem blocks=16515072
2 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks: 
        8193

正在寫入inode表: 完成                            
Creating journal (1024 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

  • e2label:管理ext系列文件系統的LABEL
[root@dayuanshuai /]# e2label /dev/sdb2
MYDATA

# 修改/dev/sdb2分區文件系統的label爲DATA
[root@dayuanshuai /]# e2label /dev/sdb2 "DATA"
[root@dayuanshuai /]# e2label /dev/sdb2
DATA

- 文件系統查看、設定

  • blkid:塊設備屬性信息查看
  • 可以顯示分區的屬性信息
    • blkid [OPTION] [DEVICE]
    • -U UUID:根據指定UUID查找設備
    • -L LABEL:根據指定的卷標查看設備
# 顯示/dev/sdb1分區的屬性信息

[root@dayuanshuai ~]# blkid /dev/sdb1
/dev/sdb1: UUID="de7f400a-511b-4aac-b141-97818146052b" TYPE="ext4"

#  顯示/dev/sdb1分區的屬性信息
[root@dayuanshuai /]# blkid /dev/sdb2
/dev/sdb2: LABEL="MYDATA" UUID="02c07346-6e58-4fa0-ad5d-a51971b9c82d" TYPE="ext4"

# 根據卷標查找設備
[root@dayuanshuai /]# blkid -L "MYDATA"
/dev/sdb2

# 根據UUID查找設備
[root@dayuanshuai /]# blkid -U 02c07346-6e58-4fa0-ad5d-a51971b9c82d
/dev/sdb2

  • tune2fs:重新設定ext系列文件系統可調整參數的值
    • -l:查看指定文件系統的超級塊信息
    • -L ‘LABEL’:修改卷標
    • -m #:修改預留給管理員的空間百分比
    • -j:將ext2升級爲ext3
    • -O:文件系統屬性信息啓用或禁用
      • -O has_journal 開啓日誌功能
      • -O ^has_journal 關閉日誌功能
    • -o:調整文件系統的默認掛載選項
    • -U UUID:修改UUID號
# 查看指定分區的超級塊信息
[root@dayuanshuai /]# tune2fs -l /dev/sdb2 
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   DATA
Last mounted on:          <not available>
Filesystem UUID:          02c07346-6e58-4fa0-ad5d-a51971b9c82d
Filesystem magic number:  0xEF53
..... #省略

# 啓用日誌功能
[root@dayuanshuai /]# tune2fs -0 'has_journal' /dev/sdb1  

# 關閉日誌功能
[root@dayuanshuai /]# tune2fs -O '^has_journal' /dev/sdb1

  • dumpe2fs:查看整個文件系統的結構信息
    • -h :查看超級塊信息
[root@dayuanshuai /]# dumpe2fs /dev/sdb1
.... 前面省略
Group 0: (Blocks 1-8192) [ITABLE_ZEROED]
  校驗和 0xab1e,1997個未使用的inode
  主 superblock at 1, Group descriptors at 2-2
  保留的GDT塊位於 3-64
  Block bitmap at 65 (+64), Inode bitmap at 81 (+80)
  Inode表位於 97-347 (+96)
  7608 free blocks, 1997 free inodes, 2 directories, 1997個未使用的inodes
  可用塊數: 80, 83-96, 600-8192
  可用inode數: 12-2008
Group 1: (Blocks 8193-16031) [INODE_UNINIT, ITABLE_ZEROED]
  校驗和 0x1522,2008個未使用的inode
  備份 superblock at 8193, Group descriptors at 8194-8194
  保留的GDT塊位於 8195-8256
  Block bitmap at 66 (+4294959169), Inode bitmap at 82 (+4294959185)
  Inode表位於 348-598 (+4294959451)
  6751 free blocks, 2008 free inodes, 0 directories, 2008個未使用的inodes
  可用塊數: 9281-16031
  可用inode數: 2009-4016

# dumpe2fs -h 只查看文件系統的超級塊信息

[root@dayuanshuai /]# dumpe2fs -h /dev/sdb1
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          319da001-4962-40c6-bff5-6df98106d672
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              4016
Block count:              16032
Reserved block count:     801
Free blocks:              14359

- 文件系統檢測修復

  • fsck:FILE System Check
    • fsck.FS_TYPE
    • fsck -t FS_TYPE
    • fsck -a:自動修復錯誤
    • fsck -r:交互式修復錯誤

注意:FS_TYPE一定要與分區上的文件系統類型相同

  • e2fsck:ext系列文件系統專用的檢測工具
    • -y:自動回答爲yes
    • -f:強制修復(不管文件系統有沒有錯誤直接修復,非常粗暴)
# 首先查看文件系統是否出現錯誤

[root@dayuanshuai /]# fsck.ext4 /dev/sdb1 
e2fsck 1.41.12 (17-May-2010)
/dev/sdb1: clean, 11/4016 files, 1673/16032 blocks

#如果出現錯誤則使用fsck -r 交互式修復錯誤

[root@dayuanshuai /]# fsck -r /dev/sdb1    
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sdb1: clean, 11/4016 files, 1673/16032 blocks

#強制,不管文件系統是否出現問題,直接修復,非常粗暴,不建議使用
[root@dayuanshuai /]# e2fsck -f /dev/sdb1 


- 寫在最後的話:

  • 無論每個知識點的難易程度如何,我都會盡力將它描繪得足夠細緻
  • 歡迎關注我的CSDN博客,IDYS’BLOG
  • 持續更新內容運維 | 網工 | 軟件技巧
  • 如果你有什麼疑問,或者是難題。歡迎評論或者私信我。你若留言,我必回覆!
  • 雖然我現在還很渺小,但我會做好每一篇內容。謝謝關注!

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章