Linux磁盤及文件系統管理

磁盤(Hard Disk Drive,簡稱HDD)是一種存儲介質,傳統的機械硬盤由一個或多個鋁制或玻璃制的碟片組成,碟片外覆蓋有鐵磁性材料。

磁盤的物理結構一般由磁頭與碟片、電動機、主控芯片與排線等部件組成;當主電動機帶動碟片旋轉時,副電動機帶動一組(磁頭)到相對應的碟片上并確定讀取正面還是反面的碟面,磁頭懸浮在碟面上畫出一個與碟片同心的圓形軌道(磁軌或稱柱面),這時由磁頭的磁感線圈感應碟面上的磁性與使用硬盤廠商指定的讀取時間或數據間隔定位扇區,從而得到該扇區的數據內容;

磁道:當磁盤旋轉時,磁頭若保持在一個位置上,則每個磁頭都會在磁盤表面畫出一個圓形軌跡,這些圓形軌跡就叫做磁道或磁軌(Track)。

柱面:在有多個盤片構成的盤組中,有不同盤片的面,但處于同一半徑圓的多個磁道組成一個圓柱面(Cylinder)。

扇區:磁盤上的每個磁道被分為若干個弧段,這些弧段便是磁盤的扇區(Sector),通常每個扇區大小為512Bytes。

Linux磁盤及文件系統管理HDD.jpg1.png2.png

磁道(Track)柱面(Cylinder)扇區(Sector)磁頭(Heads)盤片(Platters)每個碟片都有兩面,因此也會相對應每碟片有2個磁頭。

A:磁道 B:扇面 C:扇區 D:簇(扇區組)在硬盤上定位某一數據記錄位置—C扇區,使用了三維定位。

磁盤分區格式:類型有"bsd", "dvh", "gpt","loop", "mac", "msdos(mbr)", "pc98", or "sun",這里簡要說明其中兩種常用格式。

MBR主引導記錄(Master Boot Record,縮寫:MBR),又叫做主引導扇區,是計算機開機后訪問硬盤時所必須要讀取的首個扇區,它在硬盤上的三維地址為(柱面,磁頭,扇區)=(0,0,1)。大小為512Bytes,其中446Bytes用于裝載引導程序(bootloader),如grub和ntloader;64Bytes保存分區表,16Bytes標記一個主分區,所以最多只能支持4個主分區;2Bytes用于標記MBR有效性標記,固定格式 5A。在MBR分區表中,一個分區最大的容量為2T,且每個分區的起始柱面必須在這個disk的前2T內

GPT:全局唯一標識分區表(GUID Partition Table,縮寫:GPT)是一個實體硬盤的分區表的結構布局的標準。在MBR硬盤中,分區信息直接存儲于主引導記錄(MBR)中(主引導記錄中還存儲著系統的引導程序)。但在GPT硬盤中,分區表的位置信息儲存在GPT頭中。但出于兼容性考慮,硬盤的第一個扇區仍然用作MBR,之后才是GPT頭。為了保護分區表,GPT的分區信息在每個分區的頭部和尾部各保存了一份。GPT磁盤分區樣式支持最大卷為18 EB(Exabytes)并且每磁盤的分區數沒有上限,只受到操作系統限制。

文件系統:主要類型有,"ext(2,3,4)", "xfs", "ffs", "ufs", "reiserfs", "jfs", "vfat(fat32)", "ntfs"

計算機的文件系統是一種存儲和組織計算機數據的方法,它使得對其存取和查找變得容易,文件系統使用文件和樹形目錄的 抽象邏輯概念代替了硬盤和光盤等物理設備使用數據塊的概念,用戶使用文件系統來保存數據不必關心數據實際保存在硬盤(或者光盤)的地址為多少的數據塊上, 只需要記住這個文件的所屬目錄和文件名。在寫入新數據之前,用戶不必關心硬盤上的那個塊地址沒有被使用,硬盤上的存儲空間管理(分配和釋放)功能由文件系 統自動完成,用戶只需要記住數據被寫入到了哪個文件中。

文件系統通常使用硬盤和光盤這樣的存儲設備,并維護文件在設備中的物理位置。但是,實際上文件系統也可能僅僅是一種存取資料的界面而已,實際的數據是通過網絡協議(如NFS、SMB、9P等)提供的或者內存上,甚至可能根本沒有對應的文件(如 proc文件系統)。

嚴格地說, 文件系統是一套實現了數據的存儲、分級組織、存取和獲取等操作的抽象數據類型(Abstract data type)。

磁盤分區:

以Centos發行版為例,可以通過fdisk或parted命令來管理磁盤分區,值得注意的是,fdisk不支持管理gpt格式,而parted則沒有這個限制。

#fdisk命令用法,交互式界面,有許多子命令命令格式:fdisk [options] <disk>                p: 顯示磁盤分區表                n: new,新建分區                d: delete,刪除分區                t: 修改分區的系統ID                l: 列表出所有已經的系統ID                w: 保存并退出                q: 不保存退出

示例:在磁盤上創建并刪除一個分區

[root@qin ~]# fdisk  -cu /dev/sdb  #為方便顯示,關閉dos兼容模式并以扇區為顯示單位,默認為柱面Command (m for help): n    #新建一個分區Command action   e   extended   p   primary partition (1-4)p     #指定為主分區Partition number (1-4): 1         #分區編號First sector (2048-10485759, default 2048):               #選擇起始扇區Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): +2G       #指定分區大小Command (m for help): t        #修改分區系統IDSelected partition 1Hex code (type L to list codes): 83     #指定ID為83Command (m for help): w        #保存退出The partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks. [root@qin ~]# fdisk -l /dev/sdb      #查看分區Disk /dev/sdb: 5368 MB, 5368709120 bytes54 heads, 48 sectors/track, 4045 cylindersUnits = cylinders of 2592 * 512 = 1327104 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000c5da6   Device Boot      Start         End      Blocks   Id  System/dev/sdb1               1        1619     2097152   83  Linux[root@qin ~]# fdisk -cu /dev/sdbCommand (m for help): d    #刪除一個分區Partition number (1-4): 1   #指定需要刪除的分區Command (m for help): w     #保存退出The partition table has been altered!

注意:對于已經有分區處于使用狀態的磁盤來講,新建分區后需要讓內核重讀其分區表

[root@qin ~]# partx -a /dev/sdb[root@qin ~]# kpartx -af  /dev/sdb

用parted命令管理磁盤,交互操作或非交互都可以

#命令格式:parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]  align-check TYPE N                       #check partition N for TYPE(min|opt) alignment  check NUMBER                             #對文件系統做一個簡單檢測  cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   #將文件系統復制到另一分區  help [COMMAND]                           #顯示命令幫助信息  mklabel,mktable LABEL-TYPE               #創建一個新的磁盤標簽  mkfs NUMBER FS-TYPE                      #在分區上創建文件系統  mkpart PART-TYPE [FS-TYPE] START END     #創建一個分區  mkpartfs PART-TYPE FS-TYPE START END     #創建一個帶有文件系統的分區  move NUMBER START END                    #移動分區到當前磁盤的另一位置  name NUMBER NAME                         #設置分區名稱  print [devices|free|list,all|NUMBER]     #顯示分區表,可用設備,可用空間  quit                                     #退出命令  rescue START END                         #恢復指定磁盤區間內丟失的分區  resize NUMBER START END                  #resize partition NUMBER and its file system  rm NUMBER                                #刪除分區  select DEVICE                            #選擇需要編輯的設備  set NUMBER FLAG STATE                    #標記一個分區  toggle [NUMBER [FLAG]]                   #toggle the state of FLAG on partition NUMBER  unit UNIT                                #set the default unit to UNIT  version                                  #display the version number and copyright information of GNU Parted

示例:創建一個GPT格式的分區,大小為2G,起始點為1G,終止點為3G;然后更改此分區的位置區間;最后刪除此分區并試圖恢復。

[root@qin ~]# parted /dev/sdb mklabel gpt      #標記磁盤格式為gpt[root@qin ~]# parted /dev/sdb mkpart primary ext2 1G 3G      #創建一個2G大小,文件系統為ext2的主分區;似乎只支持ext2[root@qin ~]# parted /dev/sdb print     #顯示分區Model: VMware Virtual disk (scsi)Disk /dev/sdb: 5369MBSector size (logical/physical): 512B/512BPartition Table: gptNumber  Start   End     Size    File system  Name     Flags 1      1000MB  3000MB  2000MB  ext2         primary[root@qin ~]# parted /dev/sdb move 1 3G 5G      #移動編號為1的分區的位置區間,即從原來1G-3G移動到3G-5G[root@qin ~]# parted /dev/sdb rm 1      #刪除編號為1的分區[root@qin ~]# parted /dev/sdb rescue 3G 5G        #搜索此位置區間的分區,以便恢復

創建文件系統:可通過命令mkfs和mke2fs來創建,其中mke2fs是創建ext系列文件系統的專有命令。

ext系列文件系統如圖所示:

Linux磁盤及文件系統管理

Linux磁盤及文件系統管理

Linux磁盤及文件系統管理

1、啟動扇區(Boot Sector):每個文件系統都會創建一個啟動扇區,可用與多系統引導。

2、塊組(Block Group):每個塊組大小一樣

3、超級塊(Super Block):記錄整個文件系統相關信息。包括block和inode的總量、數量、大小(block為1,2,4K,inode為128 Bytes);mount、fsck的時間;文件系統狀態;塊組信息;日志信息;別名信息。安全起見,超級塊會備份在若干個塊組內,大小一般為1K

4、文件系統描述(Filesystem Description):描述每個塊組的開始和結束的block號碼,以及說明每個區段(Super Block,Block Bitmap,Inode Bitmap,Data Block)分別介于哪個block號碼之間。

5、塊位圖(Block Bitmap):記錄block的狀態,0為空閑可用,1為非空閑不可用。

6、Inode位圖(Inode Bitmap):與塊位圖一樣,記錄Inode的狀態,0為空閑,1為非空閑。

7、數據塊(Data Block):實際儲存文件內容數據的地方,ext文件系統支持的block大小有1K,2K,4K,創建文件系統時block大小和數量就固定了,每個block最多只能存一個文件,一個文件可占用多個block

管理文件系統的命令:

mke2fs:       #用于創建文件系統
    -t {ext2|ext3|ext4}:指定文件系統 
    -b {1024|2048|4096}:指定塊大小
    -L LABEL: 卷標
    -j: 等同于 -t ext3
    -i #: 每多少字節給創建一個inode,此字節數不應該小于塊大小
    -N #: 直接指定可用的inode數;
    -m #: 指定預留空間占整個分區空間的百分比;默認為5;
    -O:指定分區特性
tune2fs:        #修改文件系統屬性
    -j:創建帶日志功能的ext3文件系統
    -L LABEL:修改卷標
    -l DEVICE:查看超級塊信息
    -m #:修改預留管理空間百分比
    -O [^]FEATURE:啟用文件系統特性,特性前加^,表示關閉此種特性
    -o [^]mount-options:開啟或關閉指定的掛載選項
dumpe2fs:      #查看文件系統信息
    -b:列出保留為壞軌的部分
    -h:僅列出superblock的數據
    -x:以十六進制格式顯示塊組的詳細信息
e2label:       #查看或設置卷標
    e2label DEVICE [LABEL]
blkid:         #查看指定塊設備的信息 
e2fsck:        #專用于修復ext系列文件系統
    -y:對問題自動回答為yes
    -f:強制進行檢測

原創文章,作者:秦,如若轉載,請注明出處:http://www.www58058.com/3298

(0)
秦
上一篇 2015-04-20
下一篇 2015-04-21

相關推薦

  • VMware vSphere所需要開放的端口

        80 vCenter Server需要端口80用于直接HTTP連接。端口80會將請求重定向到HTTPS端口443。如果意外使用了http://server而不是https://server,此端口將非常有用。     389 此端口在vCenter Server的本地和所…

    Linux干貨 2016-07-07
  • 簡述計算機硬件組成,linux系統及簡單命令詳解

    1、計算機的硬件組成 (1)cpu(中央處理器):主要由運算器和控制器組成,它的運算器主要負責程序運算與邏輯判斷,控制器則主要協調組件與各個設備之間工作。 (2)存儲設備:存儲設備又分為外存儲設備,是用來存儲數據信息的設備,它包括,硬盤,u盤,光盤,軟盤。而其中內存(ram)和主板上的rom是屬于內存儲設備,內存是只讀存儲器,它用來暫時記錄數據信息供給cpu…

    2017-07-09
  • 變量的高級操作

                                                  一  字符串切片 &nbsp…

    Linux干貨 2017-04-16
  • 第四天作業

    1 、創建 用戶gentoo ,附加組為bin 和root ,默認shell為/bin/csh ,注釋信息為"Gentoo Distribution" 1 useradd -G bin,root -s /bin/csh -c "Gentoo Distribut…

    Linux干貨 2016-08-04
  • 淺談Linux中的用戶和組

    又到了周六,日常寫博客的日子。 上周模模糊糊的寫了第一篇博客,大概知道了怎么寫,但是這周就比以往不同了,腦子中已經有了思路,那寫起來就會更加詳細易懂。 這周學了很多知識點,但是我想對Linux 用戶和組進行詳細的描述。 一、用戶(Username/UID) 用戶分為兩種:管理員和普通用戶     管理員root  UI…

    2017-07-22
  • Network Teaming網絡組總結

    一、Network Teaming網絡組的創建 第一步;準備工作,建立兩個網絡接口eth0、eth1,把原有網卡配置文件刪除; 命令:cd /etc/sysconfig/network-scripts                rm -rf ifcfg-* &nbs…

    2017-03-26

評論列表(1條)

  • stanley
    stanley 2015-04-20 22:02

    從底層到實戰均有介紹提及,不過有圖無法正常顯示,請查檢

欧美性久久久久