• Linux磁盘使用及文件系统管理


    Linux磁盘使用及文件系统管理

    欢迎来到 来到大浪涛天的博客

    一、Linux磁盘使用及文件系统管理

    1. mount 命令

    mount [-fnrsvw] [-t vfstype] [-o options] device dir

    1-1. 命令选项:

    1. -r:只读
    2. -w:只写
    3. -n:默认情况下设备的挂载和卸载的操作会同步更新到/etc/mtab文件中,-n用于禁止此特性
    4. -t vfstype:指明要挂载的文件系统的类型,多数情况下可以省略,此时mount通过blkid来判断要挂载设备的文件系统类型
    5. -L:挂载的时候以卷标的方式指明设备
    [root@test01 /]# mke2fs -L mydata /dev/sdb1
    [root@test01 /]# blkid /dev/sdb1
    /dev/sdb1: LABEL="mydata" UUID="6e6ccefa-884b-4271-8547-8368637c15dd" TYPE="ext2" 
    [root@test01 /]# mount -L mydata /mnt
    1. -U:挂载的时候以uuid来指明设备
    [root@test01 mnt]# blkid /dev/sdb1
    /dev/sdb1: UUID="b95393c7-b40d-4767-9d5a-be05c811ed0d" TYPE="xfs" 
    [root@test01 mnt]# mount -U b95393c7-b40d-4767-9d5a-be05c811ed0d /mnt
    1. -o options:挂载选项
    • sync/async:同步/异步操作;
    • atime/noatime:文件或目录被访问时是否更新其访问时间戳;同时对文件和目录生效,关闭对性能有大幅度提升,Centos7 上默认是延迟的,所以有时候访问文件的时候,访问的时间戳没有即时更新
    • diratime/nodiratime:目录在访问时是否更新其访问的时间戳;只对目录生效,关闭对性能有大幅度提升,Centos7 上默认是延迟的,所以有时候访问文件的时候,访问的时间戳没有即时更新
    • acl:支持使用文件acl功能
    • remount:重新挂载后面添加新的属性,例如下面这个,重新挂载让/dev/sdb1这分区支持acl。
      [root@test01 /]# mount -o remount,acl /mnt
      [root@test01 /]# setfacl -m u:test:rw- /mnt/fstab
      [root@test01 /]# getfacl /mnt/fstab 
    可以使用tune2fs来更改文件系统的选项,让该文件系统支持acl的功能,这样即使mount -o 没加acl的选项依然支持acl,如:
      [root@test01 /]# tune2fs -o acl /dev/sdb1
      [root@test01 /]# tune2fs  -l /dev/sdb1 |grep "Default mount"
      Default mount options:    user_xattr acl
    • ro:只读
    • rw:读写
    • dev/nodev:此设备是否允许创建设备文件
    • exec/noexec:此设备是否允许被执行程序文件
    • auto/noauto:此设备是否允许自动挂载
    • user/nouser:是否允许普通用户挂载文件系统
    • suid/nosuid:是否允许程序文件上的suit/guid权限生效
    • defaults: Use default options: rw, suid, dev, exec, auto, nouser, and async.

    1-2. mount 的bind功能

    可以实现将一个目录绑定到另外一个目录,作为其临时访问入口

    [root@test01 etc]# mkdir /network
    [root@test01 etc]# mount --bind /etc/sysconfig/network-scripts/ /network/
    [root@test01 etc]# ls /network |grep ifcfg-eth0
    ifcfg-eth0
    [root@test01 etc]# umount /network/
    [root@test01 etc]# ls /network |grep ifcfg-eth0
    [root@test01 etc]# echo $?
    1

    1-3. 查看当前系统下的mount选项

    mount
    cat /etc/mtab
    cat /etc/proc/mounts
    [root@test01 etc]# cat /proc/mounts 

    1-4. 挂载特殊设备如光盘和iso文件

    挂载光盘

    mount -r /dev/cdrom /mnt
    sr0是指sata接口的光驱设备
    [root@test01 etc]# mount -r /dev/cdrom /media/
    mount: 在 /dev/sr0 上找不到媒体

    挂载本地的回环设备,如.iso或者.img等设备

    mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT

    1-5. umount的特殊情况处理

    umount:如果卸载出现繁忙,有用户在访问,强行卸载 umount -lf

    [root@test01 ~]# umount /mnt
    umount: /mnt:目标忙。
            (有些情况下通过 lsof(8) 或 fuser(1) 可以
             找到有关使用该设备的进程的有用信息)
    [root@test01 ~]# lsof /mnt
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    bash    1619 root  cwd    DIR   8,17     4096    2 /mnt
    [root@test01 ~]# fuser -v /mnt
                         用户     进程号 权限   命令
    /mnt:                root     kernel mount /mnt
                         root       1619 ..c.. bash
    [root@test01 ~]# fuser -km /mnt
    /mnt:                 1619c
    [root@test01 ~]# umount /mnt

    2. swap文件的创建及启用

    生产环境中sawp分区格外重要,特别是针对内存不够的服务器,当系统内存不够的时候,Kernel会将一部分睡眠状态的存储在内存的数据转储到swap分区当中,这样当转储完成后系统可以从内存空间释放这部分内存,
    重新分配给需要内存的其他程序,所以swap分区也叫交换分区,值得注意的是交换分区的大小不是越大越好的,一般最大只能是内存的两倍,当内存足够大的时候,交换分区建议设置成和内存相同大小,因为交换分区
    是直接使用硬盘的,当交换分区里的数据量太大很可能会出现性能瓶颈的。

    2-1. mkswap 创建swap文件

    mkswap 创建swap文件,用于增加swap分区的空间,如:

    [root@test01 ~]# mkswap /dev/sdb1
    mkswap: /dev/sdb1: warning: wiping old ext2 signature.
    正在设置交换空间版本 1,大小 = 2096124 KiB
    无标签,UUID=d869ebd3-e8f0-48a7-995a-f9d98862ec67

    2-2. swapon,swapoff的用法

    swapon和swapoff 分别用于启动和关闭swap文件,例如:

    [root@test01 ~]# free -m |grep Swap
    Swap:          1023           1        1022
    [root@test01 ~]# swapon /dev/sdb1
    [root@test01 ~]# free -m |grep Swap
    Swap:          3070           1        3069
    [root@test01 ~]# swapoff /dev/sdb1
    [root@test01 ~]# free -m |grep Swap
    Swap:          1023           1        1022

    2-3. swap -a 的参数

    -a 是自动挂载/etc/fstab里面设定了的swap分区,当/etc/fstab里定义好了,可以直接用swapon -a实现自动挂载swap文件。

    3. /etc/fstab 文件:

    设定除根文件系统以外的其他文件系统能够开机时自动挂载,每行定义一个要挂载的文件系统及相关属性,其中fstab包含6个字段,字段的相关详解如下:

    1. 要挂载的设备:
    • 设备文件
    • LABLE
    • UUID
    • 伪文件系统:如sysfs,proc,tmpfs等
    1. 挂载点
      swap 类型的文件挂载点为swap,其余的为自己设置的挂载点
    2. 文件系统类型
    3. 挂载选项
    • defaults,使用默认的挂载选项,centos7中的默认挂载选项有:rw, suid, dev, exec, auto, nouser, and async
    • 如果有多个挂载选项,彼此之间以“,”相分隔,如:defaults,acl,noatime,noexec
    1. 转储频率
    • 0: 从不备份;
    • 1: 每天备份;
    • 2: 每隔一天备份;
    1. 自检次序:
    • 0: 从不自检
      1. 首先自检,通常用于根文件系统,其他文件系统不能用1,否则会到维护模式
      1. 次级自检

    4. df命令

    df 用于显示文件系统磁盘空间的使用情况,命令格式为:
    df [OPTION]... [FILE]...
    常见参数有:

    1. -l: 仅显示本地文件系统的相关信息,网络文件系统则不显示
    [root@test01 ~]# mount -t nfs 10.211.55.241:/home/test/1 /mnt
    [root@test01 ~]# df -l |grep "/mnt"
    [root@test01 ~]# df -h |grep "/mnt"
    10.211.55.241:/home/test/1             30G   12G   18G   40% /mnt
    1. -h: 常见的格式显示出大小(例如:1K 234M 2G)
    [root@test01 ~]# df -k |grep "/mnt"
    10.211.55.241:/home/test/1            30705152  11980800  18724352   40% /mnt
    [root@test01 ~]# df -h |grep "/mnt"
    10.211.55.241:/home/test/1             30G   12G   18G   40% /mnt
    1. -i 显示inode的使用状态而非blocks的使用状态
    [root@test01 ~]# df -i |head -n 2
    文件系统                                Inode 已用(I)  可用(I) 已用(I)% 挂载点
    /dev/mapper/centos_centos7--tmp-root 15360000  144235 15215765       1% /

    5. du命令

    显示指定的文件已使用的磁盘空间的总量,包括在层次结构中以 这些以指定文件为根的目录在内。这里的“已使用的磁盘空间”意思 为指定的文件下的整个文件层次结构所使用的空间。
    在没给定参数的情况下,du 报告当前目录所使用的磁盘空间,命令格式为:
    du [options] [file...]
    常见参数有:

    1. -s: sumary,显示目录时不是显示某个文件的大小,而是显示目录的总的大小
    [root@test01 ~]# du -sh /usr
    3.3G    /usr
    1. -h: 常见的格式显示出大小(例如:1K 234M 2G)
    [root@test01 ~]# du -sh /etc
    41M     /etc
  • 相关阅读:
    Jquery简略API使用
    JS全部API笔记
    实现nginx的负载均衡和反向代理
    HashMap在Java1.7与1.8中的区别
    数据库设计三大范式
    Java集合
    Object类有哪些方法
    spring mvc出现 Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'endtime'
    int和Integer的区别
    第二次面试-科大讯飞(卒)
  • 原文地址:https://www.cnblogs.com/chacha51/p/13715004.html
Copyright © 2020-2023  润新知