Linux磁盤管理(一)

  磁盤,計算機最常見的存儲硬件設備。對Linux而言,其哲學思想之一就是一切皆文件,因此linux之上所有設備的操作都是通過文件接口來實現的,也就是說在訪問設備的時候就如同訪問一個文件一樣,因為他們使用的都是文件系統接口。

向磁盤中寫入數據的操作過程

  首先硬件設備在系統上會映射成一個一個文件,我們在對硬件中寫入數據就相當于在打開一個文件中去執行讀寫操作,對于程序而言會先open()一個文件,然后執行read()或者write()操作,最后關閉文件close()。

設備類型

塊設備:block,存取單位“塊”,如磁盤/dev/sda

字符設備:char,存取單位“字符”,如/dev/null(linux里面的黑洞設備,放什么進去都會消失)

wKioL1e_8_PhXUguAAAnQnvJKoc644.png

設備文件

每一個設備都有一個文件作為它的訪問入口,此文件我們稱之為設備文件;該文件關聯至一個設備驅動,進而能夠跟與之對應的硬件設備進行通信。

設備號碼

用來標識設備,不同類別的設備有不同的設備號,同一類別的設備有不同的設備或多個設備,因此就有主設備號和次設備號。

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

次設備號:minor numbei,標識同以類型下的不同設備

wKioL1e_-B_yh4m0AADXwqQj_5Y662.png

磁盤的接口類型:每一種的接口傳輸速率都是不同的

并口:數據傳輸有n根線并行傳輸的

    IDE:133MB/S

    SCSI:640MB/S

串口:數據傳輸有一根線按照順序傳輸

    SATA:6Gbps(第三代sata傳輸速度)

    SAS:6Gbps

    USB:480MB/s

磁盤設備的設備文件命令:

    IDE:/dev/hd

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

不同設備表示方法:在設備文件名后面追加一些字母a-z來表示

    /dev/sda,/dev/sdb,/dev/sdc

同一設備上的不同分區,采用數字遞增的方式

    /dev/sda1,/dev/sda2…

硬盤結構

wKioL1e___zBj__mAAT2nIjY2vY504.png

head:磁頭

track:磁道,是由廠商劃分好的

secotr: 扇區,每一個512bytes,固定角速度的設備,任意磁盤上的任意扇區,讀取的平均時間稱為平均尋道時間

cylinder: 柱面chs

磁盤分區

為什么要分區?

  優化I/O性能

  實現磁盤空間配額限制

  提高修復速度

  隔離系統和程序

  安裝多個OS

  采用不同文件系統

兩種分區方式:MBR,GPT

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

MBR使用legacy的引導方式啟動

如何分區?:按柱面

0磁道0扇區:512bytes

    446bytes: boot loader 系統引導

    64bytes:分區表,其中每16bytes:標識一個分區,可以有4個主分區,或者3個主分區1個擴展分區

     2bytes: 55AA,判斷有無分區

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

wKiom1fADnyxqkcRAAEmGDGByD8129.png

wKioL1fAEnWjZaEtAAFpNqcP5ac513.png

GPT:GUID(Globals Unique Identifiers)partition table

支持128個分區,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)

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

支持2TB以上的硬盤分區

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

wKiom1fAGQHBNLmMAAE0BXGzOGM593.jpg


分區管理

列出塊設備

lsblk

wKiom1fAGcbBCcmkAABhOEsmFfg229.png

創建分區使用:

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

    gdisk創建GPT分區

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

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

分區工具fdisk和gdisk

fdisk /dev/sd*

gfisk /dev/sd* 類fdisk 的GPT分區工具(gdisk命令參考fdisk,大體是一樣的)

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

fdisk子命令:

    p 分區列表

    t 更改分區類型

    n 創建新分區

    d 刪除分區

    w 保存并退出

    q 不保存并退出

示例:創建一個分區

輸入fdisk /dev/sdb對sdb磁盤進行分區,按m表示查看幫助信息

wKioL1fAKN3Djz0AAACfpt_m53Y596.png

分區前按p查看一下磁盤信息

wKioL1fAKN3BvxuvAABHskQTbIU795.png

按n,創建一個新的分區,按p,創建一個主分區,1表示主分區編號 ,+10G表示該分區為10G

wKiom1fAKN6w7lImAACIU1rk4ak220.png

創建然查看一下確認一下創建的磁盤信息

wKiom1fAKN6jkhMLAABQr1jgLzA143.png

最后按w,保存退出,如果不店保存退出的話,上面的操作是不會生效的,然后再輸入lsblk再確認

wKiom1fAKYnT2xktAABtce0hkqA312.png

同步分區表

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

   # cat /proc/partations

wKioL1fAKtHgJa_wAABKB_vHuss951.png

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

CentOS 6使用:

新增分區用

     partx -a /dev/DEVICE 

    kpartx -a /dev/DEVICE -f: force

CentOS 6新增分區同步示例:

wKioL1fALp-CmRdFAAC2EI4tHD4344.png

wKioL1fAM7PA1qFbAAB-vxJlLL4663.png

刪除分區用(CentOS 6用)

  partx-d –nr N-M /dev/DEVICE (N-M指分區的minor,如果要刪1-5的話就輸入1-5)

wKioL1fAMkbiDbiWAACq2zKIU7c129.png

CentOS 5,7: (CentOS5和7新增和刪除都一條命令即可,CentOS 6此命令有bug不能用)

使用partprobe 示例 partprobe [/dev/DEVICE]

此處因為上面分區已經同步完成,所以這里沒什么用,一般來說,只有舊硬盤同步的時候會報錯,新的硬盤一般報錯的機率比較少,所以舊的硬盤可能要同步多次才會顯示出來

wKiom1fALKCAH3LMAAAzpmRlxpA706.png

parted命令

parted的操作都是實時生效的,小心使用,建議不要使用,大家了解即可

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

    parted /dev/sdb mklabel gpt|msdos 此命令用于創建gpt或者msdos的分區

    parted /dev/sdb print 顯示/dev/sdb磁盤信息

    parted /dev/sdb mkpart primary 1 200 (默認M) 創建一個200M的分區

    parted /dev/sdb rm 1 刪除/dev/sdb序列號為1的分區

    parted -l 顯示所有分區

此命令不建議使用,所以這里就不做示例說明了,需要使用的話大家參考以上命令格式即可

文件系統

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

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

文件系統類型

Linux文件系統: :ext2(Extended file system), ext3, ext4, xfs(SGI), btrfs(Oracle)              reiserfs, jfs(AIX), swap(虛擬內存),VFS(虛擬化文件系統)

光盤: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

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

VFS作用:

  VFS的作用就是采用標準的Unix系統調用讀寫位于不同物理介質上的不同文件系統。VFS是一個可以讓open()、read()、write()等系統調用不用關心底層的存儲介質和文件系統類型就可以工作的粘合層。在古老的DOS操作系統中,要訪問本地文件系統之外的文件系統需要使用特殊的工具才能進行。而在Linux下,通過VFS,一個抽象的通用訪問接口屏蔽了底層文件系統和物理介質的差異性。

  每一種類型的文件系統代碼都隱藏了實現的細節。因此,對于VFS層和內核的其它部分而言,每一種類型的文件系統看起來都是一樣的。

創建文件系統

mkfs命令:(make file system)

 (1) # mkfs.FS_TYPE /dev/DEVICE  =mkfs -t FS_TYPE (FS-TYPE ext4、xfs、btrfs 等)

     示例:msfs.ext4 /dev/sda

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

    -L 'LABEL': 設定卷標

示例:將/dev/sda1的文件系統創建為ext4

wKioL1fCdsbg70izAACfac3_AkU935.png

注意:CentOS 7默認的文件系統是xfs,如果轉成ext4,有可能會造成文件系統破壞導致開不了機

創建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:關閉指定特性, 示例.關閉日志功能 mke2fs -O ^has_journal /dev/sdb1

示例:常用選項說明

wKiom1fCfUCzw90pAADuiqr_L5w579.png

文件系統標簽

指向設備的另一種方法,與設備無關

blkid:塊設備屬性信息查看

blkid [OPTION]… [DEVICE]

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

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

示例:

wKiom1fCg1ShD59wAACketusFP8696.png


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

# e2label DEVICE [LABEL] 

示例:

wKiom1fCg7KQpOOZAAAhn9xhOns279.png


findfs:查找分區

findfs[options] LABEL=<label>

findfs[options] UUID=<uuid>

wKiom1fChDexsF-IAAAdnAdM844900.png

tune2fs

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

-l:查看指定文件系統超級塊(superblock)信息

-L 'LABEL':修改卷標

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

-j: 將ext2升級為ext3

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

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

-U UUID: 修改UUID號,可以使用uuidgen命令獲取一個隨機的UUID

wKiom1fCh0PDtkeFAAEQvW2ae_Y736.pngwKiom1fCh2-AnoTcAABa2UL6P2o115.png

dumpe2fs [option] DEVICE:此命令相當于 tune2fs -l DEVICE

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

超級塊

什么是超級塊?

  超級塊(superblock)的作用是存儲文件系統的大小、有多少是空的和已經填滿的占多少,以及它們各自的總數和其他諸如此類的信息。要使用一個分區來進行數據訪問,那么第一個要訪問的就是超級塊。所以,如果超級塊壞了,那磁盤基本就沒救了。

  超級塊占用第一號物理塊,是文件系統的控制塊,超級塊包括:文件系統大小、空閑塊數目、空閑塊索引表、空閑inode節點數目、空閑inode節點索引表、封鎖標記等。超級塊是系統為文件分配存儲空間、回收存儲空間的依據。

  所以為了防止超級塊數據損壞,就需要對超級塊數據進行備份,以便于損壞時可以恢復。

超級快和inode_table關系圖

wKioL1fCiJXgfnTFAAI5RffCXPc959.png

什么是超級塊?

  超級塊(superblock)的作用是存儲文件系統的大小、有多少是空的和已經填滿的占多少,以及它們各自的總數和其他諸如此類的信息。要使用一個分區來進行數據訪問,那么第一個要訪問的就是超級塊。所以,如果超級塊壞了,那磁盤基本就沒救了。

  超級塊占用第一號物理塊,是文件系統的控制塊,超級塊包括:文件系統大小、空閑塊數目、空閑塊索引表、空閑inode節點數目、空閑inode節點索引表、封鎖標記等。超級塊是系統為文件分配存儲空間、回收存儲空間的依據。

  所以為了防止超級塊數據損壞,就需要對超級塊數據進行備份,以便于損壞時可以恢復。

文件系統檢測和修復

常發生于死機或者非正常關機之后(windows操作系統崩潰后系統也會開機自檢原理一樣)

掛載為文件系統標記為“dirty”

fsck: File System Check

  fsck.FS_TYPE [option] DEVICE

    -t FS_TYPE

    -a: 自動修復錯誤

    -r: 交互式修復錯誤

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

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

  -y:自動回答為yes

  -f:強制修復

示例:修復損壞的磁盤

wKiom1fClGLjx5e4AABHdSHxM3E088.png

wKiom1fClGOzqnXdAABtCsy31M0054.png

掛載mount

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

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

把設備關聯掛載點:mount DEVICE MOUNT_POINT

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

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

掛載點目錄一般為空

查看掛載情況:

  findmntMOUNT_POINT

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

  lsofMOUNT_POINT

  fuser -v MOUNT_POINT

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

  fuser -km MOUNT_POINT

卸載:

  umountDEVICE

  umountMOUNT_POINT

用mount命令掛載文件系統

掛載方法:mount DEVICE MOUNT_POINT

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

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

      cat /proc/mounts

mount [option]…[-t FSTYPE] [-o option] DEVICE MOUNT_POINT

  DEVICE:指明要掛載的設備;

   (1) 設備文件:例如/dev/sda5

   (2) 卷標:-L 'LABEL',例如-L 'MYDATA'

   (3) UUID, -U 'UUID':例如-U '0c50523c-43f1-45e7-85c0-a126711d406e'

   (4) 偽文件系統名稱:proc, sysfs, devtmpfs, configfs

固定掛載點MOUNT_POINT:/mnt /media

  掛載點需要具備以下兩點

    1.掛載點事先存在,并且使用空目錄

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

mount常用命令選項

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

  -r: readonly,只讀掛載

  -w: read and write, 讀寫掛載

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

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

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

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

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

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

    async:異步模式,內存更改時,不會馬上寫入磁盤,以節省IO資源

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

    atime/noatime:包含目錄和文件

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

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

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

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

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

    remount:重新掛載

    ro:只讀

    rw:讀寫

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

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

     注意:1、上述選項可多個同時使用,彼此之間使用逗號分隔。

       2、默認掛載選項:rw, dev, exec, auto, nouser, async

示例1:掛載/dev/sdb1到/mnt/sdb1目錄下面

wKiom1fCpEyCx08YAABNtNgQmvw618.png

示例2:取消/dev/sdb1的掛載

wKioL1fCpE2hkhinAABMpJZesoM798.png

示例3:重新掛載設備/dev/sdb1且為只讀

wKioL1fCpaig1XAhAAAhl-6Ufm8550.png

示例4:掛載目錄具有suid權限的目錄(此操作過于危險,請謹慎使用)

當掛載具有suid的目錄后,假如目錄下面有某些系統命令在該目錄下面,使用這些命令,可以直接查看到或修改到系統的文件,所以需要我們謹慎操作此命令。

wKioL1fCpxDjGtcBAABwZX7K1f8985.png

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

    cat /proc/mounts

wKioL1fCr06xTBajAAAaBCHIvqU276.png

原創文章,作者:~微風~,如若轉載,請注明出處:http://www.www58058.com/41864

(1)
~微風~~微風~
上一篇 2016-08-30
下一篇 2016-08-30

相關推薦

  • Linux中的文件查找和解壓縮

         Linux的文件查找 概述:      本章將主要介紹在Linux中怎樣查找文件和解壓縮。需要我們掌握的知識有:locate和find 命令的使用,以及如何使用壓縮和解壓縮工具。 一、Linux文件查找      在文件系統上常常需要根據文件的各種屬…

    Linux干貨 2016-09-01
  • Ubuntu 葵花寶典入門篇——要練此功,可能得自宮?

        此文章給初入ubuntu的小伙伴們寫一篇裝機篇和使用心得。第二期會給小伙伴介紹軟件安裝篇。如題目所說,烏班圖確實是葵花寶典,練好了天下無敵。只是如果要安裝UBUNTU系統,只是在虛擬機上跑跑是不夠的,你必須在實際的桌面環境和服務器環境上才能體會到它的運行方式,而桌面環境和服務器環境幾乎差不多。所以安裝桌面版可以更好的理解…

    Linux干貨 2017-03-26
  • 軟Raid

    軟RAID     一.概念 RAID是多個磁盤合成一個“陣列”來提供更好的性能、冗余、或者兩者都提供。 二.作用 提高IO能力: 磁盤并行讀寫 提高冗余來實現 :磁盤冗余來實現 三.實現方式 外接式磁盤陣列:通過擴展卡提供適配能力 內接式RAID:主板集成RAID控制器 軟件RAID:通過OS實現(今天的重點) 四.RAID級別 1. …

    2017-08-29
  • 馬哥教育網絡班21期-第二周課程作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 cp即copy的簡寫,我們可以用它來復制一些文件即將,源文件的數據流復制到目的文件中。和下面要講的rm,mv,一樣都是一些非?;A的命令。關于這個命令,我們有個小竅門,那就是根據 ls file這個命令是否執行成功來判斷file文件是否存在。 關于cp,我們有一些要點要注意: cp…

    Linux干貨 2016-07-07
  • Linux第二周學習博客作業

    對第二周學習的內容進行總結

    Linux干貨 2017-12-10
  • 馬哥教育網絡班第21期+第二周課程作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 命令 選項 解釋 cp -r 遞歸復制 copy -f 強行復制,若已存在則覆蓋 -i 交互式 -p 保留屬主屬組權限時間戳 -L(不加也可以,默認) (源文件為鏈接)復制指向連接的文件 -P (源文件為鏈接) 以鏈接的方式復制過來 -a 歸檔復制,常用備份 命令 選項 …

    Linux干貨 2016-07-17
欧美性久久久久