在探讨磁盘与文件系统管理前,我们先简单了解下磁盘结构: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
原文地址:https://www.cnblogs.com/centos-Paul/p/9416348.html