一、fstab文件
fstab文件为存放文件系统的静态信息文件,同时也是系统启动时必须要 读取的一种配置文件,存放于/etc目录下。
当系统启动时,读取这个配置文件中的信息,然后将指定的文件系统挂载到指定的目录下,此文件错误可能会导致系统开启失败。
-
etc/fstab 文件包含了<file system> <dir> <type> <options> <dump> <pass>等几个字段,字段直接通过空格或 Tab 分隔。
<file systems>: 要挂载的分区或存储设备 <dir> :挂载点 <type> :要挂载设备或是分区的文件系统类型,支持文件系统类型有:ext2, ext3, ext4, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap 及 auto。 设置成auto类型,mount 命令会自动匹配文件系统类型 <options>:挂载时经常使用的参数,但有些mount 参数是特定文件系统才有的。一些比较常用的参数有: auto:在启动时或键入了 mount -a 命令时自动挂载 noauto:关闭自动挂载 exec:允许执行此文件系统上的二进制文件 noexec:不允许执行文件系统上的二进制文件 ro:以只读模式挂载文件系统 rw: 以读写模式挂载文件系统 user: 允许任意用户挂载此文件系统,若无显示定义,隐含启用noexec, nosuid, nodev 参数 users:允许所有 users 组中的用户挂载文件系统 nouser: 只能被 root 挂载 owner:允许设备所有者挂载 sync : I/O 同步进行 async:I/O 异步进行 dev:解析文件系统上的块特殊设备 nodev:不解析文件系统上的块特殊设备 suid:允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限 nosuid:禁止 suid 操作和设定 sgid 位 atime/noatime :更新/不更新访问时间,包含目录和文件 diratime/nodiratime :目录的访问时间戳 relatime:实时更新 inode access 记录。只有在记录中的访问时间早于当前访问才会被更新。(与 noatime 相似,但不会打断如 mutt 或其它程序探测文件在上次访问后是否被修改的进程),可以提升性能(参见 atime 参数) flush :vfat 的选项,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失 loop:使用loop设备 defaults:使用文件系统的默认挂载参数,例如 ext4 的默认参数为:rw, suid, dev, exec, auto, nouser, async <dump> :dump 工具通过它决定何时作备份,dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份 <pass> fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查
文件系统标识
在 /etc/fstab配置文件中可以使用三种不同的方法表示文件系统:挂载文件路径和名称、UUID 或者 label。使用 UUID 或是 label 的好处在于它们与磁盘顺序无关。如果一些意外情况导致了磁盘顺序的改变,就可能导致/目录挂载磁盘找不到路径,所以建议使用 UUID 或是 label 来表示。
-
fstab文件的几种挂载格式
将/boot目录挂载到/mnt/boot中 /boot /mnt/boot none bind 0 0 (none为没有文件系统) 将/app/partfile挂载到/mnt/part文件中 /app/partfile /mnt/part ext4 loop 0 0 挂载win共享文件(192.168.198.1为win的IP,share为共享目录) //192.168.198.1/share /mnt/share cifs defaults 0 0 挂载swap分区 /dev/sdb3 swap swap defaults 0 0 挂载磁盘分区 /dev/sda2 / ext4 defaults 0 0 挂载nfs共享目录 192.168.198.1:/share /mnt/share nfs defaults 0 0 挂载samba目录 //172.16.30.130/common /tmp cifs multiuser, username=danran,password=danran,sec=ntlmssp 0 0
二、磁盘配额使用
随着系统普通用户的增加很可能导致/home目录的空间使用率紧缺,作为系统管理员,有必要将/home目录的空间使用对普通用户做出一些限制,以免导致/home目录空间不足而其他用户不能正常使用,这就用到了我们今天所要说的磁盘及文件系统配额的管理。
磁盘及文件系统配额是根据块或者节点数为界限对用户及组进行限制使用,但是磁盘配额的使用必须在一个独立分区上进行,故首先应将/home迁移到独立分区上。
使用到的相关命令有如下几个:
系统挂载选项
usrquota:对指定用户限制
grpquota:对组进行限制
配额数据库初始化:
quotackeck -cug /home 初始化/home目录的用户和组的配额数据库
quotaon -p /home 查看/home目录的配额数据库是否开启
quotaon /home 开启/home的配额数据库
edquota danran 编辑danran用户的配额管理
edquota -p user1 user2 根据user1的配额生成user2的配额
quota uaername 查看uaername的配额空间
有一个空间大小为20G的分区sdb1,首先将跟目录下面的/home迁移到/sdb1分区上,然后方可使用磁盘配额对/home目录进行管理
-
将/home迁移到/dev/sdb1分区上
mkdir /mnt/home mount /dev/sdb1 /mnt/home 将sdb1分区挂载到/mnt/home目录下 cp -av /home/* /mnt/home 拷贝原目录下的所有数据到/dev/sdb1挂载点目录/mnt/home上
如果直接挂载可能会把原来/home下的文件覆盖,导致原有文件成为垃圾文件从而占用空间,若直接删除/home下的文件,可能导致正在登陆的普通用户不能正常使用,故切换到单用户模式下删除/home文件,因为单用户模式下没有其他用户登录不需担心在删除过程中对普通用户造成影响。
init 1 切换进单用户模式
du -sh /home /mnt/home 比较两个home目录是不是一致
blkid /dev/sdb1 可显示/dev/sdb1分区的UUID号
vim /etc/fatab 将/dev/sdb1设备挂载到/home写入fatab文件启动挂载
UUID=b054a2ea-bdd4-4ae9-911a-a85bb102879d /home ext4 defaults 0 0
mount -a 将/dev/sdb1挂载到了/home目录,即完成了家目录迁移到/dev/sdb1分区下,而/dev/sdb1挂载点/mnt/home中的数据也同步到/home下
ls /home 查看/home下是否有数据,即/dev/sdb1是否挂载成功
umount /mnt/home 过度挂载点目录此时已经可以卸载
-
将家目录回迁到/目录下 (此过程最好也在单用户下进行)
init 1 mkdir /mnt/home mount /dev/sdb1 /mnt/home umount /home cp -av /mnt/home/* /home vim /etc/fstab 将UUID=b054a2ea-bdd4-4ae9-911a-a85bb102879d /home ext4 defaults 0 0 删除 reboot
-
控制用户danran和danran组使用/home空间的大小,/home必须为一个独立的分区才能使用,/home挂载在/devsdb1分区上
blkid /dev/sdb1 显示/dev/sdb1分区的UUID号 vim /etc/fstab 将/dev/sdb1挂载到/home下,usrquota启用用户配额功能,grpquota为启用组配额功能 UUID=b054a2ea-bdd4-4ae9-911a-a85bb102879d /home ext4 usrquota,grpquota 0 0 mount -o remount /home 重新挂载/home
mount 查看/home是否已经启用usrquota和grpquota配额特性
quotacheck -cug /home 初始化配额数据库,u为初始化用户数据库,g为初始化组数据库
setenforce 0 若数据库初始化失败则执行这条命令,关闭SELinux功能
ls /home 检查配额数据库是否初始化成功 若有aquota.group和aquota.user两个二进制文件生成表示数据库初始化成功
quotaon -p /home 查看磁盘配额数据库是否启用
quotaon /home 开启磁盘配额数据库
quotaon -p /home
① 交互式编辑用户磁盘配额:
edquota danran 编辑配置空间使用额度(以K为单位),soft为提醒状态,hard为强制报错状态 inodes为节点数,后两个soft和hard是控制文件格式,前两个控制空间大小
限制danran用户使用/home空间大小为80M,当使用超过50M时提醒用户,当文件数超过100个时提醒用户,但不强制报错退出
su - danran 切换到danran用户
dd if=/dev/zero of=110M bs=2M count=55 创建110M的f1文件
文件的所有者为danrna用户,超出了danran用户使用/home空间的限制,所以报错退出,修改文件的所有者和所属组,则danran用户使用的空间恢复,由此得出结论为文件的配额限制是根据文件所有者和所属组判断的。
quota danrna 查看danran用户的磁盘配额
repquota /home 显示/home分区上的配额使用情况
Block grace time:7days 表示有效期7天,7天之后soft将变为hard使用
交互式编辑组空间配额
edquota -g danran 对danran组设置空间配额
usermod -G danran dan 将dan用户添加进danran组中
id dan
su - dan 切换到dan用户
dd if=/dev/zero of=f1 bs=2M count=50 发现没有报错空间限制
ll f1 列出f1文件的详细信息,发现文件的所有者和所属组都是dan用户,而dan用户和组没有限制使用额度
id 发现danran仅是dan用户的附加组,而不是所属组
newgrp danran 临时将dan用户的所属组更换为danran
id dan dan用户的所属组临时更换为了danran
dd if=/dev/zero of=f2 bs=1M count=120 这次发现报错,超出了block limit
ll f2 可以发现f2文件的所属组为danran
由此发现,设置组的空间使用额度时表示的是所属组而不是附加组
②非交互式设置空间配额
setquota danran 150000 200000 0 100 /home 非交互式配置danran用户的使用/home的最大空间为200M,达到150M时提醒用户,当文件数目达到100个时报错退出,并且退出前不提醒用户
quota danran 显示danran用户的空间配额
setquota -g danran 100000 150000 0 0 /home
edquota/quota -g danran 显示danran组的空间配额
-
配置dan用户的磁盘配额跟danran用户一致
edquota -p danran dan quota/edquota dan