zoukankan      html  css  js  c++  java
  • 浅谈Linux磁盘与文件系统管理

        在探讨磁盘与文件系统管理前,我们先简单了解下磁盘结构:1)盘片,即记录数据的部分,数量与磁头数相同;2)磁头, 读写盘片上的数据;3)主轴马达,带动盘片旋转,家用级转速在5400rpm-7200rpm,企业级可达15000rpm;4)扇区,最小的物理存储单元,大小为512字节;5)磁道,磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道(Track);6)柱面,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面(Cylinder)。

        接下来是磁盘分区,所谓磁盘分区,就是标定数据块儿(blocks)的起止范围,以便操作系统快速对块儿内文件数据进行/读/写/查等操作。分区的好处是:优化I/O性能、实现磁盘空间配额限制、提高修复速度、隔离系统和程序、安装多个OS、采用不同文件系统等。常用的分区命令为fdisk:

    -l /dev/sdX 查看指定块设备的分区信息
    /dev/sdX 对指定硬盘修改分区
    m: 帮助
    o: 创建msdos分区label
    n: 创建新的分区
    d: 删除分区
    p: 查看当前分区表
    a: 添加/取消 启动标记
    t: 转换分区类型ID
    l/L: 显示分区类型ID表

        注意,操作系统所在的硬盘进行分区操作后需要通知内核重读分区表信息,centos5/7:partprobe /dev/sdX;centos6:partx -a /dev/sdX(新增分区)/partx -d --nr N /dev/sdX (删除分区)

        分区完成后需要进行格式化(format)操作,之所以格式化,是因为每种操作系统所设置的文件属性/权限不同,为了存放这些文件所需的数据,需要格式化分区。在传统的磁盘与文件系统应用中,一个分区只能被格式化为一个文件系统,因此可认为一个文件系统就是一个分区。 但随着新技术如LVM的发展,多个分区可以合成一个文件系统,我们称呼一个可被挂载的数据为一个文件系统,而不是一个分区。文件系统格式化命令为mkfs

    mkfs.ext4/xfs /dev/sdX

    格式化分区后可在命令行直接敲blkid命令查看所有文件系统名/文件系统类型;在ext系统下可用tune2fs命令查看及修改文件系统

    tune2fs -l /dev/sdX 列出指定文件系统的详细信息,信息来源于超级块(superblock)

    -L 设置label(卷标)

    -m 设置预留百分比

    -o acl/ ^acl开启或关闭文件系统ACL功能(尽在centos6中会用到此命令)

        接着我们讨论挂载(mount)。在Linux系统中,一切皆文件,mount命令博大精深。每个文件系统都有独立的inode、block、superblock等信息,这个文件系统要能够链接到目录树,才能被使用。将文件系统与目录树结合的操作我们称为挂载。挂载点必须是目录,而且是空目录。若将文件系统挂载到非空目录下,会暂时隐藏性覆盖该目录下的所有文件。如下图所示,若执行mount /dev/sda6 /命令,会导致整个系统崩溃,只能通过手动按电源按钮重启!好在系统做了保护,上述命令无效!

    mount:

    -a 依照配置文件/etc/fstab中的数据对未被挂载的文件系统进行挂载;

    -l 读/etc/mtab,显示当前挂载信息;

    -n 强制不写入/etc/mtab,单用户维护模式常用,此时df或mount命令无法查看新增挂载信息,但可读/proc/mounts文件获取;

    -L 指定卷标进行挂载;

    -o 后接挂载的额外参数,比如账号、密码、读写权限等

        ro,rw 挂载文件系统成为只读,读写模式 default--rw

        async,sync 此文件系统是否使用同步写入(sync)或异步(async)的内存机制,default--async

        auto,noauto 允许/禁止分区以mount -a方式(auto)挂载,default--auto

        dev,nodev 是否允许此分区上可创建设备文件,default--dev

        suid,nosuid 是否允许此分区含有suid/sgid文件格式,default--suid

        exec,noexec 是否允许此分区拥有binary文件,default--exec

        user,nouser 是否允许普通用户执行mount命令,默认只有root可以mount,添加user参数后,普通用户也能mount

        defaults 默认所有默认值

        remount 不卸载的情况下,可直接更新挂载选项

        acl,noacl (centos6)开启或关闭acl功能,default--noacl

     umount:卸载设备文件

    -f 强制卸载,可用于NFS(网络文件系统无法读到的情况)

    -n 不更新/etc/mtab

    注意,当挂载点被占用(进入挂载点或者被某个进程占用)时,需要离开文件系统挂载点或者用命令fuser杀死进程后再做umount

    fuser 挂载点 查看在指定挂载点上运行的程序,显示其进程号

    -v 详细查看

    -m 递归,如不加m,只查看挂载点自身,不查看子目录

    -k 杀死

    fuser通常搭配选项 -vmk

        以上对磁盘管理的内容进行了简单介绍,下面我们讨论Linux文件系统高级管理第一部分:Quota(磁盘配额)。简而言之,Quota就是对一般用户进行的限制文件系统使用空间的技术,常以下列3种方式实现

    1>限制某一用户的最大磁盘配额(使用用户限制)

    2>限制某一用户组可以使用的最大磁盘配额(使用用户附加组限制,常配合sgid命令进行)

    3>以link方式使邮件可作为限制的配额(更改/var/spool/mail路径)

    需要注意的是,quota针对整个文件系统进行限制,例如你的/dev/sda3 挂载在/home下,/home下所有的目录都会受到限制,具体设置分以下几个部分

    1.限制容量或者文件数量(block或inode)

    2.soft/hard(软限制和硬限制)通常硬限制值略高于软限制。当用户可支配额磁盘配额超出软限制但低于硬限制时,系统启动宽限期倒计时并发出警告,直到用户清理数据至soft值以下。若用户在宽限期未进行任何操作,硬限制值将回落到软限制值,此时用户的使用权会被锁定而无法新增文件。

    ext系列文件系统的quota

    1>预配置quota(ext、xfs)(下列操作将会在下次开机后仍然生效)

    vim /etc/fstab,在需要开启quota的文件系统的挂载选项的defaults后加usrquota,grpquota如下

    /dev/sda5  /app                    ext4    defaults,usrquota,grpquota        1 0

    2>对指定文件系统生成quota数据库

    quotacheck -cugm /app/

    3>开启指定文件系统quota

    quotaon /app

    在命令行模式下,quota -v 显示当前用户自己的quota限额。root身份下,quota -v username用于显示指定用户的quota限额,repquota -v /app 显示指定挂载点所有用户的quota限额

    4>设置普通用户quota

    edquota -u/g username/groupname -u选项指定user,-g指定group

    edquota -p usr1 usr2 将usr1的quota设置复制给usr2

    xfs文件系统的quota

    1>参考ext系列预配置quota

    2>直接配置quota选项

    xfs_quota -x -c "print" 查看当前系统中所有的xfs文件系统哪些开启了quota

    xfs_quota -x -c "report -ugibh"  查看quota设置

    -u 查看用户的quota设置

    -g 查看组的quota设置

    -i 查看inode的quota限制

    -b 查看block的quota限制 (默认)

    -h human-readable

    xfs_quota -x -c "state" /app 查看quota状态,显示grace time时间

    对用户设置quota

    xfs_quota -x -c "limit -u bsoft=30M bhard=40M user1" /app

    对用户组设置quota

    xfs_quota -x -c "limit -g bsoft=80M bhard=200M group1" /app

        最后,我们讨论Linux文件系统高级管理第二部分:LVM(逻辑卷管理器),旨在以在线方式弹性调整文件系统容量!并非在性能与数据保全方面。LVM可以整合多个物理分区在一起,让这些分区看起来像一个磁盘一样,而且这个磁盘容量可变!实现过程大致为:物理磁盘或分区(未挂载的)-->PV(LVM的物理卷)-->VG(LVM的卷用户组)-->LV(逻辑卷),具体如下

    1.分区或增加新的硬盘

    如果是分区,注意用fdisk命令的-t选项将系统标识符改为8e

    2.创建物理卷PV

    pvscan,查询系统上有无PV

    pvcreate /dev/sdaX

    pvdisplay显示PV状态

    3.创建用户卷组VG

    vgcreate [-s xM](指定PE大小,默认4M)vgname /dev/sdX

    vgscan

    vgdisplay [vgname]

    4.创建逻辑卷

    lvcreate -L xM/G -n lvname vgname

    lvscan

    lvdisplay [/dev/vgname/lvname]

    卸载LVM

    1.umount /mnt/lvm

    2.lvremove /dev/vgname/lvname

    3.vgremove vgmage

    4.pvremove /dev/sdX

  • 相关阅读:
    在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的……
    VS 扩展管理器,方便的插件
    VUE CLI中使用Jquery无法获取到dom节点
    Navicat 连接SQL Server LocalDB的方法
    修改cas登陆页面服务器端
    easyui tree 拖拽功能并将数据返回后台保存至数据库
    RedHat下GCC及G++的安装
    Java中的字符串池
    Java内存泄露
    TSQL字符转义
  • 原文地址:https://www.cnblogs.com/centos-Paul/p/9416348.html
Copyright © 2011-2022 走看看