Linux 文件系统介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:显示现有分区信息

创建扩展分区

[[email protected] ~]# 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保存分区操作

把分区信息刷到内核

[[email protected] ~]# partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-3
[[email protected] ~]# partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-6
[[email protected] ~]# partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-6

#删除操作 慎用
#[[email protected] ~]# partx -d /dev/sda6

#查看
[[email protected] ~]# 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查看

[[email protected] ~]# ls -i
33574978 anaconda-ks.cfg

元数据查看

[[email protected] ~]# 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:以指定的特性创建目标文件系统;

# 格式化会损坏原有数据,慎用
[[email protected] ~]# 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大小

[[email protected] ~]# dumpe2fs -h /dev/sda5 |grep node
数据块大小:524288*4096/1024/1024/1024 = 2G
inode数据大小:131072*256 /1024/1024 = 32M   
#所以是先有数据块,从数据块中提取部分作为inode

卷标设定:

[[email protected] ~]# e2label /dev/sda5
mydata
[[email protected] ~]# e2label /dev/sda5 MYDATE
[[email protected] ~]# e2label /dev/sda5
MYDATE

blkid查看文件格式类型

[[email protected] ~]# 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:开启或关闭某种默认挂载选项

#查看块使用情况

[[email protected] ~]# tune2fs -l /dev/sda5   

设置acl属性 setfacl getfacl 特性

[[email protected] ~]# tune2fs -o acl  /dev/sda5
[[email protected] ~]# tune2fs -l /dev/sda5 |grep ‘Default mount options‘
[[email protected] ~]# tune2fs -o ^acl  /dev/sda5

自检工具e2fsck

常用选项

-y:对所有问题自动回答为yes;
-f:即使文件系统处于clean状态,也要强制进行检测;

[[email protected] ~]# 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.

挂载

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

卸载

[[email protected] mnt]# umount t1/
[[email protected] mnt]# umount /dev/sda5

强制卸载

[[email protected] mnt]# fuser -km t1

以上是关于Linux 文件系统介绍的主要内容,如果未能解决你的问题,请参考以下文章

Prometheus配置文件

《Linux学习并不难》文件系统管理:xfs文件系统介绍

C#程序员经常用到的10个实用代码片段 - 操作系统

如何检测 SUSE Linux 系统中的音频可用性

VS code自定义用户代码片段snippet

LINUX PID 1和SYSTEMD PID 0 是内核的一部分,主要用于内进换页,内核初始化的最后一步就是启动 init 进程。这个进程是系统的第一个进程,PID 为 1,又叫超级进程(代码片段