磁盤管理詳解

linux系統如何識別硬盤

硬盤類型:

       按接口可劃分為

       并行

              IDE

              SCSI

串行

       SATA

       SAS

       USB      

       對于linux來說,一切皆文件,磁盤也被當作文件。磁盤文件都存放于/dev/目錄下。

設備文件的作用:關聯至一個設備驅動程序,進而能夠跟與之對應的設備進行通信。設備文件是設備的訪問入口。

設備文件的文件名由ICANN(互聯網名稱地址分配機構)組織來定義

對IDE類型磁盤來說:使用/dev/hd[a-z]來標識

對SCSI、SATA、SAS、USB類型的磁盤來說:使用/dev/sd[a-z]來標識

每個設備都有一個設備號與之對應,設備號包括:

       主設備號:major。用于區分不同的設備類型

       次設備號:minor。用于標識同類型設備下的不同設備,是特定設備的訪問入口。

blob.png

從上圖中可以看到,sdc的設備類型是sd,sdc1是sdc設備下的一個分區。

一、硬盤分區管理

硬盤買回來,插入服務器之后,要使用它,先得進行分區

那么,如何對硬盤進行分區呢?

先來了解下硬盤的分區方式:

       分為MBR 和GPT兩種方式。

1 MBR介紹:

MBR位于硬盤的0磁道0扇區,共512bytes。

512bytes中,

前446bytes表示:boot loader,起引導啟動操作系統的程序。

之后的64bytes表示分區表,每16bytes標識一個分區,所以采用MBR分區的磁盤理論上只能劃分為4個分區。

最后的2bytes表示硬盤有效標志,若其被破壞,也不能正確地識別硬盤分區信息。 

    為了能夠充分利用磁盤,在使用mbr對磁盤分區時,一般都采用劃分3個主分區+1個擴展分區(在擴展分區上,能進一步劃分多個分區)的方式。如下圖:

blob.png

1.1 MBR分區的管理命令:fdisk

       fdisk也可以管理gpt分區的磁盤,但其表現不夠專業,gpt分區的管理工具為gdisk。在下文中會有介紹。

fdisk命令介紹:

       fdisk -l [device]  :查看

       fdisk device:管理

       常用命令:

              n:創建分區

              d:刪除分區

              t:修改分區類型

              l:列出已知的分區類型

              w:保存退出

              q:不保存退出

              m:查看幫助

注意:在已經分區并且已經掛載其中某個分區的磁盤設備上創建的新分區,內核可能無法在創建完成后無法直接識別;

       查看分區信息:

1)  cat /proc/partitons:只能查看內核已識別的分區信息

2)  lsblk:也只能查看內核已識別的分區信息

lsblk  –f:可以查看設備的文件系統及掛載點等信息

3)  fdisk -l [device]:查看系統上實時的設備分區信息

 

       通知內核強制讀取磁盤分區表:

                     CentOS5:partprobe device

                     CentOS6:partx –a device

                     CentOS7:kpartx  -af device

partx命令介紹:

       新增分區:partx –a device

       刪除分區:partx –d–nr N|N-M device

              N:為刪除的分區的分區號

              N-M:標識連續的多個分區

例1:在/dev/sdb磁盤上新建三個分區:大小分別為1G、5G、10G,創建完成后,通知內核讀取最新的分區信息。

fdisk /dev/sdb

blob.png

創建完成之后,執行partx –a /dev/sdb

通知內核讀取分區表

使用lsblk命令可以查看到系統上磁盤的分區情況。

blob.png 

2 GPT分區:GUID(Globals Unique Identifies) Partition Table

GPT磁盤分區樣式支持最大卷為18 EB(Exabytes),磁盤的分區數為128

blob.png

2.1管理GPT分區:

       往虛擬機新增一塊20G大小的磁盤,將其分區格式指定為GPT,

 parted  /dev/sdc  mklabel  gpt

注:parted命令是實時操作的命令,即操作之后立即希爾內核,對于刪除操作來說是非常危險的,建議使用fdisk或gdisk來刪除

blob.png

       之后使用gdisk對磁盤進行分區管理;在CentOS6上,要使用需要先安裝gdisk軟件。

yum  install  -y  gdisk

安裝完成之后,使用

gdisk /dev/sdc

blob.png

?:獲取幫助信息

c:修改分區名

d:刪除分區信息

l:查看分區類型

n:新增分區

q:不保存退出

t:修改分區類型

w:保存退出

新建一個10G大小的分區。

 blob.png

查看分區信息:

blob.png 

3 MBR和GPT的區別

MBR(Master Boot Record)主引導記錄,是傳統的分區機制,應用于絕大多數使用BIOS的PC設備

1、MBR支持32位和64位系統

2、MBR支持分區數量有限

3、MBR只支持不超過2T的硬盤,超過2T的硬盤將只能用2T空間(有第三方解決方法)

GPT(GUID Partition Table)全局唯一標識分區表,是一個較新的分區機制,解決了MBR很多缺點

1、支持超過2T的磁盤(64位尋址空間)。fdisk最大只能建立2TB大小的分區,創建一個大于2TB的分區可以使用parted和gdisk

2、向后兼容MBR

3、必須在支持uEFI的硬件上才能使用(Intel提出,用于取代BIOS)

4、必須使用64位系統

5、Mac、Linux系統都能支持GPT分區格式

6、Windows 7/8 64bit、Windows Server 2008 64bit支持GPT

二、在硬盤上創建文件系統

linux上文件系統介紹:

       文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。

從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等

linux文件系統類型:

       無日志功能:ext2

       有日志功能:

ext3

ext4

xfs

btrfs

       swap

       日志功能介紹:用戶對文件進行寫操作時,修改的數據并不是立即寫入硬盤中,而是先緩存在內存中,過一段時間之后,在講數據寫入到硬盤中。在寫入硬盤的過程的,若發生斷電等故障,則會導致文件被損壞,數據不能正常使用。為了應對這種情況,日志型文件系統將數據寫入硬盤之前,會先將數據寫入到日志之中,之后再同步到硬盤上,在這個過程中,如果系統發生斷電等異常情況,寫入過程被迫終止,在下一次系統啟動的過程中,系統會比對日志中的文件,將未寫入的數據恢復到文件中,從而實現文件修復,有效地保證了數據的完整性和安全性。 

光盤:iso9660

網絡文件系統:NFS、CIFS

集群文件系統:GFS2,OCFS2

分布式文件系統:ceph,mosefs,mogilefs,glusterfs,lustre 

可以看到,linux自身有多個文件系統,也支持其他的多種文件系統,為了方便對個文件系統的管理,方便系統管理員和程序開發者更高效地完成工作,linux提供了一個虛擬的文件系統,叫做Virtual Fils System,簡稱為VFS。

在VFS的基礎上,我們可以完成文件系統的創建,修改等管理操作。

2.1 如何創建文件系統。

       1) mkfs 命令

              用法:mkfs.Fs_Type device

                     Fs_Type有:ext2,ext3,ext4,xfs

              mkfs.Fs_Type = mkfs –t Fs_Type

              mkfs的常用選項

                     -L ‘Label_Name’:指定卷標名。

在CentOS6系列系統上要使用xfs文件系統,需要安裝xfsprogs軟件

yum install -y xfsprogs

之后才可正常使用。 

例2:將例1中的sdb1格式化成ext3、sdb2格式化成ext4、sdb3格式化成xfs。

blob.png

blob.png

blob.png

通過lsblk –f  /dev/sdb可以查看到sdb硬盤上三個分區都已經創建了不同的文件類型。 

ext系列文件系統專用的創建工具:mke2fs 

mke2fs命令介紹:

       mke2fs [options] device

       常用option:

              -t{ext2,3,4}:指明創建的文件系統類型

                            mkfs.ext4 = mkfs -t ext4 =mke2fs -t ext4

              -b {1024,2048,4096}:指定塊大小,默認4096.若要創建的文件系統用于存放較小的文件,建議使用較小的塊大小

              注意:塊大小創建后不能修改

              -L Label:指定卷標

                     例:mke2fs -t ext4 -b 1024 -L zmingbo /dev/sdb3

              -j:創建有日志功能的文件系統,用于ext2文件系統

              -i #:指定多少個bytes準備一個inode;此大小不應該小于block 的大小

              -N #:指定給此文件系統創建的inode數;

              -I #: 一個inode 記錄大小(128—4096)

              -O [^]Feature:以指定的特性創建目標文件系統

                     加上[^]表示關閉特性,反之則表示啟用特性

              -m #:指定為管理員預留的管理空間百分比;默認為5%,當分區較大時,此比例會造成磁盤空間浪費           

例:在sdb硬盤上新建一個擴展分區,在此基礎上創建兩個分區,大小分別為1G、2G。

在創建擴展分區選擇起始柱面和結束柱面時,直接enter鍵選擇默認值,就會把剩余的空間都分配給該分區。

 blob.png

blob.png

blob.png

硬盤分區之后,在sdb5創建為ext2類型,塊大小為1024,每1024bytes指定一個inode,指定卷標為“HardStudy“,管理員預留百分比為1,指定創建日志功能

blob.png 

ext2是沒有日志功能的,當我們指定sdb5支持日志功能時,通過blkid /dev/sdb5可以查看到該分區的文件類型為ext3。

三、文件系統的查看和管理

磁盤分區了,在分區上也創建文件系統了,那么創建完成的文件系統如何進行查看和修改呢 

對于ext系列的文件系統來說,同樣有專門的工具用于查看和設定:

e2label: 用于ext系列文件系統的卷標的查看與設定

       查看:e2label device

       設定:e2label device Label_name

dumpe2fs:顯示ext系列文件系統的屬性信息

       dumpe2fs [-h] device

tune2fs:查看或修改ext系列文件系統的某些屬性 

       tune2fs [option] device

              -l:查看超級塊信息

       修改指定文件系統的特性

              -j:將ext2文件系統升級為ext3

              -L Label:設定或修改卷標

              -m #:調整預留空間百分比

              -O [^]Feature:調整文件系統特性,啟用或關閉

              -o [^]mount_options:開啟或關閉某種默認掛載選項,使用逗號隔開多個選項

                            acl

                            ^acl 

[root@localhost /mnt/mount]# tune2fs -l /dev/sdb5
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   HardStudy             #卷標名
Last mounted on:          <not available>#最近的掛載點,因為該設備才格式化,所以無信息
Filesystem UUID:          8f21a52c-0c9f-4657-b105-e74610d8737d#設備的UUID
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super
                                          #文件系統支持的特性,創建時刻指定,創建后也可修改
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)       #默認掛載點
Filesystem state:         clean#文件系統狀態。若為not clean狀態,需要修復
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              1059760    #inode數量。
Block count:              1060256     #塊數量
Reserved block count:     10602              #管理員預留硬盤空間
Free blocks:              759262              #剩余塊數量
Free inodes:              1059749     #剩余inode數量
First block:              1                 #起始塊
Block size:               1024           #結束塊
Fragment size:            1024          #塊大小。
Reserved GDT blocks:      256
Blocks per group:         8192
Fragments per group:      8192
Inodes per group:         8152
Inode blocks per group:   2038
Filesystem created:       Fri Aug 26 10:35:05 2016#文件系統創建時間
Last mount time:          n/a                            #最近一次掛載時間      
Last write time:          Fri Aug 26 10:35:10 2016    #最近一次寫時間
Mount count:              0                                   #設備被掛載的次數,共計
Maximum mount count:      28  #最大掛載數,當達到此數時,會自動觸發設備檢查的操作
Last checked:             Fri Aug 26 10:35:05 2016#上一次檢查時間
Check interval:           15552000 (6 months)   #檢查周期,每6個月
Next check after:         Wed Feb 22 10:35:05 2017#下一次檢查時間
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256               #inode大小,可指定
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      79b04935-292f-4308-b59e-d4985fe55a31
Journal backup:           inode blocks

例:去掉此設備的日志特性。調整預留空間百分比為0.1(系統支持的最小值),修改卷標名為“ForTest”,

tune2fs -O ^has_journal -m 0.1 -L "ForTest" /dev/sdb5

blob.png

沒有日志功能的ext3文件系統會降級為ext2文件系統。

blob.png

用于實現文件系統檢查的工具。             

       因進程意外終止或系統崩潰等原因導致定稿操作非正常終止,可能會造成文件損壞;此時應該檢測并修復文件系統;建議,此操作離線進行,即umount之后,在檢測。

                    

       ext系列專用的文件檢測工具:

              e2fsck  [options] device

                     -f:即便文件系統處于clean狀態,也要強制進行檢測

                     -y:對所有問題自動回答yes。                    

       fsck :

              fsck  [options] device

                     -t fstype:指明文件系統類型

                     -a :無需交互而自動修復所有錯誤

                     -f:交互式修復 

四、掛載使用硬盤設備

在硬盤上創建文件系統之后。要使用該設備,還需要掛載。

文件系統的使用:

       首先要“掛載”:mount 命令和 umount (卸載)命令

       根文件系統之外的其他文件系統要想能夠被訪問,必須通過關聯至根文件系統上的某個目錄來實現,此關聯操作即為掛載,該目錄即為掛載點。

              掛載點;mount_point,用作另一個文件系統的訪問入口。 

mount 命令:

              mount [-nrw]  [-t vfstype]  [-o options] device dir

                     命令選項:

                            -r (readonly):只讀掛載

                            -w(read & write):讀寫掛載

                            -n :默認情況下,設備掛載或卸載的操作會同步更新至/etc/mtab中,-n禁用詞性

                            -t vfstype:指明要掛載的設備上的文件系統的類型;多數情況下可省略,此時mount會通過blkid 來判斷要掛載的設備的文件系統

                            -L Label :掛載時以卷標的方式指明設備

                                   mount -L Label dir

                            -U UUID:掛載時以UUID的方式指明設備

                                   mount -U UUID dir

                    

                     -o options:

                                   sync/async :同步/異步操作

                                   atime/noatim:文件或目錄在被訪問時是否更新其訪問時間戳

                                   diratime/dirnoatime:目錄在被訪問時是否更新其時間戳

                                   remount: 更新掛載

                                   acl :支持使用facl功能

                                   ro :只讀

                                   rw :讀寫

                                   /dev/nodev :此設備上是否允許創建設備文件

                                   exec/noexec:是否允許運行此設備上的程序文件

                                   auto/noauto

                                   user/nouser: 是否允許普通用戶掛載此文件系統

                                   suid/nosuid :是否允許程序文件上的suid和sgid特許權限生效

                                   defaults: rw,suid,dev,exec,auto,nouser,async,and relatime

              使用技巧:

                     可以實現將目錄綁定至另一個目錄上,作為其臨時訪問入口

                            mount –bind|-B 源目錄 目標目錄

例:將sdb2掛載到/mnt/mount/sdb2_point上

blob.png

掛載之后,不允許運行此設備的還是那個的可執行文件,不讓suid生效,訪問文件時不更新文件的時間戳??梢栽诓恍遁d的情況下,執行remount操作。

blob.png

umount 命令:

       umount device|dir

       注意:正在被進程訪問的掛載點無法被卸載

       如何查看被哪個或哪些進程占用

              lfos mount_point

              fuser -v mount_point

       踢出占用用戶

              fuser -km mount_point

例:卸載掉sdb2

blob.png

查看當前系統所有已掛載的設備

       mount

       cat /etc/mtab

       cat /proc/mounts

 

掛載光盤

       mount -r /dev/vdrom mount_point 

交換分區的啟用和禁用

       創建交換分區

              mkswap device

       啟用

              swapon [options] [device]

                     -a :啟用所有定義在/etc/fstab文件中的swap設備

       禁用

              swapoff

                     swapoff device

       自動掛載

              swapon -a

例:將/dev/sdb5設備類型轉換為swap分區,并將其掛載

blob.png

 blob.png

設定自動掛載

       設定除根文件系統以外的其他文件系統能夠開機時自動掛載:/etc/fstab

       每行定義一個要掛載的文件系統及相關屬性

       6個字段

              1)、要掛載的設備

                     設備文件

                     Label

                     UUID

                     偽文件系統

              2)、掛載點

                     swap文件系統的掛載點為swap

              3)、文件系統類型

              4)、掛載選項

                     defaults: 使用默認的掛載選項

                     如果同時指明多個掛載選項,要用逗號","分開

              5)、轉儲頻率

                     0: 從不備份

                     1: 每天備份

                     2:每隔一天備份

              6)、自檢次序

                     0: 不自檢

                     1: 首先自檢,通常只能是根文件系統可用1

                     2: 次級自檢

                     …

       mount -a: 自動掛載定義在/etc/fstab中支持自動掛載的設備

注:在掛載通過擴展分區創建的邏輯分區時,若有3個邏輯分區,分別為sdb5、sdb6、sdb7,若sdb6被刪除,則sdb7的磁盤號會自動變化為sdb6,這時,掛載的文件就不再是我們所需要的文件,為了避免這種情況,在掛載時,應盡量使用UUID來進行掛載。 

例:1)將sdb2掛載到/mnt/mount/sdb2_point,并指定掛載選項為noexec,nosuid,noatime,以UUID的方式掛載,不備份,不自檢

2)在前一個例子中,我們將sdb5的文件類型設置為swap,先在將其掛載方式改為通過配置文件自動掛載。

 blob.png

blob.png

總結一下系統新增硬盤到使用的過程:

一、購買新硬盤,并將其接入系統。在生產環境中,硬盤一般都支持熱插拔,即插入即可被系統識別到。在VMware虛擬環境中。需要執行命令讓系統識別新增加的硬盤

       命令如下:

       CentOS6系列:echo "- – -" > /sys/class/scsi_host/host2/scan

       CentOS7系列:echo "- – -" > /sys/class/scsi_host/host0/scan

二、對硬盤進行分區,分區方式兩種,MBR和GPT。MBR最多支持2T的硬盤分區,GPT不受此限制,且GPT上沒有擴展分區和邏輯分區的概念,GPT上的分區都是主分區

三、對硬盤進行格式化,格式化的過程就是創建文件系統的過程。文件系統創建之后,可查看和修改。

四、將設備掛載到目錄上,需要指出的是,掛載的目錄事先得創建,否則掛載不成功。掛載可通過mount掛載和修改/etc/fstab掛載。通過mount掛載的操作在系統重啟后即被清除,若要永久有效,建議使用配置文件進行掛載。

五、文件系統修復,fsck和e2fsck

原創文章,作者:M20-1鐘明波,如若轉載,請注明出處:http://www.www58058.com/40871

(0)
M20-1鐘明波M20-1鐘明波
上一篇 2016-08-29
下一篇 2016-08-29

相關推薦

  • N25期—第一周作業

    1、描述計算機的組成及其功能 計算機五大組成部件:運算器、控制器、存儲器、輸入設備和輸出設備。 運算器和控制器統稱中央處理器(CPU)。  存儲器分成內存儲器和外存儲器兩大類。  外存儲器、輸入設備和輸出設備統稱為外部設備。  中央處理器(CPU)  計算機的中央處理器又稱為CPU,它是計算機的核心部分。主要由運算器和…

    Linux干貨 2016-12-04
  • 高考作業

    1、簡述TCP三次握手四次揮手過程及各過程中客戶端和服務器端的狀態。 TCP三路握手,作用為完成三次握手,主機A與主機B開始傳送數據。 第一次握手:客戶端A(狀態為SYN_SEND)發送位碼為syn=1,隨機產生seq number=1234567的數據包到服務器,服務器B(狀態為LISTEN)由SYN=1知道,客戶端A要求建立聯機; 第二次握手:服務器B(…

    Linux干貨 2016-06-22
  • 馬哥教育網絡班22期+第四周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 ~]# cp -r /etc/skel/ /home/tuser1/ ~]# chmod 700 /home/tuser1/ -R 2、編輯/e…

    Linux干貨 2016-09-06
  • 文本三劍客grep爵士與手下的血淚奮戰

    文件查看命令: cat, tac,revcat [OPTION]… [FILE]…  -E: 顯示行結束符$ -n: 對顯示出的每一行進行編號 -A:顯示所有控制符 -b: 非空行編號 -s:壓縮連續的空行成一行 文件查看 分頁查看文件內容more: 分頁查看文件more [OPTIONS…] FILE…-d: 顯示翻頁及退出提示less:一頁一頁…

    Linux干貨 2016-08-07
  • wordpress和discuz的負載均衡(lvs-nat)

    實驗目的:利用lvs-nat模型實現wordpress和discuz的負載均衡 實驗要求:客戶端訪問wordpress或Discuz服務時,無論被調度至哪臺RS上,其會話和訪問的頁面都應保持一致; 實驗環境:一臺server用作VS(需要兩塊網卡,eth1連接內部網絡,eth0連接外部網絡),兩臺server用作RS,一臺server用于部署mysql、NF…

    2017-05-13
  • GNU awk

    文本處理三工具:grep, sed, awk grep, egrep, fgrep:文本過濾工具;pattern sed: 行編輯器 模式空間、保持空間 awk:報告生成器,格式化文本輸出;  AWK: Aho, Weinberger, Kernighan –> New AWK, NAWK  GNU awk, gawk&…

    Linux干貨 2015-12-03

評論列表(2條)

  • 馬哥教育
    馬哥教育 2016-08-29 13:23

    文章內容完整,思路清晰,有自己的思考與總結,整篇博客還是能讓人看到很多專業性所在,還能看出很用心的地方,革命尚未成功,同志仍需努力啊,加油!

  • M20-1鐘明波
    M20-1鐘明波 2016-08-31 22:13

    路漫漫其修遠兮,吾將上下而求索。
    謝謝老師的鼓勵

欧美性久久久久