磁盤及文件系統管理詳解

大綱node

1、硬盤物理結構及相關結構linux

2、硬盤邏輯結構及相關概念shell

3、Ext2文件系統邏輯結構vim

4、讀取、建立、刪除、複製、剪切過程centos

5、軟連接與硬連接聯繫與區別緩存

6、虛擬文件系統安全

6、文件系統管理相關命令bash



1、硬盤物理結構及相關概念網絡

1.硬盤內部視角實物圖數據結構

wKiom1ZRq1yQx4mfAACdd-lVZ9o949.jpg

wKiom1ZSeS3zD9uYAABnE-xRe5s135.jpg

2.硬盤內部視角邏輯圖

wKiom1ZRrv6R7MVDAADb_shIiTU236.png

3.扇區、磁道、柱面圖

wKioL1ZRr5jBRRhoAAAy_xkJaBs736.jpg  wKioL1ZRsxHz6Q6mAAD8gz1PyVE618.gif




  •  磁頭(head)數:每一個盤片通常有上下兩面,分別對應1個磁頭,共2個磁頭,實現數據的存取

  •  磁道(track)當磁盤旋轉時,磁頭若保持在一個位置上,則每一個磁頭都會在磁盤表面劃出一個圓形軌跡,這些圓形軌跡就叫作磁道,從外邊緣的0開始編號,根據磁化方向來存數數據0和1

  • 柱面(cylinder):不一樣盤片的相同編號的磁道構成的圓柱面就被稱之爲柱面,磁盤的柱面數與一個盤面上的磁道數是相等的

  • 扇區(sector):每一個磁道都別切分紅不少扇形區域,每一個磁道的扇區數量相同,每一個扇區大小爲512字節

  • 圓盤(platter):就是硬盤的盤片,爲實現大容量,通常都是多個


硬盤的容量=柱面數×磁頭數×扇區數×512(字節數)



2、硬盤邏輯結構及相關概念

1.總體邏輯結構圖

wKiom1ZRvBjRsMI7AAER2U8Rb_o482.jpg

2.MBR(Master Boot Record)

wKioL1ZR223i3HZVAAEbDnfdyY0001.png

硬盤的0柱面、0磁頭、1扇區稱爲主引導扇區(也叫主引導記錄MBR)。它由三個部分組成:硬盤主引導程序(BootLoader)、硬盤分區表DPT(Disk Partition table)和魔數(Magic Number)。

  • Boot Loader:主引導程序,啓動操做系統的一段代碼,佔446個字節

  • DPT:佔64個字節,硬盤中分區有多少以及每一分區的大小都記在其中

  • Magic Number:佔2個字節,固定爲0xAA55或0x55AA,這取決於處理器類型,若是是小端模式處理器(如Intel系列),則該值爲0xAA55;若是是大端模式處理器(如Motorola6800),則該值爲0x55AA


3.主分區、擴展分區、邏輯分區示意圖

wKioL1ZRwlPBVaDfAADMWZrpCNI498.jpg


  • ①主分區+擴展分區<=4

  • ②擴展分區最多隻有一個

  • ③要麼是三主一擴展,要麼是四個主分區,那麼剩餘未分區的空間將沒法使用


4.Ext2文件系統邏輯結構

wKiom1ZR3mej7P2DAAAe6DQykmg392.png


一個分區最開始處是Boot Sector,而後就是多個塊組每一個塊組又能夠細分爲以下組成部分:

  • Super Block記錄此 filesystem 的總體信息,包括inode/block的總量、使用量、剩餘量, 以及文件系統的格式與相關信息等;因爲super block很重要 ,在每一個 block group都會存一份進行備份.

  • GDT:Group Descriptor Table,塊組描述符,由不少塊組描述符組成,整個分區分紅多少個塊組就對應有多少個塊組描述符。每一個塊組描述符(Group Descriptor)存儲一個塊組的描述信息,例如在這個塊組中從哪裏開始是inode表,從哪裏開始是數據塊,空閒的inode和數據塊還有多少個等等。和超級塊相似,塊組描述符表在每一個塊組的開頭也都有一份拷貝

  • Block Bitmap:塊位圖就是用來描述整個塊組中哪些塊已用哪些塊空閒的,它自己佔一個塊,其中的每一個bit表明本塊組中的一個塊,這個bit爲1表示該塊已用,這個bit爲0表示該塊空閒可用

  • inode Bitmap和塊位圖相似,自己佔一個塊,其中每一個bit表示一個inode是否空閒可用

  • inode Table一個文件除了數據須要存儲以外,一些描述信息也須要存儲,例如文件類型(常規、目錄、符號連接等),權限,文件大小,建立/修改/訪問時間等,也就是ls-l命令看到的那些信息,這些信息存在inode中而不是數據塊中,每一個文件都有一個inode,一個塊組中的全部inode組成了inode表,inode表佔多少個塊在格式化時就要決定並寫入塊組描述符中

  • Data Blocks對於常規文件,文件的數據存儲在數據塊中,對於目錄,該目錄下的全部文件名和目錄名存儲在數據塊中,文件名保存在它所在目錄的數據塊中,除文件名以外,ls -l命令看到的其它信息都保存在該文件的inode中,目錄也是一種文件,是一種特殊類型的文件,對於符號連接,若是目標路徑名較短則直接保存在inode中以便更快地查找,若是目標路徑名較長則分配一個數據塊來保存設備文件、FIFO和socket等特殊文件沒有數據塊,設備文件的主設備號和次設備號保存在inode中


Inode Table

wKiom1ZR48OTVQgXAAC6ayOFzTU679.gif


目錄文件

wKioL1ZR5JPhFXJlAABJ5Uca7fQ102.jpg

注:

①其實文件名和文件類型都是在目錄中存放,而文件的其餘元數據信息則是在Inode中存放

②文件系統各分區之間物理視角上是並行的,邏輯視角上必須得有上下級關係,全部的文件都必須直接或間接從根開始



4、讀取、建立、刪除、複製、剪切過程

一、讀取文件:例如/etc/httpd/httpd.conf

首先根是自引用的,也就是根的Inode號是已知的,再根據Inode Table能夠知道根的Inode號對應的Block號,而後找到對應的block,block裏面有個目錄項,也即Dentry,每一個目錄項記錄了根下全部直接子目錄的Inode與文件名的對應關係(也包括文件類型等),例如var對應的Inode號爲2883585,etc對應的Inode號爲1507329等等,此時找到etc文件對應的Inode號,再經過查找Inode Table能夠得知etc文件對應的Block,再經過讀取Block裏面的Dentry能夠得知httpd文件對應的Inode,再查找Inode Table能夠查到httpd文件對應的Block,再在對應的Block裏面查詢Dentry能夠得知httpd.conf文件對應的Inode號,再次查詢Inode Table能夠找到對應的Block,因而數據就能夠讀取了


二、建立文件:例如/etc/testfile.txt

想要建立一個文件,首先得先給這個文件分配Inode和Block。首先掃描Inode Bitmap查找空閒Inode,再去Inode Table中寫入想要建立文件的元數據,例如權限、屬主屬組、大小、時間戳、以及這個Inode對應所佔據的Block。而後再找到根的Inode,找到根對應的Block,裏面Dentry記錄了etc及其對應的Inode,再經過Inode Table找到etc文件對應的Block,因而在Dentry裏面添加一條記錄,testfile.txt與其對應的Inode號,文件類型等信息。到此一個文件便建立了。


三、刪除文件:例如/etc/fstab

刪除文件直接上級目錄(etc)裏面的那條Dentry記錄,Inode Bitmap裏面把文件(fstab)原先對應的Inode號標記爲未使用,Block Bitmap中把文件(fstab)原先對應的Block標記爲未使用。刪除文件自己並無刪除文件所對應的Block和Inode,也就是說Block上的數據並無被抹除,除非後面向其Block中覆蓋數據


四、複製文件

複製文件本質就是新建一個文件,並填充源文件數據的過程,詳細可參考上面的建立和讀取文件過程


五、剪切文件

在同一個分區下,剪切速度很是快,這是由於其本質也只是將Dentry記錄換一個目錄而已,因此根本就不涉及什麼耗時的操做。而跨分區剪切文件的過程其實就是在另一個分區上建立一個新文件,並複製,複製完成以後再刪除原先分區上數據的一個過程。


5、軟鏈接與硬連接聯繫與區別

一、軟鏈接(符號連接)與硬連接聯繫

  • 軟鏈接本質:在Inode Table中本該存儲Block號信息的地方存儲了一個路徑,如:/etc/httpd/httpd.conf,因此軟鏈接文件的大小都是其對應的文件路徑的字符個數

  • 硬連接本質:Inode號相同的文件彼此均可稱爲硬連接,只是再另一個目錄中添加的Dentry記錄爲同一個Inode而已

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ln  make  links between files     # 給文件建立連接
 
SYNOPSIS
        ln  [-s - v ] SRC DEST
         -s:建立軟連接
         - v :顯示建立詳細過程
        
[root@soysauce  test ] # ll /etc/rc.sysinit             # 權限爲777,而且大小爲所指向的字符個數
lrwxrwxrwx. 1 root root 15 Aug 28 10:32  /etc/rc .sysinit -> rc.d /rc .sysinit
[root@soysauce  test ] # ln -s inittab inittab_soft        # 建立軟鏈接
[root@soysauce  test ] # ln  inittab inittab_hard         # 建立硬連接
[root@soysauce  test ] # ll -i
total 8
265301 -rw-r--r-- 2 root root 884 Nov 23 13:25 inittab    
265301 -rw-r--r-- 2 root root 884 Nov 23 13:25 inittab_hard      # 硬連接inode號與源文件相同
265310 lrwxrwxrwx 1 root root   7 Nov 23 13:55 inittab_soft -> inittab
[root@soysauce  test ] # ll -i
total 8
265301 -rw-r--r-- 2 root root 884 Nov 23 13:25 inittab         # 此時硬連接次數都爲2
265301 -rw-r--r-- 2 root root 884 Nov 23 13:25 inittab_hard
265310 lrwxrwxrwx 1 root root   7 Nov 23 13:55 inittab_soft -> inittab
[root@soysauce  test ] # rm -f inittab                           # 刪除源文件
[root@soysauce  test ] # ll -i
total 4
265301 -rw-r--r-- 1 root root 884 Nov 23 13:25 inittab_hard     # 此時硬連接次數變爲了1
265310 lrwxrwxrwx 1 root root   7 Nov 23 13:55 inittab_soft -> inittab     # 此時軟鏈接也一直在閃爍
[root@soysauce  test ] # head -3 inittab_hard                 # 由於篇幅緣由,顧只查看3行
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

二、軟鏈接(符號連接)與硬連接區別

  • 硬連接:

    ①只能對文件建立,不能應用於目錄

    ②不能跨文件系統

    ③建立硬連接會增長文件被連接的次數

    ④硬連接次數爲1時,再刪除就是完全刪除了

    ⑤刪除源文件不會影響連接文件

  • 軟連接:

    ①可應用於目錄

    ②能夠跨文件系統

    ③不會增長被連接文件的連接次數

    ④其大小爲指定的路徑所包含的字符個數

    ⑤刪除源文件會影響連接文件

3.硬連接與複製的區別
互爲硬連接的兩文件inode號確定是相同的,對應的block號也是相同的;而複製的文件inode號和block號也確定不相同,只是block裏面存儲的數據是同樣而已


6、虛擬文件系統

虛擬文件系統又稱虛擬文件系統轉換(Virual Filesystem Switch ,簡稱VFS)。說它虛擬,是由於它全部的數據結構都是在運行之後才創建,並在卸載時刪除,而在磁盤上並無存儲這些數據結構,顯然若是隻有VFS,系統是沒法工做的,由於它的這些數據結構不能憑空而來,只有與實際的文件系統,如Ext二、Minix、MSDOS、VFAT等相結合,才能開始工做,因此VFS並非一個真正的文件系統。與VFS相對,咱們稱Ext二、Minix、MSDOS等爲具體文件系統

    VFS與內核其它子系統之間關係

wKiom1ZT86LSHtcSAABXzDmkEcM146.gif


VFS提供一個統一的接口(實際上就是file_operatoin數據結構),一個具體文件系統要想被Linux支持,就必須按照這個接口編寫本身的操做函數,而將本身的細節對內核其它子系統隱藏起來。於是,對內核其它子系統以及運行在操做系統之上的用戶程序而言,全部的文件系統都是同樣的。實際上,要支持一個新的文件系統,主要任務就是編寫這些接口函數。

歸納說來,VFS主要有如下幾個做用:

(1)對具體文件系統的數據結構進行抽象,以一種統一的數據結構進行管理。

(2)接受用戶層的系統調用 ,例如write、open、stat、link等等。

(3)支持多種具體文件系統之間相互訪問。

(4)接受內核其餘子系統的操做請求,特別是內存管理子系統

注:以上內容都是摘自深刻分析Linux內核源碼第8章第一節VFS概述


7、文件系統管理相關命令

一、fdisk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
fdisk  - Partition table manipulator  for  Linux     # Linux分區表操做工具軟件
 
SYNOPSIS
        fdisk  [-uc] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device
 
交互式命令   
     m:顯示幫助信息 
     p: 顯示當前硬件的分區,包括沒保存的改動
     n: 建立新分區,e: 擴展分區,p: 主分區
     d: 刪除一個分區
     w: 保存退出
     q: 不保存退出
     t: 修改分區類型,L: 查看全部支持的分區類型
     l: 顯示全部支持的分區類型
 
[root@soysauce ~] # 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): p                     # 顯示全部的分區
 
Disk  /dev/sdb : 21.5 GB, 21474836480 bytes
255 heads, 63 sectors /track , 2610 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: 0x84c99918
 
    Device Boot      Start         End      Blocks   Id  System
/dev/sdb1                1         262     2104483+  83  Linux
 
Command (m  for  help): n                         # 新建一個分區
Command action
    e   extended
    p   primary partition (1-4)
p                                                # 創建主分區
Partition number (1-4): 2                       # 指定分區號
First cylinder (263-2610, default 263):          # 分區起始柱面,默認便可
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-2610, default 2610): +3G  # 分區結束柱面,可直接指定大小
 
Command (m  for  help): t                         # 修改分區類型
Partition number (1-4): 2
Hex code ( type  L to list codes): L              # 輸入t以後是L選項,若是直接查看則是l
 
  0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
  1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS /sec  (FAT-
  2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS /sec  (FAT-
  3  XENIX usr       40  Venix 80286     84  OS /2  hidden C:  c6  DRDOS /sec  (FAT-
  4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
  5  Extended        42  SFS             86  NTFS volume  set  da  Non-FS data    
  6  FAT16           4d  QNX4.x          87  NTFS volume  set  db  CP /M  / CTOS / .
  7  HPFS /NTFS        4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
  8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM        df   BootIt         
  9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     
  a  OS /2  Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R /O        
  b  W95 FAT32       52  CP /M             9f  BSD /OS           e4  SpeedStor      
  c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        
  e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            
  f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12 /16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux /PA-RISC  b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS /NTF  65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC /IX            bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1
Hex code ( type  L to list codes): 82
Changed system  type  of partition 2 to 82 (Linux swap / Solaris)
 
Command (m  for  help): w                         # 保存退出
The partition table has been altered!
 
Calling ioctl() to re- read  partition table.
 
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@soysauce ~] # cat /proc/partitions     # 查看當前內核已識別的分區
major minor   #blocks  name
 
    8        0   20971520 sda
    8        1     512000 sda1
    8        2   20458496 sda2
    8       16   20971520 sdb
    8       17    2104483 sdb1
  253        0   18423808 dm-0
  253        1    2031616 dm-1
[root@soysauce ~] # partx -a /dev/sdb   # 通知內核重讀分區表信息,RHEL5或者CentOS上通常是partprobe命令
BLKPG: Device or resource busy
error adding partition 1
[root@soysauce ~] # cat /proc/partitions 
major minor   #blocks  name
 
    8        0   20971520 sda
    8        1     512000 sda1
    8        2   20458496 sda2
    8       16   20971520 sdb
    8       17    2104483 sdb1
    8       18    3156772 sdb2                 # 此時sdb2已經讀取到了
  253        0   18423808 dm-0
  253        1    2031616 dm-1
[root@soysauce ~] # mkswap -L MYDATA/dev/sdb2                # 格式化交換分區
Setting up swapspace version 1, size = 3156768 KiB
LABEL=MYDATA, UUID=2f0ca25b-e6f8-45ae-a239-00f5b38f7275
[root@soysauce ~] # free -m
              total       used        free      shared    buffers     cached
Mem:           988        176        812          0         67         37
-/+ buffers /cache :         71        917
Swap:         1983          0       1983             # 此時還未啓用剛纔建立的那個交換分區
[root@soysauce ~] # swapon /dev/sdb2                 # 啓用剛剛建立的交換分區
[root@soysauce ~] # free -m
              total       used        free      shared    buffers     cached
Mem:           988        178        810          0         67         37
-/+ buffers /cache :         73        915
Swap:         5066          0       5066             # 此時能夠看到已然生效
[root@soysauce ~] # swapoff /dev/sdb2                # 關閉交換分區
[root@soysauce ~] # free -m
              total       used        free      shared    buffers     cached
Mem:           988        176        812          0         67         37
-/+ buffers /cache :         71        917
Swap:         1983          0       1983             # 此時能夠看到已然關閉

二、mke2fs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
mke2fs - create an ext2 /ext3/ext4  filesystem     # 建立ext2/ext3/ext4文件系統
 
SYNOPSIS
        mke2fs [options] DEVICE
    
     -j:建立ext3類型文件系統
     -b BLOCK_SIZE:指定塊大小,默認爲4096;可用取值爲102四、2048或4096
     -L LABEL:指定分區卷標
     -m  #:指定預留給超級用戶的塊數百分比,默認值爲%5
     -i  #:用於指定爲多少字節的空間建立一個inode,默認爲8192;應爲block的2^n倍
     -t FSTYPE:指定文件系統類型
     -N  #:指定inode個數
     -F:強制建立文件系統,無論其是否處於掛載狀態
     -E:用戶指定額外文件系統屬性
     -q:執行時不顯示任何信息,經常使用於腳本
     -c:檢查是否有損壞的區塊
 
[root@soysauce ~] # fdisk /dev/sdb             # 建立一個分區完整過程
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x84c99918.
Changes will remain  in  memory only,  until  you decide to write them.
After that, of course, the previous content won't be recoverable.
 
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
 
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): n                 # 新建一個分區
Command action
    e   extended
    p   primary partition (1-4)
p
Partition number (1-4): 1                 # 本身選擇分區號,1-4中選
First cylinder (1-2610, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G
 
Command (m  for  help): w                  # 保存建立的分區並退出
The partition table has been altered!
 
Calling ioctl() to re- read  partition table.
Syncing disks.
[root@soysauce ~] # cat /proc/partitions         # 查看當前內核已經讀取到的分區信息
major minor   #blocks  name
 
    8        0   20971520 sda
    8        1     512000 sda1
    8        2   20458496 sda2
    8       16   20971520 sdb
    8       17    2104483 sdb1  # 我這裏內核已經讀取到了sdb1,而在CentOS5上可能須要執行prartprobe命令  
  253        0   18423808 dm-0
  253        1    2031616 dm-1
[root@soysauce ~] # mke2fs -j /dev/sdb1         # 建立ext3格式的文件系統
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS  type : Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131648 inodes, 526120 blocks
26306 blocks (5.00%) reserved  for  the super user
First data block=0
Maximum filesystem blocks=541065216
17 block  groups
32768 blocks per group, 32768 fragments per group
7744 inodes per group
Superblock backups stored on blocks: 
     32768, 98304, 163840, 229376, 294912
 
Writing inode tables:  done                            
Creating journal (16384 blocks):  done
Writing superblocks and filesystem accounting information:  done
 
This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@soysauce ~] # mke2fs -t ext4 /dev/sdb1        # 建立ext4格式的文件系統
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS  type : Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131648 inodes, 526120 blocks
26306 blocks (5.00%) reserved  for  the super user
First data block=0
Maximum filesystem blocks=541065216
17 block  groups
32768 blocks per group, 32768 fragments per group
7744 inodes per group
Superblock backups stored on blocks: 
     32768, 98304, 163840, 229376, 294912
 
Writing inode tables:  done                            
Creating journal (16384 blocks):  done
Writing superblocks and filesystem accounting information:  done
 
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

三、blkid

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
blkid -  command -line utility to  locate /print  block device attributes  # 定位或打印塊設備屬性信息
 
SYNOPSIS
        blkid [options] [DEVICE]
        
     -s <tag>:顯示指定信息,默認顯示全部信息
     -o  format :指定顯示格式,經常使用list
 
[root@soysauce ~] # blkid 
/dev/sda1 : UUID= "7a79d653-e9b7-43f2-a2c1-e41af29b3f5d"  TYPE= "ext4" 
/dev/sda2 : UUID= "aNiMxY-uTa4-IcVC-1FD7-i2S9-kwnV-lF4BMS"  TYPE= "LVM2_member" 
/dev/mapper/vg_centos6-lv_root : UUID= "09b9916a-7424-4be3-9dc8-5222b699ef33"  TYPE= "ext4" 
/dev/mapper/vg_centos6-lv_swap : UUID= "2a88de6d-5333-4077-b13e-117bbf60c5d6"  TYPE= "swap" 
[root@soysauce ~] # blkid -o device            # 只顯示設備名
/dev/sda1
/dev/sda2
/dev/mapper/vg_centos6-lv_root
/dev/mapper/vg_centos6-lv_swap
[root@soysauce ~] # blkid -s UUID /dev/sda1       # 只顯示/dev/sda1的UUID
/dev/sda1 : UUID= "7a79d653-e9b7-43f2-a2c1-e41af29b3f5d"

四、e2lable

1
2
3
4
5
6
7
8
e2label - Change the label on an ext2 /ext3/ext4  filesystem     # 改變ext2/ext3/ext4文件系統的卷標
 
SYNOPSIS
        e2label device [ new-label ]
         
[root@soysauce ~] # e2label /dev/sdb1 SOYSAUCE          # 修改/dev/sdb1卷標
[root@soysauce ~] # e2label /dev/sdb1             # 查看/dev/sdb1卷標
SOYSAUCE

五、tune2fs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
tune2fs - adjust tunable filesystem parameters on ext2 /ext3/ext4  filesystems  # 調整文件系統參數信息
 
SYNOPSIS
        tune2fs  [options]   DEVICE
        
     -j:不損害原有數據,將ext2升級至ext3
     -L LABEL:設定或修改卷標
     -m  #:調整預留百分比
     -r  #:指定預留塊數
     -o:設定默認掛載選項,經常使用的acl
     -c  #:指定掛載次數達到#次以後進行自檢,0或-1表關閉此功能
     -C  #:指定文件系統已經被掛載的次數
     -i  #:每掛載使用多少天后進行自檢;0或-1表示關閉此功能
     -l:顯示超級塊中的信息
     
[root@soysauce ~] # tune2fs -j /dev/sdb1    # 無損升級至ext3文件系統
tune2fs 1.41.12 (17-May-2010)
Creating journal inode:  done
This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@soysauce ~] # blkid /dev/sdb1
/dev/sdb1 : UUID= "79d72bb3-9b67-45cd-8e77-2b37349db88c"  SEC_TYPE= "ext2"  TYPE= "ext3" 
[root@soysauce ~] # tune2fs -m 8 /dev/sdb1    # 調整預留塊百分比爲%8
tune2fs 1.41.12 (17-May-2010)
Setting reserved blocks percentage to 8% (42089 blocks)
[root@soysauce ~] # tune2fs -l  /dev/sdb1    # 查看超級塊信息
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          79d72bb3-9b67-45cd-8e77-2b37349db88c
Filesystem magic number:  0xEF53
Filesystem revision  #:    1 (dynamic)
Filesystem features:     has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default  mount  options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS  type :       Linux
Inode count:              131648
Block count:              526120
Reserved block count:     42089
Free blocks:              500671
Free inodes:              131637
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      128
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         7744
Inode blocks per group:   484
Filesystem created:       Mon Nov 23 20:24:17 2015
Last  mount  time :          n /a
Last write  time :          Mon Nov 23 20:26:43 2015
Mount count:              0
Maximum  mount  count:      22
Last checked:             Mon Nov 23 20:24:17 2015
Check interval:           15552000 (6 months)
Next check after:         Sat May 21 20:24:17 2016
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:              256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory  hash :   half_md4
Directory Hash Seed:      98e59dee-37cb-4cf4-96bb-47ab22e61c0d
Journal backup:           inode blocks

六、dumpe2fs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
dumpe2fs - dump ext2 /ext3/ext4  filesystem information     # 顯示文件系統超級塊信息和塊組描述符
 
SYNOPSIS
         dumpe2fs  [options]  DEVICE
            
     -h:查看超級塊信息,但不包括GDT(塊組描述表)
        
[root@soysauce ~] # dumpe2fs -h /dev/sdb1      # 查看超級塊信息,不顯示GDT
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          79d72bb3-9b67-45cd-8e77-2b37349db88c
Filesystem magic number:  0xEF53
Filesystem revision  #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default  mount  options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS  type :       Linux
Inode count:              131648
Block count:              526120
Reserved block count:     42089
Free blocks:              500671
Free inodes:              131637
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      128
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         7744
Inode blocks per group:   484
Filesystem created:       Mon Nov 23 20:24:17 2015
Last  mount  time :          n /a
Last write  time :          Mon Nov 23 20:26:43 2015
Mount count:              0
Maximum  mount  count:      22
Last checked:             Mon Nov 23 20:24:17 2015
Check interval:           15552000 (6 months)
Next check after:         Sat May 21 20:24:17 2016
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:              256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory  hash :   half_md4
Directory Hash Seed:      98e59dee-37cb-4cf4-96bb-47ab22e61c0d
Journal backup:           inode blocks
Journal features:         (none)
Journal size:             64M
Journal length:           16384
Journal sequence:         0x00000001
Journal start:            0

七、fsck

1
2
3
4
5
6
7
8
9
10
fsck  - check and repair a Linux  file  system     # 檢查並修復Linux文件系統
 
SYNOPSIS 
     -a:自動修復
     -t FSTYPE:指定文件系統類型,能夠不指,但必定不能指錯
 
[root@soysauce ~] # fsck /dev/sdb1        # 我這裏文件系統是clean狀態,因此沒有檢查
fsck  from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sdb1 : clean, 11 /131648  files, 25449 /526120  blocks

八、e2fsck

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
e2fsck - check a Linux ext2 /ext3/ext4  file  system     # 檢查並修復ext系列文件系統
 
SYNOPSIS
        e2fsck  [options]  DEVICE
 
     -f:強制檢查
     -p:自動修復
              
[root@soysauce ~] # e2fsck /dev/sdb1            
e2fsck 1.41.12 (17-May-2010)
/dev/sdb1 : clean, 11 /131648  files, 25449 /526120  blocks
[root@soysauce ~] # e2fsck  -f /dev/sdb1        # 強制檢查文件系統
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1 : 11 /131648  files (0.0% non-contiguous), 25449 /526120  blocks

九、mount

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
mount  mount  a filesystem         # 掛載文件系統
 
SYNOPSIS
             mount  [options] [-o options] DEVICE MOUNT_POINT 
                   
     -a:表示掛載 /etc/fstab 文件中定義的全部文件系統
     -n:默認狀況下, mount 命令每掛載一個設備,都會把掛載的設備信息保存至 /etc/mtab 文件;使用—n選項意味着掛載設備時,不把信息寫入此文件
     -t FSTYPE:指定正在掛載設備上的文件系統的類型;不使用此選項時, mount 會調用blkid命令獲取對應文件系統的類型
     -r:只讀掛載,掛載光盤時經常使用此選項
     -w:讀寫掛載
     -o:指定額外的掛載選項,也即指定文件系統啓用的屬性;
         remount:從新掛載當前文件系統
         ro:掛載爲只讀
         rw:讀寫掛載
         loop:掛載本地迴環設備
 
掛載:將新的文件系統關聯至當前根文件系統
卸載:將某文件系統與當前根文件系統的關聯關係預以移除
 
[root@soysauce ~] # mount          # 不帶任何參數的mount命令能夠顯示當前已掛載的文件系統
/dev/mapper/vg_centos6-lv_root  on /  type  ext4 (rw)
proc on  /proc  type  proc (rw)
sysfs on  /sys  type  sysfs (rw)
devpts on  /dev/pts  type  devpts (rw,gid=5,mode=620)
tmpfs on  /dev/shm  type  tmpfs (rw)
/dev/sda1  on  /boot  type  ext4 (rw)
none on  /proc/sys/fs/binfmt_misc  type  binfmt_misc (rw)
[root@soysauce ~] # mount -o ro /dev/sdb1 /mnt/    # 以只讀方式掛載
[root@soysauce ~] # echo "hello" >> /mnt/a.txt
- bash /mnt/a .txt: Read-only  file  system            # 不能寫文件
[root@soysauce ~] # mount -o remount,rw  /mnt/       # 以可讀寫方式從新掛載
[root@soysauce ~] # echo "hello" >> /mnt/a.txt        
[root@soysauce ~] # cd /mnt/
[root@soysauce mnt] # ls
a.txt  lost+found
[root@soysauce mnt] # cat a.txt            # 寫入成功
hello
[root@soysauce ~] # cat /etc/fstab
LABEL=/ / ext3 defaults,barrier=0 1 1
tmpfs                    /dev/shm                 tmpfs   defaults        0 0
devpts                   /dev/pts                 devpts  gid=5,mode=620  0 0
sysfs                    /sys                     sysfs   defaults        0 0
proc                     /proc                    proc    defaults        0 0
要掛載的設備      掛載點      文件系統類型     掛載選項     轉儲頻率(每多少天作一次徹底備份)     文件系統檢測次序(只有根能夠爲1)

十、fuser

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
fuser - identify processes using files or sockets     # 報告進程使用的文件或是網絡套接字
 
SYNOPSIS
        fuser  [options]  DEVICE
        
     - v :查看某文件上正在運行的進程
     -k:殺死正在訪問某文件的進程
     -m:顯示訪問掛載點的進程
 
[root@soysauce ~] # mount /dev/sdb1 /mnt/    # 掛載/dev/sdb1至/mnt目錄下
[root@soysauce ~] # cd /mnt/                # 切換進/mnt目錄
[root@soysauce mnt] # umount /mnt/        # 此時我就站在/mnt目錄下,卸載確定卸不掉
umount /mnt : device is busy.
         (In some cases useful info about processes that use
          the device is found by  lsof (8) or fuser(1))
[root@soysauce mnt] # fuser -km /mnt/      # 強行結束正在訪問/mnt掛載點的進程,而後直接把我踢下線了...
/mnt/ :                1860c
 
Connection closed by foreign host.
 
Disconnected from remote host(CentOS6.5) at 22:20:33.
 
Type `help' to learn how to use Xshell prompt. 

十一、free

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
free  - Display amount of  free  and used memory  in  the system     # 顯示系統中已用的和未用的內存總和
 
SYNOPSIS
        free  [-b | -k | -m] [-o] [-s delay ] [-t] [-l] [-V]
 
         -m:以M爲單位來顯示
 
[root@soysauce ~] # free -m
              total       used        free      shared    buffers     cached
Mem:           988        176        812          0         67         37
-/+ buffers /cache :         71        917    
Swap:         1983          0       1983        
第一行:內存總大小、已使用空間大小、剩餘空間大小、共享內存、緩衝數據大小、緩存數據大小
第二行:UsedMem-(buffers+cached)爲真實使用空間、FreeMem+(buffers+cached)爲真實剩餘空間
第三行:總交換分區大小、已使用交換分區大小、剩餘交換分區大小

十二、du

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
du  - estimate  file  space usage         # 報告磁盤空間使用狀況
 
SYNOPSIS
        du  [OPTION]... [FILE]...
        du  [OPTION]... --files0-from=F
 
     -s:僅顯示總計,只列出最後加總的值
     -h:作單位換算的
 
[root@soysauce ~] # du -sh /root/        # 統計總大小
1.3M    /root/    
[root@soysauce ~] # du -h /root/         # 統計目錄下每單個文件大小
4.0K    /root/ .pki /nssdb
8.0K    /root/ .pki
4.0K    /root/ .ansible /cp
8.0K    /root/ .ansible
8.0K    /root/test
36K /root/ .vim /syntax
48K /root/ .vim
20K /root/ . ssh
136K    /root/scripts
1.3M    /root/

1三、df

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
df  - report  file  system disk space usage         # 報告文件系統磁盤空間的使用狀況
 
SYNOPSIS
        df  [OPTION]... [FILE]...
        
     -a:查看全部的文件系統
     -h:作單位換算
     -i:顯示inode使用狀況
     -P:以POSIX風格顯示
     -T:顯示文件系統類型
 
[root@soysauce ~] # df -ihT            # 顯示Inode使用狀況
Filesystem                     Type  Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg_centos6-lv_root  ext4    1.1M   40K  1.1M    4% /
tmpfs                          tmpfs   124K     1  124K    1%  /dev/shm
/dev/sda1                       ext4    126K    38  125K    1%  /boot
/dev/sdb1                       ext3    129K    12  129K    1%  /mnt
[root@soysauce ~] # df -hT            # 顯示磁盤空間使用狀況
Filesystem                     Type   Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos6-lv_root  ext4    18G  2.3G   15G  14% /
tmpfs                          tmpfs  495M     0  495M   0%  /dev/shm
/dev/sda1                       ext4   485M   33M  427M   8%  /boot
/dev/sdb1                       ext3   2.0G   68M  1.8G   4%  /mnt

1四、dd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
dd  - convert and copy a  file         # 複製文件並對原文件進行轉化和格式化處理
 
SYNOPSIS
        dd  [OPERAND]...
        dd  OPTION
 
     if =數據來源
     of=數據存儲目錄
     bs= #:指定塊大小,單位默認爲字節,也能夠指定M、G等
     count= #:指定讀取的塊數
     seek= #:建立數據文件時,跳過的空間大小
 
[root@soysauce ~] # dd if=/dev/sda of=/root/mbr.back bs=512 count=1    # 備份mbr
1+0 records  in
1+0 records out
512 bytes (512 B) copied, 0.000675345 s, 758 kB /s
[root@soysauce ~] # dd if=/dev/zero of=/root/zerofile bs=1M count=1 seek=1023    # 跳過前面1023M,建立一個假的1G文件
1+0 records  in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00649022 s, 162 MB /s
[root@soysauce ~] # ll -h /root/zerofile     # ls看到的是假的1G
-rw-r--r-- 1 root root 1.0G Nov 24 11:07  /root/zerofile
[root@soysauce ~] # du -sh /root/zerofile     # du看到的是真實的大小,爲1M
1.0M    /root/zerofile

1五、mknod

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mknod  make  block or character special files         # 建立塊設備文件或字符設備文件
 
SYNOPSIS
        mknod  [OPTION]... NAME TYPE [MAJOR MINOR]
 
     -m:設置權限
     -Z:設置安全的上下文
         
[root@soysauce ~] # mknod /dev/mydev b 65 0        # 建立一個主設備號爲65 次設備號爲0的塊設備文件
[root@soysauce ~] # ll /dev/mydev 
brw-r--r-- 1 root root 65, 0 Nov 24 11:34  /dev/mydev
[root@soysauce ~] # mknod -m 600 /dev/mysdev b 65 1    # -m指定權限爲600
[root@soysauce ~] # ll /dev/mysdev 
brw------- 1 root root 65, 1 Nov 24 11:36  /dev/mysdev




本文出自 「Hello,Linux」 博客,請務必保留此出處http://soysauce93.blog.51cto.com/7589461/1715655

相關文章
相關標籤/搜索