Linux磁盘分区与挂载
硬盤的大致結構:
由盤片、機械臂、磁頭、主軸馬達組成。各盤片的中心在主軸,馬達帶動各盤片轉動,盤片的兩面均有磁頭讀寫數據。
磁頭在盤片上的各磁道讀寫數據,盤片的正反兩面均有磁頭讀寫。磁道是盤片上以主軸為圓心的各同心圓。顯然由于各圓的半徑不一樣,存儲容量也不相同。
磁道上每一個單位弧段稱為一個扇區,可存儲數據512bytes。同一磁盤內每個盤片相同位置的磁道構成一個柱面,顯然一個盤片上有多少磁道,磁盤就有多少柱面。柱面是磁盤劃分分區的單位。
在0磁道0扇區不會存儲數據,該扇區存儲的是MBR(Master Boot Record),共512bytes;前446bytes存儲的是bootloader;之后64bytes存儲磁盤分區表,每16bytes對應一個分區,故最多劃分四個主分區,如需使用更多分區,則使用擴展分區,每塊硬盤最多有一個擴展分區;最后兩個字節稱為“魔數”,表示該分區是否可引導(可啟動)。
擴展分區實質是指向一個二級分區表,在二級分區表上又可以建立若干新分區,稱為邏輯分區。擴展分區不能被格式化。
Linux上IDE接口與SATA接口磁盤對應的設備文件:
Linux系統中,IDE接口磁盤的設備文件為/dev/h[a-d],一般主機提供兩個IDE接口,每個接口有主(master),從(slave)分別。每個接口對應的設備文件如下:
/dev/ha | IDE1(主) | /dev/hb | IDE1(從) |
/dev/hc | IDE2(主) | /dev/hd | IDE2(從) |
如某磁盤設備接在IDE2的主設備上,則其對應的設備文件為/DEV/hc。
SATA接口的磁盤設備中,SATA/USB/SCSI等設備的磁盤接口都是由SCSI模塊來驅動的,它們的設備文件為/dev/sd[a-p]。SATA設備的磁盤接口與設備文件并非一一對應的關系,而是根據系統檢測到設備的先后次序決定對應的設備文件。如某磁盤A接在SATA1上,磁盤B接在SATA2上,某U盤也接在此主機上,則它們的設備文件依次為/dev/sda、/dev/sdb、/dev/sdc(U盤開機后才可檢測到)。
創建一個可供用戶使用的分區分為三個步驟:
1、劃分磁盤分區,并讓內核讀取識別之。
2、在磁盤分區上建立文件系統(即格式化)。
3、掛載至某目錄下。此目錄即成為訪問該磁盤分區的入口。
所有分區都與根分區相關聯,即根分區下的目錄是所有分區直接或間接的訪問入口;但在物理層面上根分區與其他分區是各自獨立、平行的。
劃分磁盤分區
使用命令fdisk。
它是一個交互式的命令。使用其選項“-l”并指定設備則顯示該設備的所有分區信息,若無指定,則顯示/proc/partitions(即內核可識別的設備)中所有設備的分區信息。
使用“fdisk 設備文件”即可進入交互模式進行分區了(以/dev/sdb為例):
在/dev/sdb上建立分區使用選項n
e表示擴展分區,p表示主分區。本例創建兩個主分區和一個擴展分區:
創建過程中須指定分區大小,可用柱面數,也可使用K,M,G等單位,使用默認則直接敲回車。磁盤的開始柱面使用默認,否則會造成空間浪費。
創建擴展分區大小一般使用默認,否則會造成磁盤空間的浪費。擴展分區創建好之后就可以在其上創建邏輯分區了。邏輯分區號默認從5開始,1-4默認是留給主分區的。
上圖為創建兩個主分區,一個擴展分區,在擴展分區上創建了兩個邏輯分區。可以看到擴展分區的Id System為5 Extended.
創建完畢后使用w保存退出該命令。
創建分區完畢后要使用partx或partprobe命令通知內核,是內核識別各分區。如此兩命令出現異常,則重啟系統也可使內核識別新建的各分區。
在/proc/partitions文件中顯示的是內核已經識別了的各分區。上圖表示內核已經識別了新建的sdb設備上的各分區。
創建文件系統(格式化)
為什么要在分區上創建文件系統?如果沒有文件系統,數據的存儲將雜亂無章且沒有安全性,有了文件系統就可以有效保護數據,按名存取文件內的數據。
使用命令mkfs和mke2fs(針對ext系列文件系統)。若分區上已有數據,則重新創建文件系統,原數據將不復存在。
對指定分區創建文件系統的命令非常靈活,“.”后表示目前系統所支持的文件系統。例如其中的“mkfs.ext4 設備文件”表示在某分區上創建ext4文件系統。
仍以mkfs為例,選項“-t”表示指定文件系統。上圖表示在sdb2分區上建立ext4文件系統,等同于命令“mkfs.ext4 設備文件”。
命令mke2fs只針對ext系列文件系統,但功能非常強大。如“-b”指定塊大小,“-L”指定卷標,“-m”指定預留塊的百分比。其中塊大小為1K,2K,或4K(塊大小取決于當前CPU對內存頁框大小的支持,X86系統默認頁框大小為4k,所以塊大小應為4k以內的2的乘方,即1k、2k、4k);預留塊表示硬盤預留給管理員管理磁盤使用的塊占整個磁盤空間的百分比。
設置卷標也可使用專門的命令,e2label。
表示sdb6設備建立ext4文件系統,卷標為MyDisk,塊大小為4096,預留塊比例為5%等。mke2fs其他選項詳見man手冊。
ext文件系統的默認設置在配置文件/etc/mke2fs.conf中。
使用blkid命令可查看塊設備的UUID,卷標等相關信息;不加參數則查看所有塊設備。
命令tune2fs可修改分區上文件系統的許多屬性,其與mkfs的關系類似于useradd和usermod的關系。
如“tune2fs-L 設備文件”可修改卷標,“tune2fs-m 設備文件”可修改保留塊比例等(詳見man手冊)。但若要更換文件系統類型與塊大小必須重新格式化。
“tune2fs-l 設備文件”為顯示超級塊信息(后續有關文件系統文章詳述)。
掛載
分區格式化之后就可以掛載至某目錄下了,掛載至哪個目錄,哪個目錄即成為該磁盤分區的入口。
使用命令mount。如果不加任何參數,則顯示當前系統中所有分區掛載的情況。
掛載至某目錄一般格式:“mount 設備文件 目錄”。其中設備文件即格式化的分區,也可使用UUID,卷標來標識,如“mount label=MyDisk 目錄”。其中目錄即所謂的掛載點。
如果掛載點本來有數據,則掛載之后,原數據會被隱藏,卸載之后恢復。
上述使用指令掛載的結果在重啟主機之后即失效,若需永遠有效,可把掛載信息寫入配置文件/etc/fstab中(寫入此文件中會永久有效但不會立即生效)。
“mount-a”表示掛載/etc/fstab中所有支持掛載選項auto(默認有auto)的文件系統。
/etc/fstab文件中的內容每行以空格分隔,分為6段:
1、掛載分區的設備文件;也可用UUID或卷標指定
2、掛載點
3、掛載分區使用的文件系統
4、掛載選項:眾多掛載選項使分區掛載更靈活,使用命令mount的“-o”選項即可調整掛載選項,如defaults、ro、auto、remount等選項(詳見man手冊);若需永久有效寫入/etc/fstab中的第四字段即可。
5、轉儲頻率:即備份的頻率,0表示從不備份,1表示每天備份,2表示隔天備份等;dump命令也可修改轉儲頻率。
6、自檢次序(后續文件系統文章詳述)。
卸載
使用命令umount,用法格式為“umount 掛載點”或“umount 分區設備文件”。
如果某進程正在使用掛載點目錄,則無法卸載。可使用“fuser 掛載點”查看哪個進程正在訪問;如有必要,可使用“fuser-km 掛載點”強行殺死正在訪問指定掛載點的進程。
交換分區及其掛載與卸載
一個進程在運行時要占用內存空間。Linux操作系統支持多進程。如果多個進程同時使用內存空間,很有能相互影響。為了保護內存引入內存管理單元(MMU)的概念。把內存分成一個個頁框;各進程使用虛擬的線性地址空間作為其內存,該線性地址空間的大小取決于CPU的字長(即尋址能力),如32位的CPU可尋址2^32字節,即4G。由線性地址空間映射到物理內存而不是直接使用,即可有效保護內存。
但線性地址空間往往比真實的物理內存大,當真正的物理內存不夠用時,就要使用交換分區暫時存放內存當前不需要處理的數據。
交換分區實際就是磁盤上的分區,速度相比內存要慢很多,所以對于要求實時響應的服務器,主要靠內存,交換分區很小。
創建交換分區同樣遵循三個步驟:劃分磁盤分區,創建文件系統,掛載:
劃分磁盤分區如前所述,但要將Id System改為swap,使用t改變分區的Id System,使用l可列出所有分區類型,選擇其前面的編號即可。交換分區類型為82。
在sdb6分區類型變為swap后就可以在其上創建swap文件系統了。
創建swap文件系統,使用命令mkswap,格式為“mkswap 分區設備文件”,創建時可使用“-L”選項設定其卷標等。
啟用swap分區相當于普通分區的掛載。使用命令swapon,格式為“swapon 設備文件”表示啟用指定交換分區,無需指明掛載點。使用“-a”選項表示啟用當前系統上所有交換分區。
禁用swap分區相當于普通文件的卸載。使用命令swapoff,格式為“swapoff 設備文件”。
若需要開機即啟動交換分區,則普通分區一樣寫入配置文件/etc/fstab即可。其文件系統和掛載點均為swap。
使用命令free可查看當前內存與交換分區的使用與空閑情況,選項“-m”指定顯示單位為“兆”。
轉載于:https://blog.51cto.com/maximum/1261642
總結
以上是生活随笔為你收集整理的Linux磁盘分区与挂载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 明日方舟法华琳技能
- 下一篇: unix、linux 命令