Linux磁盤與文件系統管理

Linux磁盤管理


硬盤的物理組成

柱面

硬盤與讀存數據相關的部件:圓形硬盤片(一或多個)、磁頭、機械臂。 硬盤片上有磁道,多個硬盤片上的同一磁道形成柱面,這個柱面就是分區時形成的最小單位,windows的C盤(系統盤)分區就是在最外層的一堆柱面上。

Linux磁盤與文件系統管理

扇區

硬盤上的最小存儲單位叫扇區,每個扇區儲存512字節。在讀取數據的時候,硬盤會轉動,利用機械手臂將磁頭移動到正確的數據位置,然后將數據順序讀出。

Linux磁盤與文件系統管理

硬盤的類型/dev/sda VS /dev/hda

HDA是使用了ide接口的硬盤的名稱.SDA是sata接口的硬盤的名稱

硬盤接口

我們通過硬盤接口來區分不同的硬盤,不同廠商生產的硬盤都要通過sata接口接入到主板的sata控制器上。使用SATA(Serial ATA)口的硬盤又叫串口硬盤,是未來和現在PC機硬盤的主流趨勢。 硬盤接口有: 并口:(數據傳輸有n根線并行傳輸) IDE(電子集成驅動器):133M/S SCSI(小型計算機系統接口):640M/S 串口:(數據傳輸有一根線按順序傳輸) SATA(串口硬盤接口):6Gbps SAS(串行連接SCSI):6Gbps USB:480MB/s

分區和目錄關系

  • 任何一個分區都必須掛載到某個目錄上。

  • 目錄是邏輯上的區分。分區是物理上的區分。

  • 磁盤Linux分區都必須掛載到目錄樹中的某個具體的目錄上才能進行讀寫操作。

  • 根目錄是所有Linux的文件和目錄所在的地方,需要掛載上一個磁盤分區。 Linux磁盤與文件系統管理

分區

為什么要分區

  • 可以把不同資料,分別放入不同分區中管理,降低風險。

  • 大硬盤搜索范圍大,效率低

  • 磁盤配合只能對分區做設定

  • /home /var /usr/local經常是單獨分區,因為經常會操作,容易產生碎片

分區的要點:

記錄每一個分區的起始和結束柱面。分區的起始和結束柱面的數據放在主導區(Master Boot Recorder,MBR)。MBR不屬于任何分區,計算機啟動后最先讀取主導區,這個區域記錄硬盤的分區信息。MBR的限制是不能存儲所有的分區和引導程序的信息,最多提供4個分區的記憶。

MBR處在0sector,分為三個部分:
    446bytes:boot loader程序,引導啟動操作系統程序
    64bytes:FAT文件系統分區表,每16個字節表示一個分區
    2bytes:MBR區域的有效性標識,55AA表示為有效

Linux磁盤與文件系統管理

分區管理fdisk命令

分區類別:

Linux磁盤與文件系統管理

查看:fdisk -l [DEVICE] 創建分區:fdisk [DEVICE] 查看內核是否識別新的分區:cat /proc/partitions 對于已經有分區處于使用的磁盤來說,新建分區要讓內核重讀分區:

centos5之上:
    #partprobe [DEVICE]
centos 6和7:
    #part -a [DEVICE]
    #kpartx -af [DEVICE]

n:新建分區

p:顯示分區表

d:刪除分區

b:設置卷標

w:寫入分區表

t:改變分區文件系統類型

l:顯示fdisk所支持的文件系統代碼

q:退出

文件系統管理

文件系統分類

常用的Linux文件系統:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap

交換文件系統:swap

網絡文件系統:nfs,smbfs

光盤文件系統:isso9660

文件系統的物理結構

Linux磁盤與文件系統管理

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

文件系統大小
空閑塊數目
空閑塊索引表
空閑i節點數
空閑i節點索引表
……

文件存儲結構

Linux正統的文件系統(如ext2、ext3)一個文件由目錄項、inode和數據塊組成。

  • 目錄項:包括文件名和inode節點號。

  • Inode:又稱文件索引節點,是文件基本信息的存放地和數據塊指針存放地。

  • 數據塊:文件的具體內容存放地。 

  • Linux磁盤與文件系統管理

文件系統管理

文件系統管理工具

  1. 創建文件系統的工具

    mkfs
    mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat, ...
  2. 檢測及修復文件系統的工具

    fsck
    fsck.ext2, fsck.ext3, ...
  3. 查看其屬性的工具

    dumpe2fs, tune2fs
  4. 調整文件系統特性:

    tune2fs

ext系列文件系統的管理工具:

  1. 創建文件系統的工具

    mkfs
    mkfs.ext2, mkfs.ext3, mkfs.ext4
    mkfs -t ext4=mkfs.ext4
  2. ext系列文件系統專用管理工具

    mke2fs [OPTIONS]  device
    -t {ext2|ext3|ext4}:指明要創建的文件系統類型
        mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4
    -b {1024|2048|4096}:指明文件系統的塊大?。?
    -L LABEL:指明卷標;
    -j:創建有日志功能的文件系統ext3;
        mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 = mkfs.ext3
    -i #:bytes-per-inode,指明inode與字節的比率;即每多少字節創建一個Indode; 
    -N #:直接指明要給此文件系統創建的inode的數量;
    -m #:指定預留的空間,百分比;
    
    -O [^]FEATURE:以指定的特性創建目標文件系統;

    e2label命令:卷標的查看與設定
        查看:e2label device
        設定:e2label device LABEL

    tune2fs命令:查看或修改ext系列文件系統的某些屬性 
        adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems;
        注意:塊大小創建后不可修改;

    tune2fs [OPTIONS] device
    -l:查看超級塊的內容;

    修改指定文件系統的屬性:
    -j:ext2 --> ext3;
    -L LABEL:修改卷標;
    -m #:調整預留空間百分比;
    -O [^]FEATHER:開啟或關閉某種特性;

    -o [^]mount_options:開啟或關閉某種默認掛載選項
        acl
        ^acl

dumpe2fs命令:顯示ext系列文件系統的屬性信息
            dumpe2fs  [-h] device

e2fsck : check a Linux ext2/ext3/ext4 file system
    e2fsck [OPTIONS]  device
        -y:對所有問題自動回答為yes; 
        -f:即使文件系統處于clean狀態,也要強制進行檢測;

fsck:check and repair a Linux file system
    -t fstype:指明文件系統類型;
            fsck -t ext4 = fsck.ext4
    -a:無須交互而自動修復所有錯誤;
    -r:交互式修復;

blkid命令:
    blkid device
    blkid  -L LABEL:根據LABEL定位設備
    blkid  -U  UUID:根據UUID定位設備

swap文件系統:

Linux上的交換分區必須使用獨立的文件系統;
    且文件系統的System ID必須為82;

創建swap設備:mkswap命令
    mkswap [OPTIONS]  device
        -L LABEL:指明卷標
        -f:強制


啟用:swapon
        swapon  [OPTION]  [DEVICE]
            -a:定義在/etc/fstab文件中的所有swap設備;

禁用:swapoff
        swapoff DEVICE

文件系統的使用:

文件系統的使用首先要掛載:mount命令和umount命令。根文件系統這外的其它文件系統要想能夠被訪問,都必須通過“關聯”至根文件系統上的某個目錄來實現,此關聯操作即為“掛載”;此目錄即為“掛載點”

掛載點:mount_point,用于作為另一個文件系統的訪問入口;

    (1) 事先存在;
    (2) 應該使用未被或不會被其它進程使用到的目錄;
    (3) 掛載點下原有的文件將會被隱藏;

mount命令:

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

命令選項:
-r:readonly,只讀掛載; 
-w:read and write, 讀寫掛載; 
-n:默認情況下,設備掛載或卸載的操作會同步更新至/etc/mtab文件中;-n用于禁止此特性;

-t vfstype:指明要掛載的設備上的文件系統的類型;多數情況下可省略,此時mount會通過blkid來判斷要掛載的設備的文件系統類型;

-L LABEL:掛載時以卷標的方式指明設備;
        mount -L LABEL dir

-U UUID:掛載時以UUID的方式指明設備;
        mount -U UUID dir

-o options:掛載選項
    sync/async:同步/異步操作;
    atime/noatime:文件或目錄在被訪問時是否更新其訪問時間戳;
    diratime/nodiratime:目錄在被訪問時是否更新其訪問時間戳;
    remount:重新掛載; 
    acl:支持使用facl功能;
            # mount -o acl  device dir 
            # tune2fs  -o  acl  device 

    ro:只讀 
    rw:讀寫 
    dev/nodev:此設備上是否允許創建設備文件;
    exec/noexec:是否允許運行此設備上的程序文件;
    auto/noauto:
    user/nouser:是否允許普通用戶掛載此文件系統;
    suid/nosuid:是否允許程序文件上的suid和sgid特殊權限生效;                  

    defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.

查看當前系統所有已掛載的設備:

# mount 
# cat  /etc/mtab
# cat  /proc/mounts

umount命令:

umount  device|dir

注意:正在被進程訪問到的掛載點無法被卸載;
查看被哪個或哪些進程所戰用:
# lsof  MOUNT_POINT
# fuser -v  MOUNT_POINT

終止所有正在訪問某掛載點的進程:
# fuser  -km  MOUNT_POINT

設定除根文件系統以外的其它文件系統能夠開機時自動掛載:/etc/fstab文件,該文件的語法格式如下:

每行定義一個要掛載的文件系統及相關屬性:

    6個字段:
    (1) 要掛載的設備:
        設備文件;
        LABEL
        UUID
        偽文件系統:如sysfs, proc, tmpfs等
    (2) 掛載點 
        swap類型的設備的掛載點為swap;
    (3) 文件系統類型;
    (4) 掛載選項
        defaults:使用默認掛載選項;
    如果要同時指明多個掛載選項,彼此間以事情分隔;
        defaults,acl,noatime,noexec
    (5) 轉儲頻率
        0:從不備份;
        1:每天備份;
        2:每隔一天備份;
    (6) 自檢次序
        0:不自檢;
        1:首先自檢,通常只能是根文件系統可用1;
        2:次級自檢
        ...

    mount  -a:可自動掛載定義在此文件中的所支持自動掛載的設備;
文件系統掛載使用:掛載光盤設備:
    光盤設備文件:
        IDE: /dev/hdc
        SATA: /dev/sr0

        符號鏈接文件:
            /dev/cdrom
            /dev/cdrw
            /dev/dvd
            /dev/dvdrw

    mount -r /dev/cdrom /media/cdrom
    umount /dev/cdrom

dd命令:convert and copy a file
    用法:
        dd if=/PATH/FROM/SRC of=/PATH/TO/DEST 
            bs=#:block size, 復制單元大小;
            count=#:復制多少個bs;

        磁盤拷貝:
            dd if=/dev/sda of=/dev/sdb

        備份MBR
            dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

        破壞MBR中的bootloader:
            dd if=/dev/zero of=/dev/sda bs=256 count=1

    兩個特殊設備:
        /dev/null: 數據黑洞;
        /dev/zero:吐零機;

掛載點和/etc/fstab

作用:

配置文件系統體系

被mount、fsck和其他程序使用

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

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

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

實例演示:

增加兩個邏輯分區,一個交換分區,并配置到/etc/fstab下

1.查看分區情況:fdisk -l Linux磁盤與文件系統管理2.建立兩個邏輯分區,過程省略

3.建立交換分區

查看swap大?。╢ree -k|-m|-G) Linux磁盤與文件系統管理

創建一個swap分區 Linux磁盤與文件系統管理

這是創建了1個一個擴展分區,三個邏輯分區,現在將sda7轉化為swap分區 Linux磁盤與文件系統管理

創建完了之后,我們用mkswap命令格式化我們的新分區。

Linux磁盤與文件系統管理

然后我們都做好分區用blkid后看一下 Linux磁盤與文件系統管理接著配置掛載 Linux磁盤與文件系統管理開機重啟,mount -a之后,df -h,可以看到掛載成功 Linux磁盤與文件系統管理

筆者,再配置swap分區的時候出了一點問題,我在創建系統的時候 建立了一個swap分區 后來 我又建立了一個swap分區 并且配置fstab文件,配置沒有顯示我掛載到指定目錄,然后我用同樣的方法 測試了一下 普通分區 配置fstab文件,成功了 ,開機啟動看到了掛載在我指定的目錄下,現在我把 原來配置的swap 分區去掉 比較前后兩次的swap 總數,發現不一樣 ,論證了 如果掛載兩個swap分區 會合并在一起。得出結論是,最好只要一個swap。

Linux磁盤與文件系統管理

操作練習

1、創建一個20G的文件系統,塊大小為2048,文件系統ext4,卷標為TEST,要求此分區開機后自動掛載至/testing目錄,且默認有acl掛載選項;

        (1) 創建20G分區;
        (2) 格式化:
            mke2fs -t ext4 -b 2048 -L 'TEST' /dev/DEVICE
        (3) 編輯/etc/fstab文件
        LABEL='TEST'    /testing    ext4    defaults,acl    0 0

2、創建一個5G的文件系統,卷標HUGE,要求此分區開機自動掛載至/mogdata目錄,文件系統類型為ext3;

3、寫一個腳本,完成如下功能: (1) 列出當前系統識別到的所有磁盤設備; (2) 如磁盤數量為1,則顯示其空間使用信息;否則,則顯示最后一個磁盤上的空間使用信息;

if [ $disks -eq 1 ]; then 
    fdisk -l /dev/[hs]da
else 
    fdisk -l $(fdisk -l /dev/[sh]d[a-z] | grep -o "^Disk /dev/[sh]d[a-]" | tail -1 | cut -d' ' -f2)
fi

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

(0)
N24_yeziN24_yezi
上一篇 2016-11-22 13:03
下一篇 2016-11-22 13:14

相關推薦

  • week2

    一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 常用工具cp mv rm cat tac head tail more less stat cp   cp SRC…DEST A. 如果SRC是文件: a. 如果目標不存在:新建DEST,并將SRC中的內容填充至DEST中。 b. 如果目標存在: (1). 如…

    Linux干貨 2016-11-06
  • 馬哥教育網絡班25期+第一周課程練習

    一、計算機的組成及功能     現代計算機的結構:馮諾依曼結構體系(儲存程序,順序執行),由20世紀30年代中期,美國科學家馮·諾依曼提出     馮.諾依曼結構處理器具有以下幾個特點:     1:必須有一個存儲器;2:必須有一個控制器;3:必須有一個運算器…

    Linux干貨 2016-11-28
  • Centos6基于虛擬主機的Lamp配置bbs、Blog、PhpMyAdmin應用程序

    Centos6實現基于虛擬主機的各應用程序搭建: 一、配置三個基于名稱的虛擬主機;       虛擬主機一、discuzX       虛擬主機二、wordpress       虛擬主機三…

    Linux干貨 2016-10-09
  • 認識DNS

    DNS全稱是Domain Name System的簡稱,即域名系統。因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP/TCP協議之上,使用端口號53。 認識DNS 安裝 創建一臺DN…

    Linux干貨 2016-12-07
  • tcpdump輸出詳解

    在這里不得不再吐槽下國內整個IT粗糙浮躁,度娘下來的中文文檔幾盡抄襲~google下來的文檔英文文檔質量遠高于國內中文文檔.用ie或沒有安裝插件的瀏覽器訪問,不然可能會有其它訪問請求數據干擾分析 IP數據包結構 TCP數據包結構 // tcpdump需root權限 # tcpdump -x -i eth1 i…

    Linux干貨 2015-04-15
  • inode概念總結

    一、inode  inode是類UNIX系統上文件系統中的一種數據結構。數據在磁盤上存儲是按扇區存放的,幾個扇區組成一個塊(block),操作系統為高效讀取磁盤上的數據,按block來讀取。而數據存放的block的地址就包含在inode里。 二、inode的存儲信息  每個inode保存一個文件系統對象(目錄,文件,管道,軟連接,sock…

    Linux干貨 2016-08-05

評論列表(1條)

  • luoweiro
    luoweiro 2016-12-01 00:02

    用自己的方式來理解知識,往往是最容易掌握的,加油。

欧美性久久久久