在探討磁盤與文件系統管理前,咱們先簡單瞭解下磁盤結構:1)盤片,即記錄數據的部分,數量與磁頭數相同;2)磁頭, 讀寫盤片上的數據;3)主軸馬達,帶動盤片旋轉,家用級轉速在5400rpm-7200rpm,企業級可達15000rpm;4)扇區,最小的物理存儲單元,大小爲512字節;5)磁道,磁盤旋轉時,磁頭若保持在一個位置上,則每一個磁頭都會在磁盤表面劃出一個圓形軌跡,這些圓形軌跡就叫作磁道(Track);6)柱面,由不一樣盤片的面,但處於同一半徑圓的多個磁道組成的一個圓柱面(Cylinder)。node
接下來是磁盤分區,所謂磁盤分區,就是標定數據塊兒(blocks)的起止範圍,以便操做系統快速對塊兒內文件數據進行/讀/寫/查等操做。分區的好處是:優化I/O性能、實現磁盤空間配額限制、提升修復速度、隔離系統和程序、安裝多個OS、採用不一樣文件系統等。經常使用的分區命令爲fdisk:數據庫
-l /dev/sdX 查看指定塊設備的分區信息
/dev/sdX 對指定硬盤修改分區
m: 幫助
o: 建立msdos分區label
n: 建立新的分區
d: 刪除分區
p: 查看當前分區表
a: 添加/取消 啓動標記
t: 轉換分區類型ID
l/L: 顯示分區類型ID表vim
注意,操做系統所在的硬盤進行分區操做後須要通知內核重讀分區表信息,centos5/7:partprobe /dev/sdX;centos6:partx -a /dev/sdX(新增分區)/partx -d --nr N /dev/sdX (刪除分區)centos
分區完成後須要進行格式化(format)操做,之因此格式化,是由於每種操做系統所設置的文件屬性/權限不一樣,爲了存放這些文件所需的數據,須要格式化分區。在傳統的磁盤與文件系統應用中,一個分區只能被格式化爲一個文件系統,所以可認爲一個文件系統就是一個分區。 但隨着新技術如LVM的發展,多個分區能夠合成一個文件系統,咱們稱呼一個可被掛載的數據爲一個文件系統,而不是一個分區。文件系統格式化命令爲mkfs網絡
mkfs.ext4/xfs /dev/sdX併發
格式化分區後可在命令行直接敲blkid命令查看全部文件系統名/文件系統類型;在ext系統下可用tune2fs命令查看及修改文件系統app
tune2fs -l /dev/sdX 列出指定文件系統的詳細信息,信息來源於超級塊(superblock)異步
-L 設置label(卷標)async
-m 設置預留百分比性能
-o acl/ ^acl開啓或關閉文件系統ACL功能(盡在centos6中會用到此命令)
接着咱們討論掛載(mount)。在Linux系統中,一切皆文件,mount命令博大精深。每一個文件系統都有獨立的inode、block、superblock等信息,這個文件系統要可以連接到目錄樹,才能被使用。將文件系統與目錄樹結合的操做咱們稱爲掛載。掛載點必須是目錄,並且是空目錄。若將文件系統掛載到非空目錄下,會暫時隱藏性覆蓋該目錄下的全部文件。以下圖所示,若執行mount /dev/sda6 /命令,會致使整個系統崩潰,只能經過手動按電源按鈕重啓!好在系統作了保護,上述命令無效!
mount:
-a 依照配置文件/etc/fstab中的數據對未被掛載的文件系統進行掛載;
-l 讀/etc/mtab,顯示當前掛載信息;
-n 強制不寫入/etc/mtab,單用戶維護模式經常使用,此時df或mount命令沒法查看新增掛載信息,但可讀/proc/mounts文件獲取;
-L 指定卷標進行掛載;
-o 後接掛載的額外參數,好比帳號、密碼、讀寫權限等
ro,rw 掛載文件系統成爲只讀,讀寫模式 default--rw
async,sync 此文件系統是否使用同步寫入(sync)或異步(async)的內存機制,default--async
auto,noauto 容許/禁止分區以mount -a方式(auto)掛載,default--auto
dev,nodev 是否容許此分區上可建立設備文件,default--dev
suid,nosuid 是否容許此分區含有suid/sgid文件格式,default--suid
exec,noexec 是否容許此分區擁有binary文件,default--exec
user,nouser 是否容許普通用戶執行mount命令,默認只有root能夠mount,添加user參數後,普通用戶也能mount
defaults 默認全部默認值
remount 不卸載的狀況下,可直接更新掛載選項
acl,noacl (centos6)開啓或關閉acl功能,default--noacl
umount:卸載設備文件
-f 強制卸載,可用於NFS(網絡文件系統沒法讀到的狀況)
-n 不更新/etc/mtab
注意,當掛載點被佔用(進入掛載點或者被某個進程佔用)時,須要離開文件系統掛載點或者用命令fuser殺死進程後再作umount
fuser 掛載點 查看在指定掛載點上運行的程序,顯示其進程號
-v 詳細查看
-m 遞歸,如不加m,只查看掛載點自身,不查看子目錄
-k 殺死
fuser一般搭配選項 -vmk
以上對磁盤管理的內容進行了簡單介紹,下面咱們討論Linux文件系統高級管理第一部分:Quota(磁盤配額)。簡而言之,Quota就是對通常用戶進行的限制文件系統使用空間的技術,常如下列3種方式實現
1>限制某一用戶的最大磁盤配額(使用用戶限制)
2>限制某一用戶組可使用的最大磁盤配額(使用用戶附加組限制,常配合sgid命令進行)
3>以link方式使郵件可做爲限制的配額(更改/var/spool/mail路徑)
須要注意的是,quota針對整個文件系統進行限制,例如你的/dev/sda3 掛載在/home下,/home下全部的目錄都會受到限制,具體設置分如下幾個部分
1.限制容量或者文件數量(block或inode)
2.soft/hard(軟限制和硬限制)一般硬限制值略高於軟限制。當用戶可支配額磁盤配額超出軟限制但低於硬限制時,系統啓動寬限期倒計時併發出警告,直到用戶清理數據至soft值如下。若用戶在寬限期未進行任何操做,硬限制值將回落到軟限制值,此時用戶的使用權會被鎖定而沒法新增文件。
ext系列文件系統的quota
1>預配置quota(ext、xfs)(下列操做將會在下次開機後仍然生效)
vim /etc/fstab,在須要開啓quota的文件系統的掛載選項的defaults後加usrquota,grpquota以下
/dev/sda5 /app ext4 defaults,usrquota,grpquota 1 0
2>對指定文件系統生成quota數據庫
quotacheck -cugm /app/
3>開啓指定文件系統quota
quotaon /app
在命令行模式下,quota -v 顯示當前用戶本身的quota限額。root身份下,quota -v username用於顯示指定用戶的quota限額,repquota -v /app 顯示指定掛載點全部用戶的quota限額
4>設置普通用戶quota
edquota -u/g username/groupname -u選項指定user,-g指定group
edquota -p usr1 usr2 將usr1的quota設置複製給usr2
xfs文件系統的quota
1>參考ext系列預配置quota
2>直接配置quota選項
xfs_quota -x -c "print" 查看當前系統中全部的xfs文件系統哪些開啓了quota
xfs_quota -x -c "report -ugibh" 查看quota設置
-u 查看用戶的quota設置
-g 查看組的quota設置
-i 查看inode的quota限制
-b 查看block的quota限制 (默認)
-h human-readable
xfs_quota -x -c "state" /app 查看quota狀態,顯示grace time時間
對用戶設置quota
xfs_quota -x -c "limit -u bsoft=30M bhard=40M user1" /app
對用戶組設置quota
xfs_quota -x -c "limit -g bsoft=80M bhard=200M group1" /app
最後,咱們討論Linux文件系統高級管理第二部分:LVM(邏輯卷管理器),旨在以在線方式彈性調整文件系統容量!並不是在性能與數據保全方面。LVM能夠整合多個物理分區在一塊兒,讓這些分區看起來像一個磁盤同樣,並且這個磁盤容量可變!實現過程大體爲:物理磁盤或分區(未掛載的)-->PV(LVM的物理卷)-->VG(LVM的卷用戶組)-->LV(邏輯卷),具體以下
1.分區或增長新的硬盤
若是是分區,注意用fdisk命令的-t選項將系統標識符改成8e
2.建立物理卷PV
pvscan,查詢系統上有無PV
pvcreate /dev/sdaX
pvdisplay顯示PV狀態
3.建立用戶卷組VG
vgcreate [-s xM](指定PE大小,默認4M)vgname /dev/sdX
vgscan
vgdisplay [vgname]
4.建立邏輯卷
lvcreate -L xM/G -n lvname vgname
lvscan
lvdisplay [/dev/vgname/lvname]
卸載LVM
1.umount /mnt/lvm
2.lvremove /dev/vgname/lvname
3.vgremove vgmage
4.pvremove /dev/sdX