虽然不同的服务器提供的服务并不相同,而且每种服务的原理也不见得都一样,不过[color=red],每种服务器由规划、架设到后续的安全维护, 其实整个流程是大同小异的[/color]。什么?你不相信啊?为了让你相信,那我们就来一项一项的分析看看吧!
[size=large][b]网络服务器成功联机的分析[/b][/size]
底下我们就整个服务器的简易架设流程当中来分析一下,以了解为什么了解操作系统的基础对于网站维护是相当重要的呢?首先,到底我们是如何联机到服务器的? 联机到服务器又取得啥咚咚?我们先以底下这张图示来作个简单的说明好了:
tu
先来理解一下,到底我们联机到服务器想要得到什么?举例来说,你联机到 Youtube 想要看影片,所以对方就提供影片串流数据给你; 你连到 Yahoo 想要看新闻,所以对方就提供新闻的文本文件给你;你联机到无名小站想要看美女,对方就传图档给你;你联机 Facebook 想要去种田,对方就参考你之前留下来的记录,从数据库里面将你的记录拿出来传给你。看到没有,你联机到服务器,重点在取得对方的数据, 而一般数据的存在就是使用档案啰!那你有没有权限取得?最终与该文件系统的设定有关啦!
上图显示的是:[color=red]首先,客户端到服务器的网络要能够通,等到客户端到达服务器后[/color],会先由服务器的防火墙判断该联机能否放行, 等到放行之后才能使用到服务器软件的功能。[color=red]而该功能又得要通过 SELinux 这个细部权限设定的项目后,才能够读取到文件系统。[/color] 但能不能读到文件系统呢?[color=blue]这又跟文件系统的权限 (rwx) 有关啦![/color]上述的每个部分都要能够成功,否则就无法顺利读取数据啰。
所以,根据上面的流程我们大概可以将整个联机分为几个部分,[color=red]包括:网络、服务器本身、内部防火墙软件设定、各项服务配置文件、细部权限的 SELinux 以及最终最重要的档案权限。[/color]底下就分几个细项来谈谈啰。
[b]A 网络:了解网络基础知识与所需服务之通讯协议[/b]
既然要架设服务器,首先当然得要了解一下因特网。因为不管是哪种操作系统,若想要与因特网联机,这个网络基础就得了解。 举例来说,『网域』是经常会谈到的概念,当你发现一个设定为 192.168.1.0/255.255.255.0 时,晓得那是什么鬼东西吗? 如果不知道的话,呵呵!绝对无法设定好网站的啦!另外,为何你需要服务器?当然是想要达成某项网络服务。 举例来说,传输档案可以用 FTP,那 WWW 可以传递档案吗?网芳可以传递吗?各有何用处?哪个比较方便? 对于客户或老板来说,我们所设定的服务能否满足他们的需求等等,这都需要了解,否则你将一头雾水啊! 因此这部份你就得要了解:
基本的网络基础知识:包括以太网络硬件与协议、TCP/IP、网络联机所需参数等;
各网络服务所对应的通讯协议原理,以及各通讯协议所需对应的软件。
[b]B 服务器本身:了解架网络服务器之目的以配合主机的安装规划[/b]
想要架设服务器吗?那...架什么服务器?这个服务器要不要对 Internet 开放?这个服务要不要针对客户提供相关账号? [color=red]要不要针对不同的客户账号进行例如磁盘容量、可活动空间与可用系统资源进行限制?[/color]如果要进行各项资源的限制, 那服务器操作系统应该要如何安装与设定?问题很多吧!所以,先了解你要的服务器服务目的之后,后续的规划才能陆续出炉。 不过,如果架站只是为了『练功』而已,呵呵!那就不需要考虑太多了~
[b]C 服务器本身:了解操作系统的基本操作[/b]
网络服务软件是[color=red]需要建置在操作系统上面的[/color],所以基本的操作系统操作就得要了解才行啊!包括软件如何安装与移除? 如何让系统进行例行的工作管理?如何依据服务器服务之目的规划文件系统?如何让文件系统具有未来扩充性 (LVM 之类)? 系统如何管理各项服务之启动?系统的开机流程为何?系统出错时,该如何进行快速复原等等,这都需要了解的呢!
[b]D 内部防火墙设定:管理系统的可分享资源[/b]
一部主机可以拥有多种服务器软件的运作,而很多 Linux distributions 出厂的默认值就已经开放很多服务给 Internet 使用了,不过这些服务可能并不是你想要开放的呢。我们在了解网络基础与所需服务的目的之后, [color=red]接下来就是透过防火墙来规范可以使用本服务器服务的用户,以让系统在使用上拥有较佳的控管情况。[/color] 此外,不管你的防火墙系统设定的再怎么严格,只要是你要开放的服务, 那防火墙对于该服务就没有保护的效果。因此,那个重要的在线更新软件机制就一定要定期进行!否则你的系统将会非常非常的不安全!
[b]E 服务器软件设定:学习设定技巧与开机是否自动执行[/b]
刚刚第一点就提到我们得要知道每种服务所能达成的功能,如此一来才能够架设你所需要的服务的网站。 那你所需要的服务是由哪个软件达成的?同一个服务可否有不同的软件?每种软件可以达成的目的是否相同? 依据所需要的功能如何设定你的服务器软件?架设过程中如果出现错误,你该如何观察与除错? 可否定期的分析服务器相关的登录信息,以方便了解该服务器的使用情况与错误发生的原因? 能否通知多个用户进行联机测试,以取得较佳的服务器设定值?所以这里你可能就得要知道:
[color=red]软件如何安装、如何查询相关配置文件所在位置;[/color]
服务器软件如何设定?
[color=red]服务器软件如何启动?如何设定自动开机启动?如何观察启动的埠口?[/color]
服务器软件激活失败如何除错?如何观察登录档?如何透过登录档进行除错?
透过客户端进行联机测试,如果失败该如何处理?联机失败的原因是服务器还是防火墙?
服务器的设定修改是否有建立日志?登录档是否有定期分析?
[color=red]服务器所提供或分享的数据有无定期备份?如何定期自动备份或异地备份?[/color]
[b]F 细部权限设定:包括 SELinux 与档案权限[/b]
等到你的服务器全部设定妥当,最后你所提供的档案数据权限却是给了『 000 』的权限分数, [color=red]那鸟哥很肯定的说,大家都无法读到你所提供的数据啊[/color]...!此外,新的 distributions 都建议你要启动 SELinux ,那是什么咚咚? 如果你的数据放置于非正规的目录,那该如何处理 SELinux 的问题?又如何让档案具有保密性或共享性 (档案权限概念与 ACL 等) 等等,这也都是需要厘清的观念喔!
上述的服务器架设流程中,其实除了第 5 点之外,其他步骤在各服务器设定都需要了解啊!而且都是一样的东西说! 因此,这些基础如果学会了,最终,你只要知道第 5 点里面那个软件的基础设定,你的服务器一下子就可以设定完成啦! 这样说,你是否开始觉得基础学习很重要啊! ^_^
[size=large][b]一个常见的服务器设定案例分析[/b][/size]
上面讲完后或许你还是不很清楚到底这些技能如何串起来?鸟哥这里提供一个简单的案例来分析一下好了, 这样你应该就比较容易清楚的知道为何需要学习这些咚咚。
[b]A 网络环境[/b]:假设你的环境里面 (不管是家里还是宿舍) 共有五部计算机,这五部计算机需要串接在一起,且都可以对外联机;
[b]B 对外网络[/b]:你的环境只有一个对外的联机方式,这里假设是台湾较流行的 ADSL 或 10M 的光纤这种透过电话线拨接的类型;
[color=red]C 额外服务[/color]:你想要让这五部计算机都可以上网,而且其中还有一部可以做为网络驱动器机,提供同学或家人作为数据备份与分享之用;
[b]D 服务器管理[/b]:由于你可能需要进行远程管理,因此你这部服务器得要开放联机机制,以让远程计算机可以联机到这部主机来进行维护;
E 防火墙管理:因为担心这部做为档案分享服务器的系统被攻击,因此你需要针对 IP 来源进行登入权力的控制;
[b]F 账号管理[/b]:另外,由于同学的数据有隐密与共享之分,因此你还得要提供每个同学个别的账号, 且每个账号都有磁盘容量的使用限制;
[b]后端分析:[/b]最后,由于担心系统出问题所以你得要让系统自动定期分析磁盘使用量、登录文件参数信息等等。
在上述的环境中,你要考虑的东西有哪些呢?依据本小节一开始谈到的六个步骤来分析的话,你可能需要底下这些咚咚喔!
[size=large][b]了解网络基础[/b][/size]
[b]硬件规划[/b]
我们想要将五部计算机串接在一块,但是却又只有一个可以对外的联机,此时就得要购买集线器 (hub) 或者是交换器 (switch) 来串接所有的计算机了。但是这两者有何不同?为何 switch 比较贵?我们知道网络线被称为 RJ-45 的网络线, 但网络线材竟然有等级之分,这个等级要怎么分辨?不同等级的线材速度有没有差异?等到这些硬件基础了解之后, 你才能够针对你的环境来进行联机的设计。这部份我们等到下一章再来介绍。
[b]联机规划[/b]
由于只有一条对外联机而已,因此通常我们就建议你可以用如下的方式来串接你的网络:
TU
透过 IP 分享器,我们的五部计算机就都能够上网了。此时你得要注意,能否上网与 Internet 有关,[color=red]Internet 就是那有名的 TCP/IP 通讯协议[/color],而想要了解网络就得要知道啥是 [color=blue]OSI 七层协定[/color]。我们也知道能连上 Internet 与所谓的 IP 有关,那么我们内部这五部计算机所取得的 IP 能不能拿来架站?也就是说, IP 有没有不同种类? 如果 IP 分享器突然挂了,那你的这五部计算机能不能联机玩魔兽?这就考虑你的网络参数设定问题了!
[b]网络基础[/b]
如果你的同学或家人跑来跟你说,网络不通哩!你直觉会是什么?硬件问题?软件问题?还是啥莫名其妙的问题? [color=red]如果你不懂网络基础的 IP 相关参数,包括路由设定以及领域名系统 (DNS) 的话,肯定不知道怎么进行联机测试的。[/color] 所以啰,此时你就会被骂说:『怎么都不懂还想要管理我们家网络』...那时不是很糗吗?所以要学好一些嘛! 这部份就很复杂了,包括 TCP/IP, Network IP, Netmask IP, Broadcast IP, Gateway, DNS IP 等等,都需要理解喔!
了解了这些原理之后,你才能够进行除错 (debug) 的工作,否则,错误一出,你可能就会被骂的臭头的! 最常见的错误中,举例来说,如果你的主机明明就可以使用 ping 这个指令去接触远方的主机 (ping IP),但是就是无法使用 ping hostname 去接触远方的主机,请问,这个原因是什么呢?[color=red]了解网络基础的朋友一看就知道几乎是 DNS 出问题了[/color],不晓得的朋友就是想破头也得不到答案。既然知道出问题的地方,就能够针对该问题去处理嘛!
[color=red]网络基础会影响到你的网络设定是否正确,这真的很重要吶,[/color]因为,如果你的网络不通,那么即使服务器架设成功了, 别人可以看的到吗?所以说,要架站,真的得对网络基础的部分下一些功夫才行的。关于网络基础这部份我们在基础篇并没有谈过, 所以我们会在下一章网络基础时再详加说明喔!
[size=large][b]服务器本身的安装规划与架站目的的搭配[/b][/size]
如同图 1.2-2 所示,Server 端是在那五部计算机之中,而且 Server 必须要提供针对不同账号给予网络驱动器机,[color=red]我们这边会提供网芳 (SAMBA) 这个服务[/color],因为他可以在 Linux/Windows 之间通用之故。 且由于需要提供账号给使用者,以及想到未来的磁盘扩充情况,因此我们想要将 /home 独立出来,且使用 LVM 这个管理模式, [color=red]并搭配 Quota 机制来控制每个账号的磁盘使用量。[/color]
所以说,[color=red]你得知道 Linux 目录下的 FHS (Filesystem Hierarchy Standard) 的规范[/color],否则分割槽给到错误的目录,会造成无法开机!那为什么要将 /home 独立放入一个分割槽? 那是因为 quota 仅支持 filesystem 而不支持单一目录啊!好了,如果给你一部全新的主机,那你该如何安装你的系统呢?
[b]实作题-全新安装:[/b]
请到昆山科大 (http://ftp.ksu.edu.tw/FTP/CentOS/), 义守大学 (http://ftp.isu.edu.tw/pub/Linux/CentOS/) 或国家高速网络中心 (http://ftp.twaren.net/Linux/CentOS/ ) 下载最新的 Linux 映像档来刻录 (2011/07 可下载最新版为 CentOS 6.0),并且依据上述的需求安装好你的 Linux 系统 (最重要的其实就是那个分割而已,其他的动作可以在安装完成后再说)。
答:
由于 Linux 的安装我们已经在基础篇内的第四章介绍过了,这里我们不再使用图形接口来说明, 仅使用文字说明来介绍你在每个项目应该处理的动作而已。此外,由读者们的响应发现,学习者经常只有一部主机, 因此,这里我们建议你使用 Virtualbox (http://www.virtualbox.org/) 来仿真出一部实体主机,以安装你的测试环境。并请注意, 这部主机将会使用在本书的各个章节测试中。
Virtualbox 的安装与设定请自行参考其官网上面的 Documentation 介绍,这里不再赘言。只是需要注意的是, 若 (1)需要架设网站来上网,建议网络使用桥接模式 (bridge) ,且网络卡类型使用 Intel 的桌面计算机类型即可。 (2)由于我们未来会教导 NAT 服务器,因此最好有两张网卡,一张使用 bridge 一张使用内网 (intnet) 较佳。 而 (3)磁盘配置建议使用 SATA 类型,且容量请给予 25GB 以上。 (4)内存至少该给予 512MB 以上,最好有 1GB 来测试。 其他的请参考官网文件,或者使用默认配置即可。当然啦,如果你有独立的实体机器来安装,那就更好了! 不需理会这一小段文字的说明喔。
默认配置如下:
分割表请依如下方式进行:
/ : 2GB
/boot: 200MB
/usr : 4GB
/var : 2GB
/tmp : 1GB
swap : 1GB
/home: 5GB,并且使用 LVM 模式建置
其他容量请保留,未来再来进行额外练习!
软件挑选时,请选择『 basic server 』项目即可;
信息安全部分,防火墙选择启动,SELinux 选择强制 (Enforce);
假设 IP 分享器有自动分配 IP 的功能,所以网络参数先选择 DHCP 即可,未来再自己修改。
实际流程大致如下 (鸟哥以 CentOS 6.0 为例说明)
1.由于我们使用光驱开机来安装系统,因此得先进入 BIOS ,选择光驱开机,并且将 CentOS 6.x 的 DVD 放入光驱中;
2.在启动安装的画面中,选择『Install or upgrade an existing system』来安装新系统;
出现『 Disc Found 』字样,此时建议可以选择『 Skip 』即可略过;
3.在欢迎画面以鼠标点选『 Next 』;
4.语系数据可以选择『Chinese(Traditional)(中文(正体))』;
5.键盘格式保留『美式英文』即可;
[color=red]6.安装包含的装置类型,直接选择默认的『基本储存装置』即可;[/color]
7.因为我们是全新的硬盘,因此会出现一个找不到分割表的错误,[color=red]此时选择『重新初始化』[/color]即可;
8.进入网络主机名的设定,先保留『localhost.localdomain』即可。 同画面中还有一个『配置网络』的选项,我们先不要动他!等未来谈到网络设定再来处理即可;
9.进入时区选择,请选择『亚洲/台北』即可;
[color=red]10.出现 root 密码制作,这里我们先设定为『 centos 』吧![/color] 这个密码太简单,系统会出现警告,你选择『照样使用』即可。你也可以自行设定其他密码;
10.出现哪一类型安装的模式,因为我们有自己的分割考虑,所以,请选择[color=red]『建立自定义分割格式』[/color]来处理喔!
11.在出现分割画面中,先[color=red]点选『sda』项目[/color],然后点选『建立』的按钮,在出现的窗口中, 再点选『标准分割区』项目,然后点『建立』。 在最后的窗口中填写挂载点、容量等信息后,最终按下『确定』即可。最终画面有点像这样:
TU
依据前面的分割规划,持续进行上述的动作,将所有的分割都处理完毕,[color=red]除了 /home 之外[/color]。
[color=red]由于 /home 想要使用 LVM 的方式来建立文件系统,因此点选『建立』后,选择『LVM 实体卷册』项目,按下建立[/color],在出现的分割窗口中容量填写 5GB,示意图有点像这样:
TU
接下来回到原本的分割画面后,按下『建立』并选择『LVM 卷册群组』项目, 在出现的窗口中,卷册组名填写『server』,并且在右下方的逻辑卷册部分按下『新增』, 又会额外出现一个窗口,[color=red]此时就填入 /home 的相关参数啦[/color]!注意,逻辑卷册我们这里设定为 myhome 喔! 画面有点像底下这样:
TU
回到原本的分割画面,最终的显示有点像底下这样,然后请按下『下一步』继续。 但由于新建分割需要格式化,所以又会出现一个警告窗口!没问题的,选择『格式化』以及『将变更写至磁盘』吧!
TU
16.出现启动加载程序作业,都使用默认值即可,请按『下一步』;
17.出现安装类型,因为我们主机的角色为服务器,因此选择『Basic Server』项目! 其他项目保留默认,然后按下『下一步』就开始进行安装程序啰!
17.经过一段时间的等待,出现重新启动后,你就重新启动吧!喔!要记得将 DVD 拿出来喔!(怪异的是,鸟哥第一次安装后, 竟然发现电源管理有问题,得在 kernel 处增加 noapic 才能顺利开机呢!)
[color=red]18.装好并重新启动后,就会进入 runlevel 3 的纯文本界面!因为是服务器嘛![/color]
[size=large][b]服务器本身的基本操作系统操作[/b][/size]
既然我们这部主机得要提供[color=red]不同账号来使用他们自己的网络驱动器[/color],因此还需要建立账号啊,[color=red]使用磁盘配额 (quota) 等等[/color]的。 那么你会不会建立账号呢?你会不会建置共享目录呢?你能不能处理每个账号的 Quota 配额呢?如果 /home 的容量不足了, 你会不会放大 /home 的容量呢?有没有办法将系统的磁盘使用情况定期的发送邮件给管理员呢?这些都是基本的维护行为喔! 我们底下就以几个实际例子来练习看看你的基础能力吧!
例题-大量建置账号:
假设我的五个朋友账号分别是 vbirduser{1,2,3,4,5},且这五个朋友未来想要共享一个目录,[color=red]因此应该要加入同一个群组,假设这个群组为 vbirdgroup[/color],且这五个账号的密码均为 password 。那该如何建置这五个账号?
答:
你可以写一支脚本程序来进行上述的工作喔!
[code="linux"]
# mkdir bin
# cd /root/bin
# vim useradd.sh
#!/bin/bash
groupadd vbirdgroup
for username in vbirduser1 vbirduser2 vbirduser3 vbirduser4 vbirduser5
do
useradd -G vbirdgroup $username
echo "password" | passwd --stdin $username
done
# sh useradd.sh
# id vbirduser1
uid=501(vbirduser1) gid=502(vbirduser1) groups=502(vbirduser1),501(vbirdgroup)
context=root:system_r:unconfined_t:SystemLow-SystemHigh
[/code]
最后利用 id 这个指令来查询看看,是否群组的支持是对的啊!
[b]例题-共享目录的权限:[/b]
这五个朋友的共享目录建置于 /home/vbirdgroup 这个目录,这个目录只能给这五个人使用,且每个人均可于该目录内进行任何动作! 若有其他人则无法使用 (没有权限),那该如何建置这个目录的权限呢?
答:
考虑到共享目录,[color=red]因此目录需要有 SGID 的权限才行![/color]否则个别群组数据会让这五个人彼此间无法修改对方的数据的。因此需要这样做:
[code="linux"]
# mkdir /home/vbirdgroup
# chgrp vbirdgroup /home/vbirdgroup
# chmod 2770 /home/vbirdgroup
# ll -d /home/vbirdgroup
drwxrws---. 2 root vbirdgroup 4096 2011-07-14 14:49 /home/vbirdgroup/
# 上面特殊字体的部分就是你需要注意的部分啰!特别注意那个权限的 s 功能喔!
[/code]
[b]例题-Quota 实作:[/b]
假设这五个用户均需要进行[color=red]磁盘配额限制[/color],每个用户的配额为 2GB (hard) 以及 1.8GB (soft),该如何处理?
答:
这一题实作比较难,因为必须要包括文件系统的支持、quota 数据文件建置、quota 启动、建立用户 quota 信息等过程。 整个过程在基础篇有讲过了,这里很快速的带领大家进行一次吧!
[code="linux"]
# 1. 启动 filesystem 的 Quota 支持
# vim /etc/fstab
UUID=01acf085-69e5-4474-bbc6-dc366646b5c8 / ext4 defaults 1 1
UUID=eb5986d8-2179-4952-bffd-eba31fb063ed /boot ext4 defaults 1 2
/dev/mapper/server-myhome /home ext4 defaults,usrquota,grpquota 1 2
UUID=605e815f-2740-4c0e-9ad9-14e069417226 /tmp ext4 defaults 1 2
....(底下省略)....
# 因为是要处理用户的磁盘,所以找到的是 /home 这个目录来处理的啊!
# 另外,CentOS 6.x 以后,默认使用 UUID 的磁盘代号而非使用文件名。
# 不过,你还是能使用类似 /dev/sda1 之类的档名啦!
# umount /home; mount -a
# mount | grep home
/dev/mapper/server-myhome on /home type ext4 (rw,usrquota,grpquota)
# 做完使用 mount 去检查一下 /home 所在的 filesystem 有没有上述的字眼!
# 2. 制作 Quota 数据文件,并启动 Quota 支持
# quotacheck -avug
quotacheck: Scanning /dev/mapper/server-myhome [/home] done
....(底下省略)....
# 会出现一些错误的警告信息,但那是正常的!出现上述的字样就对了!
# quotaon -avug
/dev/mapper/server-myhome [/home]: group quotas turned on
/dev/mapper/server-myhome [/home]: user quotas turned on
# 3. 制作 Quota 数据给用户
# edquota -u vbirduser1
Disk quotas for user vbirduser1 (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/mapper/server-myhome 20 1800000 2000000 5 0 0
# 因为 Quota 的单位是 KB ,所以这里要补上好多 0 啊!看的眼睛都花了!
# edquota -p vbirduser1 vbirduser2
# 持续作几次,将 vbirduser{3,4,5} 通通补上去!
# repquota -au
*** Report for user quotas on device /dev/mapper/server-myhome
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 24 0 0 3 0 0
vbirduser1 -- 20 1800000 2000000 5 0 0
vbirduser2 -- 20 1800000 2000000 5 0 0
vbirduser3 -- 20 1800000 2000000 5 0 0
vbirduser4 -- 20 1800000 2000000 5 0 0
vbirduser5 -- 20 1800000 2000000 5 0 0
# 看到没?上述的结果就是有发现到设定的 Quota 值啰!整个流程就是这样!
[/code]
[b]例题-文件系统的放大 (LVM):[/b]
纯粹假设的,我们的 /home 不够用了,你想要将 /home 放大到 7GB 可不可行啊?
答:
因为当初就担心这个问题,[color=red]所以 /home 已经是 LVM 的方式来管理了[/color]。此时我们要来瞧瞧 VG 够不够用,如果够用的话, 那就可以继续进行。如果不够用呢?我们就得要从 PV 着手啰!整个流程可以是这样来观察的。
[code="linux"]
# 1. 先看看 VG 的量够不够用:
# vgdisplay
--- Volume group ---
VG Name server
System ID
Format lvm2
....(中间省略)....
VG Size 4.88 GiB <==只有区区 5G左右
PE Size 4.00 MiB
Total PE 1249
Alloc PE / Size 1249 / 4.88 GiB
Free PE / Size 0 / 0 <==完全没有剩余的容量了!
VG UUID SvAEou-2quf-Z1Tr-Wsdz-2UY8-Cmfm-Ni0Oaf
# 真惨!已经没有多余的 VG 容量可以使用了!因此,我们得要增加 PV 才行。
# 2. 开始制作出所需要的 partition 吧!作为 PV 用的!
# fdisk /dev/sda <==详细流程我不写了!自己瞧
Command (m for help): p
Device Boot Start End Blocks Id System
....(中间省略)....
/dev/sda8 1812 1939 1024000 83 Linux <==最后一个磁柱
Command (m for help): n
First cylinder (1173-3264, default 1173): 1940 <==上面查到的号码加 1
Last cylinder, +cylinders or +size{K,M,G} (1940-3264, default 3264): +2G
Command (m for help): t
Partition number (1-9): 9
Hex code (type L to list codes): 8e
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sda9 1940 2201 2104515 8e Linux LVM <==得到 /dev/sda9
Command (m for help): w
# partprobe <==在虚拟机上面得要 reboot 才行!
# 3. 将 /dev/sda9 加入 PV,并将该 PV 加入 server 这个 VG 吧
# pvcreate /dev/sda9
# vgextend server /dev/sda9
# vgdisplay
....(前面省略)....
VG Size 6.88 GiB <==这个 VG 最大就是 6.88G 啦
....(中间省略)....
Free PE / Size 513 / 2.00 GiB <==有多出 2GB 的容量可用了!
# 4. 准备加大 /home,开始前,还是先观察一下才增加 LV 容量较好!
# lvdisplay
--- Logical volume ---
LV Name /dev/server/myhome <==这是 LV 的名字!
VG Name server
....(中间省略)....
LV Size 4.88 GiB <==只有 5GB 左右,需要增加 2GB 啰
....(底下省略)....
# 看起来,是需要增加容量啰!我们使用 lvresize 来扩大容量吧!
# lvresize -L 6.88G /dev/server/myhome
Rounding up size to full physical extent 6.88 GiB
Extending logical volume myhome to 6.88 GiB <==处理完毕啰!
Logical volume myhome successfully resized
# 看来确实是扩大到 6.88GB 啰!开始处理文件系统吧!
# 5. 扩大文件系统
# resize2fs /dev/server/myhome
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/server/myhome is mounted on /home; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/server/myhome to 1804288 (4k) blocks.
The filesystem on /dev/server/myhome is now 1804288 blocks long.
# df -h
文件系统 Size Used Avail Use% 挂载点
/dev/mapper/server-myhome
6.8G 140M 6.4G 3% /home
....(其他省略)....
# 可以看到文件系统确实有放大到 6.8G 喔!这样了解了吗?
[/code]
做完上面的实作之后,现在你晓得为什么在基础篇的时候,我们一直强调一些有的没有的了吧?因为那些东西在这里都用的上! 如果本章这些题目你都不会,甚至连为什么要作这些东西都不懂的话,那得赶紧回去阅读基础篇,不要再念下去了! 会非常非常辛苦的呦!
转自:[url]http://vbird.dic.ksu.edu.tw/linux_server/0105beforeserver_2.php[/url]
[size=large][b]网络服务器成功联机的分析[/b][/size]
底下我们就整个服务器的简易架设流程当中来分析一下,以了解为什么了解操作系统的基础对于网站维护是相当重要的呢?首先,到底我们是如何联机到服务器的? 联机到服务器又取得啥咚咚?我们先以底下这张图示来作个简单的说明好了:
tu
先来理解一下,到底我们联机到服务器想要得到什么?举例来说,你联机到 Youtube 想要看影片,所以对方就提供影片串流数据给你; 你连到 Yahoo 想要看新闻,所以对方就提供新闻的文本文件给你;你联机到无名小站想要看美女,对方就传图档给你;你联机 Facebook 想要去种田,对方就参考你之前留下来的记录,从数据库里面将你的记录拿出来传给你。看到没有,你联机到服务器,重点在取得对方的数据, 而一般数据的存在就是使用档案啰!那你有没有权限取得?最终与该文件系统的设定有关啦!
上图显示的是:[color=red]首先,客户端到服务器的网络要能够通,等到客户端到达服务器后[/color],会先由服务器的防火墙判断该联机能否放行, 等到放行之后才能使用到服务器软件的功能。[color=red]而该功能又得要通过 SELinux 这个细部权限设定的项目后,才能够读取到文件系统。[/color] 但能不能读到文件系统呢?[color=blue]这又跟文件系统的权限 (rwx) 有关啦![/color]上述的每个部分都要能够成功,否则就无法顺利读取数据啰。
所以,根据上面的流程我们大概可以将整个联机分为几个部分,[color=red]包括:网络、服务器本身、内部防火墙软件设定、各项服务配置文件、细部权限的 SELinux 以及最终最重要的档案权限。[/color]底下就分几个细项来谈谈啰。
[b]A 网络:了解网络基础知识与所需服务之通讯协议[/b]
既然要架设服务器,首先当然得要了解一下因特网。因为不管是哪种操作系统,若想要与因特网联机,这个网络基础就得了解。 举例来说,『网域』是经常会谈到的概念,当你发现一个设定为 192.168.1.0/255.255.255.0 时,晓得那是什么鬼东西吗? 如果不知道的话,呵呵!绝对无法设定好网站的啦!另外,为何你需要服务器?当然是想要达成某项网络服务。 举例来说,传输档案可以用 FTP,那 WWW 可以传递档案吗?网芳可以传递吗?各有何用处?哪个比较方便? 对于客户或老板来说,我们所设定的服务能否满足他们的需求等等,这都需要了解,否则你将一头雾水啊! 因此这部份你就得要了解:
基本的网络基础知识:包括以太网络硬件与协议、TCP/IP、网络联机所需参数等;
各网络服务所对应的通讯协议原理,以及各通讯协议所需对应的软件。
[b]B 服务器本身:了解架网络服务器之目的以配合主机的安装规划[/b]
想要架设服务器吗?那...架什么服务器?这个服务器要不要对 Internet 开放?这个服务要不要针对客户提供相关账号? [color=red]要不要针对不同的客户账号进行例如磁盘容量、可活动空间与可用系统资源进行限制?[/color]如果要进行各项资源的限制, 那服务器操作系统应该要如何安装与设定?问题很多吧!所以,先了解你要的服务器服务目的之后,后续的规划才能陆续出炉。 不过,如果架站只是为了『练功』而已,呵呵!那就不需要考虑太多了~
[b]C 服务器本身:了解操作系统的基本操作[/b]
网络服务软件是[color=red]需要建置在操作系统上面的[/color],所以基本的操作系统操作就得要了解才行啊!包括软件如何安装与移除? 如何让系统进行例行的工作管理?如何依据服务器服务之目的规划文件系统?如何让文件系统具有未来扩充性 (LVM 之类)? 系统如何管理各项服务之启动?系统的开机流程为何?系统出错时,该如何进行快速复原等等,这都需要了解的呢!
[b]D 内部防火墙设定:管理系统的可分享资源[/b]
一部主机可以拥有多种服务器软件的运作,而很多 Linux distributions 出厂的默认值就已经开放很多服务给 Internet 使用了,不过这些服务可能并不是你想要开放的呢。我们在了解网络基础与所需服务的目的之后, [color=red]接下来就是透过防火墙来规范可以使用本服务器服务的用户,以让系统在使用上拥有较佳的控管情况。[/color] 此外,不管你的防火墙系统设定的再怎么严格,只要是你要开放的服务, 那防火墙对于该服务就没有保护的效果。因此,那个重要的在线更新软件机制就一定要定期进行!否则你的系统将会非常非常的不安全!
[b]E 服务器软件设定:学习设定技巧与开机是否自动执行[/b]
刚刚第一点就提到我们得要知道每种服务所能达成的功能,如此一来才能够架设你所需要的服务的网站。 那你所需要的服务是由哪个软件达成的?同一个服务可否有不同的软件?每种软件可以达成的目的是否相同? 依据所需要的功能如何设定你的服务器软件?架设过程中如果出现错误,你该如何观察与除错? 可否定期的分析服务器相关的登录信息,以方便了解该服务器的使用情况与错误发生的原因? 能否通知多个用户进行联机测试,以取得较佳的服务器设定值?所以这里你可能就得要知道:
[color=red]软件如何安装、如何查询相关配置文件所在位置;[/color]
服务器软件如何设定?
[color=red]服务器软件如何启动?如何设定自动开机启动?如何观察启动的埠口?[/color]
服务器软件激活失败如何除错?如何观察登录档?如何透过登录档进行除错?
透过客户端进行联机测试,如果失败该如何处理?联机失败的原因是服务器还是防火墙?
服务器的设定修改是否有建立日志?登录档是否有定期分析?
[color=red]服务器所提供或分享的数据有无定期备份?如何定期自动备份或异地备份?[/color]
[b]F 细部权限设定:包括 SELinux 与档案权限[/b]
等到你的服务器全部设定妥当,最后你所提供的档案数据权限却是给了『 000 』的权限分数, [color=red]那鸟哥很肯定的说,大家都无法读到你所提供的数据啊[/color]...!此外,新的 distributions 都建议你要启动 SELinux ,那是什么咚咚? 如果你的数据放置于非正规的目录,那该如何处理 SELinux 的问题?又如何让档案具有保密性或共享性 (档案权限概念与 ACL 等) 等等,这也都是需要厘清的观念喔!
上述的服务器架设流程中,其实除了第 5 点之外,其他步骤在各服务器设定都需要了解啊!而且都是一样的东西说! 因此,这些基础如果学会了,最终,你只要知道第 5 点里面那个软件的基础设定,你的服务器一下子就可以设定完成啦! 这样说,你是否开始觉得基础学习很重要啊! ^_^
[size=large][b]一个常见的服务器设定案例分析[/b][/size]
上面讲完后或许你还是不很清楚到底这些技能如何串起来?鸟哥这里提供一个简单的案例来分析一下好了, 这样你应该就比较容易清楚的知道为何需要学习这些咚咚。
[b]A 网络环境[/b]:假设你的环境里面 (不管是家里还是宿舍) 共有五部计算机,这五部计算机需要串接在一起,且都可以对外联机;
[b]B 对外网络[/b]:你的环境只有一个对外的联机方式,这里假设是台湾较流行的 ADSL 或 10M 的光纤这种透过电话线拨接的类型;
[color=red]C 额外服务[/color]:你想要让这五部计算机都可以上网,而且其中还有一部可以做为网络驱动器机,提供同学或家人作为数据备份与分享之用;
[b]D 服务器管理[/b]:由于你可能需要进行远程管理,因此你这部服务器得要开放联机机制,以让远程计算机可以联机到这部主机来进行维护;
E 防火墙管理:因为担心这部做为档案分享服务器的系统被攻击,因此你需要针对 IP 来源进行登入权力的控制;
[b]F 账号管理[/b]:另外,由于同学的数据有隐密与共享之分,因此你还得要提供每个同学个别的账号, 且每个账号都有磁盘容量的使用限制;
[b]后端分析:[/b]最后,由于担心系统出问题所以你得要让系统自动定期分析磁盘使用量、登录文件参数信息等等。
在上述的环境中,你要考虑的东西有哪些呢?依据本小节一开始谈到的六个步骤来分析的话,你可能需要底下这些咚咚喔!
[size=large][b]了解网络基础[/b][/size]
[b]硬件规划[/b]
我们想要将五部计算机串接在一块,但是却又只有一个可以对外的联机,此时就得要购买集线器 (hub) 或者是交换器 (switch) 来串接所有的计算机了。但是这两者有何不同?为何 switch 比较贵?我们知道网络线被称为 RJ-45 的网络线, 但网络线材竟然有等级之分,这个等级要怎么分辨?不同等级的线材速度有没有差异?等到这些硬件基础了解之后, 你才能够针对你的环境来进行联机的设计。这部份我们等到下一章再来介绍。
[b]联机规划[/b]
由于只有一条对外联机而已,因此通常我们就建议你可以用如下的方式来串接你的网络:
TU
透过 IP 分享器,我们的五部计算机就都能够上网了。此时你得要注意,能否上网与 Internet 有关,[color=red]Internet 就是那有名的 TCP/IP 通讯协议[/color],而想要了解网络就得要知道啥是 [color=blue]OSI 七层协定[/color]。我们也知道能连上 Internet 与所谓的 IP 有关,那么我们内部这五部计算机所取得的 IP 能不能拿来架站?也就是说, IP 有没有不同种类? 如果 IP 分享器突然挂了,那你的这五部计算机能不能联机玩魔兽?这就考虑你的网络参数设定问题了!
[b]网络基础[/b]
如果你的同学或家人跑来跟你说,网络不通哩!你直觉会是什么?硬件问题?软件问题?还是啥莫名其妙的问题? [color=red]如果你不懂网络基础的 IP 相关参数,包括路由设定以及领域名系统 (DNS) 的话,肯定不知道怎么进行联机测试的。[/color] 所以啰,此时你就会被骂说:『怎么都不懂还想要管理我们家网络』...那时不是很糗吗?所以要学好一些嘛! 这部份就很复杂了,包括 TCP/IP, Network IP, Netmask IP, Broadcast IP, Gateway, DNS IP 等等,都需要理解喔!
了解了这些原理之后,你才能够进行除错 (debug) 的工作,否则,错误一出,你可能就会被骂的臭头的! 最常见的错误中,举例来说,如果你的主机明明就可以使用 ping 这个指令去接触远方的主机 (ping IP),但是就是无法使用 ping hostname 去接触远方的主机,请问,这个原因是什么呢?[color=red]了解网络基础的朋友一看就知道几乎是 DNS 出问题了[/color],不晓得的朋友就是想破头也得不到答案。既然知道出问题的地方,就能够针对该问题去处理嘛!
[color=red]网络基础会影响到你的网络设定是否正确,这真的很重要吶,[/color]因为,如果你的网络不通,那么即使服务器架设成功了, 别人可以看的到吗?所以说,要架站,真的得对网络基础的部分下一些功夫才行的。关于网络基础这部份我们在基础篇并没有谈过, 所以我们会在下一章网络基础时再详加说明喔!
[size=large][b]服务器本身的安装规划与架站目的的搭配[/b][/size]
如同图 1.2-2 所示,Server 端是在那五部计算机之中,而且 Server 必须要提供针对不同账号给予网络驱动器机,[color=red]我们这边会提供网芳 (SAMBA) 这个服务[/color],因为他可以在 Linux/Windows 之间通用之故。 且由于需要提供账号给使用者,以及想到未来的磁盘扩充情况,因此我们想要将 /home 独立出来,且使用 LVM 这个管理模式, [color=red]并搭配 Quota 机制来控制每个账号的磁盘使用量。[/color]
所以说,[color=red]你得知道 Linux 目录下的 FHS (Filesystem Hierarchy Standard) 的规范[/color],否则分割槽给到错误的目录,会造成无法开机!那为什么要将 /home 独立放入一个分割槽? 那是因为 quota 仅支持 filesystem 而不支持单一目录啊!好了,如果给你一部全新的主机,那你该如何安装你的系统呢?
[b]实作题-全新安装:[/b]
请到昆山科大 (http://ftp.ksu.edu.tw/FTP/CentOS/), 义守大学 (http://ftp.isu.edu.tw/pub/Linux/CentOS/) 或国家高速网络中心 (http://ftp.twaren.net/Linux/CentOS/ ) 下载最新的 Linux 映像档来刻录 (2011/07 可下载最新版为 CentOS 6.0),并且依据上述的需求安装好你的 Linux 系统 (最重要的其实就是那个分割而已,其他的动作可以在安装完成后再说)。
答:
由于 Linux 的安装我们已经在基础篇内的第四章介绍过了,这里我们不再使用图形接口来说明, 仅使用文字说明来介绍你在每个项目应该处理的动作而已。此外,由读者们的响应发现,学习者经常只有一部主机, 因此,这里我们建议你使用 Virtualbox (http://www.virtualbox.org/) 来仿真出一部实体主机,以安装你的测试环境。并请注意, 这部主机将会使用在本书的各个章节测试中。
Virtualbox 的安装与设定请自行参考其官网上面的 Documentation 介绍,这里不再赘言。只是需要注意的是, 若 (1)需要架设网站来上网,建议网络使用桥接模式 (bridge) ,且网络卡类型使用 Intel 的桌面计算机类型即可。 (2)由于我们未来会教导 NAT 服务器,因此最好有两张网卡,一张使用 bridge 一张使用内网 (intnet) 较佳。 而 (3)磁盘配置建议使用 SATA 类型,且容量请给予 25GB 以上。 (4)内存至少该给予 512MB 以上,最好有 1GB 来测试。 其他的请参考官网文件,或者使用默认配置即可。当然啦,如果你有独立的实体机器来安装,那就更好了! 不需理会这一小段文字的说明喔。
默认配置如下:
分割表请依如下方式进行:
/ : 2GB
/boot: 200MB
/usr : 4GB
/var : 2GB
/tmp : 1GB
swap : 1GB
/home: 5GB,并且使用 LVM 模式建置
其他容量请保留,未来再来进行额外练习!
软件挑选时,请选择『 basic server 』项目即可;
信息安全部分,防火墙选择启动,SELinux 选择强制 (Enforce);
假设 IP 分享器有自动分配 IP 的功能,所以网络参数先选择 DHCP 即可,未来再自己修改。
实际流程大致如下 (鸟哥以 CentOS 6.0 为例说明)
1.由于我们使用光驱开机来安装系统,因此得先进入 BIOS ,选择光驱开机,并且将 CentOS 6.x 的 DVD 放入光驱中;
2.在启动安装的画面中,选择『Install or upgrade an existing system』来安装新系统;
出现『 Disc Found 』字样,此时建议可以选择『 Skip 』即可略过;
3.在欢迎画面以鼠标点选『 Next 』;
4.语系数据可以选择『Chinese(Traditional)(中文(正体))』;
5.键盘格式保留『美式英文』即可;
[color=red]6.安装包含的装置类型,直接选择默认的『基本储存装置』即可;[/color]
7.因为我们是全新的硬盘,因此会出现一个找不到分割表的错误,[color=red]此时选择『重新初始化』[/color]即可;
8.进入网络主机名的设定,先保留『localhost.localdomain』即可。 同画面中还有一个『配置网络』的选项,我们先不要动他!等未来谈到网络设定再来处理即可;
9.进入时区选择,请选择『亚洲/台北』即可;
[color=red]10.出现 root 密码制作,这里我们先设定为『 centos 』吧![/color] 这个密码太简单,系统会出现警告,你选择『照样使用』即可。你也可以自行设定其他密码;
10.出现哪一类型安装的模式,因为我们有自己的分割考虑,所以,请选择[color=red]『建立自定义分割格式』[/color]来处理喔!
11.在出现分割画面中,先[color=red]点选『sda』项目[/color],然后点选『建立』的按钮,在出现的窗口中, 再点选『标准分割区』项目,然后点『建立』。 在最后的窗口中填写挂载点、容量等信息后,最终按下『确定』即可。最终画面有点像这样:
TU
依据前面的分割规划,持续进行上述的动作,将所有的分割都处理完毕,[color=red]除了 /home 之外[/color]。
[color=red]由于 /home 想要使用 LVM 的方式来建立文件系统,因此点选『建立』后,选择『LVM 实体卷册』项目,按下建立[/color],在出现的分割窗口中容量填写 5GB,示意图有点像这样:
TU
接下来回到原本的分割画面后,按下『建立』并选择『LVM 卷册群组』项目, 在出现的窗口中,卷册组名填写『server』,并且在右下方的逻辑卷册部分按下『新增』, 又会额外出现一个窗口,[color=red]此时就填入 /home 的相关参数啦[/color]!注意,逻辑卷册我们这里设定为 myhome 喔! 画面有点像底下这样:
TU
回到原本的分割画面,最终的显示有点像底下这样,然后请按下『下一步』继续。 但由于新建分割需要格式化,所以又会出现一个警告窗口!没问题的,选择『格式化』以及『将变更写至磁盘』吧!
TU
16.出现启动加载程序作业,都使用默认值即可,请按『下一步』;
17.出现安装类型,因为我们主机的角色为服务器,因此选择『Basic Server』项目! 其他项目保留默认,然后按下『下一步』就开始进行安装程序啰!
17.经过一段时间的等待,出现重新启动后,你就重新启动吧!喔!要记得将 DVD 拿出来喔!(怪异的是,鸟哥第一次安装后, 竟然发现电源管理有问题,得在 kernel 处增加 noapic 才能顺利开机呢!)
[color=red]18.装好并重新启动后,就会进入 runlevel 3 的纯文本界面!因为是服务器嘛![/color]
[size=large][b]服务器本身的基本操作系统操作[/b][/size]
既然我们这部主机得要提供[color=red]不同账号来使用他们自己的网络驱动器[/color],因此还需要建立账号啊,[color=red]使用磁盘配额 (quota) 等等[/color]的。 那么你会不会建立账号呢?你会不会建置共享目录呢?你能不能处理每个账号的 Quota 配额呢?如果 /home 的容量不足了, 你会不会放大 /home 的容量呢?有没有办法将系统的磁盘使用情况定期的发送邮件给管理员呢?这些都是基本的维护行为喔! 我们底下就以几个实际例子来练习看看你的基础能力吧!
例题-大量建置账号:
假设我的五个朋友账号分别是 vbirduser{1,2,3,4,5},且这五个朋友未来想要共享一个目录,[color=red]因此应该要加入同一个群组,假设这个群组为 vbirdgroup[/color],且这五个账号的密码均为 password 。那该如何建置这五个账号?
答:
你可以写一支脚本程序来进行上述的工作喔!
[code="linux"]
# mkdir bin
# cd /root/bin
# vim useradd.sh
#!/bin/bash
groupadd vbirdgroup
for username in vbirduser1 vbirduser2 vbirduser3 vbirduser4 vbirduser5
do
useradd -G vbirdgroup $username
echo "password" | passwd --stdin $username
done
# sh useradd.sh
# id vbirduser1
uid=501(vbirduser1) gid=502(vbirduser1) groups=502(vbirduser1),501(vbirdgroup)
context=root:system_r:unconfined_t:SystemLow-SystemHigh
[/code]
最后利用 id 这个指令来查询看看,是否群组的支持是对的啊!
[b]例题-共享目录的权限:[/b]
这五个朋友的共享目录建置于 /home/vbirdgroup 这个目录,这个目录只能给这五个人使用,且每个人均可于该目录内进行任何动作! 若有其他人则无法使用 (没有权限),那该如何建置这个目录的权限呢?
答:
考虑到共享目录,[color=red]因此目录需要有 SGID 的权限才行![/color]否则个别群组数据会让这五个人彼此间无法修改对方的数据的。因此需要这样做:
[code="linux"]
# mkdir /home/vbirdgroup
# chgrp vbirdgroup /home/vbirdgroup
# chmod 2770 /home/vbirdgroup
# ll -d /home/vbirdgroup
drwxrws---. 2 root vbirdgroup 4096 2011-07-14 14:49 /home/vbirdgroup/
# 上面特殊字体的部分就是你需要注意的部分啰!特别注意那个权限的 s 功能喔!
[/code]
[b]例题-Quota 实作:[/b]
假设这五个用户均需要进行[color=red]磁盘配额限制[/color],每个用户的配额为 2GB (hard) 以及 1.8GB (soft),该如何处理?
答:
这一题实作比较难,因为必须要包括文件系统的支持、quota 数据文件建置、quota 启动、建立用户 quota 信息等过程。 整个过程在基础篇有讲过了,这里很快速的带领大家进行一次吧!
[code="linux"]
# 1. 启动 filesystem 的 Quota 支持
# vim /etc/fstab
UUID=01acf085-69e5-4474-bbc6-dc366646b5c8 / ext4 defaults 1 1
UUID=eb5986d8-2179-4952-bffd-eba31fb063ed /boot ext4 defaults 1 2
/dev/mapper/server-myhome /home ext4 defaults,usrquota,grpquota 1 2
UUID=605e815f-2740-4c0e-9ad9-14e069417226 /tmp ext4 defaults 1 2
....(底下省略)....
# 因为是要处理用户的磁盘,所以找到的是 /home 这个目录来处理的啊!
# 另外,CentOS 6.x 以后,默认使用 UUID 的磁盘代号而非使用文件名。
# 不过,你还是能使用类似 /dev/sda1 之类的档名啦!
# umount /home; mount -a
# mount | grep home
/dev/mapper/server-myhome on /home type ext4 (rw,usrquota,grpquota)
# 做完使用 mount 去检查一下 /home 所在的 filesystem 有没有上述的字眼!
# 2. 制作 Quota 数据文件,并启动 Quota 支持
# quotacheck -avug
quotacheck: Scanning /dev/mapper/server-myhome [/home] done
....(底下省略)....
# 会出现一些错误的警告信息,但那是正常的!出现上述的字样就对了!
# quotaon -avug
/dev/mapper/server-myhome [/home]: group quotas turned on
/dev/mapper/server-myhome [/home]: user quotas turned on
# 3. 制作 Quota 数据给用户
# edquota -u vbirduser1
Disk quotas for user vbirduser1 (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/mapper/server-myhome 20 1800000 2000000 5 0 0
# 因为 Quota 的单位是 KB ,所以这里要补上好多 0 啊!看的眼睛都花了!
# edquota -p vbirduser1 vbirduser2
# 持续作几次,将 vbirduser{3,4,5} 通通补上去!
# repquota -au
*** Report for user quotas on device /dev/mapper/server-myhome
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 24 0 0 3 0 0
vbirduser1 -- 20 1800000 2000000 5 0 0
vbirduser2 -- 20 1800000 2000000 5 0 0
vbirduser3 -- 20 1800000 2000000 5 0 0
vbirduser4 -- 20 1800000 2000000 5 0 0
vbirduser5 -- 20 1800000 2000000 5 0 0
# 看到没?上述的结果就是有发现到设定的 Quota 值啰!整个流程就是这样!
[/code]
[b]例题-文件系统的放大 (LVM):[/b]
纯粹假设的,我们的 /home 不够用了,你想要将 /home 放大到 7GB 可不可行啊?
答:
因为当初就担心这个问题,[color=red]所以 /home 已经是 LVM 的方式来管理了[/color]。此时我们要来瞧瞧 VG 够不够用,如果够用的话, 那就可以继续进行。如果不够用呢?我们就得要从 PV 着手啰!整个流程可以是这样来观察的。
[code="linux"]
# 1. 先看看 VG 的量够不够用:
# vgdisplay
--- Volume group ---
VG Name server
System ID
Format lvm2
....(中间省略)....
VG Size 4.88 GiB <==只有区区 5G左右
PE Size 4.00 MiB
Total PE 1249
Alloc PE / Size 1249 / 4.88 GiB
Free PE / Size 0 / 0 <==完全没有剩余的容量了!
VG UUID SvAEou-2quf-Z1Tr-Wsdz-2UY8-Cmfm-Ni0Oaf
# 真惨!已经没有多余的 VG 容量可以使用了!因此,我们得要增加 PV 才行。
# 2. 开始制作出所需要的 partition 吧!作为 PV 用的!
# fdisk /dev/sda <==详细流程我不写了!自己瞧
Command (m for help): p
Device Boot Start End Blocks Id System
....(中间省略)....
/dev/sda8 1812 1939 1024000 83 Linux <==最后一个磁柱
Command (m for help): n
First cylinder (1173-3264, default 1173): 1940 <==上面查到的号码加 1
Last cylinder, +cylinders or +size{K,M,G} (1940-3264, default 3264): +2G
Command (m for help): t
Partition number (1-9): 9
Hex code (type L to list codes): 8e
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sda9 1940 2201 2104515 8e Linux LVM <==得到 /dev/sda9
Command (m for help): w
# partprobe <==在虚拟机上面得要 reboot 才行!
# 3. 将 /dev/sda9 加入 PV,并将该 PV 加入 server 这个 VG 吧
# pvcreate /dev/sda9
# vgextend server /dev/sda9
# vgdisplay
....(前面省略)....
VG Size 6.88 GiB <==这个 VG 最大就是 6.88G 啦
....(中间省略)....
Free PE / Size 513 / 2.00 GiB <==有多出 2GB 的容量可用了!
# 4. 准备加大 /home,开始前,还是先观察一下才增加 LV 容量较好!
# lvdisplay
--- Logical volume ---
LV Name /dev/server/myhome <==这是 LV 的名字!
VG Name server
....(中间省略)....
LV Size 4.88 GiB <==只有 5GB 左右,需要增加 2GB 啰
....(底下省略)....
# 看起来,是需要增加容量啰!我们使用 lvresize 来扩大容量吧!
# lvresize -L 6.88G /dev/server/myhome
Rounding up size to full physical extent 6.88 GiB
Extending logical volume myhome to 6.88 GiB <==处理完毕啰!
Logical volume myhome successfully resized
# 看来确实是扩大到 6.88GB 啰!开始处理文件系统吧!
# 5. 扩大文件系统
# resize2fs /dev/server/myhome
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/server/myhome is mounted on /home; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/server/myhome to 1804288 (4k) blocks.
The filesystem on /dev/server/myhome is now 1804288 blocks long.
# df -h
文件系统 Size Used Avail Use% 挂载点
/dev/mapper/server-myhome
6.8G 140M 6.4G 3% /home
....(其他省略)....
# 可以看到文件系统确实有放大到 6.8G 喔!这样了解了吗?
[/code]
做完上面的实作之后,现在你晓得为什么在基础篇的时候,我们一直强调一些有的没有的了吧?因为那些东西在这里都用的上! 如果本章这些题目你都不会,甚至连为什么要作这些东西都不懂的话,那得赶紧回去阅读基础篇,不要再念下去了! 会非常非常辛苦的呦!
转自:[url]http://vbird.dic.ksu.edu.tw/linux_server/0105beforeserver_2.php[/url]