磁盤管理

磁盤管理

    設備文件

        I/O Ports: I/O設備地址

        一切皆文件:

        open(), read(), write(), close()

        設備類型:

        塊設備: block,存取單位“塊”,磁盤

        字符設備: char,存取單位“字符”,鍵盤

        設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信

        設備號碼:

        主設備號: major number, 標識設備類型

        次設備號: minor number, 標識同一類型下的不同設備

        [root@localhost ~]# ll /dev/sda*

        brw-rw—-. 1 root disk 8, 0 Aug 25 05:24 /dev/sda

        brw-rw—-. 1 root disk 8, 1 Aug 25 05:24 /dev/sda1

        brw-rw—-. 1 root disk 8, 2 Aug 25 05:24 /dev/sda2

        brw-rw—-. 1 root disk 8, 3 Aug 25 05:24 /dev/sda3

        brw-rw—-. 1 root disk 8, 4 Aug 25 05:24 /dev/sda4

        brw-rw—-. 1 root disk 8, 5 Aug 25 05:24 /dev/sda5

        brw-rw—-. 1 root disk 8, 6 Aug 25 05:24 /dev/sda6

        8為設備類型,1.2.3.4.5.6為同一設備類型的不同編號

    硬盤接口類型

        并行:(數據傳輸的互相干擾)

        IDE: 133MB/s

        SCSI: 640MB/s

        串口:(減少數據傳輸的互相干擾)

        SATA: 6Gbps

        SAS: 6Gbps

        USB: 480MB/s

        rpm: rotations

        per minute

    設備文件

        磁盤設備的設備文件命名: /dev/DEV_FILE

        IDE: /dev/hd

        SCSI, SATA, SAS, USB: /dev/sd

        不同設備: a-z

        /dev/sda, /dev/sdb, …

        同一設備上的不同分區: 1,2, …

        /dev/sda1, /dev/sda5

    硬盤結構

      blob.png磁盤管理

    硬盤存儲術語

         blob.png

磁盤管理

        head:磁頭   8個字節存放磁頭  有256

        track:磁道  

        cylinder: 柱面

        secotr: 扇區, 一個扇區的容量為512bytes

        一盤面容量: 512*secotr * track*head

        cylinder

        一柱面容量=track*head

        在centos 6上fdisk -l /dev/sda  默認以柱面顯示磁盤

        在centos 7 上fdisk -l /dev/sda 默認以扇區顯示磁盤

    磁盤管理blob.png

    磁盤分區

        為什么是分區?

            ? 優化I/O性能

        系統,數據庫,日志等劃分分區,有優化效果

            ? 實現磁盤空間配額限制

            ? 提高修復速度

        假若系統文件與數據庫文件在同一分區,那么數據的修復速度就很慢了

            ? 隔離系統和程序

            ? 安裝多個OS

    

    分區

        兩種分區方式: MBR, GPT

            MBR: Master Boot Record,主引導記錄, 1982年, 使用32位表示扇區數, 分區最多表示 2^32容量2^32*512字節=不超過2T

        如何分區:按柱面

            0磁道0扇區: 512bytes

            446bytes: boot loader

            64bytes:分區表

            16bytes: 標識一個分區

            2bytes: 55AA(沒有55AA,系統認為是一個裸盤 , 沒有分區的硬盤 , 系統會提示重新分區)

            4個主分區; 3主分區+1擴展(N個邏輯分區)

                ==>可以使用命令查看磁盤前512的二進制的字節

                    [root@localhost ~]# hexdump -C -n 512 /dev/sda    

            blob.png

            lsblk看到是內存上的磁盤分區表,有可能不會同步,用partx /dev/sd[磁盤號]  而fdisk看的是磁盤上分區表

            如果只清空55 aa 兩個字節用命令 , 清空后會默認為該磁盤未分區

            dd if=/dev/zero of=/dev/sda ba=1 count=2 skip=510(跳過if 510個字節) seek=510(跳過of的 510個字節)

                增加硬盤后掃描硬盤

                echo "- – -" > /sys/class/scsi_host/host0

                host0    host1    host2

        MBR分區結構

    磁盤管理blob.png

   

     GPT分區

        GPT:GUID patition table 全局唯一標識分區表 , 支持128個分區,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)

        使用128位UUID 表示磁盤和分區 GPT分區表自動備份在頭和尾兩份,并有CRC校驗位

        使用GPT分區必須要有硬件支持

        UEFI (統一擴展固件接口)硬件支持GPT , 使操作系統啟動

        磁盤管理blob.png

        UUID隨機生成,有時間硬件設備等其他特征信息組成格式為8-4-4-8

        GPT分區結構

        EFI部分又可以分為4個區域: EFI信息區(GPT頭)、分區表、 GPT分區備份區域

          磁盤管理blob.png

  

    管理分區

        列出塊設備

            lsblk

            lsblk看到的信息與ls /dev/sd* 和cat /proc/partitions 看到的信息一樣,是內存中生效的信息,磁盤更改后的信息未必與內存中的同步 , fdisk就是磁盤實時的分區信息

        創建分區使用:

            ? fdisk 創建MBR分區,也支持GPT(并不完美),對于一塊硬盤,最多只能管理15分區

            ? gdisk 創建GPT分區

            ? GNU parted 高級分區操作(創建、復制、調整大小等等)

                parted /dev/sd* mklabel {label-type : gpt msdos . . . }

                partprobe-重新設置內存中的內核分區表版本

        分區工具fdisk和gdisk

            fdisk /dev/sdb

            gfisk /dev/sdb

            # fdisk -l [-u] [device…]

                子命令:

                    p 分區列表

                    t 更改分區類型

                    n 創建新分區

                    d 刪除分區

                    w 保存并退出

                    q 不保存并退出

        同步分區表

            查看內核是否已經識別新的分區:

                # cat /proc/partations

            通知內核重新讀取硬盤分區表

            新增分區用

                partx -a -n M:N /dev/DEVICE

                kpartx -a /dev/DEVICE -f: force

            刪除分區用

                partx -d -n M:N /dev/DEVICE

                centos6: –nr N-M /dev/sd

            CentOS 5, 7: 使用partprobe

                partprobe [/dev/DEVICE]

        parted命令

            parted的操作都是實時生效的,小心使用

                用法: parted [選項]… [設備 [命令 [參數]…]…]

                    parted /dev/sdb mklabel gpt|msdos

                    parted /dev/sdb print

                    parted /dev/sdb mkpart primary 1 200

                    parted /dev/sdb rm 1

                    parted -l

    文件系統

        文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。

        操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。

        從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。

        具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。

    文件系統類型

        Linux文件系統: ext2(extended file system 擴展的文件系統), ext3, ext4, 

                        xfs( SGI) , btrfs(Oracle) , reiserfs, jfs( AIX) , swap(交換分區)

        光盤: iso9660

        Windows: fat32, ntfs

        Unix: FFS( fast) , UFS( unix) , JFS2

        網絡文件系統: NFS, CIFS

        集群文件系統: GFS2, OCFS2( oracle)

        分布式文件系統: ceph, moosefs, mogilefs, glusterfs,Lustre

        RAW:未經處理或者未經格式化產生的文件系統

    文件系統分類

        根據其是否支持"journal"功能:

        日志型文件系統: ext3, ext4, xfs, …

        非日志型文件系統: ext2, vfat

        文件系統的組成部分:

        內核中的模塊: ext4, xfs, vfat

        用戶空間的管理工具: mkfs.ext4, mkfs.xfs,mkfs.vfat

        Linux的虛擬文件系統: VFS(用戶訪問文件系統的時候不會直接訪問真正的文件系統,發開人員會在真正的文件系統上搭建一個VFS,用戶訪問的時候會通過VFS間接的訪問文件系統)

        查前支持的文件系統: cat /proc/filesystems

        lsmod  查看加載到內核的文件系統模式

    磁盤管理

    VFS模型 :

         blob.png磁盤管理

    文件系統選擇

         blob.png磁盤管理

       并非最新的文件系統是最好的,選用文件系統要時生產環境而定 , 但是 ext系列是生產環境用得最多的(穩定)

    創建文件系統

        mkfs命令:

            (1) # mkfs.FS_TYPE /dev/DEVICE

                ext2 ext3 ext4

                xfs

                btrfs

                vfat(文件系統功能簡單)

            (2) # mkfs -t FS_TYPE /dev/DEVICE

                -L 'LABEL': 設定卷標

        創建ext文件系統

            mke2fs: ext系列文件系統專用管理工具

                -t {ext2|ext3|ext4}     (指定創建的文件系統格式)

                -b {1024|2048|4096}  (指定塊大小,默認4096)

                -L 'LABEL'    (指定卷標)

                -j: 相當于 -t ext3     (不指定文件系統格式時-t 默認是創建ext2,就是不帶日志功能, 加-j 就是增加日志功能, 相當于ext3)

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

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

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

                -I 一個inode記錄大小128—4096

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

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

                -O ^FEATURE:關閉指定特性

        文件系統標簽

        指向設備的另一種方法

        與設備無關

        blkid:塊設備屬性信息查看

        blkid [OPTION]… [DEVICE]

        -U UUID: 根據指定的UUID來查找對應的設備

        -L LABEL:根據指定的LABEL來查找對應的設備

        blob.png磁盤管理

        磁盤管理blob.png

        e2label:管理ext系列文件系統的LABEL

            # e2label DEVICE [LABEL]

            findfs :查找分區

            findfs [options] LABEL=<label>

            findfs [options] UUID=<uuid>

        tune2fs (只試用ext系列文件系統)

            tune2fs:重新設定ext系列文件系統可調整參數的值

                -l:查看指定文件系統超級塊信息; super block

                -L 'LABEL':修改卷標

                -m #:修預留給管理員的空間百分比

                -j: 將ext2升級為ext3

                -O: 文件系統屬性Filesystem features啟用或禁用, –O ^has_journal

                -o: 調整文件系統的默認掛載選項,–o ^acl

                -U UUID: 修改UUID號

                dumpe2fs:

                -h:查看超級塊信息(分組信息),分區用分組管理

        我們只需了解基本的項就OK了

            [root@localhost sdb1]# tune2fs -l /dev/sdb1

            tune2fs 1.42.9 (28-Dec-2013)     #tune2fs版本號

            Filesystem volume name:   <none>

            Last mounted on:          /sdb1      #分區掛載點

            Filesystem UUID:          c64673c4-410c-40ac-92c2-5dc89e509bf8   #設備UUID號

            Filesystem magic number:  0xEF53

            Filesystem revision #:    1 (dynamic)

            Filesystem features:      ext_attr resize_inode dir_index filetype sparse_super large_file  #文件系統特性

            Filesystem flags:         signed_directory_hash

            Default mount options:    user_xattr acl

            Filesystem state:         not clean

            Errors behavior:          Continue

            Filesystem OS type:       Linux

            Inode count:              65536   #inode數

            Block count:              262144   #block數

            Reserved block count:     13107

            Free blocks:              257701   #空閑block數

            Free inodes:              65525    #空閑inode數

            First block:              0    #第一個塊編號

            Block size:               4096  #一個block的大小

            Fragment size:            4096

            Reserved GDT blocks:      63

            Blocks per group:         32768   #一個組的block數量

            Fragments per group:      32768

            Inodes per group:         8192

            Inode blocks per group:   512   #inode與block比

            Filesystem created:       Thu Aug 25 20:53:52 2016

            Last mount time:          Thu Aug 25 21:25:17 2016

            Last write time:          Thu Aug 25 21:28:07 2016

            Mount count:              1   #掛載次數

            Maximum mount count:      -1

            Last checked:             Thu Aug 25 20:53:52 2016

            Check interval:           0 (<none>)

            Reserved blocks uid:      0 (user root)

            Reserved blocks gid:      0 (group root)

            First inode:              11

            Inode size:          256

            Required extra isize:     28

            Desired extra isize:      28

            Default directory hash:   half_md4

            Directory Hash Seed:      12dabb50-85cf-4a1c-a1ab-534289e5033c

            

        超級塊和inode table

                blob.png磁盤管理

        文件系統檢測和修復

            常發生于死機或者非正常關機之后 , 掛載為文件系統標記為“ dirty”

                fsck: File System Check

                fsck.FS_TYPE

                fsck -t FS_TYPE

                -a: 自動修復錯誤

                -r: 交互式修復錯誤

                注意: FS_TYPE一定要與分區上已經文件類型相同;

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

                -y:自動回答為yes

                -f:強制修復

                    fsck 退出的返回值是下列情況之和:

                        0 – 沒有錯誤

                        1 – 文件系統有錯但已修復

                        2 – 系統應當重啟

                        4 – 文件系統錯誤沒有修復

                        8 – 運行錯誤

                        16 – 用法或語法錯誤

                        32 – 用戶撤銷了fsck 操作

                        128 – 共享庫出錯


     掛載mount

        掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為

        卸載:為解除此關聯關系的過程

        把設備關聯掛載點: mount Point

        mount

        卸載時:可使用設備,也可以使用掛載點

        umount

        磁盤管理blob.png

        上圖 : 一個設備文件掛載在兩各不同目錄就相當于硬鏈接一樣,但是硬鏈接數不會增加,容易混淆

        磁盤管理blob.png

        掛載點下原有文件在掛載完成后會被臨時隱藏 ; 掛載點目錄一般為空(一般一個掛載點只能掛載一個設備,之前的設備上的文件默認會隱藏起來,卸載之后會顯示之前的文件)



        用mount命令掛載文件系統

            掛載方法: mount DEVICE MOUNT_POINT

                mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備

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

            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:掛載點

                事先存在;建議使用空目錄

                進程正在使用中的設備無法被卸載

        要卸載一個設備,當然要設備處于空閑狀態,如果有用戶在訪問,就會顯示錯誤,當然,你也可以強行中斷用戶與該設備的聯系,然后在卸載

        磁盤管理blob.png

        mount常用命令選項

            -t vsftype:指定要掛載的設備上的文件系統類型

            -r: readonly,只讀掛載

            -w: read and write, 讀寫掛載

            -n: 不更新/etc/mtab,相當于#mount

            -a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)

            -L 'LABEL': 以卷標指定掛載設備

            -U 'UUID': 以UUID指定要掛載的設備

            -B, –bind: 綁定目錄到另一個目錄上(文件夾掛載文件夾)

            –loop   掛載光盤

        磁盤管理blob.png

        -o options: (掛載文件系統的選項),多個選項使用逗號分隔

            async:異步模式

            sync:同步模式,內存更改時,同時寫磁盤

            atime/noatime:包含目錄和文件

            diratime/nodiratime:目錄的訪問時間戳

            auto/noauto:是否支持自動掛載,是否支持-a選項

            exec/noexec:是否支持將文件系統上運行應用程序

            dev/nodev:是否支持在此文件系統上使用設備文件

            suid/nosuid:不否支持suid和sgid權限

            remount:重新掛載

            ro:只讀

            rw: 讀寫

            user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載

            acl:啟用此文件系統上的acl功能

        Defaults(不加選項的默認狀態):相當于rw, suid, dev, exec, auto, nouser, async

            查看內核追蹤到的已掛載的所有設備:

                cat /proc/mounts    

            mount能查看掛載情況,等同于cat /etc/mtab  和cat /proc/mount  但是cat /proc/mount 更加全面

            (因為有時候內核并不能同步得上,此時可以使用 partx -a /dev/sd)

                mount -o remount   取消掛載然后重掛載

        卸載命令

        查看掛載情況:

        #findmnt MOUNT_POINT

        查看正在訪問指定文件系統的進程:

        #lsof MOUNT_POINT

        #fuser -v MOUNT_POINT

        終止所有在正訪問指定的文件系統的進程:

        # fuser -km MOUNT_POINT

        卸載:

        # umount DEVICE

        # umount MOUNT_POINT

        磁盤管理blob.png

        磁盤管理blob.png

        掛載點和/etc/fstab

     

        文件掛載配置文件

            /etc/fstab 每行定義一個要掛載的文件系統;

                要掛載的設備或偽文件系統(若是設備文件,通常寫UUID號,不寫設備名稱(如 : /dev/sda1) , 假若有分區sda1 2 3 ,刪除sda2,只是釋放了原本標記sda2的UUID號,刪除sda2之后,sda3回變成sda2,也就是說原本sda3的)

                     UUID=fc4ece99-fdb9-4729-904b-a9a482ae86fc

                掛載點

                    / 

                文件系統類型

                    xfs

                掛載選項

                    defaults

                轉儲頻率

                    0 ( 第一個 )

                自檢次序

                    0 ( 第二個 )

    

           要掛載的設備或偽文件系統:

                設備文件、 LABEL(LABEL="")、 UUID(UUID="")、偽文件系統名稱(proc,sysfs)

                掛載選項: defaults

                轉儲頻率: 0:不做備份

                  1:每天轉儲

                  2:每隔一天轉儲

                自檢次序: 0:不自檢

                  1:首先自檢;一般只有rootfs才用1

            #

            # /etc/fstab

            # Created by anaconda on Wed Jul 20 14:32:52 2016

            #

            # Accessible filesystems, by reference, are maintained under '/dev/disk'

            # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

            #

            UUID=fc4ece99-fdb9-4729-904b-a9a482ae86fc /                       xfs     defaults        0 0

            UUID=49da300e-4396-48c5-ac3d-73e77089ca37 /boot             xfs     defaults        0 0

            UUID=19c99cb5-4c12-48aa-a667-fa8885ba583c /testdir            xfs     defaults        0 0

            UUID=28eb87fb-bf7c-4eaf-bacb-b198a74a47e3 swap             swap    defaults        0 0

            UUID=2898f9f4-b33d-4d8c-8d51-84c9823f198e /testdir2         ext3    defaults        0 0

    

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

(0)
hunterhunter
上一篇 2016-09-01
下一篇 2016-09-01

相關推薦

  • VimTutor(上)

    柚子翻譯,如有理解錯誤或翻譯錯誤,請指正! VimTutor Vim是一款強大的文本編輯器,擁有多命令的特性,tutor解釋了其中大多數命令。 tutor是為了描述足夠多的Vim命令幫助你輕松使用Vim而被制作的,使Vim能成為一個可完成你所有工作意圖的編輯器。 完成tutor的內容大概需要25-30分鐘,所完成時間取決于你通過時間積累的經驗。 注意: 1.…

    Linux干貨 2015-10-18
  • 基礎命令

    1,對于Linux的實驗環境我們要用到虛擬機,往往每次上線都要登錄,這時候如果把用戶設為自動登錄就會方便許多,接下來就介紹下設置虛擬機的自動登錄 , /etc/gdm/custom.conf 這個就是設置自動登錄的一個配置文件,我們先來使用nano打開這個文件,如下 # GDM configuration storage 這是GDM的一個配置存儲 [daem…

    2017-11-19
  • 第十一周作業

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 發送者:     1)使用單向加密算法提取要發送文件的特征碼;     2)使用自己的私鑰加密特征碼并附加在數據后面;     3)生成用于對稱加密的臨時密碼;     4)用此臨時密鑰加密數據和已經使用私鑰加密后的特征碼; &nb…

    2017-03-20
  • shell腳本2

    使用read命令來接受輸入 使用read來把輸入值分配給一個或多個shell變量 read后面跟變量,回車輸入內容,就可以把輸入的內容賦給變量 -p指定要顯示的提示 -s 靜默輸入,一般用于密碼 輸入的內容不顯示 -n N 指定輸入的字符長度N 當輸入的內容達到了5個字符會直接結束輸入 -d‘字符’ 輸入結束符 把!作為了結束符,在輸入內容時,當輸入!會直接…

    2017-08-11
  • CentOS上配置https服務

    在CentOS6.9(http2.2)配置https   創建前準備:       安裝opensssl包  和 http2.2 1、在主機(192.168.109.100)創建私有CA   (1)獲取私鑰       …

    2017-06-04
  • ldirectord 結合ipvsadm 配置nat,dr模型

    ldirectord 結合ipvsadm 配置nat,dr模型  一、nat模型 1、 drector # wget ftp://172.16.0.1/pub/Sources/7.x86_64/crmsh/ldirectord-3.9.6-0rc1.1.1.x86_64.rpm # yum -y install nginx (同…

    Linux干貨 2016-11-24

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-01 13:04

    總結的很詳細,贊一個,但要多進行操作哦

欧美性久久久久