Linux磁盤與文件系統管理

對于一塊磁盤,如果我們想要使用的話,需要對磁盤進行分區并建立文件系統。下面,我們就了解一下Linux中的磁盤與文件系統管理


一、MBR

硬盤的0扇區為MBR扇區,其由以下幾部分組成:

主引導程序(偏移地址0000H–0088H),它負責從活動分區中裝載,并運行系統引導程序。

出錯信息數據區,偏移地址0089H–00E1H為出錯信息,00E2H–01BDH全為0字節。

分區表(DPT,Disk Partition Table)含4個分區項,偏移地址01BEH–01FDH,每個分區表項長16個字節,共64字節為分區項1、分區項2、分區項3、分區項4。

結束標志字,偏移地址01FE–01FF2個字節值為結束標志55AA,如果該標志錯誤系統就不能啟動。

分區表項目占16字節,其各字節含義如下

MBR分區表結構.PNG

因此,機械硬盤的整體結構如下如所示:

blob.png

 

二、GPT

MBR由于存儲分區字節的限制,其支持的最大主分區數為4。隨著磁盤空間的增大,分區數量的增加,又有了GPT形式的硬盤。

GPT磁盤分區結構解決了MBR只能分4個主分區的的缺點,理論上說,GPT磁盤分區結構對分區的數量好像是沒有限制的。但某些操作系統可能會對此有限制。

GPT磁盤分區結構由6部分組成,如下圖:

GPT結構.PNG

GPT頭位于GPT磁盤的第二個磁盤,也就是1號扇區,該扇區是在創建GPT磁盤時生成,GPT頭會定義分區表的起始位置,分區表的結束位置、每個分區表項的大小、分區表項的個數及分區表的校驗和等信息。

分區表位于GPT磁盤的2-33號磁盤,一共占用32個扇區,能夠容納128個分區表項。每個分區表項大小為128字節。因為每個分區表項管理一共分區,所以Windows系統允許GPT磁盤創建128個分區。

每個分區表項中記錄著分區的起始,結束地址,分區類型的GUID,分區的名字,分區屬性和分區GUID。

 

三、磁盤分區

了解了磁盤的引導結構后,下面來看一下如何對磁盤進行分區:

1fdisk

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、msdocmac等;

mkpart part-type [fs-type] start end:創建一個指定類型(primary,logical,extended)分區,由指定的大小(start)開始,到指定大小end為止(默認以M為單位);

print:顯示分區表

rm partition:刪除分區

 

四、文件系統

文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。

我們常見的文件系統有以下一些:

Linux文件系統: ext2, ext3, ext4, xfsSGI, btrfsOracle, reiserfs, jfsAIX, swap

swap: 交換分區

光盤:iso9660

Windowsfat32, ntfs

Unix: FFSfast, UFSunix, JFS2

網絡文件系統:NFS, CIFS

集群文件系統:GFS2, OCFS2oracle

分布式文件系統: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 ext3ext3ext2文件系統的區別在于增加了日志功能)

mkfs.ext3 = mkfs-t ext3 = mke2fs -j = mke2fs -t ext3

-i #:為數據空間中每多少個字節創建一個inode;此大小不應該小于block的大小

-N #:為數據空間創建個多少個inode

-I inode-size:指定一個inode的所占空間大小,其值應為128byte的整數倍,一般為128byte256byte

-m #:指定為管理人員預留空間占總空間的百分比,默認5%;

-c:在創建文件系統之前檢查磁盤錯誤,僅下達 一次-c時,會進行快速讀取測試;如果下達兩次-c -c時,會測試讀寫

-O FEATURE[,…]:啟用指定特性

-O ^FEATURE:關閉指定特性

-F:強制創建文件系統;如果指定的設備不合法,需指定一次-F選項;如果對掛載中或正在使用中的設備前置創建文件系統,則需指定兩次選項-F -F

-g blocks-per-group:后面跟數字,指定每個塊組中包含的block數量;默認為32768;

一般情況下,我們通常用設備文件來指明設備,但在一些特殊情況下,設備文件與設備的對應關系,會發生改變。因此,在配置文件中最好使用設備的UUIDlabel來指明相應的設備。查看這些相應屬性的命令為:

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:是否支持suidsgid權限

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

(0)
luoliumengluoliumeng
上一篇 2016-08-28
下一篇 2016-08-29

相關推薦

  • 壓縮、解壓縮及歸檔工具

    壓縮、解壓縮及歸檔工具 縮文件的基本原理是查找文件內的重復字節,并建立一個相同字節的"詞典"文件,并用一個代碼表示,比如在文件里有幾處有一個相同的詞"中華人民共和國"用一個代碼表示并寫入"詞典"文件,這樣就可以達到縮小文件的目的。         &#8212…

    Linux干貨 2016-08-18
  • N26-第一周

    博客注冊地址查看

    Linux干貨 2017-01-03
  • 編譯httpd2.4.10踩坑記

    作者【Jev Tse】【版權所有】  系統環境:centos6.8     【本文概覽】     零、httpd2.4.10編譯總結         1、基礎環境         2、依賴包組   &…

    Linux干貨 2016-11-29
  • 關于 文本處理工具、正則表達式、grep 的簡單舉例

                              文本處理工具 抽取文本的工具 文件內容:less和cat 文件截?。篽ead和tail 按列抽取:cut 按關鍵字抽?。篻rep 文件查看命令:cat,tac,rev cat […

    系統運維 2016-08-08
  • 小白學習Linux系統一周總結

         告別平凡,安定而又沒什么前途的工作,我選擇了報了門熱門的計算機課程--python運維開發。我不知道為什么一開始就學Linux系統,我早預料到這是一個艱難的開始,還好我不是完全沒有基礎,以前有學過iOS開發??吹街K端中的“\”表示根目錄,我輕微有點親切感,不像第一次看到終端時的恐懼。我總結這周的學習感受,?!?/p>

    Linux干貨 2017-09-04
  • 磁盤分區,文件系統的創建、修改和檢測

        寫博客,對我來說不僅是學習的過程,也是一個心理歷練的過程,多說無益,開始吧?。?!     博客是馬哥視頻里的博客作業:文件系統的創建、修改和檢測。我就從磁盤管理開始把      環境:     創建的centos6.5虛擬機 &nb…

    Linux干貨 2016-06-26

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-29 14:06

    文章對各命令的作用,用法和常用選項總結的很完整,建議能多一些操作,嘗試著靈活運用這些工具來實現,分區的創建與格式化并掛載使用。多動手才能明白自己的不足哦。

欧美性久久久久