美文网首页
Linux 文件系统管理

Linux 文件系统管理

作者: AmenSun | 来源:发表于2018-09-30 21:06 被阅读0次

    一、Linux文件系统类型

    Linux 支持的文件系统有很多,包括 ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, vfat, swap(交换分区)等;
    根据是否支持“journal”的功能:

    • 日志类型文件系统: ext3, ext4, xfs ...
    • 非日志类型文件系统:ext2, vfat

    文件系统的组成部分:

    • 内核中的模块:ext4, xfs, vfat
    • 用户空间的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat

    VFS

    所谓VFS就是Virtual File System虚拟文件系统,也称为虚拟文件系统开关(Virtual Filesystem Switch).
    这是Linux文件系统对外的接口。任何要使用文件系统的程序都必须经由这层接口来使用它。
    VFS是一个异构文件系统之上的软件粘合层(注:有时也把VFS称为可堆叠的文件系统(Stackable Filesystem),因为VFS可以无缝地使用多个不同类型的文件系统,就像把多个文件系统堆叠在一起一样,故而得名)。通过VFS,可以为访问文件系统的系统调用提供一个统一的抽象接口。

    检测当前内核支持的文件系统类型
    # cat /proc/filesystems
    # lsmod # 列出内核模块

    二、文件系统创建

    在磁盘分区完毕之后,需要为分区格式化,将其格式化为需要的文件系统,才可以对分区进行读写操作。
    1. mkfs

    mkfs [options] [-t type] [fs-options] device [size]
    
    • mkfs -t FS_TYPE /dev/device
      -L "Label" #为该设备设置卷标
      # mkfs -t ext4 -L "MyLabel" /dev/sda3
    • mkfs.FS_TYPE /dev/device
      FS_TYPE 可以为 ext2, ext3, ext4, xfs, btrfs 等文件系统类型
      # mkfs.ext4 /dev/sda3

    2. mke2fs
    ext 系列专用文件系统管理工具
    mke2fs - create an ext2/ext3/ext4 filesystem
    # mke2fs [options] device

    [-b block-size]  #块大小 {1024|2048|4096}        
    [-i bytes-per-inode]  # 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小
    [-N number-of-inodes] #为数据空间创建个多少个inode   
    [-m reserved-blocks-percentage] #为管理人员预留的空间占据的百分比;默认 5%
    [-L volume-label] #标签
    [-O feature[,...]] #启用指定特性    -O ^FEATURE:关闭指定特性
    [-t fs-type] #文件系统类型 {ext2|ext3|ext4}
    

    3. mkswap
    建立 swap 分区,前提:调整其分区的ID为82。
    # mkswap [options] device [size]

    4. blkid
    块设备属性查看

    blkid -L <label> | -U <uuid>
    

    5. e2label
    管理 ext 系列文件系统的标签
    # e2label device [ new-label ]

    6. tune2fs
    重新设定和调整 ext 系列文件系统可调整参数的值
    基本参数和 mke2fs 类似,值得关注的是

    [-o [^]mount_options[,...]] # 调整文件系统的默认挂载选项
    

    7. dumpe2fs
    打印当前设备上的文件系统的超级块和块设备信息

    dumpe2fs [-bfhixV] [-o superblock=<num>] [-o blocksize=<num>] device
    

    三、文件系统检测

    1. fsck
    检查和修复文件系统

    fsck [-lrsAVRTMNP] [-C [fd]] [-t fstype] [filesystem...]  [--] [fs-specific-options]
    -a # 自动修复错误
    -r # 交互式询问修复
    

    等价于:# fsck.FS_TYPE

    2. e2fsck
    检查ext系列文件系统
    # e2fsck [options] device

    • -y # 非交互式,自动回答 yes
    • -f # 强制修复
    • -p # 自动修复

    四、文件系统挂载与卸载

    • 将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载;
    • 解除此关联关系的过程称之为卸载;
    • 注意:挂载点下原有文件在挂载完成后会被临时隐藏

    1. 挂载

    • mount 挂载命令
      查看文件显示当前系统已挂载的所有设备 # /etc/mtab
      查看内核追踪到的已挂载的所有设备:# cat /proc/mounts
    mount [-fnrsvw] [-t vfstype] [-o options] device dir
     -a, --all    mount all filesystems mentioned in fstab # 挂载所有在 /etc/fstab 中定义的文件系统
     -t, --types <list>      limit the set of filesystem types # 指定要挂在设备上的文件系统,必须与文件系统格式化的类型一致
     -r, --read-only         mount the filesystem read-only (same as -o ro) # 只读挂载
     -w, --rw, --read-write  mount the filesystem read-write (default) # 读写挂载
     -n, --no-mtab           don’t write to /etc/mtab # 不写 mtab 文件
     -l, --show-labels       lists all mounts with LABELs # 列出挂载信息时带上文件系统标签
     -L, --label <label>     synonym for LABEL=<label> # 以卷标指定挂载设备
     -U, --uuid <uuid>       synonym for UUID=<uuid> # 以UUID指定要挂载的设备
     -B, --bind              mount a subtree somewhere else (same as -o bind) # 绑定目录到另一个目录上
                -o options:(挂载文件系统的选项)
                    async:异步模式;
                    sync:同步模式;
                    atime/noatime:包含目录和文件;
                    diratime/nodiratime:目录的访问时间戳
                    auto/noauto:是否支持自动挂载
                    exec/noexec:是否支持将文件系统上应用程序运行为进程
                    dev/nodev:是否支持在此文件系统上使用设备文件;
                    suid/nosuid:
                    remount:重新挂载
                    ro:
                    rw:
                    user/nouser:是否允许普通用户挂载此设备
                    acl:启用此文件系统上的acl功能
    
                    注意:上述选项可多个同时使用,彼此使用逗号分隔;
                          默认挂载选项:defaults
                                rw, suid, dev, exec, auto, nouser, and async
    

    # mount /dev/sda5 /python

    2. 卸载

    • umount 卸载命令
      进程正在使用中的设备无法被卸载
    umount [-dflnrv] {dir|device}...
     -a, --all    All of the file systems described in /etc/mtab are unmounted.
     -f, --force   Force unmount (in case of an unreachable NFS system).  # 强制卸载 NFS
     -n, --no-mtab  Unmount without writing in /etc/mtab.
     -r, --read-only   In case unmounting fails, try to remount read-only.
    

    # umount /dev/sda5

    # umount /python

    • 查看正在访问指定文件系统的进程
      # fuser -v MOUNT_POINT
    fuser [-fuv] [-a|-s] [-4|-6] [-c|-m|-n space] [ -k [-i] [-M] [-w] [-SIGNAL] ] name ...
           fuser -l
    
    • 终止所有在正访问指定的文件系统的进程
      # fuser -km MOUNT_POINT

    安装 fuser 工具 # yum install psmisc -y

    3. 挂载和卸载交换分区

    • swapon
    swapon [-d] [-f] [-p priority] [-v] specialfile...
     -a, --all       All  devices  marked  as  ``swap''  in  /etc/fstab  are made available, except for those with the ``noauto'' option. # 激活所有在 /etc/fstab 中设置为自动激活的 swap 分区
     -e, --ifexists       Silently skip devices that do not exist. # 跳过不存在的设备
     -s, --summary      Display swap usage summary by device. Equivalent to "cat /proc/swaps".  # 显示 swap 分区使用信息
     -v, --verbose       Be verbose.
     -p, --priority priority      Specify the priority of the swap device.  priority is a value between -1 and 32767.  Higher numbers indicate higher priority. # 指定优先级
    

    # swapon -v /dev/sda6
    # swapon -v

    • swapoff
    swapoff [-v] specialfile...
    Usage:
     swapoff [options] [<spec>]
    
    Options:
     -a, --all              disable all swaps from /proc/swaps
     -v, --verbose          verbose mode
    

    # swapoff -v /dev/sda6

    4. 自动挂载

    • 配置文件:/etc/fstab
      系统开机时将根据 fstab 文件的配置来自动实现文件系统的挂载
      每行定义一个需要挂载的文件系统
    /dev/mapper/centos-root                   /                       xfs     defaults        0 0
    UUID=2d5d8e36-0d64-4d53-90ee-632136874187 /boot                   xfs     defaults        0 0
    /dev/mapper/centos-swap                   swap                    swap    defaults        0 0
    

    每一行分别对应如下

    要挂载的设备或伪文件系统     挂载点     文件系统类型     挂载选项     转储频率     自检次序
    /dev/mapper/centos-root    /           xfs        defaults      0           0
    
    • 要挂载的设备或伪文件系统:
      设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc, sysfs)
    • 挂载选项:
      defaults
      可自定义,用逗号分隔,如:default,acl
    • 转储频率:
      0:不做备份
      1:每天转储
      2:每隔一天转储
    • 自检次序:
      0:不自检
      1:首先自检;一般只有rootfs才用1;
      ...

    五、空间使用情况检查

    • 内存空间使用状态:
      free [OPTION]
      -m: 以MB为单位
      -g: 以GB为单位
      # free -g

    • 文件系统空间占用等信息的查看工具:
      df:
      -h: human-readable
      -i:inodes instead of blocks
      -P: 以Posix兼容的格式输出;
      # df -h

    • 查看某目录总体空间占用状态:
      du:
      du [OPTION]... DIR
      -h: human-readable
      -s: summary
      显示 /boot 目录的总体占用大小 # du -sh /boot
      显示 /boot 下每个文件占用空间大小 # du -sh /boot/*,仅显示 boot 目录下的一级目录和文件的总占用大小
      显示 /boot 目录下每一个文件及文件夹分别占用的空间 # du -ah /boot/

    六、文件系统其他

    1. Inode
    Inode: Index Node, 索引节点

    • 地址指针:
      直接指针:
      间接指针:
      三级指针:

    inode bitmap:对位标识每个inode空闲与否的状态信息

    2.链接文件

    • 硬链接:
      不能够对目录进行;
      不能跨分区进行;
      指向同一个inode的多个不同路径;创建文件的硬链接即为为inode创建新的引用路径,因此会增加其引用计数;

    • 符号链接:
      可以对目录进行;
      可以跨分区;
      指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;

    • 创建链接
      ln [-sv] SRC DEST
      -s:symbolic link
      -v: verbose
      eg:在 /tmp (DEST)下创建一个名为 app 的符号链接,指向 /python (SRC)目录
      # ln -sv /python /tmp/app

    [root@centos-7 tmp]# ls -lh /tmp/app
    lrwxrwxrwx. 1 root root 7 Oct  1 23:05 /tmp/app -> /python
    [root@centos-7 tmp]#
    

    相关文章

      网友评论

          本文标题:Linux 文件系统管理

          本文链接:https://www.haomeiwen.com/subject/kmxwoftx.html