對于一塊磁盤,如果我們想要使用的話,需要對磁盤進行分區并建立文件系統。下面,我們就了解一下Linux中的磁盤與文件系統管理
一、MBR
硬盤的0扇區為MBR扇區,其由以下幾部分組成:
l 主引導程序(偏移地址0000H–0088H),它負責從活動分區中裝載,并運行系統引導程序。
l 出錯信息數據區,偏移地址0089H–00E1H為出錯信息,00E2H–01BDH全為0字節。
l 分區表(DPT,Disk Partition Table)含4個分區項,偏移地址01BEH–01FDH,每個分區表項長16個字節,共64字節為分區項1、分區項2、分區項3、分區項4。
l 結束標志字,偏移地址01FE–01FF的2個字節值為結束標志55AA,如果該標志錯誤系統就不能啟動。
分區表項目占16字節,其各字節含義如下
因此,機械硬盤的整體結構如下如所示:
二、GPT
MBR由于存儲分區字節的限制,其支持的最大主分區數為4。隨著磁盤空間的增大,分區數量的增加,又有了GPT形式的硬盤。
GPT磁盤分區結構解決了MBR只能分4個主分區的的缺點,理論上說,GPT磁盤分區結構對分區的數量好像是沒有限制的。但某些操作系統可能會對此有限制。
GPT磁盤分區結構由6部分組成,如下圖:
GPT頭位于GPT磁盤的第二個磁盤,也就是1號扇區,該扇區是在創建GPT磁盤時生成,GPT頭會定義分區表的起始位置,分區表的結束位置、每個分區表項的大小、分區表項的個數及分區表的校驗和等信息。
分區表位于GPT磁盤的2-33號磁盤,一共占用32個扇區,能夠容納128個分區表項。每個分區表項大小為128字節。因為每個分區表項管理一共分區,所以Windows系統允許GPT磁盤創建128個分區。
每個分區表項中記錄著分區的起始,結束地址,分區類型的GUID,分區的名字,分區屬性和分區GUID。
三、磁盤分區
了解了磁盤的引導結構后,下面來看一下如何對磁盤進行分區:
1、fdisk
fdisk用于創建MBR分區,也支持GPT分區,對于一塊硬盤,最多只能管理15個分區且無法處理大于2TB以上的磁盤分區
fdisk [options] device
-l:輸出后面接的設備所有的分區內容。若僅有fdisk -l時,則系統將會把整個系統內能夠找到的設備的分區均列出來
Fdisk為交互式命令,其進入命令后的常用選項如下:
d delete a partition
刪除一個分區(若刪除擴展分區,則其衍生出來的邏輯分區也會被刪除)
n add a new partition
新增一個分區
p print the partition table
在屏幕上顯示分區表
q quit without saving changes
不存儲,離開fdisk程序
t change a partition's system id
更改分區類型
w write table to disk and exit
將操作寫入分區表并退出
在分區完成后,我們一般需要通知內核重讀分區信息。這是就需要用到partx命令了。
對于新增分區,我們使用的命令為:partx -a -n M:N /dev/DEVICE
對于刪除分區,我們使用的命令為:partx-d -n M:N /dev/DEVICE
同樣的,在Linux中也有非交互式的分區工具為parted。其用法如下:
parted [options] [device [command [options…]…]]
-l,–list:顯示所有的塊設備并列出分區
[device]:對給定的設備進行操作,若未給出,則對命令所找到的第一個設備進行操作;
[command [options]]:
mklabel label-type:創建一個新的磁盤類型,如gpt、msdoc、mac等;
mkpart part-type [fs-type] start end:創建一個指定類型(primary,logical,extended)分區,由指定的大小(start)開始,到指定大小end為止(默認以M為單位);
print:顯示分區表
rm partition:刪除分區
四、文件系統
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。
我們常見的文件系統有以下一些:
Linux文件系統: ext2, ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
swap: 交換分區
光盤:iso9660
Windows:fat32, ntfs
Unix: FFS(fast), UFS(unix), JFS2
網絡文件系統:NFS, CIFS
集群文件系統:GFS2, OCFS2(oracle)
分布式文件系統:ceph, moosefs, mogilefs, glusterfs, Lustre
RAW:未經處理或者未經格式化產生的文件系統
Linux的虛擬文件系統:VFS
在Linux中,我們主要通過以下一些命令來創建文件系統:
mkfs – build a Linux filesystem??創建一個Linux文件系統
通過指定文件系統,調用相應文件系統的創建命令來創建文件系統
mkfs [options] [-t type] [fs-options] device [size]
注:size參數的單位是塊;若使用mkfs創建ext類型的文件系統時(如mkfs.ext4),其可使用mke2fs的選項
-t, –type type:指定要創建的文件系統的類型,若未指定,則使用默認的文件系統類型(當前為ext2)
-L:指定卷標
此外,還有專門創建ext系列文件系統的命令:
Mke2fs [options] device
-t {ext2|ext3|ext4}:指定要創建的文件系統的類型,若此項未指定,則默認創建/etc/mke2fs.conf文件中指定的默認類型
-b {1024|2048|4096}:指定要創建的文件系統的塊的大小
-L "LABEL":指定卷標
-j:創建帶日志功能的文件系統,相當于-t ext3(ext3與ext2文件系統的區別在于增加了日志功能)
mkfs.ext3 = mkfs-t ext3 = mke2fs -j = mke2fs -t ext3
-i #:為數據空間中每多少個字節創建一個inode;此大小不應該小于block的大小
-N #:為數據空間創建個多少個inode
-I inode-size:指定一個inode的所占空間大小,其值應為128byte的整數倍,一般為128byte或256byte;
-m #:指定為管理人員預留空間占總空間的百分比,默認5%;
-c:在創建文件系統之前檢查磁盤錯誤,僅下達 一次-c時,會進行快速讀取測試;如果下達兩次-c -c時,會測試讀寫
-O FEATURE[,…]:啟用指定特性
-O ^FEATURE:關閉指定特性
-F:強制創建文件系統;如果指定的設備不合法,需指定一次-F選項;如果對掛載中或正在使用中的設備前置創建文件系統,則需指定兩次選項-F -F;
-g blocks-per-group:后面跟數字,指定每個塊組中包含的block數量;默認為32768;
一般情況下,我們通常用設備文件來指明設備,但在一些特殊情況下,設備文件與設備的對應關系,會發生改變。因此,在配置文件中最好使用設備的UUID或label來指明相應的設備。查看這些相應屬性的命令為:
Blkid [options] device
blkid:不加任何選項時顯示系統上磁盤個分區的相關信息
-U UUID:根據指定的UUID來查找對應的設備
-L LABLE:根據指定的LABLE來查找對應的設備
-k:顯示支持的文件系統與RAID格式
-t NAME=value:顯示NAME的值為value的設備,NAME可以為:TYPE,LABLE,UUID
同樣的,我們也可以使用一些命令來修改磁盤的一些屬性信息。
tune2fs [options] device
-l:查看指定文件系統超級塊信息;super block
-L LABEL:修改卷標
-m #:修預留給管理員的空間百分比
-j:添加日志功能,將ext2升級為ext3
-O: 文件系統屬性啟用或禁用;如:
–O ^has_journal:禁用日志
–O has_journal:啟用日志
-o: 調整文件系統的默認掛載選項;如:
–o ^acl:禁用acl權限
–o acl:啟用acl權限
-U UUID: 修改UUID號
五、掛載
在分區并格式化完成之后,若要使用磁盤,我們還需要掛載才能使用。掛載命令及選項如下:
Mount [options] device mount_point
device:指明要掛載的設備,可使用以下幾種方式指定
(1) 設備文件:例如/dev/sda5
(2) 卷標:-L 'LABEL', 例如-L 'MYDATA'
(3) UUID, -U 'UUID':例如-U '0c50523c-43f1-45e7-85c0-a126711d406e'
(4) 偽文件系統名稱:proc, sysfs, devtmpfs, configfs
dir:掛載點,需要事先存在并建議使用空目錄
-t, –types vfstype:指定要掛載的設備上的文件系統類型
-r, –read-only:只讀掛載
-w, –rw, –read-write:讀寫掛載
-n, –no-mtab:不更新/etc/mtab,在/etc為只讀時比較有用;相當于#mount;
-a, –all:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能);掛載所有記錄在/etc/fstab文件中的設備;若記錄在/etc/fstab文件中的設備已掛載,則不會再再次掛載。
-l:只輸入mount會顯示目前的掛載信息,加上-l可增列Label名稱
-L, –label label:以卷標指定要掛載的設備
-U, –uuid uuid:以UUID指定要掛載的設備
-B, –bind:掛載目錄到另一個目錄上;卸載時必須要用掛載點來卸載
?
[-o option[,option]…]:掛載文件系統的選項,多個選項使用逗號分隔
async:異步寫入模式
sync:同步模式,內存更改時,同時寫磁盤
atime:文件(包含目錄與文件)的訪問時間戳更新由內核默認配置控制
noatime:不更新文件(包含目錄與文件)的訪問時間戳
diratime/:允許更新目錄的訪問時間戳
nodiratime:不更新目錄的訪問時間戳
auto/noauto:是否支持自動掛載,是否支持-a選項
exec/noexec:是否支持將文件系統上運行應用程序
dev/nodev:是否支持在此文件系統上使用設備文件
suid/nosuid:是否支持suid和sgid權限
remount:重新掛載
ro:只讀
rw:讀寫
user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載
acl:啟用此文件系統上的acl功能
defaults:默認配置,相當于rw, suid, dev, exec, auto, nouser, async
同樣,假如我們想要卸載某個設備,我們就可以使用以下命令:
umount [options] device|mount_point
-f:強制卸載;可用在類似網絡文件系統(NTFS)無法讀取到的情況下
-n:不更新/etc/mtab的情況下卸載
六、自動掛載
在系統中,我們通常需要一些磁盤能夠開機自動掛載,這時,我們就需要在配置文件/etc/fstab文件進行配置。下面我們來看一下此配置文件中的內容。
/etc/fstab每行定義一個要掛載的文件系統;其每一列都具有特定的含義;
UUID=90c32584-2c52-4f9e-acf4-b9766aa3d1be / xfs defaults 0 0
1、要掛載的設備或偽文件系統
設備文件、LABEL(LABEL="")、UUID(UUID="")、偽文件系統名稱(proc, sysfs)
2、掛載點
3、文件系統類型
4、掛載選項:即mount命令中掛載文件系統的選項
5、轉儲頻率
0:不做備份
1:每天轉儲
2:每隔一天轉儲
6、自檢次序
0:不自檢;
1:首先自檢;
一般只有rootfs才用1;數字表示自檢時的順序;
原創文章,作者:luoliumeng,如若轉載,請注明出處:http://www.www58058.com/41472
文章對各命令的作用,用法和常用選項總結的很完整,建議能多一些操作,嘗試著靈活運用這些工具來實現,分區的創建與格式化并掛載使用。多動手才能明白自己的不足哦。