1. 程式人生 > >Linux 文件系統介紹

Linux 文件系統介紹

linux 文件系統

硬盤接口簡介:
    1. IDE:並行接口,133MB/s   
    2. SCSI:並行接口,Ultrascsi320, 320MB/S, UltraSCSI640, 640MB/S
    3. SATA:串行接口,6gbps    6g/8  GB/S  
    4. SAS:串行接口,6gbps  是SCSI升級版

並行接口傳輸速率慢是因為並行容易造成電磁幹擾,所以只能低頻
串行接口雖然只有一個設備,可以高頻,所以速度比並行塊

機械硬盤圖解:
技術分享圖片

MBR簡介:

主引導記錄(MBR,Main Boot Record)是位於磁盤最前邊的一段引導代碼。它負責磁盤操作系統對磁盤進行讀寫時分區合法性的判別、分區引導信息的定位。

MBR分為三部分:

  1. 446bytes:bootloader, 程序,引導啟動操作系統的程序;
  2. 64bytes:分區表,每16bytes標識一個分區,一共只能有4個分區;
  3. 2bytes:MBR區域的有效性標識;55AA為有效;

塊劃分工具 fdisk

centos6 start 從柱面開始
centos7 start 從扇區開始

常用選項介紹

n:創建新分區
d:刪除已有分區
t:修改分區類型
l:查看所有已經ID
w:保存並退出
q:不保存並退出
m:查看幫助信息
p:顯示現有分區信息

創建擴展分區

[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e
Selected partition 4
First sector (46528512-62914559, default 46528512):
Using default value 46528512
Last sector, +sectors or +size{K,M,G} (46528512-62914559, default 62914559): +1G
Partition 4 of type Extended and of size 1 GiB is set

Command (m for help): p

Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00099ba6

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      391167      194560   83  Linux
/dev/sda2          391168     4585471     2097152   82  Linux swap / Solaris
/dev/sda3         4585472    46528511    20971520   83  Linux
/dev/sda4        46528512    48625663     1048576    5  Extended

添加邏輯分區

Command (m for help): n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e
Selected partition 4
First sector (46528512-62914559, default 46528512):
Using default value 46528512
Last sector, +sectors or +size{K,M,G} (46528512-62914559, default 62914559): +5G
Partition 4 of type Extended and of size 5 GiB is set

w保存分區操作

把分區信息刷到內核

[root@localhost ~]# partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-3
[root@localhost ~]# partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-6
[root@localhost ~]# partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-6

#刪除操作 慎用
#[root@localhost ~]# partx -d /dev/sda6

#查看
[root@localhost ~]# cat /proc/partitions
major minor  #blocks  name

   8        0   31457280 sda
   8        1     194560 sda1
   8        2    2097152 sda2
   8        3   20971520 sda3
   8        4          1 sda4
   8        5    2097152 sda5
   8        6    1048576 sda6
   8       16   10485760 sdb
  11        0    1048575 sr0

以上完成創建分區快,接下去在分區快上創建文件系統

文件系統圖解

技術分享圖片

inode查看

[root@localhost ~]# ls -i
33574978 anaconda-ks.cfg

元數據查看

[root@localhost ~]# stat anaconda-ks.cfg
  File: ‘anaconda-ks.cfg’
  Size: 1587        Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d  Inode: 33574978    Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:admin_home_t:s0
Access: 2018-04-22 06:29:43.493008377 -0400
Modify: 2018-04-22 06:29:43.494008377 -0400
Change: 2018-04-22 06:29:43.494008377 -0400
 Birth: -

VFS 分類(Virtual File System)

Linux的文件系統: ext2(無日誌功能), ext3, ext4, xfs, reiserfs, btrfs
光盤:iso9660
網絡文件系統:nfs, cifs
集群文件系統:gfs2, ocfs2
內核級分布式文件系統:ceph
windows的文件系統:vfat, ntfs
偽文件系統:proc, sysfs, tmpfs, hugepagefs
Unix的文件系統:UFS, FFS, JFS
交換文件系統:swap
用戶空間的分布式文件系統:mogilefs, moosefs, glusterfs


具體實現 mke2fs

mke2fs 常用選項

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 #:指定預留的空間,百分比;默認5%
-O [^]FEATURE:以指定的特性創建目標文件系統;

# 格式化會損壞原有數據,慎用
[root@localhost ~]# mkfs.ext4 /dev/sda5
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)                            #每塊大小
Fragment size=4096 (log=2)     
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks                       #inode數量  block數量
26214 blocks (5.00%) reserved for the super user   #超級塊
First data block=0                                 #編號始
Maximum filesystem blocks=536870912                #編號末
16 block groups                                    #塊組
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:               #超級塊備份地址
    32768, 98304, 163840, 229376, 294912 

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

查看inode大小

[root@localhost ~]# dumpe2fs -h /dev/sda5 |grep node
數據塊大小:524288*4096/1024/1024/1024 = 2G
inode數據大小:131072*256 /1024/1024 = 32M   
#所以是先有數據塊,從數據塊中提取部分作為inode

卷標設定:

[root@localhost ~]# e2label /dev/sda5
mydata
[root@localhost ~]# e2label /dev/sda5 MYDATE
[root@localhost ~]# e2label /dev/sda5
MYDATE

blkid查看文件格式類型

[root@localhost ~]# blkid /dev/sda5
/dev/sda5: UUID="18003fb5-93d9-4822-b998-0f2f99323798" TYPE="ext4"

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

常用選項

-j:ext2 --> ext3;
-L LABEL:修改卷標;
-m #:調整預留空間百分比;
-O [^]FEATHER:開啟或關閉某種特性;
-o [^]mount_options:開啟或關閉某種默認掛載選項

#查看塊使用情況

[root@localhost ~]# tune2fs -l /dev/sda5   

設置acl屬性 setfacl getfacl 特性

[root@localhost ~]# tune2fs -o acl  /dev/sda5
[root@localhost ~]# tune2fs -l /dev/sda5 |grep ‘Default mount options‘
[root@localhost ~]# tune2fs -o ^acl  /dev/sda5

自檢工具e2fsck

常用選項

-y:對所有問題自動回答為yes;
-f:即使文件系統處於clean狀態,也要強制進行檢測;

[root@localhost ~]# e2fsck /dev/sda5
e2fsck 1.42.9 (28-Dec-2013)
MYDATE: clean, 11/131072 files, 69339/2097152 blocks

掛載工具mount

常用選項

-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功能;
ro:只讀
rw:讀寫
dev/nodev:此設備上是否允許創建設備文件; mknod
exec/noexec:是否允許運行此設備上的程序文件;
auto/noauto:是否自動掛載
user/nouser:是否允許普通用戶掛載此文件系統;
suid/nosuid:是否允許程序文件上的suid和sgid特殊權限生效;
relatime : mtime 比 atime 時間新的時候更新atime 優化作用
defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.

掛載

[root@localhost mnt]# mount /dev/sda5 t1/
[root@localhost t1]# mount |grep ‘t1‘
/dev/sda5 on /mnt/t1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

卸載

[root@localhost mnt]# umount t1/
[root@localhost mnt]# umount /dev/sda5

強制卸載

[root@localhost mnt]# fuser -km t1

Linux 文件系統介紹