zoukankan      html  css  js  c++  java
  • linux学习29 Linux磁盘使用及文件系统管理企业级实战

    一、文件系统的使用

      1、首先要"挂载":mount命令和umount命令

      2、根文件系统之外的其它文件系统要想能够被访问,都必须通过关联至根文件系统上的某个目录来实现。此关联操作即为“挂载”,此目录即为“挂载点”。

        挂载点:mount_point,用于作为另一个文件系统的访问入口

          (1)、事先存在

          (2)、应该使用未被或不会被其它进程使用到的目录

          (3)、挂载点下原有的文件将会被隐藏

      3、mount命令

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

        a、显示当前挂载的所有文件系统直接使用mount命令

    [root@localhost ~]# mount
    sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
    proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
    devtmpfs on /dev type devtmpfs (rw,nosuid,size=1007264k,nr_inodes=251816,mode=755)
    securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
    tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
    devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
    tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
    tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
    cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
    pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
    cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
    cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
    cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
    cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
    cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
    cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
    cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
    cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
    cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
    cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
    configfs on /sys/kernel/config type configfs (rw,relatime)
    /dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
    systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=12872)
    mqueue on /dev/mqueue type mqueue (rw,relatime)
    debugfs on /sys/kernel/debug type debugfs (rw,relatime)
    hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
    /dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
    tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=203912k,mode=700)

        b、命令选项

          -a:将/etc/fstable所有定义的支持自动挂载的设备都给挂上来,已经挂上来的就不管,没挂上来的就自动挂上来

          -r:readonly,只读挂载;光驱就只能只读

          -w:read and write,读写挂载,默认就是读写挂载的

          -n:默认情况下,当前文件系统上的挂载和卸载等操作都是会被写入/etc/mtab上去的。-n用于禁止此特性。

          -t vfstype:指明要挂载的设备上的文件系统的类型,多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型。

          -L LABEL:挂载时以卷标的方式指明设备。

            mount -L LABEL dir

          -U UUID:挂载时以UUID的方式指明设备

            mount -U UUID dir

          -o options:挂载选项

            sync/async:同步/异步操作;

            atime/noatime:文件或目录在被访问时是否更新其访问时间戳

            diratime/nodiratime:目录在被访问时是否更新其访问时间戳

            remount:重新挂载

            acl:支持使用facl功能。

    [root@localhost ~]# mount -o remount,acl /dev/sdb1 /mnt/
    [root@localhost ~]# mount|grep "sdb1"
    /dev/sdb1 on /mnt type ext4 (rw,relatime,data=ordered)

              也可以tune2fs -o acl device

            ro:只读

            rw:读写

            /dev/nodev:此设备上是否允许创建设备文件

            exec/noexec:是否允许运行此设备上的程序文件

            auto/noauto:

            user/nouser:是否允许普通用户挂载此文件系统

            suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效

            defaults:Use default options: rw, suid, dev, exec, auto, nouser, and async.

        c、一个使用技巧

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

          mount --bind 源目录  目标目录

    [root@localhost ~]# mount --bind /etc/ /mnt
    [root@localhost /]# umount /mnt/

        d、查看当前系统所有已挂载的设备

          mount

          cat /etc/mtab

          cat /proc/mounts

        e、挂载光盘

          mount -r /dev/cdrom   mount_point

          光盘设备文件:/dev/cdrom,/dev/dvd,或/dev/sr0

        f、挂载U盘

          事先识别U盘的设备文件;

        g、挂载本地的回环设备,未必都是iso设备

          mount -o loop /PATH/TO/SOME_LOOP_FILE  MOUNT_POINT

      4、umount 命令

        a、umount device|dir

          注意:正在被进程访问到的挂载点无法被卸载

        b、查看路径被哪个进程占用:

          lsof  MOUNT_POINT

          fuser -v MOUNT_POINT

    [root@localhost /]# mount /dev/sdb2 /mnt/
    [root@localhost /]# cd /mnt/
    [root@localhost mnt]# umount /mnt/
    umount: /mnt: target is busy.
            (In some cases useful info about processes that use
             the device is found by lsof(8) or fuser(1))
    [root@localhost mnt]# lsof /mnt/
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    bash    1301 root  cwd(表示将其设置为了当前工作目录)    DIR   8,18     4096    2 /mnt
    lsof    2467 root  cwd    DIR   8,18     4096    2 /mnt
    lsof    2468 root  cwd    DIR   8,18     4096    2 /mnt
    [root@localhost mnt]# fuser -v /mnt/
                         USER        PID ACCESS COMMAND
    /mnt:                root     kernel mount /mnt
                         root       1301 ..c(表示将其设置为了当前工作目录).. bash
    [root@localhost mnt]# ps -aux|grep 1301
    root      1301  0.0  0.1 116292  3056 pts/0    Ss   00:13   0:00 -bash
    root      2512  0.0  0.0 112704   972 pts/0    R+   04:54   0:00 grep --color=auto 1301

          终止所有正在访问某挂载点的进程:我们可以使用fuser -km /mnt将相应的进程干掉

    [root@localhost mnt]# fuser -km /mnt
    /mnt:                 1301c

      5、交换分区

        a、创建交换分区的命令:mkswap

        b、启用:swapon  [OPTION] [DEVICE]

          -a:定义在/etc/fstab文件中的所有swap设备

        c、禁用:swapoff:swapoff DEVICE

      6、设定除根文件系统以外的其它文件系统都能够开机时自动挂载:/etc/fstab文件

        每行定义一个要挂载的文件系统及其相关属性

        6个字段:

          (1)、要挂载的设备

              设备文件

              LABEL

              UUID

              伪文件系统:如sysfs,proc,tmpfs等

          (2)、挂载点

              swap类型的设备的挂载点为swap

          (3)、文件系统类型

          (4)、挂载选项

              defaults:使用默认挂载选项

              如果要同时指明多个挂载选项,彼此间以逗号分隔

              defaults,acl,noatime,noexec

          (5)、转储频率

              0:从不备份

              1:每天备份

              2:每隔一天备份

          (6)、自检次序

              0:不自检

              1:首先自检,通常只能是根文件系统可用1

              2:次级自检

              ...

        mount -a:可自动挂载定义在此文件中的所有支持自动挂载的设备。

     二、与磁盘相关的两个命令

      1、df命令  df [OPTION]... [FILE]...

        a、相应选项

          -l :只显示本地文件系统不显示网络文件系统

    [root@localhost /]# df -l
    Filesystem              1K-blocks    Used Available Use% Mounted on
    /dev/mapper/centos-root  38770180 1350432  37419748   4% /
    devtmpfs                  1007264       0   1007264   0% /dev
    tmpfs                     1019556       0   1019556   0% /dev/shm
    tmpfs                     1019556    9572   1009984   1% /run
    tmpfs                     1019556       0   1019556   0% /sys/fs/cgroup
    /dev/sda1                 1038336  135096    903240  14% /boot
    tmpfs                      203912       0    203912   0% /run/user/0
    /dev/sdb1                 5126337    3599   5013785   1% /mnt

          -h:人更能够读懂的显示

    [root@localhost /]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   37G  1.3G   36G   4% /
    devtmpfs                 984M     0  984M   0% /dev
    tmpfs                    996M     0  996M   0% /dev/shm
    tmpfs                    996M  9.4M  987M   1% /run
    tmpfs                    996M     0  996M   0% /sys/fs/cgroup
    /dev/sda1               1014M  132M  883M  14% /boot
    tmpfs                    200M     0  200M   0% /run/user/0
    /dev/sdb1                4.9G  3.6M  4.8G   1% /mnt

          -i:查看inode使用的百分比

    [root@localhost /]# df -i
    Filesystem                Inodes IUsed    IFree IUse% Mounted on
    /dev/mapper/centos-root 19394560 42078 19352482    1% /
    devtmpfs                  251816   410   251406    1% /dev
    tmpfs                     254889     1   254888    1% /dev/shm
    tmpfs                     254889   725   254164    1% /run
    tmpfs                     254889    16   254873    1% /sys/fs/cgroup
    /dev/sda1                 524288   326   523962    1% /boot
    tmpfs                     254889     1   254888    1% /run/user/0
    /dev/sdb1                 327680    12   327668    1% /mnt

      2、du命令  du [OPTION]... [FILE]...

        -s:sumary显示目录下所有文件大小之后

        -h:human-readable

     三、练习

      1、创建一个10G的分区,并格式化为ext4文件系统

        (1)、block大小为2048;预留空间为2%,卷标为MYDATA

        (2)、挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳

        (3)、可开机自动挂载

      2、创建一个大小为1G的swap分区,并启动之

      3、创建一个20G的文件系统,块大小为2048,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/testing目录,且默认有acl挂载选项

        (1)、创建20G分区

        (2)、格式化:

            mke2fs -t ext4 -b 2048 -L 'TEST' /dev/DEVICE

      4、创建一个5G的文件系统,卷标为HUGE,要求此分区开机自动挂载至/mogdata目录,文件系统类型为ext3

      5、写一个脚本,完成如下功能:

        (1)、列出当前系统识别到的所有磁盘设备

            fdisk -l /dev/[sh]d[a-z] |grep -o "^Disk /dev[sh]d[a-z]"

        (2)、如磁盘数量为1,则显示其空间使用信息,否则则显示最后一个磁盘上的空间使用信息

            disks=$(fdisk -l /dev/[sh]d[a-z] |grep -o "^Disk /dev[sh]d[a-z]"|wc -l)

            if [ $disks -eq 1 ];then fdisk -l /dev/[hs]da; else fdisk -l $(fdisk -l /dev/[sh]d[a-z] |grep -o "^Disk /dev/[sh]d[a-z]" |tail -1 |cut -d' ' -f2) ;fi

      

      

  • 相关阅读:
    es6学习笔记--let和const
    最新数组方法(包括es6)
    es6学习笔记--模板字符串
    版本控制工具--svn和git的使用(三) -----git的使用(2)
    版本控制工具--svn和git的使用(三) -----git的使用(1)
    版本控制工具--svn和git的使用(二) -----SVN的操作
    版本控制工具--svn和git的使用(一) -----版本控制的好处以及分类
    e.preventDefault()和e.stopPropagation()以及return false的作用和区别
    Mybatis之SessionFactory原理
    Mybatis架构简介
  • 原文地址:https://www.cnblogs.com/Presley-lpc/p/12129476.html
Copyright © 2011-2022 走看看