谢烟客---------Linux之文件系统管理创建与挂载

文件系统在哪实现? 内核

内核级文件系统的组成?模块、用户空间中的程序

哪些是内核级文件系统?除了分布式文件系统

模块的定义

中间层定义

文件如何按名存取

查找文件、创建文件、存储文件
文件系统、格式化

swap,虚拟内存

日志型文件系统和非日志型文件系统工作原理

超级块

文件按名存取的实现

文件系统实现按名存取将分区后的存储空间划分为数据区元数据区

数据区:   存储大小相同的数据块

   元数据区:有多个inode块,每个inode块中存储:filename,perm,owner,group,timestamp,size,数据区的数据块编号,数据块的映射

在查找文件时,先找元数据后找数据

先找到元数据区的inode。从inode中的数据地址编号,找到对应的数据块。

在创建文件时,先创建元数据,由元数据找空闲数据块

先创建元数据,找到空闲的磁盘块,才能存储数据

在存储文件时,找到的磁盘块不够用,就再分配磁盘块,并将分配的新磁盘块编号记录于inode中,供以后查找

文件系统的定义

    索引和索引指向的编址方式

数据区中存储数据的不同组织机制和元数据区存储数据时存放索引的位置。

数据的组织机制:数据在存储空间存放的形式存储空间的结构

例如:

一个图书馆内的书架可以横、竖、斜着放,每个书架上存放书的格子不同。

一张白纸,在其上写文字可以打成方格、行格、斜格,其结构都可以不同。

写的时候可以横、竖、斜着写。

格式化:重新构建数据的组织机制,废墟之上重建

例如:将之前摆放的书架,一把火烧了,重新买书架,重新按照不同的结构组织书架的摆放,书的摆放也可能不同。

文件系统的常见类型


按应用场景划分

Linux:Windows:iso:unix:网络文件系统:集群文件系统:分布式文件系统:

按内核级划分

除了分布式文件系统之外的所有文件系统

按是否支持日志功能划分

日志型文件系统:  ext3,ext4,xfs

非日志型文件系统: ext2 vfat(将winodws的fat32识别为vfat)


++++++++++++++++++++++++++++++++++++++++++++++++++++++

Linux

    ext2 ext3 ext4 xfs btrfs swap 

CentOS 5 ,ext2 ext3

ext2  单个文件支持8EB

CentOS 6, ext4,xfs

ext ( extended filesystem) - 系统的文件系统有向下兼容的特性

XFS  - SGI 的第二代文件系统。(centos6 支持xfs,内核中有xfs模块,需要安装xfs用户空间中的管理工具)

CentOS7: ext4,xfs,btrfs,relserFS,JFS

ext4 -  因稳定性原因,不在被推崇

btrfs - SUN公司研发 --文件系统级别支持 本来lvm2级别才能拥有的功能

btrfs 单个文件支持没有理论上限值 64bit的文件系统,位数越多意味着单个文件所能够寻址的磁盘块数量越大

reiserFS 命名是源自作者Hans Reiser的姓氏,其特色为能很有效率地处理大型文件到众多小文件都可以用很高的效率处理

JFS

由IBM研发,AIX支持的文件系统,JFS,JFS2

swap,交换分区

用于Solaris之上,为了避免虚拟内存机制,导致的物理内存满载后不能进行任何操作的严重的影响,Sun公司研发了一种文件系统,能在物理内存耗尽之前,把磁盘空间中的某段存储空间格式化为同物理内存一样的存储格式,而后把物理内存中不太有用的数据放至磁盘之上,如果需要用到此数据时,将数据拿回来即可,这种行为叫做“交换”

虚拟内存:如果物理内存只有2G,对于32bit系统,每一个进程有4G内存可用,实际上可能只有几M大小内存。如果某个进程内存占据逐渐增大时,将物理内存大耗尽,可能导致其他进程不能运行,管理工具无法使用。

 

光盘:iso9660

ISO 9660源于High Sierra文件系统,被一些硬件和软件供应商称作CDFS(光盘文件系统),是一个由国际标准化组织(ISO)为光盘媒介发布的文件系统。其目标是能够在不同的操作系统如Windows、Mac OS以及类Unix系统上交换数据。

Windows

    fat32, ntfs

fat32

FAT文件系统考虑当时电脑性能有限,所以未被复杂化,因此几乎所有个人电脑的操作系统都支持。这特性使它成为理想的软盘和存储卡文件系统,也适合用作不同操作系统中的数据交流。现在,一般所讲的FAT专指FAT32。

但FAT有一个严重的缺点:当文件删除后写入新数据,FAT不会将文件整理成完整片段再写入,长期使用后会使文件数据变得逐渐分散,而减慢了读写速度。碎片整理是一种解决方法,但必须经常重组来保持FAT文件系统的效率。

其它IBM PC的可选操作系统,如Linux、FreeBSD和BeOS都支持FAT格式,并且大部分都在相应的Windows版本发布以后很快就支持VFAT和FAT32格式

ntfs

NTFS(英语:New Technology File System),是Microsoft公司开发的专用文件系统,从Windows NT 3.1开始成为Windows NT家族的标准文件系统。

NTFS取代FAT(文件分配表)和HPFS(高性能文件系统)并进行一系列改进,例如增强对元数据的支持,使用更高级的数据结构以提升性能、可靠性和磁盘空间利用率,并附带一系列增强功能,如访问控制列表(ACL)和文件系统日志。

Linux和BSD提供自由及开放源代码的软件,可用于读写NTFS文件。

UNIX

    UFS

Unix File System是一种文件系统,为许多UNIX和类Unix操作系统所使用。它也被称为伯克利快速文件系统(Berkeley Fast File System)

    FFS

BSD快速文件系统(BSD Fast File System)FFS对Unix System V文件系统“FS”有所继承。FFS在Unix文件系统(1或2)之上,提供目录结构的信息,以及各种磁盘访问的优化。UFS(以及UFS2)定义了on-disk数据规格。

    JFS2


网络文件系统

    NFS

Network File System是一种分布式文件系统协议,最初由Sun Microsystems公司开发,并于1984年发布。其功能旨在允许客户端主机可以像访问本地存储一样通过网络访问服务器端文件。

NFS和其他许多协议一样,是基于开放网络运算远程过程调用(ONC RPC)协议之上的。它是一个开放、标准的RFC协议,任何人或组织都可以依据标准实现它。NFS的消息格式是固定长度,

CIFS

服务器消息块(Server Message Block,缩写为SMB),又称网络文件共享系统(Common Internet File System,缩写为CIFS, /sfs/),一种应用层网络传输协议,由微软开发,CIFS消息一般使用NetBIOS或TCP协议发送,分别使用不同的端口139或445,目前倾向于使用445端口。CIFS的消息格式大多数是可变长度,这增加了协议的复杂性。    

集群文件系统

GFS2(redhat Global File System version2)

OCFS2(oracle cluster filesystem version 2)

分布式文件系统

ceph(linux内核中所实现)

HDFS、GlusterFS、Ceph、OpenStack的Swift项目等都属于分布式集群文件系统。分布式集群文件系统可扩展性更强,目前已知最大可扩展至10K节点。对于分布式集群,其对文件元数据的管理方式又可以分为单一路径映像和单一文件系统映像两种方式。

++++++++++++++++++++++++++++++++++++++++++++++++

日志文件系统

文件存储时,先创建元数据,由元数据找到空闲数据块,就能存储文件,在存储过程中,如果系统断电了,其存储的文件是不完整的。对于windows系统来说,需要文件恢复,将之前存储数据的不完整的文件查找出来删除。

  非日志文件系统

存储文件时,直接在元数据区给文件创建元数据,通过元数据区的元数据条目"inode"块,找到对应的数据块即可完成存储。

存储过程中,如果断电,在断电恢复时,需要遍历整个文件系统所有文件查找不完整的文件。

  日志型文件系统

存储文件时,在日志区中给文件创建元数据,通过日志区的元数据条目"inode"块,找到对应的数据块即可完成存储。

存储过程中,如果断电,在断电恢复时,只需要查找日志区的所有元数据即可,是不是很快?

文件管理由内核实现的原因

1、内核管理硬件,内核才能跟磁盘交互

2、内核将磁盘数据区划分为不同的格式及建立文件的索引

3、文件系统在内核中实现

内核级文件系统的组成

内核中的模块:

linux由于其开源特性,其上实现了众多文件系统,每种文件系统都有一个对应的模块,ext2,ext3,ext4,xfs,btrfs,....,程序员要格式化不同的文件系统就要调用对应的模块贼困难。后来,用一种机制解决了这个问题,添加一个中间层

中间层:在Linux之上只要有两个层级间不能衔接,就需要一个中间层就能抹除底层不同文件系统的差异。解决文件系统的差异是VFS。

VFS:抽象底层不同模块功能为一个统一的接口,类似于操作系统一样:抽象底层硬件功能为一个简洁、易用、美观的接口,目的是:方便程序员调用,利于程序员编程。

用户空间中的程序:

调用内核中的模块完成格式化的功能

常用工具有: mkfs,mke2fs, mkfs.ext2,mkfs.ext3,mkfs.ext4,mkfs.xfs,mkfs.btrfs

模块 提供一种功能,只要调用此模块就能完成功能。

########对于任何一个文件系统想要在Linux中使用:1、内核中有模块且已经装载,2、遵循POSIX规范,3、有用户空间的程序#######################

用户空间工具的使用

mkfs,mke2fs,mkfs.ext2,mkfs.ext3,mkfs.ext4,mkfs.xfs,mkfs.btrfs

获取当前内核支持的文件系统

[[email protected] ~]# cat /proc/filesystems   
	ext3
	ext2
	ext4
nodev	rpc_pipefs
nodev	nfsd
nodev	binfmt_misc

##注意 
     nodev:  没有使用的文件系统
    无nodev:  正在使用的文件系统

对于任何一个文件系统想要在Linux中使用

1、查看内核中的所有已经装载的模块

[[email protected] ~]# lsmod
Module                  Size  Used by
binfmt_misc            17468  1 
tcp_diag               12591  0 
inet_diag              18949  1 tcp_diag
ip6t_rpfilter          12595  1 
ipt_REJECT             12541  2 
nf_reject_ipv4         13373  1 ipt_REJECT

2、查看用户空间的程序

[email protected] ~]# mkfs  ##两次TAB,打印列表(以下有的用户空间的程序均为内核中存在模块,且可使用)
mkfs   mkfs.btrfs  mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.minix   mkfs.xfs

mkfs.FS_TYPE命令

mkfs.FS_TYPE [-L LABEL] filesys
    FS_TYPE: ext2,ext3,ext4,xfs,btrfs 文件系统类型
    -L LABEL 卷标
    
ext2:# mkfs.ext2 /dev/sdb5
ext3:# mkfs.ext3 /dev/sdb5
ext4:# mkfs.ext4 /dev/sdb5  
-L: # mkfs.ext4 -L ‘MYDATA‘ /dev/sdb5
xfs:# mkfs.xfs -f /dev/sdb5 
btrfs:# mkfs.btrfs -f /dev/sdb5    ##CentOS 7

mkfs命令

 mkfs [-L LABEL] [-t fstype] filesys
     fstype:ext2,ext3,ext4,xfs,btrfs 文件系统类型
    -L LABEL 卷标
     
ext2:# mkfs -t ext2 /dev/sdb5
ext3:# mkfs -t ext3 /dev/sdb5
ext4:# mkfs -t ext4 /dev/sdb5  
-L: # mkfs -t ext4 -L ‘MYDATA‘ /dev/sdb5
xfs: # mkfs -t xfs /dev/sdb5
btrfs: # mkfs -t btrfs /dev/sdb5    ##CentOS 7

mke2fs命令:创建ext2,ext3,ext4文件系统的专用的命令

mke2fs [-t fstype] [OPTIONS...] filesys
OPTIONS:
    -b {1024|4096|2048} 单位是byets,不指定是2048
    -t {ext2|ext3|ext4} 
        小文件多: 1024
	大文件多: 4096
	小文件多用大块,浪费磁盘空间
    -L LABEL 指定卷标
    -j 相当于 mke2fs -t ext3
    -i # 比率关系. 为数据空间每多少个byte创建一个Inode. 大小不应该小于单个块大小 
        数据空间总大小 
        -----------------------------  =  inode数量
        单个inode占据数据空间的大小 
        
        数据空间总大小 
        -----------------------------  =  块数量
        单个块大小 
        
        inode = 单个块大小 时, inode数量 = 块数量
        inode > 单个块大小 时, inode数量 < 块数量
        inode < 单个块大小 时, indoe数量 > 块数量,此时如果一个块,存储一个文件,inode也多了.inode空间浪费
    
    -N # 为数据空间创建多少个inode
    -m # 为管理人员预留的空间占据的百分比. 默认为5% 避免磁盘空间占满之后,管理人员不能操作
    -O FEATURE[,...] 创建分区时,启用哪些特性
	-o ^FEATURE 关闭特性
	mke2fs -O journal 格式化为ext3	

选项注释

-b,默认为496 ,-L LABEL,-m # 选项注释

[[email protected] ~]# mke2fs -t ext4 -L ‘mydata‘ -m 2 /dev/sdb5
mke2fs 1.41.12 (17-May-2010)
文件系统标签=mydata  ##卷标名
操作系统:Linux 
块大小=4096 (log=2)  ##未给出块大小时的默认大小
52451 blocks (2.00%) reserved for the super user ##为super user预留百分比
Superblock backups stored on blocks:  ##超级块的磁盘块编号
	16386, 49152, 81920, 114688, 217456, 409600, 442368, 802816, 1327104, 
	2048000, 3981313

-m 选项默认为5%,

[[email protected] ~]# mke2fs -t ext4 -b 2048 -L ‘mydata‘ /dev/sdb5
mke2fs 1.41.12 (17-May-2010)
文件系统标签=mydata ##卷标
操作系统:Linux
块大小=2048 (log=1)  ##块大小非默认
262259 blocks (5.00%) reserved for the super user  ##默认预留百分比
Superblock backups stored on blocks:  ##超级块位置
	16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 
	2048000, 3981312

blkid命令 块设备属性信息查看

blkid [OPTIONS...] [DEVICE.]
-U UUID 根据UUID查询设备
-L LABLE 根据LABEL查询设备

使用示例

[[email protected] ~]# blkid /dev/sdb5
/dev/sdb5: LABEL="mydata" UUID="7981933b-6ca6-4601-94db-7566da016dc1" TYPE="ext4" 
/dev/sda5: 设备文件名: 
LABEL: 卷标,
UUID: 全局唯一标识,
TYPE: 文件系统类型

全局唯一标识:就算设备文件名字改变UUID也是固定不变的
# blkid -U 7981933b-6ca6-4601-94db-7566da016dc1  
/dev/sdb5
# blkid -L mydata
/dev/sdb5
[[email protected] ~]#

e2label命令 查看和管理ext文件系统的LABEL

e2label DEVICE [LABEL]
查看label: e2label DEVICE
设定label: e2label DEVICE LABEL

使用示例

[[email protected] ~]# e2label /dev/sdb5
mydata
[[email protected] ~]# e2label /dev/sdb5 ‘MYDATA‘
[[email protected] ~]# e2label /dev/sdb5
MYDATA

超级块

磁盘空间:日志区 + 数据区 + 元数据区

块组:分区后将磁盘数据空间划分成大小相等的块,对磁盘空间平面化管理过于复杂,将几个磁盘空间划分成块组,

1、每个块组内有相等数量的数据块

2、每个块组的内的块的编号不同,(例如:1-99,100-199,200-299,....)

3、有几个块组内创建磁盘时自动血备份的超级块

超级块:存储整个分区中的整个结构划分。如果超级块挂了,整个分区的结构就消失了。

tune2fs 修改ext系统的参数

-l 查看指定文件的超级块信息,super block
-L LABEL 修改文件系统的卷标
-m # 修改预留给管理员的空间百分比
-j 将ext2升级为ext3
-O [FEATURE|^FEATURE] 文件系统属性启用或禁用
	 has_journal 拥有日志功能
-o 调整文件系统的默认挂载选项
	acl   启用Posix访问控制列表。
-U UUID 修改UUID

使用示例

-l选项

[[email protected] ~]# tune2fs -l /dev/sda3   显示超级块信息
Filesystem volume name:   文件系统卷标
Last mounted on:          最近一次什么时间被挂载
Filesystem UUID:          全局唯一标示符
Filesystem magic number:  魔数
Filesystem revision #:    1 (dynamic)
Filesystem features:      文件系统的特性:文件系统自己的特性跟是否挂载无关 sparse_super large_file (没有journal,可见为ext2文件系统)
Default mount options:    默认在挂载时的默认选项 tune2fs -o
Filesystem state:         文件系统的当前状态 clean:干净状态 ,没有什么损坏
Filesystem OS type:       Linux 标示所在的操作系统
Inode count:              有多少个inode?inode是元数据的条目
Block count:              2622452 一共有多少个磁盘块
Free blocks:              2575520 一共有多少个空闲磁盘块
Free inodes:              655765 一共有多少个空闲inode
First block:              0
Block size:               4096 单个磁盘块大小
Fragment size:            4096 
Reserved GDT blocks:      640
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8096
Inode blocks per group:   506
Filesystem created:       Sun Aug  6 21:20:08 2017
Last mount time:          n/a
Last write time:          Sun Aug  6 21:20:14 2017
Mount count:              0
Maximum mount count:      33
Last checked:             Sun Aug  6 21:20:08 2017
Check interval:           15552000 (6 months)
Next check after:         Fri Feb  2 21:20:08 2018
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          256
Required extra isize:     28
Desired extra isize:      28
Default directory hash:   half_md4
Directory Hash Seed:      f038552c-fba3-4e72-85ea-f901b9268c27

##inode即为元数据的条目

-L LABEL修改文件系统的卷标

[[email protected] ~]# blkid /dev/sdb5  ##查看文件系统的卷标
/dev/sdb5: LABEL="MYDATA" UUID="7981933b-6ca6-4601-94db-7566da016dc1" TYPE="ext4" 
[[email protected] ~]# tune2fs -L ‘Mydata‘ /dev/sdb5  ##修改文件系统的卷标
tune2fs 1.41.12 (17-May-2010)
[[email protected] ~]# blkid /dev/sdb5
/dev/sdb5: LABEL="Mydata" UUID="7981933b-6ca6-4601-94db-7566da016dc1" TYPE="ext4"

-j 将ext2升级为ext3

[[email protected] ~]# mkfs.ext2 -L ‘mydata‘ /dev/sdb5
[[email protected] ~]# blkid /dev/sdb5
/dev/sdb5: LABEL="mydata" UUID="2fde103f-a686-4f94-bb8a-0472ed1e2816" TYPE="ext2" 
[[email protected] ~]# mkfs.ext2 -j /dev/sdb5
[[email protected] ~]# blkid /dev/sdb5
/dev/sdb5: UUID="680c887c-c9c9-4536-b9bb-13a0822c05ed" SEC_TYPE="ext2" TYPE="ext3"

-O [FEATURE|^FEATURE] 文件系统属性启用或禁用

[[email protected] ~]# tune2fs -O ^has_journal /dev/sdb5
[[email protected] ~]# blkid /dev/sdb5
/dev/sdb5: UUID="680c887c-c9c9-4536-b9bb-13a0822c05ed" TYPE="ext2" 
[[email protected] ~]# tune2fs -O has_journal /dev/sdb5
[[email protected] ~]# blkid /dev/sdb5
/dev/sdb5: UUID="680c887c-c9c9-4536-b9bb-13a0822c05ed" SEC_TYPE="ext2" TYPE="ext3"

-o 调整文件系统的默认挂载选项

#获取默认挂载属性
[[email protected] ~]# dumpe2fs -h /dev/sdb5
[[email protected] ~]# tune2fs -l /dev/sdb5
Default mount options:    (none)

##启用默认挂载属性
[[email protected] ~]# tune2fs -o acl /dev/sdb5

##获取默认挂载属性
[[email protected] ~]# tune2fs -o acl /dev/sdb5
Default mount options:    acl

-U UUID 修改UUID

##查看UUID
[[email protected] ~]# blkid /dev/sdb5
/dev/sdb5: UUID="680c 887c-c9c9-4536-b9bb-13a082 2c05ed" SEC_TYPE="ext2" TYPE="ext3" 
##修改UUID
...

dumpe2fs命令  显示超级块分组信息和文件系统的组织结构信息 读取每个块组

dumpe2fs 显示超级块组信息及文件系统结构信息
dumpe2fs -h  查看超级块

使用示例

[[email protected] ~]# dumpe2fs /dev/sdb5  ##显示超级块分组信息和文件系统的组织结构信息读取每个块组
Group 320: (Blocks 5242880-5245189) [INODE_UNINIT, ITABLE_ZEROED]
块组编号,磁盘块起始-结束 

Block bitmap at 5242880 (+0) Block 位图的位置
Inode bitmap at 5242896 (+16) Inode 位图的位置
Inode表位于 5242912-5243167 (+32)
2052 free blocks
 2048 free inodes, 2048个未使用的inodes
 0 directories, 
可用块数: 5242881-5242895, 5242897-5242911, 5243168-5245189 多少块可用
可用inode数: 655361-657408 可用Inode

mkswap命令

mkswap [OPTIONS...] DEVICE 创建交换分区(调整分区ID为82,system)
-L LABEL 卷标
-U UUID

swap大小:
对于mysql,oracle数据库,没有内存就别玩
对于hadoop,内存要求大,内存使用效率不高,swap内存 == 物理内存
对于早期,物理内存只有128M,512M时。给1-1.5倍即可。
现在,物理内存动辄2-8G,大多数给2G,足够用
渲染,3D,内存要求较大。交换分区可大一点。

创建交换分区步骤

1、分区

##显示所有磁盘的分区信息
[[email protected] ~]# fdisk -l /dev/sd[a-z] 

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders  ##扇区个数 15665
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64       12813   102400000   8e  Linux LVM
/dev/sda3           12813       14118    10489811   83  Linux

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders  ##扇区个数 2610
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2610    20964793+   5  Extended
/dev/sdb5               1        1306    10490382   83  Linux
##确定新建分区为sdb6
##调整分区表
[[email protected] ~]# fdisk /dev/sdb
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (1307-2610, default 1307): 
Using default value 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-2610, default 2610): +2G ##给2G

Command (m for help): p  ##显示出第6个分区id为83

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2610    20964793+   5  Extended
/dev/sdb5               1        1306    10490382   83  Linux
/dev/sdb6            1307        1568     2104483+  83  Linux

2、调整id号为82

Command (m for help): t  ##调整id
Partition number (1-6): 6  ##调整第6个分区 
Hex code (type L to list codes): 82  #¥#其分区id为82,swap分区
Changed system type of partition 6 to 82 (Linux swap / Solaris)  ##修改成功
Command (m for help): w  ##将内存中数据同步到磁盘

3、查看内核是否已经识别分区

[[email protected] ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0  125829120 sda
   8        1     512000 sda1
   8        2  102400000 sda2
   8        3   10489811 sda3
   8       16   20971520 sdb
   8       17          1 sdb1
   8       21   10490382 sdb5
   8       22    2104483 sdb6  ##sdb6已经识别

4、如果没有识别,则让内核重读分区表

[[email protected] ~]# partx -a -n 1:6 /dev/sdb  ##从第一个分区至第6个分区
[[email protected] ~]# partx -a -n 6 /dev/sdb  ##指定分区
[[email protected] ~]# partx -a /dev/sdb  ##读所有分区

5、显示交换分区是否创建完毕

[[email protected] ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2610    20964793+   5  Extended
/dev/sdb5               1        1306    10490382   83  Linux
/dev/sdb6            1307        1568     2104483+  82  Linux swap / Solaris

fsck命令 file system check 非法关机后。开机不要检测,开机手动检测

##获取相关的命令
[[email protected] ~]# fsck
fsck          fsck.cramfs   fsck.ext2     fsck.ext3     fsck.ext4     fsck.ext4dev  fsck.msdos    fsck.vfat
方法一: fsck.FS_TYPE 
方法二: fsck -t FS_TYPE
    -a 自动修复
    -r 交互修复
方法三: e2fsck ext系列文件系统检测工具 
    -f 强制修复
    -y 自动回答为yes

使用示例

[[email protected] ~]# blkid /dev/sdb5
/dev/sdb5: UUID="680c887c-c9c9-4536-b9bb-13a0822c05ed" SEC_TYPE="ext2" TYPE="ext3" 
[[email protected] ~]# fsck.ext3  -a /dev/sdb5
[[email protected] ~]# fsck -t ext3  -r /dev/sdb5
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sdb5: clean, 11/655776 files, 79733/2622595 blocks
[[email protected] ~]# e2fsck -f /dev/sdb5
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/sdb5: 11/655776 files (0.0% non-contiguous), 79733/2622595 blocks
[[email protected] ~]# e2fsck -y /dev/sdb5
e2fsck 1.41.12 (17-May-2010)
/dev/sdb5: clean, 11/655776 files, 79733/2622595 blocks

扩展

1、blkid /dev/sda6 不显示任何信息时,表示没有配置文件系统

[[email protected] ~]# blkid /dev/sdb6
[[email protected] ~]# echo $?
2

2、linux和windows系统同时支持fat32,在linux中识别其为vfat格式,如果要u盘能同时在windows和linux之间使用时,
可在windows中格式化为 FAT32。
在linux中:# mkfs.vfat DEVICE
即可完成分区
时间: 2024-10-25 20:07:48

谢烟客---------Linux之文件系统管理创建与挂载的相关文章

谢烟客---------Linux之文件系统管理挂载

思路 只能挂载在根分区,根由谁来挂载? mount命令详解 分区, 创建.调整.查看文件系统,挂载文件系统.显示挂载信息.验证挂载 写时复制和原处读写 同步IO和异步IO的区别 在创建文件系统之后,如果要使用此文件系统,应该将设备/分区关联至根设备的某个目录之下 根由内核管理,是一切的起始 根的由来 1)刚开机时,post加电自检 2)自检后,装载bootloader 3)bootloader装载用户 所选择的操作系统内核(系统启动装载的第一个程序) CentOS 7 :/etc/grub2.c

Linux之文件系统管理

文件系统不仅包含着文件中的数据而且还有文件系统的结构,不同Linux发行版本之间的文件系统差别很少,主要表现在系统管理的特色工具以及软件包管理方式的不同,文件目录结构基本上都是一样的. Linux的文件结构是单个的树状结构,根目录是"/",其他目录都要位于根目录下.每个目录一般都存放 特定类型的文件,下表常见目录: /  根目录,只能包含目录,不能包含具体文件 /bin  存放可执行文件.很多命令就对应/bin目录下的某个程序,例如 ls.cp.mkdir./bin目录对 所有用户有效

linux高级文件系统管理概述:处理交换分区、设置文件系统配额、配置raid和逻辑卷

8月26号,学习了linux(CentOS6.8)文件系统管理,内容颇多,主要分为如下几个部分: 一.处理交换分区和文件及移动介质的使用 二.常见工具free,df,du,dd的使用 三.设置文件系统配额 四.配置raid 五.配置逻辑卷 六.btrfs文件系统 一.处理交换分区和文件及移动介质的使用 交换分区是系统RAM的补充 基本设置包括: 创建交换分区或者文件 使用mkswap写入特殊签名 在/etc/fstab文件中添加适当的条目 使用swapon -a 激活交换空间 1.挂载交换分区

Linux 设备文件的创建和mdev

引子 本文是嵌入式企鹅圈开篇--<linux字符设备驱动剖析>的姐妹篇,在上述文章里面我们具体描写叙述了字符设备驱动框架涉及的驱动注冊.通过设备文件来訪问驱动等知识.并明白通过device_create接口并结合mdev来创建设备文件.但没有展开这个知识点. 本文将从代码级去理解Linux设备类和设备文件的创建过程. 通过这两篇文章,我们将能够对linux字符设备驱动的机制和脉络有全面的认识. 下面程序分析没有缩进,编辑了好几次都不行,耐心点才干跟踪完整个代码:-) 一.设备类相关知识 设备类

linux高级文件系统管理——btrfs

前几天,关于高级文件系统方面也给大家分享过RAID和LVM,今天给大家分享的这款文件系统可能比这两者更先进,可以将其二者合二为一.第一,它可以使用磁盘或者分区大小不一样的设备组建RAID:第二,它可以做到像LVM一样,随时扩展以及缩减使用空间,LVM支持在线扩展,但不能支持在线缩减,btrfs同时支持在线扩展和在线缩减:并且支持一条命令直接创建出带RAID功能的LV.所以个人体验之后觉得相当不错,分享于大家. 一.btrfs文件系统定义 1.Btrfs (B-tree, Butter FS, B

linux高级文件系统管理——RAID

作为大型企业,很多时候数据量相当庞大,由此以来对磁盘空间的要求比较高,更重要是的对数据的完整性的追求.所以单独的磁盘不仅空间使用满足不了,数据的完整性更是无从谈起,所以也就出现了专业的数据存储技术,而RAID是其中应用比较广泛,也是历史比较悠久的存数据储技术了.今天就给大家分享一下RAID的一些基本概念以及软件RAID的实现方法. 一.RAID的定义 RAID:Redundant Arrays of Inexpensive(Independent) Disks 1988年由加利福尼亚大学伯克利分

如何用golang获取linux上文件的创建/修改时间

在linux上想获取文件的元信息,我们需要使用系统调用lstat或者stat. 在golang的os包里已经把stat封装成了Stat函数,使用它比使用syscall要方便不少. 这是os.Stat的原型: func Stat(name string) (FileInfo, error) Stat returns a FileInfo describing the named file. If there is an error, it will be of type *PathError. 返

linux高级文件系统管理——LVM

在企业里面,很多时候,我们也无法估量应用程序对磁盘空间的使用量,如果我们使用用传统的文件系统,磁盘分区一旦确定下来以后,就再也无法更改使用空间了,如果需要更改就必须让应用程序离线后,对原有分区的数据进行备份,然后再对磁盘进行重新分区格式,重新复制原来的数据放回新的磁盘分区上,由此带来的麻烦是不言而喻的,如果是可以离线的业务,到也好说,如果是不允许离线的业务,那就影响更大.所以一代全新的文件系统LVM的问世,打破了这一技术瓶颈.它允许用户使用容量不不统一的硬盘和分区组合在一起,构成一个逻辑空间,用

Linux 第15天: (08月29日) Linux高级文件系统管理

本章内容设定文件系统配额设定和管理软RAID设备配置逻辑卷设定LVM快照btrfs文件系统 配置配额系统综述在内核中执行以文件系统为单位启用对不同组或者用户的策略不同根据块或者节点进行限制执行软限制(soft limit)硬限制(hard limit)初始化分区挂载选项:usrquota.grpquota初始化数据库:quotacheck 为用户设定配额执行开启或者取消配额:quotaon.quotaoff直接编辑配额:edquota username在shell中直接编辑:setquota u