談到如何建立檔案系統,在這裡就不得不提一下什麼是檔案系統,在百度上搜尋得到的定義是這樣的:作業系統中負責管理和存儲檔案資訊的軟體機構稱為檔案管理系統,簡稱檔案系統,簡單的看這個概念可能感覺還是有點茫茫然,其實簡單的說,就是定義磁盤存取資料的一種邏輯組織,我們都知道磁盤是一種存儲資料的硬體,首先但這個硬體的工作當然不是無序的,他首先得遵循一定的規則,而檔案系統就是給磁盤存取檔案系統定義規則的。
是以,檔案系統是建立在磁盤上的,如此一來,我們就應該聊聊磁盤的結構了,磁盤大緻可分為,旋轉馬達,磁盤片,固定連杆及磁頭,磁頭劃過盤片的一周稱作為磁道(track),而在每個磁道按512Byte劃分若幹個相同的等分即是扇區(sector)。為了我提高磁盤的工作效率,我們通常會在多個盤面上同時存取,是以在多個盤片面上都分别有磁頭,連杆統一移動磁頭在多個盤面上停留在不同的盤面相同的磁道上,多個盤面的磁道組成的至上而下平面乃稱之為柱面(sylinder),相關概念原理可以參照下面一張圖檔
為了更好的更安全的管理磁盤資料,我們通常會對磁盤按柱面進行分區,我們知道越靠盤片外的柱面磁頭劃過的時間消耗便越長,讀取的速度就會越低,是以在我們windows機器上的靠後的分區會感覺到相比C槽慢一些,在這裡還得說明一點,在磁盤上的0磁道0扇區的512Byte是儲存MBR(master boot record)的,在mbr裡446Byte是存放bootloader的,64Byte存放分區表資訊,每16Byte辨別一個分區,是以理論上我們的磁盤分區最多隻能四個,而為了适應多場景,業務的需求必須多使用分區時,通常在第4塊分區中引入擴充分區,在擴充分區中來添加更多的分區突破這個限制,剩下的2Byte用來辨別magic number。
建立檔案系統并且能夠使用可分為三步:
1.首先給硬碟分區
在分區前先要介紹下相關硬碟按接口可以分成幾個類型:
并口:個人pc一般是IDE的為主,速率大緻是133M/s
企業級SCSI,速率是640M/s
序列槽: SATA:6Gbps
SAS:6Gbps
USB:480MB/s
在centos5,除了IDE接口的硬碟上裝置顯示是/dev/hd*以外,SCSI,SATA,SAS,USB都 是/dev/sd*,但是在centos6以上的版本中,都是/dev/sd*。 我們使用的分區管理工具 主要有fdisk, parted, sfdisk,主流還是使用fdisk,但是fdisk最多隻能分區15個, 具體指令參數如下:
fdisk device
p: print, 顯示已有分區;
n: new, 建立一個新的分區
d: delete, 删除一個已經存在的分區
w: write, 建立好的分區寫入磁盤并退出
q: quit, 放棄建立好的分區并直接退出
m: 擷取幫助
l: 清單所分區id
t: 調整分區id
eg:在我的虛拟機上建立分區
1.首先檢視一下我的機器上的分區情況,使用fdisk -l
可以看的出來,我隻使用了3個分區,還有一個分區可使用的,但是總容量卻不夠使用了,是以我得先在虛拟機上加一塊硬碟 ,看箭頭訓示的另外一個多出來的磁盤如下圖
接下來我們來進行分區
這個是我整個建立一個500M的,類型為Linux的主分區,大緻過程就是這樣,然後檢視核心是否識别到我新建立的分區,可以cat /proc/partitions,一般分區完成且儲存退出之後,要執行partx -a /dev/sdb同步到核心當中去
2.初始化檔案系統
首先還是先了解檔案系統都有哪些
linux的檔案系統:ext2,ext3,ext4,vfat,xfs,btrfs,reiserfs,jfs,swap(交換分區)
windows:fat32,ntfs
網絡檔案系統:NFS,CIFS(windows網路上的芳鄰)
叢集檔案系統:GFS2, OCFS2
分布式檔案系統:ceph,moosefs, mogilefs, GlusterFS, Lustre
我們在建立檔案系統的時候必須滿足兩個條件,1.在核心子產品中得有我們需要的類型檔案系統,否則還得安裝子產品,2,在使用者空間得有建立檔案系統支援的工具,如:mkfs.ext4,mkfs.xfs,mkfs.vfat等等。我們來試着用之前已經建好的分區來初始化檔案系統
至此檔案系統初始化完成了,注意mkfs.ext4這個“.”也可以換成 “-t” ,如mkfs -t ext4,在老的版本中的centos,建立檔案系統會使用這個指令mke2fs,它是ext系列檔案系統的專用工具,具體使用如下:
mke2fs:ext系列檔案系統專用管理工具
-t {ext2|ext3|ext4}指定哪種類型的檔案系統
-b {1024|2048|4096} 指定塊大小
-L 'LABEL'設定卷标
-j: 相當于 -t ext3,檔案系統增加日志
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i #: 為資料空間中每多少個位元組建立一個inode;此大小不應該小于block的大小;
-N #:為資料空間建立個多少個inode;
-m #: 為管理人員預留的空間占據的百分比;預設是5%
-O FEATURE[,...]:啟用指定特性
-O ^FEATURE:關閉指定特性
我們也來看看使用mke2fs建立檔案系統的效果
1.首先還是建立分區/dev/sdb2
2.建立完成後使用mke2fs建立檔案系統
在上圖中,我建立了個卷标為mydata且不帶日志的檔案系統,如果我想更新為帶日志的檔案系統ext3,這裡也要介紹下更改檔案系統相關屬性的指令tune2fs
tune2fs:重新設定ext系列檔案系統可調整參數的值
-l:檢視指定檔案系統超級塊資訊;super block
-L 'LABEL':修改卷标
-m #:修預留給管理者的空間百分比
-j: 将ext2更新為ext3
-O: 檔案系統屬性啟用或禁用
-o: 調整檔案系統的預設挂載選項
-U UUID: 修改UUID号;
将檔案系統修改為ext3,參照上面的指令參數直接敲入tune2fs -j /dev/sdb2,如圖
3.挂載檔案系統