linux中关于文件系统的简要介绍和一般操作

创建文件系统——分区格式化
    格式化:
        低级格式化:
            划分磁道
        高级格式化:
            创建文件系统,按照某种特定的标准,将整个分区划分为大小相同的若干小的逻辑编址单元,每个这样的单元,称为块(Block);

划分块的标准:
                在Linux的文件系统中,主要的块划分标准就是:每个块包括2^1或2^2或2^3个扇区;即块大小可以是:1024Byte,2048Byte或者4096Byte;

注意:
            1.被划分出来的块,每一个块只能存放一个文件的内容,一个文件可以存储在多个块上;
            2.如果在某个分区中,要创建大量的小文件,就将块大小设置的小一些;反之,如果在某个文件中,要创建的都是大文件,就将块设置的大一些;
            3.如果分区的空间较大,可以将块设置的大一些;

FHS——文件系统层级标准
        /bin /boot /etc /dev ...

对应数据的管理:
        平面分类管理:
            遍历数据;
        空间分类管理(层次化)
            逻辑编址:创建文件系统实际上就是给分区进行存储空间的逻辑编址;
            特点:仅需要经过有限次且有效的查找即可定位到目标文件;

在一个分区中创建文件系统的步骤:
    1.首先,文件系统会将分区划分成大小相等的若干块;
        元数据块:
            其中主要存放文件的属性:
                文件大小、文件权限、文件所有权、文件的时间戳、数据块指针(直接、间接)

存放每个文件的元数据的固定的存储空间,称为index node,简称inode;(查询inode的使用 用df -i 命令)
            在linux的文件系统中,每个inode大小一般是128byte;每个inode都有其对应的inode编号;

数据块
            存放文件中所包含的流式数据的内容;

特殊文件:
            只占据元数据块中的inode,而不占据数据块;
            设备文件:
                Block Special
                Character Special

此类文件是将inode中的数据块指针换成了设备号;

符号链接文件:
                Symbolic Link

此类文件时将inode的数据块指针换成了另一个文件的访问路径;

随着磁盘空间越来越大,划分出来的块的数量越来越多,管理难度越来越大;通过划分块组来解决此问题:
        块组:
            每个块组中有独立的元数据块和数据块;
            存放数据的时候,以块组内的数据优先选择,如果块组内的数据块数量不够,可以通过文件系统的存储策略来申请多个块组协同存储;

超级块:
            主要定义了在整个分区中有多少个块组,及每个块组的边界;
            为了防止超级块发生故障导致整个文件系统崩溃,文件系统会自动对超级块进行备份;

为了防止数据不一致,在文件系统中引入日志块的概念:
        日志块:对于数据的写入操作做日志记录的块;

数据不一致通常是由不洁关机、不洁断电导致;

一个完整的Linux文件系统:
    超级块,inode,inode bitmap,block bitmap,data block,journal block

想要查找/var/log/messages文件的内容,是怎样的查找过程?
    
    目录:内容是文件名;

每个文件名是文件的特有的标识,每个文件名都对应一个inode;

Linux支持的文件系统:
    位于内核空间中的文件系统驱动:
        /usr/lib/modules/KERNEL-VERSION/kernel/fs/
        文件系统可以是内核的一部分,也可以是内核的模块;

位于用户空间中的文件系统管理程序:
        管理命令;

linux支持的文件系统:
        1.Linux专属文件系统:
            ext系列:ext、ext2、ext3、ext4
            ext4特性:
                单个分区最大50TB;
                单个文件最大64EB;
                可以在根分区上设置;
                可以在启动分区上设置;
        2.xfs:最大分区500TB, ...
        3.reiserfs:
        4.btrfs:技术预览版
        5.ISO9660:光盘文件系统
        6.FAT:vfat
        7.NTFS:默认不支持,可以通过调整内核参数以获得支持;
        8.网络文件系统:NFS、CIFS
        9.集群文件系统:gfs2、ocfs2
        10.分布式文件系统:
            内核级:ceph
            用户空间(应用级):mogilefs、moosefs、glusterfs
        11.Unix的文件系统:ufs、FFS、JFS、zfs
        12.伪文件系统:proc、sys、tmpfs、hugepagefs;
            并非管理磁盘数据的文件系统,而是管理内存数据的文件系统;

对于不同的发行版本的LInux,都有其默认使用的文件系统:
    RHEL或CentOS系列:
        5:ext3
        6:ext4
        7:xfs

管理文件系统:
    创建文件系统:
    使用文件系统(挂载文件系统):
    停止使用文件系统(卸载文件系统):
    文件系统的检测和修复:

创建文件系统的用户空间工具:
    mkfs
        mkfs - build a Linux filesystem
        mkfs [options] [-t type] [fs-options] device [size]

RHEL或CentOS系发行版中,可以使用mkfs.ext4, mkfs.btrfs, ...等工具来代替mkfs创建文件系统;

示例:
        ]# mkfs -t ext4 /dev/sdb1
        ]# mkfs.ext4 /dev/sdb2

注意:
        1.不要使用磁盘设备名称作或扩展分区设备名称作为mkfs命令的参数;
            如果使用磁盘设备名称作为mkfs命令的参数,则所有分区都将被删除;
            如果使用扩展分区设备作为mkfs命令的参数,则所有的逻辑分区都将被删除;

2.只有主分区和逻辑分区才能使用mkfs命令创建文件系统;

3.如果要创建的目标文件系统是ext系列文件系统,那么可以使用mke2fs命令;
            mke2fs:
                mke2fs - create an ext2/ext3/ext4 filesystem
                常用选项:
                    -b block-size:在创建文件系统时,指定每个块的大小;默认值是4096,单位是字节;调整时,只能写1024,2048及4096;
                    -i bytes-per-inode:在创建文件系统时,指定inode与字节的比率;即:多少个字节创建一个inode,默认值是16384;
                    -j:创建有日志功能的文件系统,即:ext3;
                    -L new-volume-label:在创建文件系统时,指定卷标;
                    -m reserved-blocks-percentage:在创建文件系统时,指定为管理员保留的磁盘空间的百分比;默认值是5;
                    -n:并非真正创建文件系统,而是显示在创建文件系统时所做的操作;
                    -N number-of-inodes:在创建文件系统时,直接指明在此文件系统中创建的inode的数量;
                    -O [^]feature[,...]:在创建文件系统时,关闭或开启文件系统特性;
                    -t fs-type:在创建文件系统时,指定文件系统类型;

修改ext系列文件系统的卷标:
        e2label命令:
            e2label - Change the label on an ext2/ext3/ext4 filesystem
            e2label device [ new-label ]

注意:如果不加new-label参数,则是查看指定设备的卷标;如果添加了new-label参数,则直接将设备的卷标设置为new-label,而不考虑原来是否有卷标或者原卷标是什么;

修改ext系列文件系统的属性,可以使用tune2fs命令:
        tune2fs:
            tune2fs - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems
            在ext2/ext3/ext4文件系统上调整那些可以被调整的参数;
            常用选项:
                -l:显示超级块的内容;
                -j:将ext2文件系统修改调整为ext3文件系统;
                -m reserved-blocks-percentage:调整文件系统中预留空间的百分比;
                -r reserved-blocks-count:调整文件系统中预留的磁盘空间的块数;
                -L  volume-name:修改卷标;
                -O [^]feature[,...]:修改文件系统特性是否开启;

文件系统的检测和修复工具:
        fsck:
            fsck - check and repair a Linux filesystem
            fsck  [-ar] [-t fstype] [filesystem...]
            常用选项:
                -t fstype:指定要检测的文件系统的文件系统类型;
                -a:无需交互,自动修复检测到的所有问题;
                -r:交互式式修复检测到的问题;

ext系列文件系统专用的检测修复工具:
            e2fsck
                e2fsck - check a Linux ext2/ext3/ext4 file system
                e2fsck [-y] [-f] device
                常用选项:
                    -y:在交互式过程中所有的问题都以"yes"来回答;
                    -f:强制检测并修复;即使文件系统处于clean状态也修复;

blkid:
        blkid - locate/print block device attributes
        常用选项:
            -L label:根据指定的卷标进行块设备查找定位;
            -U UUID:根据指定的UUID进行块设备的查找定位;

findfs
        findfs - find a filesystem by label or UUID
        findfs [LABEL=<label>] [UUID=<uuid>]

swap文件系统:
    前提:分区的类型必须是swap类型,即:分区的系统ID必须是82;
        修改方法:在fdisk的交互模式中,使用t命令将指定的分区类型修改为82即可;

创建swap文件系统:
        mkswap命令:
            mkswap - set up a Linux swap area
            mkswap [options] device
            常用选项:
                -f, --force:强制执行;
                -L LABEL:设置交换分区的卷标;
                -U UUID:指定交换分区的UUID,建议让系统自动生成;

示例:
            ~]# mkswap /dev/sdb3

利用一个大文件创建交换分区:
        示例:
            ~]# dd if=/dev/zero of=/tmp/swapfile bs=1024 count=1024000
            ~]# mkswap /tmp/swapfile

使用文件系统——挂载
    挂载:
        对于Linux系统来说,文件系统只能有唯一的一个原初访问入口,此访问入口被称为"根文件系统";其他所有的文件系统,都必须通过某个特定方式关联至根文件系统或者根文件系统的子目录中,而此关联过程被称为"挂载";用于关联根文件系统和其他文件系统的目录,就被称为"挂载点";

挂载点:mount point,通常是一个目录,该目录在成为挂载点之后,就是其他文件系统的访问入口;如:/boot
        要求:
            1.作为挂载点的目录必须事先存在;
            2.作为挂载点的目录应该是没有被使用或不能被其他进程占用的目录,换言之,必须是空闲的目录;
            3.作为挂载点的目录,一旦挂载其他文件系统,则失去原文件系统中的特性;简单说,如果一个目录中有文件名,一旦挂载了其他文件系统,则原来的文件名则不可见,这样的目录中的新的内容是新文件系统中的文件名;这个过程会一直持续到新文件系统被卸载;

完成挂载操作,使用mount命令;
        mount命令:
            mount - mount a filesystem
            格式:
                mount [-lhV]
                mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
                mount [-fnrsvw] [-o option[,option]...]  device|dir
                mount [-fnrsvw] [-t vfstype] [-o options] device dir

常用选项:
                -r, --read-only:以只读方式挂载目标文件系统;通常用于光盘挂载;
                -w, --rw, --read-write:以可读可写的方式挂载目标文件系统;通常是默认的
                -n, --no-mtab:
                    默认情况下,所有挂载块设备的操作都会被自动记录在/etc/mtab文件中,如果使用了-n, --no-mtab选项,则表示即便挂载成功,也不会将挂载信息记录在/etc/mtab文件中
                -t, --types vfstype:在挂载文件系统时指明目标文件系统的类型;如果省略该选项,mount命令会通过blkid命令来判断要挂载的目标文件系统的类型;
                -L, --label label:通过指定的文件系统的卷标来挂载目标文件系统;
                -U, --uuid uuid:通过指定的文件系统的UUID挂载目标文件系统;
                -a, --all:根据/etc/fstab文件中指定的文件系统进行自动挂载;
                -o, --options opts:在挂载目标文件系统时,可以调整挂载参数选项;
                    FILESYSTEM INDEPENDENT MOUNT OPTIONS:
                        sync/async:同步/异步挂载选项;
                        atime/noatime:文件被访问时,是否更新访问时间戳;
                        diratime/nodiratime:目标被访问时,是否更新访问时间戳;
                        ro/rw:是以只读/可读可写方式挂载文件系统;相当于-r/-w选项的功能;
                        dev/nodev:在此文件系统中是否允许创建设备文件;
                        exec/noexec:在此文件系统中是否允许运行程序文件,包括各种二进制文件和各种脚本;
                        auto/noauto:在挂载此文件系统时是否能够使用-a选项进行挂载;
                        user/nouser:是否允许普通用户挂载此文件系统;
                        suid/nosuid:在此文件系统中是否允许程序文件上的SUID和SGID特殊权限生效;
                        relatime/norelatime:在此文件系统中是否参考inode访问时间来修改其修改时间戳和改变时间戳;
                        remount:对目标文件系统,无需卸载,就可以应用新的挂载选项;
                        acl:只在ext系列文件系统或xfs文件系统中使用,可以使用文件系统的facl功能;
                        defaults:默认选项,其中包括:rw, suid, dev, exec, auto, nouser, and async.
                        loop:使用环回设备,将镜像文件当做文件系统挂载至指定的挂载点;
                -B, --bind:将某个已经挂载的文件系统绑定至另一个挂载点;
                    示例:# mount -B|--bind mount_point1 mount_point2
    示例:
        # mount /dev/sdb1 /mnt/sdb1
        # mount -o remount,ro /mnt/sdb1

卸载已经挂载的文件系统:
        umount命令:
            umount - unmount file systems
                umount -a
                    卸载当前已经挂载的文件系统中的所有可卸载的文件系统;
                umount {dir|device}...
                    通过指定挂载点或设备文件名称,卸载指定设备;

挂载光盘:
        在虚拟机中,需要保证光盘镜像文件被放入虚拟机的光驱,并且保证虚拟机的光驱处于"已连接"的状态;需要实现创建挂载点(/mnt/cdrom);

# mount -r /dev/sr0 /mnt/cdrom

挂载交换分区:
        swapon:

卸载交换分区:
        swapoff:

swapon, swapoff - enable/disable devices and files for paging and swapping
            -a, --all:自动挂载/etc/fstab文件中被正确定义的所有的交换分区;

/etc/fstab文件的格式:
    共6个字段,默认使用空白字符(制表符)作为字段分隔符;六个字段的含义分别为:
        1.要挂载的设备或文件系统名称,也可以是卷标或UUID;
            如果使用卷标必须使用:LABEL="label"
            如果使用UUID必须使用:UUID="uuid"

2.挂载点:
            swap设备或文件无需挂载点,在此字段写swap即可;

3.文件系统类型:

4.默认的文件系统挂载选项:想要指定多个选项时,使用逗号分隔的列表;
            defaults,ro,sync

5.转储频率:
            使用dump命令自动备份分区数据的频率;
            0:表示不备份
            1:每天备份一次
            2:每两天备份一次,即:每隔一天备份一次;
            ...

6.自检次序:
            0:不自检;
            1:优先自检,通常仅设置在根文件系统上;
            2:次级自检;
            ...
            9:最低优先级自检;

/etc/fstab文件的作用:
        在系统启动过程中,会自动挂载该文件中所有被正确列出的文件系统;

原文地址:http://blog.51cto.com/liujingyu/2064922

时间: 2024-10-01 03:07:10

linux中关于文件系统的简要介绍和一般操作的相关文章

linux中proc文件系统 -- ldd3读书笔记

1./proc 文件系统概述 /proc 文件系统是由软件创建,被内核用来向外界报告信息的一个文件系统./proc 下面的每一个文件都和一个内核函数相关联,当文件的被读取时,与之对应的内核函数用于产生文件的内容.我们已经见到了很多这样的文件,例如,/proc/modules 总是返回当前内核中加载的模块. /proc 广泛的应用在 linux 文件系统中,现代 linux 发行版上的许多应用程序,例如 ps ,top 和 uptime 都从 /proc 获取他们所需要的信息.一些驱动程序也通过

linux中各目录及详细介绍

一.Linux文件系统的层次结构 在Linux或UNIX操作系统中,所有的文件和目录都被组织成一个以根节点开始的倒置的树状结构,如图: 二.目录 1.目录的定义 目录相当于Windows中的文件夹,目录中存放的既可以是文件,也可以是其他的子目录. 文件系统层次结构标准(FHS)定义了Linux操作系统中的主要目录及目录内容. 在FHS中,所有的文件和目录都出现在根目录"/"下,即使他们存储在不同的物理设备中. 2.linux中的目录详细介绍: /   根目录 /bin/   面向所有用

分布式文件系统HDFS简要介绍

HDFS 的设计主要基于以下六点考虑: (1)容错 独立计算机的硬件错误不能当异常情况处理,而属于正常状态.HDFS 文件系统中会有许多个普通计算机节点构成, 在任何时间任何一个节点都有可能出现故障, 因此HDFS 应该设计成能够自动恢复和快速检测错误, 这应该是维持HDFS 可靠运行的核心目标. (2)流式访问数据集 HDFS上运行的应用程序需要以流式访问所存储的数据集.这些应用程序都采用并行的批处理方式进行数据计算,不同于普通系统上用于数据处理的应用程序.提高数据访问吞吐量是研究HDFS的重

Linux工程师学习资料,Linux中的文件系统树

在Linux中,所有的文件与目录都由根目录/开始.是所有目录与文件的源头.然后再一个一个分支下来,有点像树状结构.而每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的. 在系统中我们会看到/ 目录下有许多目录! 这些目录都是有各自的功能. 那这些目录的功能是什么呢? 我们来看下. 用于存放命令文件 /bin 目录中存放的命令不会对系统造成质的修改,所有用户都可以使用 /sbin 目录中存放的命令会对系统造成修改,大多数命令只能由root使用 boot 用于存放系统启动的引导文件,以及L

基于redis ae实现 Linux中的文件系统监控机制(inotify)

(英文部分为转的.代码是个人代码) 1 What's inotify The inotify API provides a mechanism for monitoring file system events. Inotify can be used to monitor individual files, or to monitor directories. When a directory is monitored, inotify will return events for the d

Linux中常见的加密技术介绍

常见的加密技术: 对称加密:非对称加密:单向加密:SSL/TLS:秘钥交换 1.对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密. 对称加密的常见算法:DES.3DES.AES.IDEA.RC6.CAST5等 (1)优点 加密.解密使用同一个密钥,效率高: (2)缺点 必须商定秘钥:数据传送前,双方必须商定好秘钥.线上商定,存在被窃取风险: 来源无法确认:如果钥匙被窃取,窃取者就可以冒充另一方进行通讯,接收者无法确认来源:

linux中wget的使用方法介绍

wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能和特点:(1)支持断点下传功能:这一点,也是网络蚂蚁和FlashGet当年最大的卖点,现在,Wget也可以使用此功能,那些网络不是太好的用户可以放心了:(2)同时支持FTP和HTTP下载方式:尽管现在大部分软件可以使用HTTP方式下载,但是,有些时候,仍然需要使用FTP方式下载软件:(3)支持代理服务器:对安全强度很高的系统而言,一般不会将自己的系统直接暴

Linux中常见日志文件的介绍

/var / log / cron:记录crond计划任务相关的时间信息: 一.内核及系统日志分析 /var / log / messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动.I/O错误.网络错误.程序故障等.对于未使用独立日志文件的应用程序或服务,一般都可以在该日志文件中获得相关信息. /var /log /dmesg:记录Linux操作系统在引导过程中的各种事件信息: /var / log / maillog:记录进入或发出系统的电子邮件活动: /var / l

linux中curl指令的简要分析

curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面. 它支持多种协议,下面举例讲解如何将它用于网站开发. 一.查看网页源码 直接在curl命令后加上网址,就可以看到网页源码.我们以网址www.sina.com为例(选择该网址,主要因为它的网页代码较短): $ curl www.sina.com <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <