談到如何創建文件系統,在這里就不得不提一下什么是文件系統,在百度上搜索得到的定義是這樣的:操作系統中負責管理和存儲文件信息的軟件機構稱為文件管理系統,簡稱文件系統,簡單的看這個概念可能感覺還是有點茫茫然,其實簡單的說,就是定義磁盤存取數據的一種邏輯組織,我們都知道磁盤是一種存儲數據的硬件,首先但這個硬件的工作當然不是無序的,他首先得遵循一定的規則,而文件系統就是給磁盤存取文件系統定義規則的。
因此,文件系統是建立在磁盤上的,如此一來,我們就應該聊聊磁盤的結構了,磁盤大致可分為,旋轉馬達,磁盤片,固定連桿及磁頭,磁頭劃過盤片的一周稱作為磁道(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.掛載文件系統
注:以上內容純代表個人的理解,歡迎指正,謝謝
原創文章,作者:東里西里,如若轉載,請注明出處:http://www.www58058.com/11174