文件系統管理和掛載

磁盤結構

設備類型:

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

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

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

設備號碼:

    主設備號:major number,表示設備類型

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

硬盤接口類型

并行接口:

    IDE:133MB/s   B指的是字節,等于8位

    SCSI:640MB/s

串口:

    SATA:6Gbps   b指的是位

    SAS:6Gbps

    USB:480MB/s

設備文件

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

IDE:/dev/hd

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

    不同設備:a-z

        /dev/sda, /dev/sdb,…..

同一設備上的不同分區:1.2.3….

        /dev/sda1,/dev/sda2,….

磁盤結構

blob.png

head:磁頭2^8=256

磁盤上文件的讀取就是通過磁頭和盤片的接觸來實現的,用接觸可能不對,但是比較形象,好理解

track:磁道2^10=1024

cylinder: 柱面 2*6=64

secotr:扇區,512bytes

磁盤空間大小=磁頭數*磁道數*每磁道扇區數*扇區大小

使用分區空間

    設備識別

    設備分區

    創建文件系統

    標記文件系統

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

    掛載新的文件系統 

磁盤分區優點:

    優化I/O 性能

    實現磁盤空間配額限制

    提高修復速度

    隔離系統和程序

    安裝多個OS

    采用不同文件系統

分區方式:MBR和GPT

MBR:Master Boot Record,使用32位表示扇區數,分區最大容量不超過2T

如何分區:柱面

MBR在磁盤的0磁道0扇區上,512btyes,其中446bytes存放:boot loader

64bytes存放分區表,16個bytes標識一個分區,所有一般系統只能分64/16=4

個主分區,就是因為這里只能分成4個,最后的2bytes存放55AA,不要小看這兩個bytes

,如果損壞了,分區表會顯示不出來

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

MBR分區結構(可以更直觀理解)  

blob.png

GPT分區

GPT:GUID(Globals Unique Identifiers) partition table

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

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

UEFI(統一擴展固定接口)硬件GPT,是操作系統啟動

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

blob.png

GPT分區結構:

在GPT分區中的第一個數據塊中有一個 protective MBR(PMBR),其作用為當使用不支持GPT的分區工具時,

整個磁盤將顯示為受保護的分區,以防止分區表及磁盤數據遭到破壞。UEFI并不從PMBR中獲取GPT磁盤的分

區信息,它有自己的分區表,即GPT分區表。

GPT分區數量為128個,取用的64位表示,即每個分區最大空間為2^64位,無法想象的大,GPT在磁盤的末端

有一個本分分區表,保證了分區信息不容易丟失

管理分區

列出塊設備

    lsblk

blob.png

創建分區使用:

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

    gdisk創建GPT分區

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

patprobe :重新設置內存中的內核分區表版本

fdisk /dev/sdb

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

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

子命令:

    p  分區列表

    l  查看

    t  更改分區類型

    n  創建新分區

    d  刪除分區

    w  保存并退出

    q  不保存并退出

在centos7上start和end是以扇區為單位,在centos6上是以柱面為單位的

blob.png

使用t調整分區,一下例子為將分區5調整為swap分區

blob.png

當使用fdisl增加或刪除分區時,如果出現Warning提示,要使用partprobe等命令重新設置(讀?。﹥却嬷械膬群朔謪^表

如果不使用時,新修改的分區時不顯示的,查看命令是查看不到新修改的分區

注意:在已經分區并且已經掛載其中中的某個分區的磁盤設備上創建的新分區,內核可能在創建完成后無法直接識別;

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

cat /pro/partations

blob.png

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

centos5 :partprobe

chentos7: partx ,kpartx

    partx -a [設備] 增加時使用(有時候需要連續讀取兩次才能成功)

    kpartx -af [設備]

    partx -d [設備] 刪除時使用

blob.png

parted命令

parted 的操作都是實時生效的,小心使用,不做詳細說明

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

    parted /dev/sdb mklabel gpt|msdos

    parted /dev/sdb print

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

    parted /dev/sdb rm 1

    parted -l

文件系統    

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

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

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

和檢索的系統。幾天來說,他負責為用戶建立文件,存入,讀出,修改,存儲文件,控制文件的存取,安全控制,

日志,壓縮,加密等

文件系統類型:

linux文件系統:ext2,ext3,ext4,xfs(centos7),btrfs(目前最好的,但是出于驗證階段),reiseerfs,

jfs,swasp

偽文件系統:proc,sysfs,tmpfs,hugapagefs

光盤:iso9660

Windows:fat32,ntfs

Unix:FFS  UFS  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

centos7支持的文件系統

blob.png

centos6支持的文件系統

blob.png

VFS: linux的虛擬文件系統,linux與各個文件系統的中間層,實現了linux支持各個文件系統的使用

blob.png

創建文件系統

文件系統管理工具:

    創建文件系統工具

    mkfs    

    mkfs.ext2,mkfs.ext3,mkfs.ext4,mkfs.xfs

    檢測及修復文件系統工具

    fsck

    fsck.ext2,fsck.ext3,….

    查看其屬性的工具

    dumpe2fs  tune2fs

    調整文件系統特性

    tune2fs

內核級文件系統組成部分:

    文件系統驅動:有內核提供

    文件系統管理工具:由用戶空間的應用程序提供

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

    mkfs.ext2(無日志功能),mkfs.ext3,mkfs.ext4

    mkfs -t ext2 = mkfs.ext2

    mkfs -t ext3 = mkfs.ext3

[root@localhost ~]# mkfs.ext2 /dev/sd6
mke2fs 1.41.12 (17-May-2010)
Could not stat /dev/sd6 --- No such file or directory

The device apparently does not exist; did you specify it correctly?
[root@localhost ~]# mkfs.ext2 /dev/sda6
mke2fs 1.41.12 (17-May-2010)
Filesystem label=       ===>文件系統標簽
OS type: Linux         ===>操作系統
Block size=4096 (log=2)   ===>塊大小
Fragment size=4096 (log=2)   ===>分塊大小
Stride=0 blocks, Stripe width=0 blocks
642112 inodes, 2564367 blocks   =====>inode數量和塊數量
128218 blocks (5.00%) reserved for the super user   ===>給管理員預留的空間
First data block=0    ====>第一個數據塊編號為0
Maximum filesystem blocks=2629828608  ====>最大文件系統塊編號
79 block groups  ===>塊組數量
32768 blocks per group, 32768 fragments per group  ====>每個塊組中有多少個塊
8128 inodes per group   ===>每個塊組中有多少個inode
Superblock backups stored on blocks:  ===>超級塊存放在那個數據塊上
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]#

創建ext3,ext4,文件系統時,和上面一樣,只是多了一項日志功能

Creating journal (32768 blocks): done


blkid命令

-L LABEL: 根據LABEL定位設備

-U UUID : 根據UUID定位設備

查看文件系統

blob.png

如果此文件系統沒有數據,可以直接使用mkfs.ext3格式化為ext3文件系統

mkfs.ext3 /dev/sd6

blob.png

ext4和ext3相比差不多,只是性能上強大了許多

blob.png

在centos6上默認是不支持xfs文件系統的,我們使用yum install xfsprogs命令,在centos6上安裝xfsprogs

使之可以使用xfs文件系統,看看效果

blob.png

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

    mke2fs [options] device

    -t {ext2|ext3|ext4}指明要創建的文件系統

以下全部都可以用來創建ext系列的文件系統:

        mkfs.ext3 = mkfs -t ext3 = mke2fs -t ext3 =mke2fs -j(專用于ext3)

    -b{1024|2048|4096}:指明文件系統的塊大小;現在默認4096

    -L LABLE:指明卷標

    -j:創建有日志功能的文件系統ext3

    -i #:每多少字節一個inode,指明inode與字節的比率

    -N #:直接指明要給此文件系統創建的inode的數量

    -O [^]feature:以指定的特性創建目標文件系統,不加“^”表示啟用此特性,加了表示禁用此特性

    -m #:指定預留的空間的百分比;直接給數字 %5就輸出 -m 5 

注意:不要用tune2fs查看xfs文件系統,tune2fs只能在ext系列文件系統上使用

       [root@localhost ~]# blkid /dev/sda6
/dev/sda6: UUID="5ffc43fa-fa65-4060-b99d-9015da2f52d5" TYPE="xfs" 
[root@localhost ~]# mke2fs -t ext4 -L laozihenfan -b 2048 /dev/sda6 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=laozihenfan  ====>指明卷標
OS type: Linux
Block size=2048 (log=1)       =====>指明塊大小2048
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
643072 inodes, 5128734 blocks
256436 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=542113792
314 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
	16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 
	2048000, 3981312

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]#

e2lable ;管理ext系列文件系統的卷標

可增加修改

blob.png

tune2fs命令:查看或修改ext系列文件系統的某些屬性

注意:只能是某些屬性,例如:塊大小創建后不可修改;

選項:

    -l:顯示超級塊中的信息;

    -j:將ext2升級為ext3

blob.png

    -L lable:修改卷標

    -m #:調整預留給管理員空間的百分比(默認5%)

blob.png

    -O[^]feather:開啟或關閉某種特性;關閉了日志就變成了ext2,開啟了有變成了ext3(ext2和3的區別就在于有無日志)

blob.png

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

dumpe2fs命令:顯示ext系列文件系統的屬性信息

    -h:只顯示超級塊中的信息

檢測并修復文件系統

    因進程意外終止或系統崩潰等原因導致定稿操作非正常終止時,可能會造成文件損壞,此時,

應該檢測并修復文件系統;建議離線進行

e2fsck:只能對ext系列文件系統有效

    -y:對所有問題自動回答為yes

    -f:即使文件系統處于clean狀態,也要強制檢測

    -p:自動修復

fsck:通用型

    -t:指明文件系統類型

    -a:自動修復

    -r:交互式修復錯誤

總結:

創建 :mkfs.ext2, mkfs -t 

檢測:fsck.xfs 

掛載mount

掛載:將額外文件系統與根文件系統某個現存的目錄建立起關聯關系,進而使得此目錄作為

其他文件訪問入口的行為

卸載:將某文件系統與當前根文件系統的關聯關系預以移除

根文件系統之外的其他文件系統要想能夠被訪問,都必須通過“關聯”只根文件系統上的某個目錄來實現

,此關聯操作即為“掛載”,此目錄即為“掛載點”

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

    1.事先存在

    2.應該使用未被或者不會被其他進程使用到的目錄

    3.掛載點下原有的文件會被隱藏

mount命令

mount:顯示當前系統已經掛載的設備及掛載點

blob.png

掛載/dev/sda6 到/mnt下

mount  /dev/sda6  /mnt

blob.png

命令選項

    -r:readonly,只讀掛載

blob.png

    -w:read and write 讀寫掛載(默認為讀寫)

    -n:默認情況下,設備怪在或卸載的操作會同步更新至/etc/mtab文件中

        加上-n選項用于禁用此特性(即不更新至/etx/mtab中)

blob.png

    -t vfstype:指明要掛載的設備上的文件系統的類型,可省略,因為mount會通過blkid來判斷

要掛載的設備的文件系統類型

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

        mount -L LABEL /mnt

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

        mount -U UUID /mnt

-o 0ptions:掛載選項

    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

掛載目錄

    可以實現將目錄綁定之另一個目錄上,作為其臨時訪問入口 

    mount –bind 源目錄  目標目錄

 blob.png      

umount:卸載某文件系統

   umount /mnt

 無法卸載處于繁忙狀態的掛載點(正在被進程訪問到的掛載點無法被卸載)

blob.png

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

    lsof mount

    fuser -v mount 

blob.png

終止使用正在訪問知道的文件系統的進程:

    fuser -km 

查看掛載情況:

    findmnt

掛載未完待續….




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

(0)
qiuweiqiuwei
上一篇 2016-08-29
下一篇 2016-08-29

相關推薦

  • N25第九周博客作業

    1、 寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/sh lg=0 nlg=0 while read line;do   if [[ “${line}” =~“/sbin/nol…

    Linux干貨 2017-03-06
  • Raid的工作原理

    1,什么是Raid Raid的基本原理就是把多個磁盤組合到一起,組成一個磁盤組,使性能達到或超過一個容量巨大價格昂工藝的磁盤,當然基于硬件的RAID解決方案比基于軟件RAID技術在使用性能和服務性能上稍勝一籌,具體表現在檢測和修復多位錯誤的能力、錯誤磁盤自動檢測和陣列重建等方面。 2.RAID級別介紹;一般常用的RAID階層,分別是RAID 0、RAID1、…

    Linux干貨 2017-06-19
  • 為什么新建文件時,所在文件系統還有大量剩余空間,卻提示此文件系統空間已滿??

    一:答疑解惑:    這是因為該文件所在分區的inode號被用盡,雖然分區的剩余容量還有很多。 二:基本原理:   inode為何物block又為何物?以及,inode都有哪些特征?   ①我們知道,在linux文件系統中,文件名只是計算機用來給人看,而計算機本身只識別文件所對應的數字或編號,而這個編號或數字…

    2017-07-22
  • 序列化和反序列化

    序列化和反序列化之基本筆記

    2017-10-29
  • 課堂練習之 “;” 用法

    作業:如何實現前一條命令執行成功,才會執行后面一條命令,以及前一條命令執行失敗才會執行后一條命令。 首先,多條命令一起執行的方法有幾種。   1.用;隔開,不會判斷前一條命令是否執行成功或失敗。   2.用&&隔開,前面命令執行成功后,才會執行后面的命令。     3.用||或|隔開,前面命令執行失敗后…

    2017-07-15
  • 編程能力與編程年齡

    程序員這個職業究竟可以干多少年,在中國這片神奇的土地上,很多人都說只能干到30歲,然后就需要轉型,就像《程序員技術練級攻略》這篇文章很多人回復到這種玩法會玩死人的一樣。我在很多面試中,問到應聘者未來的規劃都能聽到好些應聘都說程序員是個青春飯。因為,大多數程序員都認為,編程這個事只能干到30歲,最多35歲吧。每每我聽到這樣的言論,都讓我感到相當的無語,大家都?!?/p>

    Linux干貨 2016-08-15
欧美性久久久久