鸟哥的第一本书籍的主要内容,内容稍微与书籍不太一样了!
鸟哥的第一本书大约是在 2002 年的年底左右出版的,内容几乎都是 Linux 基础学习,一点也没有谈到服务器的部份!这也是后来的雏型! 不过内容错误的地方很多,导致在 2003 年的年底推出了『基础学习篇增订版』的内容,大致上就是处理掉一些比较有严重错误的部份。 不过,因为 Linux 的版本变化非常快速,因此,写完了这些文档之后,鸟哥还是持续在网站上更新文档内容,导致原本书籍内容的数据与网站数据差异太大! 这个问题直到鸟哥在 2008 年左右才发现!糟糕了!旧版的文档数据已经遗失~觉得相当扼腕~
因此,在底下的文档内容与当初的书籍内容虽然大同小异,不过章节的编排却是有所不同!再花时间去一个一个处理,似乎也不太符合成本效益! 鸟哥仅是想要将自己以前的文档记录下来而已,同时将过时的 big5 编码改回 utf8 编码,再加上可以支持 RWD 的样式而已啦! 内容已经不多做编排~因此,如果内容文档你看不懂,那也是应该的! ^_^
建议您前往本站查找最新版本的 Linux distribution 文章来阅读,比较不会浪费时间。最新文章请前往鸟站首页查阅啰!
quota 就字面上的意思来看,呵呵!就是有多少『限额』的意思啦!如果是用在零用钱上面,就是『有多少零用钱一个月』的意思之类的。如果是在容量空间上面呢?以 Linux 来说,呵呵!就是有多少容量限制的意思。
在 Linux 系统中,由于是多人多任务的环境,所以会有多人共同使用一个硬盘空间的情况发生,如果其中有少数几个用户大量的占掉了硬盘空间的话,那势必压缩其他用户的使用权力!因此管理员应该适当的开放硬盘的权限给用户,以妥善的分配系统资源!避免有人抗议呀!比较常使用的几个情况是:在 Linux 当中,使用来作为硬盘空间管理的就是所谓的 quota 这个咚咚啦!使用这个模块要有几个步骤,底下就分别说说吧!另外要特别注意的是,使用 quota 时有几个基本的限制需要谈一谈:
- (1) 例如每个人的网页空间的容量限制!
- (2) 每个人的邮件空间限制。
- quota 实际在运作的时候,是针对『整个 partition』进行限制的,例如:如果你的 /dev/hda5 是挂载在 /home 底下,那么在 /home 底下的所有目录都会受到限制!
- Linux 系统内核必须有支持 quota 这个模块才行:如果您是使用 Mandrake 的缺省内核,嘿嘿!那恭喜你了,你的系统已经缺省有开放 quota 这个模块啰!如果您是自行编译内核的,那么请特别留意您是否已经『真的』打开了 quota 这个模块?否则底下的功夫将全部都视为『白工』。至于内核编译的过程我们会在未来进行说明呦!
quota 这支程序的限制内容主要分为底下几个部分:
- 目前新版的 Linux distributions 如: Mandrake 9.0 与 Red Hat 8.0 等使用的是 Kernel 2.4.xx 的内核版本,这个内核版本支持新的 quota 模块,使用的缺省文件( aquota.user, aquota.group )将不同于旧版本的 quota.user, quota.group !(多了一个 a 呦!)而由旧版本的 quota 可以借由 convertquota 这个程序来转换呢!
- soft :这是最低限制容量的意思,用户在宽限期间之内,他的容量可以超过 soft ,但必需要宽限时间之内将磁盘容量降低到 soft 的容量限制之下!
- hard :这是『绝对不能超过』的容量!跟 soft 相比的意思为何呢?通常 hard limit 会比 soft limit 为高,例如网络磁盘空间为 30 MB ,那么 hard limit 就设置为 30MB ,但是为了让用户有一定的警戒心,所以当使用空间超过 25 MB 时,例如用户使用了 27 MB 的空间时,那么系统就会警告用户,让用户可以在『宽限时间内』将他的文件量降低至 25 MB ( 亦即是 soft limit )之内!也就是说, soft 到 hard 之间的容量其实就是宽限的容量啦!可以达到针对用户的『警示』作用!
- 宽限时间:那么宽限时间就可以很清楚的知道含意是什么了!也就是当您的用户使用的空间超过了 soft limit ,却还没有到达 hard limit 时,那么在这个『宽限时间』之内,就必需要请用户将使用的磁盘容量降低到 soft limit 之下!而当用户将磁盘容量使用情况超过 soft limit 时,『宽限时间』就会自动被启动,而在用户将容量降低到 soft limit 之下,那么宽限时间就会自动的取消啰!
在开始进行 quota 的实作之前,我们得来了解一下 quota 要使用的指令啰!基本上分为两种,一种是查找功能(quota, quotacheck, quotastats, warnquota, repquota),另一种则是编辑 quota 的内容( edquota, setquota )。底下我们来谈一谈这些基本的指令吧!
quota
语法:说明:
[root @test /root ]# quota [-guvs] [user,group]
参数说明:
-g :显示 group 群组
-u :显示 user
-v :显示 quota 的值
-s :选择 inod 或 硬盘空间来显示
范例:
[root @test /root ]# quota -guvs <==显示目前运行者(就是 root )的 quota 值
[root @test /root ]# quota -uvs test <==显示 test 这个用户的 quota 值
这个指令仅是使用来『显示(display)』目前某个群组或者某个用户的 quota 限值!您可以使用来观察一下呦!
quotacheck
语法:说明:
[root @test /root ]# quotacheck [-auvg] /yourpath
参数说明:
-a :扫瞄所有在 /etc/mtab 里头已经 mount 的具有 quota 支持的磁盘
-u :扫瞄用户的文件与目录
-v :显示扫瞄过程
-g :扫瞄群组使用的文件与目录
-m :强制进行 quotacheck
范例:
范例一、要针对 /home 这个 partition 进行 quota 的规划:
[root@test root ]# quotacheck -uvg /home <==开始扫瞄 /home 这一个独立磁区的目录
quotacheck: Scanning /dev/hda3 [/home] done <==显示 /home 磁区为 /dev/hda3 !
quotacheck: Checked 35 directories and 342 files <==扫瞄完毕,有 35 目录与 342 文件。
[root@test root ]# ls -l /home <==查看一下 /home 这个目录底下,两个文件产生了!
-rw------- 1 root root 7168 May 6 18:37 aquota.group
-rw------- 1 root root 7168 May 6 18:37 aquota.user
关于 quotacheck 发生错误的解决方法:
# 有些时候,在新版的 Linux distribution 当中,进行 quotacheck 时,可能会出现
# quotacheck: Cannot get quotafile name for /dev/hda3
# quotacheck: Cannot get quotafile name for /dev/hda3
# 这可能是新版的 quota 在设计时的小问题,解决的方法有两个:
[root@test root]# quotacheck -uvgm
# 加上 -m 的参数来强制进行,或者是:
[root@test root]# touch /home/aquota.user; touch /home/aquota.group
[root@test root]# quotacheck -uvg
# 既然 quotacheck 找不到 quotafile ,那么我就手动将 quotafile 创建起来即可!
# 然后再重新进行 quotacheck 一次即可!
# 注意喔!因为我的 /dev/hda3 对应到 /home ,所以当然就是在 /home 底下创建起 qoutafile 了!
这这个指令主要的目的在扫瞄某一个磁盘的 quota 空间,他会针对该磁盘进行扫瞄,并且,由于该磁盘若持续运作时,可能扫瞄的过程中,文件可能会增减,造成 quota 扫瞄的错误发生,因此,当使用 quotacheck 时,该磁盘将『自动被设置成为唯独磁区(read-only);至于扫瞄完毕之后,扫瞄所得的磁盘空间结果会写入该磁区最顶端(例如:在我的例子中,扫瞄 /home 这个 /dev/hda3 的磁区,如果是初次扫瞄,那么扫瞄完毕之后会产生 aquota.user 与 aquota.group ,会放置在 /home/aquota.xxx 底下!而如果是创建 quota 后的扫瞄,那么就会更新这两个文件!)另外, Linux 也特别强调 quota 在使用的时候,需要特别注意在 reboot 时,得先将 quota 关闭才好!
此外,由于新版的 Linux distribution 在 quota 的设计上似乎有点小问题,有时候无法完整的进行 quotacheck ,发生如同上表的情况,解决的方法就是主动手动的创建 quotafile 即可喔!
edquota
语法:说明:
[root @test /root ]# edquota [-u user] [-g group] [-t]
[root @test /root ]# edquota -p user_demo -u user
参数说明:
-u :编辑 user 的 quota
-g :编辑 group 的 quota
-t :编辑宽限时间(就是超过 quota 值后,还能使用硬盘的宽限期限)
-p :copy 范本(以创建好的用户或群组)到另一个用户(或群组)
范例:
[root @test /root ]# edquota -u test <==设置 test 这个用户的 quota 数值,会直接进入 vi 画面
Disk quotas for user test (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 8 0 0 5 0 0
修改一下成为:
Disk quotas for user test (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 8 50005000 5 50005000[root @test /root ]# edquota -p test -u test2 <==将 test 这个人的 quota 数据拷贝给 test2 这个人!
[root @test /root ]# edquota -t <==设置宽限时间,也就是超过 quota 值之后的修正时间啦!
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hda3 0minutes 0minutes
上面的 0minutes 可以改成 60minutes 即可!也就是 60 分钟之内必须要赶快整理硬盘的意思!
这个指令就是在编辑每一个『个人』或者是『群组』的 quota 数值!通常我们以 edquota -u username 或者是 edquota -g groupname 来编辑个人与群组的 quota 设置值。不过,或许您会觉得一个一个分配似乎很慢的样子!那么您也可以直接 copy 一个人的设置值给其他人,就如同上面第二个例子,利用已经创建好的 test 来创建 test2 这个人的 quota 限额!这个指令可是很重要的呦!另外,上面有几个重要的信息,我们来谈一谈吧:
- filesystem:这个是那个 partition 的意思!以上面来说,就是 /dev/hda3 啰!
- blocks:这个是目前用户 test ( uid 501 )在 /dev/hda3 这个 filesystem (参考上面一个信息),所耗掉的磁盘容量,也就是目前的使用掉的空间啦!单位是 Kbytes 喔!这个信息是 quota 程序自己计算出来的,所以请不要修改他!
- soft 与 hard :这个是目前的 test 在这个 filesystem 之内的 quota 限制值!至于 soft 与 hard 的意思就如同 14-1 节最后面提的那个意思啦!当 soft 与 hard 数值为 0 的时候,表示『没有限制』的意思!而数值的单位仍是 Kbytes 喔!
- inodes :是目前使用掉 inode 的状态,也是 quota 自己计算出来而得到的,所以不要去变更他。一般而言, inode 不容易控制,所以您可以不必去限制 inode 呢!
quotaon
语法:说明:
[root @test /root ]# quotaon [-a] [-uvg directory]
参数说明:
-a :全部的 quota 设置都启动(会自动去寻找 /etc/mtab 的设置)
-u :用户的 quota 启动
-g :群组的 quota 设置启动
-v :显示消息
范例:
[root @test /root ]# quotaon -a <==全部的 quota 限制都启动
[root @test /root ]# quotaon -uv /home <==只有启动 /home 底下的用户 quota 限额,group 不启动!
这个指令是在启动 quota 的!不过,由于这个指令是启动 aquota.group 与 aquota.user 的,所以您就必须要先完成 qutoacheck 的工作了!然后简单的下达 quotaon -a 即可启动!
quotaoff
语法:说明:
[root @test /root ]# quotaoff -a
参数说明:
-a :全部的 quota 设置都关闭(会自动去寻找 /etc/mtab 的设置)
范例:
[root @test /root ]# quotaoff -a <==全部的 quota 限制都关闭了!
这个指令就是关闭了 quota 的限制啦!
[root @test
root]# useradd –m –g 501 test2
[root @test root]# passwd test2 Changing password for user test2. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. |
[root @test
root]# df
Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda1 1904920 1088136 720020 61% / /dev/hdb1 976344 71504 854444 8% /backup /dev/hdb2 101540 4252 92048 5% /home |
[root @test
root]# vi /etc/fstab
# device MountPoint filesystem parameters dump fsck /dev/hda1 / ext3 defaults 1 1 /dev/hda2 swap swap defaults 0 0 /dev/hdb1 /backup ext3 defaults 1 1 /dev/hdb2 /home ext3 defaults 1 1 none /dev/pts devpts mode=0620 0 0 none /proc proc defaults 0 0 上面的黄色字体改成底下的样子!
|
[root@test
/]# umount /dev/hdb2
[root@test /]# mount -a [root@test /]# more /etc/mtab /dev/hda1 / ext3 rw 0 0 none /proc proc rw 0 0 none /proc/bus/usb usbdevfs rw 0 0 none /dev devfs rw 0 0 none /dev/pts devpts rw,mode=0620 0 0 /dev/hdb1 /backup ext3 rw 0 0 /dev/hdb2 /home ext3 rw,usrquota,grpquota 0 0 或者以下列的方式重新
mount 所有的磁盘:
|
[root@test
/]# quotacheck -avug
quotacheck: Scanning /dev/hdb2 [/home] done quotacheck: Checked 10 directories and 22 files [root@test /]# ll /home total 44 -rw------- 1 root root 7168 Oct 28 14:05 aquota.group -rw------- 1 root root 7168 Oct 28 14:05 aquota.user drwx------ 2 root root 16384 Oct 22 16:54 lost+found/ drwxr-xr-x 3 test test 4096 Oct 28 01:45 test/ drwxr-xr-x 3 test2 test 4096 Oct 28 13:37 test2/ |
[root @test
/root ]# cd /home
[root @test /root ]# ls -l aquota* -rw------- 1 root root 7168 May 6 22:16 aquota.group -rw------- 1 root root 7168 May 6 22:16 aquota.user [root @test /root ]# ln -s aquota.group quota.group [root @test /root ]# ln -s aquota.user quota.user |
[root@test
/]# quotaon -av
/dev/hdb2 [/home]: group quotas turned on /dev/hdb2 [/home]: user quotas turned on |
[root @test
/]# edquota –u test
Disk quotas for user test (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hdb2 32 0 0 8 0 0 将上面的原本设置改为底下的模样:
|
[root@test /]# edquota -p test test2 |
[root@test
/]# edquota -t
Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/hdb2 1days 1days |
[root@test
/]# quota –vu test test2
Disk quotas for user test (uid 501): Filesystem blocks quota limit grace files quota limit grace /dev/hdb2 32 40000 50000 8 0 0 Disk quotas for user test2 (uid 502): Filesystem blocks quota limit grace files quota limit grace /dev/hdb2 28 40000 50000 7 0 0 |
[root@test
/]# edquota -g test
Disk quotas for group test (gid 501): Filesystem blocks soft hard inodes soft hard /dev/hdb2 60 0 0 15 0 0 修改成底下这样:
[root@test /]#
quota
-vg test
|
[root @test
/root ]# vi /etc/rc.d/rc.local
/sbin/quotaon -aug |
1. 创建并修改
/home/mail 这个目录:
[root @test /root ]# mkdir /home/mail [root @test /root ]# chown root:mail /home/mail [root @test /root ]# chmod 775 /home/mail 2. 备份并移动原本的
mail 到 /home/mail 底下去:
3. 创建链接:
|
只要这样的一个小步骤,嘿嘿!您家主机的邮件就有一定的限额啰!当然啰!您也可以依据不同的用户与群组来设置 quota 然后同样的以上面的方式来进行 link 的动作!嘿嘿嘿!就有不同的限额针对不同的用户提出啰!很方便吧!! ^_^