運維基礎--存儲管理之如何使用新硬盤

一、存儲管理

  計算機結構裏,在CPU中,只有指令,沒有數據,那麼向內存取數據需要bus即常說的總線,所有總線彙總於North Bridge,連接了高速設備(顯卡,cpu)等等;South Bridge連接了低速設備(鍵盤,硬盤),且連接於 North;

  BUS總線分三種,地址總線,控制總線,數據總線;連接cpu與北橋的總線充當三種總線,但是同一時刻只能有一個功能

  直接通過主板插槽插在主板上的叫適配器(Adapter),向鍵鼠,硬盤,只能通過線纜連接至主辦的接口,接口在控制芯片(即controller)上.主板連接各個硬件設備,並起到'翻譯'的作用;

  那麼,存儲數據的設備-磁盤就顯得尤爲重要

存儲設備的性能評價標準:

性能之一 每秒傳輸速率 bps

   IDE:並口,來源於ATA,133Mbps

   SCSI:並口

    UltraSCSI320:320Mbps

    UltraSCSI640:640Mbps

   SATA:Serial ATA 串口 一根線直接一個設備

   SAS:串口 用於服務器領域,向下兼容SAT

性能之二---IOPS:每秒IO次數

  IDE:機械硬盤,50IPOS

  SCSI:機械 100-200

  固態  400左右

  SATA:機械  100左右

  固態  400

  SAS: 機械   200左右

  固態  800左右

 

PS:據說華爲所使用的 PCI-E固態硬盤的IPOS可達100000+,也是6到不行。不過這種東西,在個人PC是萬萬用不得滴。。。


接下來說說機械硬盤,也就是計算機內部的那個圓形的金屬片:

首先,我們瞭解幾個機械硬盤的術語:

  track:磁道 非可視,由於表面磁性材料密度極高、

  sector:扇區 每一個扇區的大小 512Bytes;現在所說的扇區,實際上是平均值  最小的物理存儲單元

  cylinder:柱面。從磁道向所有盤片做投影;

    在柱面裏 做partition即分區,就是基於柱面來劃分的存儲空間

  head:磁頭  每個磁盤表面都有一個磁頭;磁頭的數量=盤面的數量


好,瞭解了這些術語,我們回到linux系統中來,linux哲學思想之一,一切皆文件,存儲設備也不例外

設備文件:/dev

 它是關聯到 硬件設備的驅動程序 和 設備的訪問入口;

 其中,用命令查看到設備文件都有一段設備號:

   major:主設備號,區分設備的類型用於標明設備所需的驅動程序

   minor:從設備號,區分同種類型下的不同設備,是特定設備的訪問入口


   主設備號相同,都是同一個設備。不同的此設備號表示,不同訪問入口訪問設備的不同位置;

設備文件名:

  linux的設備命名遵循了icann頒佈的命名規則

  即在/dev目錄下,IDE硬盤一般命名爲:hd[a-d];SCSI、SATA、SAS、USB:sd[a-z]\+ 例如sda,sdb等等,而從RHEL6、CentOS6開始:所有的接口類型的硬盤設備統一命名爲sd[a-z]


設備的引用方式:卷標引用Volume Lable 和 UUID引用:Universal unique identifi 128bit

  注意:設備文件名隨時有可能會發生變化

那麼該如何使用一個新的硬盤設備呢?有以下三個步驟

  1.分區

  2.創建文件系統(也就是格式化)

  3.掛載分區 使用分區

1.1爲何分區?有下列幾個原因

  1.優化I/O性能;

  2.實現磁盤空間的配額限制

  3.可以進行高速修復

  4.隔離系統文件和其他程序文件

  5.安裝多個操作系統

1.2如何分區?分區的方式有兩種,MBR和GPT方式

  MBR:一般使用於硬盤空間小於2TB的硬盤上

    全名叫Master(或main)Boot Record,主引導記錄,起源1982年

    其中硬盤的0磁道0扇區(512B)裏:

     446Bytes:boot loader,引導加載程序

     64Bytes:Partition table,分區表每16Bytes表明一個分區的內容,一個保留4個分區,主分區

     假設1tb的硬盤:分區成100+100+100+100,則剩下的600G是不能被識別的空間;要想充分使用硬盤空間除非100+100+100+700或者最後一個分區使用擴展分區;

    在擴展分區裏的分區表,稱爲邏輯分區

     注意:1.主分區+擴展分區,最多可以有4個,其分區表位依次是:1 2 3 4

       2.邏輯分區的標號從5開始:不管前面的4個數字編號是否被佔用

     2Bytes:結束標記,55AA

  GPT:硬盤空間大於2TB

    GUID Partition Table:GUID 分區表,支持128個分區;

    UEFI(統一擴展固件接口)的硬件可以支持GPT 、Boot Legacy


1.3通常使用的分區工具:

  fdisk:

    用於創建和管理MBR分區,對於一塊硬盤,最多隻能管理15個分區

  gdisk

    專用於創建和管理GPT分區,這裏的g是GNU

  parted:GNU

    高級分區工具,實時生效;一般僅限於熟手


fdisk,gdisk非實時生效,安全性高;

  但是可能存在這個問題,如果使用了這兩個命令對已經有分區並且掛載的磁盤的剩餘空間進行再次分區,分區的信息即便是保存了,也不會被內核重新讀取;

  那麼該如何讓內核識別此類分區:

    1.重啓計算機(不提倡),因爲在一線運維裏不可能做到隨時開關機呀;

    2.partprobe命令或者partx命令,強制內核重讀分區表;

      partprobe [device]:CentOS 5/7 如果省略了設備名,表示重讀所有磁盤的分區表

      partx -af [device]:CentOS 6/7  

      kpartx -af [device]:centos 6/7


fdisk 分區實例:

  fdisk -l [device...]:

    查看指定磁盤的分區表,如果省略[device]參數,默認全部

  fdisk device

    對於制定設備進行分區管理;進入分區操作後會發現有很多子目錄,輸入m查看這些子命令

     a   toggle a bootable flag

     b   edit bsd disklabel

     c   toggle the dos compatibility flag

     d   delete a partition

     g   create a new empty GPT partition table

     G   create an IRIX (SGI) partition table

     l   list known partition types

     m   print this menu

     n   add a new partition

     o   create a new empty DOS partition table

     p   print the partition table

     q   quit without saving changes

     s   create a new empty Sun disklabel

     t   change a partition's system id

     u   change display/entry units

     v   verify the partition table

     w   write table to disk and exit

     x   extra functionality (experts only)

建立好分區,下一步就是創建Filesystom了: 

  2.1爲什麼要創建文件系統

    先舉一個例子

    圖書館有一百萬冊圖書,兩種管理方式

      1.平面分類管理

        遍歷搜索

      2.空間分類管理

        分出門類,按拼音首字母,按年代,按出版社等等;

        幾次有限單殺有效的查找

顯然第二種管理方式更加快捷優化,所以,創建文件系統,實際上就是給分區進行存儲空間的邏輯編址;

格式化:

  低級格式化

    主要在物理層面上完成格式化。即磁盤設備出廠時,通過低級格式化創建磁道;

    主要作用:劃分磁道


  高級格式化 

    分區之後進行,

    主要作用:用來創建文件系統,爲分區構建邏輯編址單元,簇,塊

    無論是簇還是塊,都是將一個或者多個扇區組織在一起,共同完成數據存儲

    簇:512B  1024  2048 ....65536

    塊:1024  2048  4096


    注意:

      1.一個簇/塊只能放置一個文件的內容,但是一個文件可以佔用多個簇/塊;

      2.如果在某個分區中,將創建大量的小文件,這時就要把塊劃分的小一些;反之,要把塊劃分的大一些;

      3.如果分區空間比較大,那麼塊也應該大一些

在一個分區中創建了文件系統:

  首先,會將分區劃分成大小相等的若干塊;

    元數據塊:

      存儲文件的屬性  元數據——inode(index node)

      文件的屬性包括:

        大小,權限,所有者,時間戳,  **數據塊指針(fat32 inode裏的指針4096塊;間接指針1024個塊;)


      存放元數據的固定存儲空間,稱爲inode;每個inode都有其對應的inode編號

    數據塊

      存放文件所包含的流式數據

  特殊文件:

    設備文件:block special 或 character special

    符號鏈接文件:symbolic link

      僅僅是將元數據中數據塊指針換成了另一個文件的訪問路徑

    這類文件只佔據元數據塊,沒有佔據數據塊;

    block bitmap


 隨着磁盤空間越來越大,劃分的塊的數量也越來越多,因此,管理起來就很不方便,於是 劃分塊組來解決該問題

 塊組:

   每個塊組有獨立的元數據塊和數據塊  存放數據的時候以塊組內的數據塊優先選擇,如果塊組的數據塊不夠,可以通過存儲策略來請多個塊組

   協同存儲


 超級塊:

  主要定義了有多少個塊組,以及每個塊組的邊界


  爲了防止超級塊發生故障導致整個文件系統崩潰,對超級塊進行冗餘備份;


  日誌塊:對於數據寫入操作做記錄的塊

  防止數據不一致;數據的不一致通常是由於非正常關機  斷電導致;


所以,一個完整的文件系統包括:

  超級塊,inode,inode bitmap,block bitmap,data block,journal block

比如:

找/var/log/message文件的內容的過程

    /目錄inode編號,從元數據區域中找到對應inode,再讀取inode裏的數據塊指針,找到存放/目錄內容的數據塊;

    然後沒在數據塊中查找名稱爲var的文件名,如果有,就定位其inode編號,再到元數據區域中查找對應編號的inode,再根據數據塊指針找到

    保存var目錄內容的數據塊;

   此步驟重複下去直到找到message的數據塊部分讀取


2.2 linux支持的文件系統

  位於內核空間中的文件系統驅動

    1.內核的一部分

    2.內核模塊

  位於用戶空間中的文件系統管理應用程序

    管理命令


  linux自己的文件系統:

    ext存在了一年 ext2(91-2005) ext3引入日誌系統  ext4

    ext4:最大分區50TB,可以做/分區,也可以做啓動分區


    xfs:企業級64位文件系統,最大分區500TB,可以做根和啓動分區

    reiserfs  良好的反刪除功能

    btrfs(技術預覽版) Blance Tree

  光盤文件系統:在linux只支持iso9660; 

  網絡文件系統:NFS、CIFS

  集羣文件系統:gfs2、ocfs2

  內核級的分佈式文件系統:ceph

  僞文件系統:proc sysfs  tmpfs  hugepagefs


  linux也支持 windows的文件系統:fat32/16———vfat,ntfs

  unix的文件系統:ufs,FFS,JFS,zfs

  交換分區文件系統:swap

  用戶空間中的分佈式文件系統:mogilefs,moosefs,glusterfs;


  衆多文件系統,linux都可以支持;

對與不同 的發行版的linux,都有其默認的文件系統選擇:

  RHEL、CentOS:

    5:ext3

    6: ext4

    7: xfs


2.3 文件系統的管理工具

  創建文件系統:

    mkfs

      mkfs.ext2, mkfs.ext3,mkfs.xfs....

  文件系統監測和修復工具

    fsck

      fsck.ext2....

  文件系統屬性查看工具

    dumpe2fs

  文件系統屬性調整工具

    tune2fs

mkfs:

  mkfs - build a Linux Filesystem

  mkfs [-V] [-t fstype] [fs-options] filesys [blocks]

  比如  mkfs -t ext2 /dev/sdb1 -t選項指定要創建的fs類型


  注意:

    1.不要使用磁盤設備名稱和擴展分區設備名稱作爲mkfs的參數

      如果使用了磁盤設備作爲參數,那麼所有的分區都將被刪除

      如果使用了擴展分區設備作爲參數,所有的邏輯分區都將被刪除


    2.能夠作爲mkfs命令參數的設備,是主分區設備和邏輯分區設備


 如果只是計劃創建ext文件系統的話,可以使用mke2fs的命令

  mke2fs:

    mke2fs - create an ext2/ext3/ext4 filesystem


    【選項】

    -b block—size:

    -i bytes-per-inode:指明inode與字節的比率,即:多少個字節可以創建一個inode,默認16384;

    -j:創建帶有日誌功能的文件系統,即ext3

    -N number-of-inodes:直接指明要給此文件系統創建inode的數量

    -m  reserved-blocks-percentage:指定爲超級用戶預留的磁盤空間百分比,默認5

    -t fstype 指定文件系統的類型,ext2 ext3 ext4  默認ext2

    -O [^]feature[,...]:關閉/開啓文件系統的特性

      ~]# mke2fs -t ext3 -O ^has_journal  看似是ext3的文件系統,但由於加了-O ^has_journal,關閉了這個特性,實則是ext2

    -L volume-label 指定卷標

 如果只是計劃修改ext系列文件系統的卷標,可以使用e2label

    e2label - Change the label on an ext2/ext3/ext4 filesystem


    e2label device [ new-label ]

    注意:不加捲標表示查看device的卷標

            加捲標表示修改device的卷標;

 如果要修改ext系列文件系統的屬性,使用tune2fs

    tune2fs - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems


   調整那些在ext2,3,4文件系統上可修改的參數;

   【選項】

    -j:將ext2修改爲ext3

    -m reserved-blocks-percentage:

    -o [^]mount-options[,...]  修改 默認掛載選項

    -r reserved-blocks-count  

    -L volume-name  

    -O [^]feature[,...] 

    -l:顯示超級塊的內容  相當於 dumpe2fs -h

文件系統的檢測修復工具

  fsck


ext系列文件系統專用的檢測修復工具

  e2fsck


blkid

  -L  label

  -U  uuid

findfs

  

創建swap文件系統

  前提:分區必須是swap類型

    修改的方法:在fdisk交互模式中,用t命令將指定的分區類型修改爲82即可

3.1 使用文件系統--掛載

  跟文件系統之外的其他文件系統如果想要被訪問;都必須通過某種方式關聯到根文件系統上,具體做法。即:把其他文件系統裝載到根文件系統中的某個目錄中,這個過程稱爲“掛載”,用於關聯其他文件系統的那個目錄,稱爲掛載點;


  掛載點:mount point,也就是其他文件系統的訪問入口 ,例如/boot

    要求:

      1.作爲掛載點的目錄必須事先存在;

      2.作爲掛載點的目錄應該是沒有被使用或不能被其他進程使用的目錄

      3.作爲掛載點目錄,一旦掛載文件系統,其內原有的文件將被隱藏!


  mount命令:

    mount - mount a filesystem

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

    【選項】


    -r:只讀方式掛載目標文件系統  readonly!一般光盤就是這樣

    -w:以讀寫的方式掛載目標文件系統

    -n:默認情況下,設備掛載或卸載的操作會同步更新到/etc/mtab中,如果掛在時使用了此選項,表示我們要禁用此特性,即

        掛在成功也不會更新到/etc/mtab中;

    -t vfstype:指明要掛載的設備上創建的文件系統類型;如果省略該選項,mount命令會通過blkid來判斷要掛載的目標設備的文件系統類型

    -L LABEL:掛載文件系統時,使用卷標代替設備名稱

    -U UUID :掛載文件系統時,使用UUID代替設備名稱

    -a:按照/etc/fstab文件中填寫的設備自動掛載

    -o option:

      sync/nosync:同步/異步操作

      atime/noatime:文件或目錄被讀取訪問時是否更新時間戳;

      diratime/nodiratime:

      ro/rw:是以只讀還是讀寫方式

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

      exec/noexec:是否允許運行程序文件

      auto/noauto:是否允許使用mount -a方式掛載/etc/fstab中的文件系統

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

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

      relatime/norelatime:是否參考inode訪問時間來修改其修改時間和改變時間

      remount:不經卸載實現重新掛載,可以應用心的掛載選項

      acl:可以讓文件系統支持facl功能

      defaults:默認選項,包含了很多選項  Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.

      loop:使用環回設備:將鏡像文件掛載到掛載點

    -B,--bind:將某個目錄綁定至另一個目錄

卸載文件系統:

  很簡單,命令+掛載點 或者是 命令+設備

 umount mount_point|device


總結一下,查看掛載文件系統的信息的命令或者文件

1.df -hTP  

2.mount

3./proc/mounts文件

4./etc/mtab文件


掛載光盤:

  1.保證光盤鏡像文件放入虛擬機光驅

  2.保證光驅處於已連接狀態

  3.創建光盤掛載點, mount -r | -o ro /dev/sr0 mount_point

掛載u盤

  1.事先系統要可以識別U盤

  2.根據設備名(/dev/sdc1),直接進行掛載;

掛載交換分區:

  特殊的命令:

   swapon, swapoff 

      - enable/disable devices and files for paging and swapping


      -a:自動掛載存儲於文件/etc/fstab中的交互分區設備


/etc/fstab文件的格式:

  六個字段:空白字符分隔

  1.要掛載的設備

    設備文件名、label、uuid、僞文件系統

  2.掛載點:

    swap設備無需掛載點,指定swap即可

  3.文件系統類型

  4.掛載選項:defaults

  5.轉儲頻率:

    使用dump命令備份分區的頻率

    0   不備份

    1   每天備份一次

    2   每隔一天備份一次

  6.自檢次序:

    0 不自檢

    1. 優先自檢,通常只設置在根文件系統上

    2:次級自檢

    ...

    9


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章