文件系統和掛載

                                             文件系統和掛載
node

-----------------------------------------------------------------------------------------------------------------------------------------------centos

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

  一切皆文件:open(), read(), write(), close()安全

 

設備類型:網絡

  塊設備:block,存取單位「塊」,磁盤數據結構

  字符設備:char,存取單位「字符」,鍵盤oracle

  設備文件:關聯至一個設備驅動程序,進而可以跟與之對應硬件設備進行通訊dom

  設備號碼:異步

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

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

 

硬盤接口類型

並行:

  IDE:133MB/s

  SCSI:640MB/s

串口:

  SATA:6Gbps

  SAS:6Gbps

  USB:480MB/s

rpm: rotations

     per minute

 

機械硬盤(HDD):Hard Disk Drive,便是傳統普通硬盤,主要由:盤片,磁頭,盤片轉軸及控制電機,磁頭控制器,數據轉換器,接口,緩存等幾個部分組成。機械硬盤中全部的盤片都裝在一個旋轉軸上,每張盤片之間是平行的,在每一個盤片的存儲面上有一個磁頭,磁頭與盤片之間的距離比頭髮絲的直徑還小,全部的磁頭聯在一個磁頭控制器上,由磁頭控制器負責各個磁頭的運動。磁頭可沿盤片的半徑方向運動,加上盤片每分鐘幾千轉的高速旋轉,磁頭就能夠定位在盤片的指定位置上進行數據的讀寫操做。數據經過磁頭由電磁流來改變極性方式被電磁流寫到磁盤上,也能夠經過相反方式讀取。硬盤爲精密設備,進入硬盤的空氣必須過濾

 

固態硬盤(SSD):Solid State Drive,用固態電子存儲芯片陣列而製成的硬盤,由控制單元和存儲單元(FLASH芯片、DRAM芯片)組成。固態硬盤在接口的規範和定義、功能及使用方法上與普通硬盤的徹底相同,在產品外形和尺寸上也與普通硬盤一致

 

相較於HDD,SSD在防震抗摔、傳輸速率、功耗、重量、噪音上有明顯優點,SSD傳輸速率性能是HDD的2倍

相較於SSD,HDD在價格、容量、使用壽命上佔有絕對優點

硬盤有價,數據無價,目前SSD不能徹底取代HHD

 

設備文件

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

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

  虛擬磁盤:/dev/vd

  不一樣磁盤標識:a-z,aa,ab…,/dev/sda, /dev/sdb, ...

  同一設備上的不一樣分區:1,2, ...,/dev/sda1, /dev/sda5

硬盤存儲術語

  head:磁頭

  track:磁道

  cylinder: 柱面

  sector: 扇區,512bytes

 

機械硬盤結構

image.png image.png

image.png

固態硬盤(SSD)和機械硬盤(HDD)

image.png


 

硬盤存儲術語


 image.png

區位記錄磁盤扇區結構


 image.png

CHS和LBA

  CHS

  採用24bit位尋址

  其中前10位表示cylinder,中間8位表示head,後面6位表示sector

  最大尋址空間8GB

  LBA(logical block addressing)

  LBA是一個整數,經過轉換成CHS格式完成磁盤具體尋址

  LBA採用48個bit位尋址

  最大尋址空間128PB

  因爲CHS尋址方式的尋址空間在大概8GB之內,因此在磁盤容量小於大概8GB時,可使用CHS尋址方式或是LBA尋址方式;在磁盤容量大於大概8GB時,則只能使用LBA尋址方式

 

使用分區空間

  設備識別

  設備分區

  建立文件系統

  標記文件系統

  在/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分區結構

硬盤主引導記錄MBR由4個部分組成;

主引導程序(偏移地址0000H--0088H),它負責從活動分區中裝載,並運行系統引導程序;

出錯信息數據區,偏移地址0089H--00E1H爲出錯信息,00E2H--01BDH全爲0字節;

分區表(DPT,Disk Partition Table)含4個分區項,偏移地址01BEH--01FDH,每一個分區表項長16個字節,共64字節爲分區項一、分區項二、分區項三、分區項4;

結束標誌字,偏移地址01FE--01FF的2個字節值爲結束標誌55AA。

 

GPT分區

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

使用128位UUID(Universally Unique Identifier) 表示磁盤和分區GPT分區表自動備份在頭和尾兩份,並有CRC校驗位

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

 

管理分區

列出塊設備

  lsblk

建立分區使用:

  fdisk建立MBR分區

  gdisk建立GPT分區

  parted高級分區操做

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

 

parted命令

parted的操做都是實時生效的,當心使用

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

      parted /dev/sdbmklabelgpt|msdos

      parted /dev/sdbprint

      parted /dev/sdbmkpartprimary 1 200 (默認M)

      parted /dev/sdbrm1

      parted –l 列出分區信息

 

 

分區工具fdisk和gdisk

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

fdisk-l [-u] [device...] 查看分區

fdisk/dev/sdb管理分區

子命令:

  p 分區列表

  t 更改分區類型

  n 建立新分區

  d 刪除分區

  v 校驗分區

  u 轉換單位

  w 保存並退出

  q 不保存並退出

 

同步分區表

查看內核是否已經識別新的分區:cat /proc/partations

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

   新增分區用

   partx-a /dev/DEVICE

   kpartx-a /dev/DEVICE -f: force

   刪除分區用

   partx-d --nrM-N /dev/DEVICE

CentOS 5,7: 使用partprobe

   partprobe[/dev/DEVICE]

 

文件系統

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

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

支持的文件系統:/lib/modules/`uname–r`/kernel/fs;

各類文件系統:https://en.wikipedia.org/wiki/Comparison_of_file_systems

 

Linux文件系統:

  ext2(Extended file system) :適用於那些分區容量不是太大,更新也不頻繁的狀況,例如/boot 分區。

  ext3:是ext2 的改進版本,其支持日誌功能,可以幫助系統從非正常關機致使的異常中恢復。它一般被用做通用的文件系統

  ext4:是ext 文件系統的最新版。提供了不少新的特性,包括納秒級時間戳、建立和使用巨型文件(16TB)、最大1EB的文件系統,以及速度的提高

  xfs:SGI,支持最大8EB的文件系統

  btrfs(Oracle), reiserfs, jfs(AIX), swap

光盤:iso9660

Windows:FAT32, exFAT,NTFS

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

網絡文件系統:NFS, CIFS

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

分佈式文件系統:fastdfs,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

 

建立文件系統

mkfs命令:

(1) mkfs.FS_TYPE/dev/DEVICE

         ext4

         xfs

         btrfs

         vfat

(2) mkfs-t FS_TYPE /dev/DEVICE

        -L 'LABEL': 設定卷標

 

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: 調整文件系統的默認掛載選項,–o ^acl

    -U UUID: 修改UUID號

dumpe2fs

    塊分組管理,32768塊

    -h:查看超級塊信息,不顯示分組信息

 

文件系統檢測和修復

常發生於死機或者非正常關機以後

掛載爲文件系統標記爲「no clean」

注意:必定不要在掛載狀態下修復

fsck: File System Check

    fsck.FS_TYPE

    fsck-t FS_TYPE

    -p: 自動修復錯誤

    -r: 交互式修復錯誤

    FS_TYPE必定要與分區上已經文件類型相同

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

    -y:自動回答爲yes

    -f:強制修復

 

掛載mount

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

卸載:爲解除此關聯關係的過程

把設備關聯掛載點:mount Point

    mount

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

    umount

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

掛載點目錄通常爲空

 

掛載方法: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經常使用命令選項

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

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

     atime/noatime:包含目錄和文件

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

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

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

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

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

     remount:從新掛載

     ro:只讀rw:讀寫

     user/nouser:是否容許普通用戶掛載此設備,/etc/fstab使用

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

     loop: 使用loop設備

defaults:至關於rw, suid, dev, exec, auto, nouser, async

 

卸載命令

查看掛載狀況

    findmntMOUNT_POINT|device

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

    lsofMOUNT_POINT

    fuser -v MOUNT_POINT

終止全部在正訪問指定的文件系統的進程

    fuser -km MOUNT_POINT

卸載

    umountDEVICE

    umountMOUNT_POINT

 

掛載點和/etc/fstab

配置文件系統體系

被mount、fsck和其它程序使用

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

能夠在設備欄使用文件系統卷標

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

 

文件掛載配置文件

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

1、要掛載的設備或僞文件系統

     設備文件

     LABEL:LABEL=""

     UUID:UUID=""

     僞文件系統名稱:proc, sysfs

2、掛載點

3、文件系統類型:ext4,xfs,nfs,none

4、掛載選項:defaults,acl,bind

5、轉儲頻率:0:不作備份1:天天轉儲2:每隔一天轉儲

6、fsck檢查的文件系統的順序:容許的數字是0, 1, 和2

           0:不自檢

           1:首先自檢;通常只有rootfs才用

           2:非rootfs使用

 

處理交換文件和分區

  交換分區是系統RAM的補充

  基本設置包括:

    建立交換分區或者文件

    使用mkswap寫入特殊簽名

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

    使用swapon-a 激活交換空間

 

掛載交換分區

  啓用:swapon

   swapon[OPTION]... [DEVICE]

      -a:激活全部的交換分區

      -p PRIORITY:指定優先級

      /etc/fstab:pri=value

  禁用:swapoff[OPTION]... [DEVICE]

 

SWAP的優先級

  能夠指定swap分區0到32767的優先級,值越大優先級越高

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

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

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

 

移動介質

  掛載意味着使外來的文件系統看起來如同是主目錄樹的一部分

  訪問前、介質必須被掛載

  摘除時,介質必須被卸載

  按照默認設置,非根用戶只能掛載某些設備(光盤、DVD、軟盤、USB等等)

  掛載點一般在/media 或/mnt下

 

使用光盤

  在圖形環境下自動啓動掛載/run/media/<user>/<label>

  不然就必須被手工掛載

      mount /dev/cdrom/mnt/

  eject命令卸載或彈出磁盤

  建立ISO文件

      cp/dev/cdrom/root/centos7.iso

      mkisofs -r -o /root/etc.iso /etc

  刻錄光盤

      wodim–v –eject centos.iso

 

掛載USB介質

  查看USB設備是否識別

    lsusb

  被內核探測爲SCSI設備

    /dev/sdaX、/dev/sdbX、或相似的設備文件

  在圖形環境中自動掛載

    圖標在[計算機]窗口中建立

    掛載在/run/media/<user>/<label>

  手動掛載

    mount /dev/sdb1 /mnt

 

常見工具

  文件系統空間佔用等信息的查看工具:

      df[OPTION]... [FILE]...

      -H 以1000爲單位

      -T 文件系統類型

      -h: human-readable

      -i:inodesinstead of blocks

      -P: 以Posix兼容的格式輸出

  查看某目錄整體空間佔用狀態:

      du [OPTION]... DIR

      -h: human-readable

      -s: summary --max-depth

 

工具dd

  dd命令:convert and copy a file

  用法:

      dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

      bs=#:block size, 複製單元大小

      count=#:複製多少個bs

  of=file寫到所命名的文件而不是到標準輸出

  if=file從所命名文件讀取而不是從標準輸入

  bs=size指定塊大小(既是是ibs也是obs)

  ibs=size一次讀size個byte

  obs=size 一次寫size個byte

  cbs=size 一次轉化size個byte

  skip=blocks從開頭忽略blocks個ibs大小的塊

  seek=blocks從開頭忽略blocks個obs大小的塊

  count=n只拷貝n個記錄

 

  conv=conversion[,conversion...] 用指定的參數轉換文件

  轉換參數:

  ascii轉換EBCDIC 爲ASCII

  ebcdic轉換ASCII 爲EBCDIC

  lcase把大寫字符轉換爲小寫字符

  ucase把小寫字符轉換爲大寫字符

  nocreat不建立輸出文件

  noerror出錯時不中止

  notrunc不截短輸出文件

  sync 把每一個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊

 

  備份MBR:

      dd if=/dev/sdaof=/tmp/mbr.bakbs=512 count=1

  破壞MBR中的bootloader:

      dd if=/dev/zero of=/dev/sdabs=64 count=1 seek=446

  有一個大與2K的二進制文件fileA。如今想從第64個字節位置開始讀取,須要讀取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到  第32個字節開始的位置,替換128Bytes,實現以下:

      dd if=fileAof=fileBbs=1 count=128 skip=63 seek=31 conv=notrunc

 

  備份:

   dd if=/dev/sdxof=/dev/sdy

   將本地的/dev/sdx整盤備份到/dev/sdy

   dd if=/dev/sdxof=/path/to/image

   將/dev/sdx全盤數據備份到指定路徑的image文件

   dd if=/dev/sdx| gzip>/path/to/image.gz

   備份/dev/sdx全盤數據,並利用gzip壓縮,保存到指定路徑

  恢復:

   dd if=/path/to/image of=/dev/sdx

   將備份文件恢復到指定盤

   gzip-dc /path/to/image.gz | ddof=/dev/sdx

   將壓縮的備份文件恢復到指定盤

 

  拷貝內存資料到硬盤

   dd if=/dev/mem of=/root/mem.binbs=1024

    將內存裏的數據拷貝到root目錄下的mem.bin文件

  從光盤拷貝iso鏡像

   dd if=/dev/cdromof=/root/cd.iso

    拷貝光盤數據到root文件夾下,並保存爲cd.iso文件

  銷燬磁盤數據

   dd if=/dev/urandomof=/dev/sda1

    利用隨機的數據填充硬盤,在某些必要的場合能夠用來銷燬數據,執行此操做之後,/dev/sda1將沒法掛載,建立和拷貝操做沒法執行

  獲得最恰當的block size

   dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file

   dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file

   dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file

   經過比較dd指令輸出中命令的執行時間,便可肯定系統最佳的block size大小

  測試硬盤寫速度

   dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000

  測試硬盤讀速度

   dd if=/root/1Gb.file bs=64k | dd of=/dev/null

  修復硬盤

   dd if=/dev/sda of=/dev/sda

      當硬盤較長時間(好比1,2年)放置不使用後,磁盤上會產生消磁點。當磁頭讀到這些區域時會遇到困難,並可能致使I/O錯誤。當這種狀況影      響到硬盤的第一個扇區時,可能致使硬盤報廢。上邊的命令有可能使這些數據起死回生,且這個過程是安全高效的

相關文章
相關標籤/搜索