磁盤管理

一、磁盤結構


    設備文件

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

        一切皆文件:

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

        設備類型:

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

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

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

        設備號碼:

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

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

    硬盤接口類型

        并行:

            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:磁頭 

        track:磁道 63個扇區 (2^6-1)

        cylinder: 柱面

        secotr: 扇區, 512bytes

        CHS

        cylinder 柱面=track*head=512*63*256=8M

        track=512*63

    使用分區空間

        設備識別

        設備分區

        創建文件系統

        標記文件系統

        在/etc/fstab文件中創建條目

        掛載新的文件系統

二、分區類型


    磁盤分區

        為什么分區?

            優化I/O性能

            實現磁盤空間配額限制

            提高修復速度

            隔離系統和程序

            安裝多個OS

            采用不同文件系統

    分區

        兩種分區方式: MBR, GPT

        MBR: Master Boot Record, 1982年, 使用32位表示扇區數, 分區不超過2T

        如何分區:按柱面

        0磁道0扇區: 

            512bytes

            446bytes: boot loader

            64bytes:分區表

                16bytes: 標識一個分區

            2bytes: 55AA

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

    MBR分區結構

blob.png

    GPT分區

        GPT:GUID( Globals Unique Identifiers) partition table 支持128個分區,使用64位,支持8Z(512Byte/block ) 64Z (4096Byte/block)

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

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

            grub grub2,早期lilo。

    GPT分區結構

blob.png

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

    列出可用的磁盤設備

        圖形化磁盤管理功能工具:點擊“應用程序” ->“系統工具” ->“磁盤”或執行命令gnome-disks

blob.png

三、管理分區


    列出塊設備

        lsblk

        ls /dev/sd*

        內存中生效的磁盤。

    創建分區使用:

        fdisk 創建MBR分區,也支持GPT,對于一塊硬盤,最多只能管理15分區

        gdisk 創建GPT分區

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

    partprobe-重新設置內存中的內核分區表版本,有bug,在centos6里不好使。

    分區工具fdisk和gdisk

        fdisk /dev/sdb

        gfisk /dev/sdb 類fdisk 的GPT分區工具

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

        子命令:

            m 查看能使用的命令

            p 顯示分區列表

            t 更改分區類型

            L 查看更改類型

            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/DEVICE

        CentOS 5, 7: 使用partprobe

            partprobe [/dev/DEVICE]

    parted命令

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

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

            parted /dev/sdb mklabel gpt|msdos(mbr)

                指定分區結構

            parted /dev/sdb print

                查看有幾個分區

            parted /dev/sdb mkpart primary 1 200 (默認M)

                指定分區從1M到200M

            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

        lsmod:查看文件系統驅動。

        Linux的虛擬文件系統: VFS

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

    VFS

blob.png

    文件系統選擇

blob.png

    創建文件系統

        mkfs命令:

            (1) # mkfs.FS_TYPE /dev/DEVICE

                ext4

                xfs

                btrfs

                vfat

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

                -L 'LABEL': 設定卷標

    創建ext文件系統

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

            -t {ext2|ext3|ext4}

            -b {1024|2048|4096}

            -L 'LABEL'

            -j: 相當于 -t ext3

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

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

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

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

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

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

            -O ^FEATURE:關閉指定特性

    文件系統標簽

        指向設備的另一種方法

        與設備無關

        blkid:塊設備屬性信息查看

            blkid [OPTION]… [DEVICE]

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

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

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

            # e2label DEVICE [LABEL]

        findfs :查找分區

            findfs [options] LABEL=<label>

            findfs [options] UUID=<uuid>

    tune2fs

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

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

            -L 'LABEL':修改卷標

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

            -j: 將ext2升級為ext3

            -O: 文件系統屬性啟用或禁用, –O has_journal –O ^has_journals 刪除has_journal

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

            -U UUID: 修改UUID號

        dumpe2fs:

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

    超級塊和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:強制修復

五、掛載設備


    掛載mount

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

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

        把設備關聯掛載點: mount Point

            mount

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

            umount

        掛載點下原有文件在掛載完成后會被臨時隱藏

        掛載點目錄一般為空,一個設備可以掛載多個目錄,正在使用的掛載點不能卸載。

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

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

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

    mount常用命令選項

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

        -r: readonly,只讀掛載

        -w: read and write, 讀寫掛載

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

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

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

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

        -B, –bind: 綁定目錄到另一個目錄上

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

            cat /proc/mounts    比mount和cat /etc/mtab更全面。

        -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, nosuid, dev, exec, auto, nouser, async

    mknod拷貝設備

        mknod 新設備名 b 10 1 

    卸載命令

        查看掛載情況:

            #findmnt MOUNT_POINT

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

            #lsof MOUNT_POINT

            #fuser -v MOUNT_POINT

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

            # fuser -km MOUNT_POINT

        卸載:

            # umount DEVICE

            # umount MOUNT_POINT

    掛載點和/etc/fstab

        配置文件系統體系

        被mount、 fsck和其它程序使用

        系統重啟時保留文件系統體系

        可以在設備欄使用文件系統卷標

        使用mount -a 命令掛載/etc/fstab中的所有文件系統

    文件掛載配置文件

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

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

            掛載點

            文件系統類型

            掛載選項

            轉儲頻率

            自檢次序

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

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

        掛載選項: defaults

        轉儲頻率: 

            0:不做備份

            1:每天轉儲

            2:每隔一天轉儲

        自檢次序:

            0:不自檢

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

[root@localhost ~]# vim /etc/fstab 
UUID=d2697061-00b0-4be3-99fa-ee253ad61ac8       /mnt/sdb1   ext4    defaults 0 0 
[root@localhost ~]# mount -a
mount: mount point /mnt/sdb1 does not exist
[root@localhost ~]# mkdir /mnt/sdb1
[root@localhost ~]# mount -a
[root@localhost ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root  52403200 1585216  50817984   4% /
devtmpfs                   490216       0    490216   0% /dev
tmpfs                      500664       0    500664   0% /dev/shm
tmpfs                      500664    6912    493752   2% /run
tmpfs                      500664       0    500664   0% /sys/fs/cgroup
/dev/mapper/centos-home  49725724   32928  49692796   1% /home
/dev/sda1                  508588  127124    381464  25% /boot
tmpfs                      100136       0    100136   0% /run/user/0
/dev/sdb1                 1998672    6224   1871208   1% /mnt/sdb1

        /etc/fstab 設備名出錯,自檢非0,會導致開機無法啟動

            解決方法:mount -o remount,rw /

LABEL="/dev/sdb"        /mnt/sdb1       ext4    defaults 0 3

blob.png

blob.png

blob.png

    處理交換文件和分區

        交換分區是系統RAM的補充

        基本設置包括:

            創建交換分區或者文件

            使用mkswap寫入特殊簽名

            在/etc/fstab文件中添加適當的條目

            使用swapon -a 激活交換空間

         創建swap 

            fdisk t 82

        cat /proc/swaps查看交換分區

        可以用文件掛載目錄。

        

        

    掛載交換分區

        啟用: swapon

            swapon [OPTION]… [DEVICE]

                -a:激活所有的交換分區;

                -p PRIORITY:指定優先級

                /etc/fstab:pri=優先級

                    -s 查看swap分區

        禁用: swapoff [OPTION]… [DEVICE]

    SWAP的優先級

        用戶可以給某個swap指定一個0到32767的優先級

        如果用戶沒有指定,那么核心會自動給swap指定一個優先級,這個優先級從-1開始,每加入一個新的沒有用戶指定優先級的swap,會給這個優先級減一。

        先添加的swap的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶指定的優先級(是正數)永遠高于核心

        優化性能:分布存放,高性能磁盤存放

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

(0)
DYWDYW
上一篇 2016-09-01 17:26
下一篇 2016-09-01 18:47

相關推薦

  • 開班第一天,新獲得的技能

    新接觸命令 lscpu 顯示CPU信息 gedit 文件名 類似于記事本 ** 注意 這個命令適用于圖形界面。 cat /proc/partition 顯示分區信息 cat /proc/meminfo 顯示內存大小 cat /proc/swaps 顯示虛擬內存 cat …

    Linux干貨 2017-02-17
  • 第二周作業

    由于圖片粘貼復雜,請看鏈接。 http://note.youdao.com/noteshare?id=a78c3236bbf77232fcc3e2624a38ae12

    Linux干貨 2016-09-19
  • bash編程初體驗(一)

    bash編程初體驗(一) 認識bash編程 變量與賦值 算術與邏輯運算 條件測試與退出狀態 認識bash編程 Bash(GNU Bourne-Again Shell)是許多Linux發行版的默認Shell,我們要認識的bash中,就是在bash的環境下的一種編程。 眾所周知,程序=指令+數據,由此也決定了兩種不同的編程風格,過程過與對象式; 過程式:以指令為…

    Linux干貨 2016-08-15
  • 虛擬化介紹、以及kvm

    什么是虛擬化? 在計算機領域中虛擬化,和我們平時說的虛擬化并沒有什么兩樣,說白了就是一個虛擬出來的東西罷了,并不是真實存在的。 虛擬化的歷史 虛擬化早在20實際60年代末,由IBM開發被命名為vmm(Virtual Machine Monitor)虛擬機監視器的軟件,我們知道那時候工藝技術并不發達,電腦也不像現在這樣屬于每家每戶的標配,IBM為了解決電腦使用…

    2017-03-08
  • Linux基礎之sed流編輯器詳解

    之前介紹了三大文本編輯器的grep,這里介紹比grep功能更強的sed流編輯器 sed是什么? sed是Stream EDitor的縮寫,man中對sed的簡介為 sed – stream editor for filtering and transforming text 它的主要功能是對文本的過濾與替換。 sed的工作原理 sed的工作過程:…

    Linux干貨 2016-08-15
  • RAID簡介

    一,什么是raid? RAID(Redundant Arrays of Independent Disks)中文叫磁盤陣列。 簡單來講就是把很多的硬盤組織在一起來使用。        RAID技術分為幾種不同的等級,分別可以提供不同的速度,安全性和性價比。根據實際情況選擇適當的RAID級別可以滿足用戶對存儲系統可用性、…

    Linux干貨 2016-06-22
欧美性久久久久