Linux基础之文件系统简介及其系统管理工具


常见的文件系统

Linux文件系统: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap

swap: 交换分区

光盘:iso9660

Windows:fat32, ntfs

Unix: FFS, UFS, JFS2

网络文件系统:NFS, CIFS

集群文件系统:GFS2, OCFS2

分布式文件系统:ceph, moosefs, mogilefs, GlusterFS, Lustre

                                                             实验环境CentOS7.2



Linux根据其是否支持"journal"功能:

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

非日志型文件系统: ext2, vfat


Linux的文件系统的组成部分:

内核中的模块:ext4, xfs, vfat

用户空间的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat




在正式介绍文件系统的前先说一下创建文件系统之前的格式化问题。


格式化

低级格式化:硬件制造商、分区之前划分磁道,形成簇 磁盘出厂前由厂家完成

高级格式化:分区之后对分区进行,创建文件系统

每种操作系统所设置的文件属性/权限不相同,为了存放这些所需的数据

我们常说的重装系统及格式化都是属于高级格式化层面的。本文所说的文件系统均为高级格式化后的产物




Linux文件系统管理工具


blkid:块设备属性信息查看

命令使用格式:blkid [OPTION]... [DEVICE]

    -U UUID: 根据指定的UUID来查找对应的设备

    -L LABEL:根据指定的LABEL来查找对应的设备

命令演示

[root@localhost ~]# blkid /dev/sda1
/dev/sda1: UUID="6efb8a23-bae1-427c-ab10-3caca95250b1" TYPE="xfs" 
[root@localhost ~]# blkid -U 6efb8a23-bae1-427c-ab10-3caca95250b1 
/dev/sda1

mkfs:文件系统创建工具:

mkfs - build a Linux filesystem

命令使用格式:

1、 mkfs [options] [-t type]  device [size]

    [ -t type] :指定要创建的文件系统类型ext4|xfs|btrfs|vfat|...|]

    [options]:-L 'LABEL': 设定卷标 在创建文件系统同时指定卷标。

              -f 若文件系统已存在,强制覆盖

命令演示

[root@localhost ~]# mkfs -L 'new1' -t ext4 /dev/sdb5

mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=new1
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 
[root@localhost ~]# blkid /dev/sdb5
/dev/sdb5: LABEL="new1" UUID="10880486-7ad9-43de-9607-f9bc1fda1edf" TYPE="ext4"

2、 mkfs.FS_TYPE /dev/DEVICE

 FS_TPYE:ext4、xfs、btrfs、vfat...

命令演示

[root@localhost ~]# mkfs.xfs -L 'new2' /dev/sdb6        
mkfs.xfs: /dev/sdb6 appears to contain an existing filesystem (ext3).
mkfs.xfs: Use the -f option to force overwrite.
[root@localhost ~]# mkfs.xfs -f -L 'new2' /dev/sdb6
meta-data=/dev/sdb6              isize=256    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# blkid /dev/sdb6
/dev/sdb6: LABEL="new2" UUID="ed636bf6-1cee-43d1-96e2-8baa8dc29087" TYPE="xfs"

若/dev/sdb# 指定的磁盘块已经存在文件系统,执行命令mkfs会失败,若加-f,则强制将原文件系统覆盖。慎用-f

mke2fs:ext系列文件系统专用管理工具

mke2fs - create an ext2/ext3/ext4 filesystem

    -t {ext2|ext3|ext4}指明要创建的文件系统类型

    -b {1024|2048|4096}指明文件系统的块大小

    -L 'LABEL'指明卷标

    -j: 创建有日志功能的文件系统ext3

mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3

    -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小;

    -N #:为数据空间创建个多少个inode;

    -m #: 为管理人员预留的空间占据的百分比;

    -O [^]FEATHER:开启或关闭某种特性;

命令演示:mk2fs创建ext2格式的文件系统

[root@localhost ~]# mke2fs -t ext2 /dev/sd
sda   sda1  sda2  sdb   sdb1  sdb2  sdb5  sdb6  sdb7  
[root@localhost ~]# mke2fs -t ext2 /dev/sdb7
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成                            
正在写入inode表: 完成                            
Writing superblocks and filesystem accounting information: 完成 
[root@localhost ~]# blkid /dev/sdb7
/dev/sdb7: UUID="4b9767fc-a8bf-4dda-9ce1-50eb5418da04" TYPE="ext2"

指定inode数及为管理人员预留空间的百分比

[root@localhost ~]# mke2fs -N 1024 -m 3 /dev/sdb7
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
1040 inodes, 102400 blocks
3072 blocks (3.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
80 inodes per group
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成                            
正在写入inode表: 完成                            
Writing superblocks and filesystem accounting information: 完成

e2label:管理ext系列文件系统的LABEL 

    查看:e2label device

    设定:e2label device LABEL

命令演示设定指定块设备的卷标

[root@localhost ~]# e2label /dev/sdb7 new3
[root@localhost ~]# e2label /dev/sdb7
new3

tune2fs:重新设定ext系列文件系统可调整参数的值(不进行格式化

    -l:查看指定文件系统超级块信息;super block

    -L 'LABEL':修改卷标

    -m #:修预留给管理员的空间百分比

    -j: 将ext2升级为ext3

    -O: 文件系统属性启用或禁用

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

    -U UUID: 修改UUID号;

命令演示:修改卷标

[root@localhost ~]# tune2fs -L 'another label' /dev/sdb7
tune2fs 1.42.9 (28-Dec-2013)
[root@localhost ~]# blkid /dev/sdb7
/dev/sdb7: LABEL="another label" UUID="a57b2116-d72b-48d2-a648-bb6d2d5487ac" TYPE="ext2"

升级ext2到ext3

[root@localhost ~]# tune2fs -j /dev/sdb7
tune2fs 1.42.9 (28-Dec-2013)
Creating journal inode: 完成
[root@localhost ~]# blkid /dev/sdb7
/dev/sdb7: LABEL="another label" UUID="a57b2116-d72b-48d2-a648-bb6d2d5487ac" SEC_TYPE="ext2" TYPE="ext3"

dumpe2fs

    -h:查看超级块信息等同于tune2fs -l 

命令演示

[root@localhost ~]# dumpe2fs -h /dev/sdb7
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   another label
Last mounted on:          <not available>
Filesystem UUID:          a57b2116-d72b-48d2-a648-bb6d2d5487ac
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              1040
Block count:              102400
Reserved block count:     3072
Free blocks:              96568
Free inodes:              1029
First block:              1
Block size:               1024
Fragment size:            1024
Reserved GDT blocks:      256
Blocks per group:         8192
Fragments per group:      8192
Inodes per group:         80
Inode blocks per group:   10
Filesystem created:       Sun Aug 21 20:11:13 2016
Last mount time:          n/a
Last write time:          Sun Aug 21 20:52:01 2016
Mount count:              0
Maximum mount count:      -1
Last checked:             Sun Aug 21 20:11:13 2016
Check interval:           0 (<none>)
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               128
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      3e1f3581-59c7-41b3-bd4f-d262e3ce026e
Journal backup:           inode blocks
Journal features:         (none)
日志大小:             4113k
Journal length:           4096
Journal sequence:         0x00000001
Journal start:            0

fsck:check and repair a Linux file system检查修复Linux文件系统

因进程意外中止或系统崩溃等 原因导致定稿操作非正常终止时,可能会造成文件损坏;此时,应该检测并修复文件系统; 建议,离线进行;

    -t fstype:指明文件系统类型;比如:fsck -t ext4 = fsck.ext4

    -a:无须交互而自动修复所有错误;

    -r:交互式修复;

Note: FS_TYPE一定要与分区上已经文件类型相同;

e2fsck:ext系列文件专用的检测修复工具

    -y:自动回答为yes; 

    -f:强制修复;




总结

文件系统管理工具

通用:mkfs、blkid、fsck 

ext系列文件系统专用工具:mke2fs、dumpe2fs、tune2fs、e2label、e2fsck


简要比较两种类型的命令

[root@localhost ~]# dumpe2fs /dev/sda1
dumpe2fs 1.42.9 (28-Dec-2013)
dumpe2fs: Bad magic number in super-block 当尝试打开 /dev/sda1 时
找不到有效的文件系统超级块.
[root@localhost ~]# blkid /dev/sda1
/dev/sda1: UUID="6efb8a23-bae1-427c-ab10-3caca95250b1" TYPE="xfs"


本文出自 “张帆-IT的奇幻漂流” 博客,转载请与作者联系!

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

部署Tomcat及其负载均衡 - 2016-08-29 17:08:51

应用场景 : 使用3台虚拟机操作系统为redhat6.5 Nginx 服务器s3 192.168.90.103 nginx-1.6.0.tar.gz Tomcat服务器s1 192.168.90.106 1.jdk-7u65-linux-x64.gz 2.apache-tomcat-7.0.54.tar.gz Tomcat服务器s2 192.168.90.107 1.jdk-7u65-linux-x64.gz 2.apache-tomcat-7.0.54.tar.gz 实施准备 启动后关闭防火墙 Serv
DNS(域名系统),用于解析域名和IP地址之间的映射关系 协议使用端口: udp 53正常查询解析情况下使用udp53 tcp53当进行主从之间的区域传送时使用tcp53 DNS域的空间划分 DNS的查询方式 递归查询 当主机A要向DNS服务器发送查询主机D的请求时,服务器返回给A最终结果,这种方式就是递归查询,如果客户端要查找的内容直接在服务器上得到结果,刚给出的答案是一个权威答案,否则就是一个参考答案。 迭代查询 NS服务器接收到A的请求后,本地没有D的解析,则会通过以下过程获得 1、NS向根域询问D

nginx的记录配置心得 - 2016-08-29 17:08:29

今天本来要去见自己喜欢的一个人的,唉,感觉自己的爱情龙卷风来了,来的很猛烈,我今天还把自己的胡子刮的很干净,悲催的是那位女士像木头一样,不知道她怎么想的,我发微信她也偶尔回复我,我真的很喜欢她,虽然刚认识没多久,这种感觉从来没有过,我每天都给她发很多消息,我现在都怕她烦了,会不会把我加黑啊,心里很矛盾,真的,找到一个自己喜欢的人和喜欢自己的人真的好难啊,好了悲催的心情就到这里吧。 我下面给大家带来的是NGINX的一些记录,因为可能要换工作了,面试的时候会问到,而且有个人老问我,他要给公司配置NGINX,我
需要使用到的服务:PXE + DHCP+TFTP+ Kickstart+ FTP 运行原理如下图: 原理和概念: 1、前言 首先,简单谈谈为什么要采用无人值守网络安装linux操作系统。一方面是运维管理的需要,因各种需要,安装操作系统在实验室内时有发生,有时候更出现批量安装某一型号操作系统的情形,这时候如果用光盘挨个安装将变得异常繁琐,并且需要人工值守。此外,因操作系统种类较多(主要是针对linux),内部人员使用频繁,也会带来管理上的问题。另一方面是当前MPX项目开发的需要,为打造一个精简、适用、高效、

Linux基础之sed流编辑器详解 - 2016-08-29 17:08:59

之前介绍了三大文本编辑器的grep,这里介绍比grep功能更强的sed流编辑器 sed是什么? sed是Stream EDitor的缩写,man中对sed的简介为 sed - stream editor for filtering and transforming text 它的主要功能是对文本的过滤与替换。 sed的工作原理 sed的工作过程 :sed是一个流编辑器,所谓流编辑器是指sed每次只从文件或stdin中读入一行,将读入的行保存至模式空间然后根据指定的要求对其进行处理,并将处理后的结果输出至屏

OpenVPN应用案例 - 2016-08-29 17:08:58

OpenVPN服务器的搭建: http://qicheng0211.blog.51cto.com/3958621/1575273 CentOS下OpenVPN客户端配置: http://qicheng0211.blog.51cto.com/3958621/1840055 应用一 、点对点安全通道 工作中可能会遇到这样的场景:由于业务需要,异地两台服务器需要安全的相互访问,除了拉专线,比较经济的方法就是通过公网建立加密隧道,openvpn是一个很好的选择。 服务端:内网IP192.168.20.220,vp
前段时间做了个项目,是关于父子域合并的,其实无非就是使用ADMT把域用户,计算机等从子域迁移到父域上,看似迁移用户很简单。But……生产环境啊,Exchange,TFS,Sharepoint,还有其余乱七八糟的东西,都使用了域账号,牵一发动全身的节奏,迁移账号出点儿问题相关用户就可以坐在那打酱油了,迁移前在他们生产环境中新建测试账号迁移,但是这种测试账号相对理想的环境,测试过程中很多问题不容易发现,很多问题是迁移了客户生产用户账号时出现了问题,但是于对于TFS一窍不通,sharepoint大多不懂的我来说
上一篇博客讲解了nginx相关的数据结构。 这一篇主要交接如何将自己的模块编译进nginx; 一种常用的简单方法: 1)首先把源代码文件全部放大一个目录下,然后在改目录中编写一个config用于通知Nginx如何编译本模块,这个文件名必须为config。 在configure脚本执行时加入参数--add-module=PATH(上面源码,config的保存目录) 执行正常安装流程是完成Nginx的编译工作。 ps:还有一种复杂方式,就是修改configure脚本执行后生成的obj/Makefile和obj

OpenLDAP 客户端部署 - 2016-08-29 17:08:32

有关服务端的安装请点击 一、账号登录系统流程讲解 当在客户端输入账号登录系统时,系统根据/etc/nsswitch.conf配置文件获取账号查找顺序,然后再根据PAM配置文件调用相关模块,对账号(/etc/passwd)及密码(/etc/shadow)进行查找并进行匹配。当本地匹配不成功时,会通过后端认证服务器(OpenLDAP服务器)进行验证。 二、配置文件功能介绍 下面介绍几个配置文件再后面我们会进行修改,我这里简单介绍一下。 /etc/nsswitch.conf 该文件主要用于名称转换服务,用于系统
1. root下进入其他用户主目录 cd ~USERNAME 2. touch的另外的一种作用 常用的是touch创建一个不存在的文件 而touch一个存在的文件时候,touch会修改文件的三个时间(使用stat可以查看),其中access表示最后一个访问时间,modify表示最后一次修改文件的时间,change表示最后修改文件属性的时间 3. file查看文件类型 镜像文件(iso)的文件类型为iso9660 4./etc/passwd中各字段对应解释 1 用户名:2密码:3uid:4gid:5备注:6