2.1 Linux与硬件的搭配
虽然个人计算机各元件的主要接口是大同小异的,包括前面第零章计算机概论讲到的种种接口等, 但是由于新的技术来得太快,Linux核心针对新硬件所纳入的驱动程序模块比不上硬件更新的速度, 加上硬件厂商针对Linux所推出的驱动程序较慢,因此你在选购新的个人计算机(或服务器)时, 应该要选择已经过安装Linux测试的硬件比较好。
此外,在安装Linux之前,你最好了解一下你的Linux预计是想达成什么任务,这样在选购硬件时才会知道那个元件是最重要的。 举例来说,桌面电脑(Desktop)的使用者,应该会用到X Window系统, 此时,显卡的优劣与内存的大小可就占有很重大的影响。如果是想要做成文件服务器, 那么硬盘或者是其他的储存设备,应该就是您最想要增购的元件啰!所以说,功课还是需要作的啊!
鸟哥在这里要不厌其烦的再次的强调,Linux对于计算机各元件/设备的分辨, 与大家惯用的Windows系统完全不一样!因为,各个元件或设备在Linux下面都是“一个文件!” 这个观念我们在第一章Linux是什么里面已经提过, 这里我们再次的强调。因此,你在认识各项设备之后,学习Linux的设备文件名之前, 务必要先将Windows对于设备名称的概念先拿掉~否则会很难理解喔!
2.1.1 认识计算机的硬件配备
“什么?学Linux还得要玩硬件?”呵呵!没错! 这也是为什么鸟哥要将计算机概论搬上台面之故! 我们这里主要是介绍较为普遍的个人计算机架构来设置Linux服务器,因为比较便宜啦! 至于各相关的硬件元件说明已经在第零章计概内讲过了,这里不再重复说明。 仅将重要的主板与元件的相关性图示如下:
图2.1.1、个人计算机各元件的相关性 (上述图示主要取自tom's硬件指南,各元件图片分属个别公司所有)
那么我们应该如何挑选计算机硬件呢?随便买买就好,还是有特殊的考虑?下面有些思考角度可以提供给大家参考看看:
- 游戏机/工作机的考虑
事实上,计算机主机的硬件配备与这部主机未来的功能是很有相关性的!举例来说,家里有小孩, 或者自己仍然算是小孩的朋友大概都知道:“要用来打Game的“游戏机计算机” 所需要的配备一定比办公室用的“工作机计算机”配备更高档”,为什么呢? 因为现在一般的三维(3D)计算机游戏所需要的3D光影运算太多了,所以显卡与CPU资源都会被耗用的非常多! 当然就需要比较高级的配备啰,尤其是在显卡、CPU(例如Intel的 I5, I7 系列的) 及主板芯片组方面的功能。
至于办公室的工作环境中,最常使用到的软件大多是办公软件(Office),最常使用的网络功能是浏览器, 这些软件所需要的运算并不高,理论上目前的入门级计算机都能够跑得非常顺畅了! 甚至很多企业都喜欢购买将显卡、主板芯片组整合在一起的整合型芯片的计算机,因为便宜又好用!
- “性能/价格”比与“性能/消耗的瓦数”比的考虑
并不是“贵就比较好”喔!在目前(2015)电费居高不下的情况,如何兼顾省钱与计算机硬件的性能问题,很重要! 如果你喜欢购买最新最快的计算机零件,这些刚出炉的元件都非常的贵,而且操作系统还不见得能够完整的支持。 所以,鸟哥都比较喜欢购买主流级的产品而非最高档的。因为我们最好能够考虑到性能/价格比。 如果高一级的产品让你的花费多一倍,但是新增加的性能却只有10%而已,那这个性能/价格的比值太低,不建议啦!
此外,由于电价越来越高,如何“省电”就很重要啦!因此目前硬件评论界有所谓的“每瓦性能”的单位, 每瓦电力所发挥的性能越高,当然代表越省电啊!这也是购买硬件时的考虑之一啦!要知道,如果是做为服务器用, 一年365天中时时刻刻都开机,则你的计算机多花费50瓦的电力时,每年就得要多花450度电左右(50W365天24小时/天/1000W=438度电),如果以企业来讲, 每百部计算机每年多花450度电的话,每年得多花十万块以上的电费呢 (以一度电3块钱来计算) !所以这也需要考虑啊!
- 支持度的考虑
并非所有的产品都会支持特定的操作系统,这牵涉到硬件开发商是否有意愿提供适当的驱动程序之故。 因此,当我们想要购买或者是升级某些计算机元件时,应该要特别注意该硬件是否有针对您的操作系统提供适当的驱动程序, 否则,买了无法使用,那才是叫人呕死啊!因此,针对Linux来说,下面的硬件分析就重要啦!
Tips因为鸟哥会自己编译驱动程序,所以上次买家用桌面电脑时,就委托鸟嫂全权处理 (因为钱钱是鸟嫂负责的嘛!嘿嘿!省的麻烦!)! 反正最多就是自己去找 driver 来编译,那也没什么~您说是吧? 没想到来的主板上面内置的那颗网卡驱动程序,网卡开发商的官网上面并没有提供 source code!鸟哥赶紧回去查一下该主板的说明, 结果...说明书上面明明白白的说,这块主板仅提供支持 windows 的 drivers 而已...还建议不要拿来装 Linux 之用... 当下还是默默的去找了一块 PCI-e 网卡来插了...连 source code 都没有,是要编译啥啦!巧妇难为无米之炊啊~~ @_@~~ 这个故事告诉我们,作人不要太铁齿,硬件该查阅的工作还是要做啦!
2.1.2 选择与Linux搭配的主机配备
由于硬件的加速发展与操作系统核心功能的增强,导致较早期的计算机已经没有能力再负荷新的操作系统了。 举例来说,Pentun-III以前的硬件配备可能已经不再适合现在的新的Linux distribution。 而且较早期的硬件配备也可能由于保存的问题或者是电子零件老化的问题, 导致这样的计算机系统反而非常容易在运行过程中出现不明的死机情况,因此在利用旧零件拼凑Linux使用的计算机系统时, 真的得要特别留意呢!
不过由于Linux运行所需要的硬件配备实在不需要太高档,因此,如果有近期汰换下来的五年内的计算机, 不必急着丢弃。由于 CPU 为 i3 等级的硬件不算太老旧,在性能方面其实也算的上非常OK了~所以, 鸟哥建议您如果有五年内的计算机被淘汰,可以拿下来测试一下,说不定能够作为你日常生活的Linux服务器, 或者是备用服务器,都是非常好用的功能哩!
但是由于不同的任务的主机所需要的硬件配备并不相同,举例来说,如果你的Linux主机是要作为企业内部的Mail server或者是Proxy server时,或者是需要使用到图形接口的运算(X Window内的Open GL等等功能), 那么你就必须要选择高档一点的计算机配备了,使用过去的计算机零件可能并不适合呢。
下面我们稍微谈一下,如果你的Linux主要是作为小型服务器使用,并不负责学术方面的大量运算, 而且也没有使用X Window的图形接口,那你的硬件需求只要像下面这样就差不多了:
CPU CPU只要不是老旧到会让你的硬件系统死机的都能够支持!如同前面谈到的,目前(2015)的环境中, Intel i3 系列的CPU不算太旧而且性能也不错,非常好用了。
RAM 内存是越大越好!事实上在Linux服务器中,内存的重要性比CPU还要高的多!因为如果内存不够大, 就会使用到硬盘的内存交换空间(swap)。 而由计算机概论的内容我们知道硬盘比内存的速度要慢的多, 所以内存太小可能会影响到整体系统的性能的!尤其如果你还想要玩X window的话,那内存的容量就不能少。 对于一般的小型服务器来说,建议至少也要512MB以上的内存容量较佳。老实说,目前 DDR3 的硬件环境中, 新购系统动不动就是 4~16GB 的内存,真的是很够用了!
Hard Disk 由于数据量与数据存取频率的不同,对于硬盘的要求也不相同。 举例来说,如果是一般小型服务器,通常重点在于容量,硬盘容量大于20GB就够用到不行了! 但如果你的服务器是作为备份或者是小企业的文件服务器,那么你可能就得要考虑较高阶的磁盘阵列(RAID)模式了。
Tips 磁盘阵列(RAID)是利用硬件技术将数个硬盘整合成为一个大硬盘的方法,操作系统只会看到最后被整合起来的大硬盘。 由于磁盘阵列是由多个硬盘组成,所以可以达成速度性能、备份等任务。更多相关的磁盘阵列我们会在第十四章中介绍的。
VGA 对于不需要X Window的服务器来说,显卡算是最不重要的一个元件了!你只要有显卡能够让计算机启动,那就够了。 但如果需要X window系统时,你的显卡最好能够拥有32MB以上的内存容量,否则跑X系统会很累喔!
Network Interface Card 网卡是服务器上面最重要的元件之一了!目前的主板大多拥有内置10/100/1000Mbps的超高速以太网卡。 但要注意的是,不同的网卡的功能还是有点差异。举例来说,鸟哥曾经需要具有可以设置 bonding 功能的网卡, 结果,某些较低阶的 gigabit 网卡并没有办法提供这个项目的支持!真是伤脑筋!此外,比较好的网卡通常 Linux 驱动程序也做的比较好,用起来会比较顺畅。因此,如果你的服务器是 网络 I/O 行为非常频繁的网站, 好一点的Intel/boradcom等公司的网卡应该是比较适合的喔。
光盘、软盘、键盘与鼠标 不要旧到你的计算机不支持就好了,因为这些配备都是非必备的喔!举例来说,鸟哥安装好Linux系统后, 可能就将该系统的光驱、鼠标、软盘机等通通拔除,只有网络线连接在计算机后面而已,其他的都是通过网络连线来管控的哩! 因为通常服务器这东西最需要的就是稳定,而稳定的最理想状态就是平时没事不要去动他是最好的。
下面鸟哥针对一般你可能会接触到的计算机主机的用途与相关硬件配备的基本要求来说明一下好了:
一般小型主机且不含X Window系统:
- 用途:家庭用NAT主机(IP分享器功能)或小型企业之非图形接口小型主机。
- CPU:五年内出产的产品即可。
- RAM:至少512MB,不过还是大于1GB以上比较妥当!
- 网卡:一般的以太网卡即可应付。
- 显卡:只要能够被Linux捉到的显卡即可,例如NVidia或ATI的主流显卡均可。
- 硬盘:20GB以上即可!
桌上型(Desktop)Linux系统/含X Window:
- 用途:Linux的练习机或办公室(Office)工作机。(一般我们会用到的环境)
- CPU:最好等级高一点,例如 Intel I5, I7 以上等级。
- RAM:一定要大于1GB比较好!否则容易有图形接口停顿的现象。
- 网卡:普通的以太网卡就好了!
- 显卡:使用256MB以上内存的显卡!(入门级的都这个容量以上了)
- 硬盘:越大越好,最好有60GB。
中型以上Linux服务器:
- 用途:中小型企业/学校单位的FTP/mail/WWW等网络服务主机。
- CPU:最好等级高一点,例如 I5, I7 以上的多核心系统。
- RAM:最好能够大于1GB以上,大于4GB更好!
- 网卡:知名的broadcom或Intel等厂牌,比较稳定性能较佳!
- 显卡:如果有使用到图形功能,则一张64MB内存的显卡是需要的!
- 硬盘:越大越好,如果可能的话,使用磁盘阵列,或者网络硬盘等等的系统架构, 能够具有更稳定安全的传输环境,更佳!
- 建议企业用计算机不要自行组装,可购买商用服务器较佳, 因为商用服务器已经通过制造商的散热、稳定性等测试,对于企业来说,会是一个比较好的选择。
总之,鸟哥在这里仅是提出一个方向:如果你的Linux主机是小型环境使用的,实时死机也不太会影响到企业环境的运行时, 那么使用升级后被淘汰下来的零件以组成计算机系统来运行,那是非常好的回收再利用的案例。 但如果你的主机系统是非常重要的,你想要更一部更稳定的Linux服务器,那考虑系统的整体搭配与运行性能的考虑, 购买已组装测试过的商用服务器会是一个比较好的选择喔!
Tips 一般来说,目前(2015)的入门计算机机种,CPU至少都是Intel i3的2GHz系列的等级以上, 内存至少有2GB,显存也有512MB以上,所以如果您是新购置的计算机, 那么该计算机用来作为Linux的练习机,而且加装X Window系统,肯定是可以跑的吓吓叫的啦!^_^
此外,Linux开发商在释出Linux distribution之前,都会针对该版所默认可以支持的硬件做说明, 因此,你除了可以在Linux的Howto文件去查询硬件的支持度之外,也可以到各个相关的Linux distributions网站去查询呢! 下面鸟哥列出几个常用的硬件与Linux distributions搭配的网站,建议大家想要了解你的主机支不支持该版Linux时, 务必到相关的网站去搜寻一下喔!
- Red Hat的硬件支持:https://hardware.redhat.com/?pagename=hcl
- Open SuSE的硬件支持:http://en.opensuse.org/Hardware?LANG=en_UK
- Linux对笔记本电脑的支持:http://www.linux-laptop.net/
- Linux对打印机的支持:http://www.openprinting.org/
- Linux硬件支持的中文HowTo:http://www.linux.org.tw/CLDP/HOWTO/hardware.html#hardware
总之,如果是自己维护的一个小网站,考虑到经济因素,你可以自行组装一部主机来架设。 而如果是中、大型企业,那么主机的钱不要省~因为,省了这些钱,未来主机挂点时, 光是要找出哪个元件出问题,或者是系统过热的问题,会气死人ㄟ! 而且,要注意的就是未来你的Linux主机规划的“用途”来决定你的Linux主机硬件配备喔!相当的重要呢!
2.1.3 各硬件设备在Linux中的文件名
选择好你所需要的硬件配备后,接下来得要了解一下各硬件在Linux当中所扮演的角色啰。 这里鸟哥再次的强调一下:“在Linux系统中,每个设备都被当成一个文件来对待” 举例来说,SATA接口的硬盘的文件名称即为/dev/sd[a-d],其中, 括号内的字母为a-d当中的任意一个,亦即有/dev/sda, /dev/sdb, /dev/sdc, 及 /dev/sdd这四个文件的意思。
Tips 这种中括号 [ ] 型式的表达式在后面的章节当中会使用得很频繁,请特别留意
另外先提出来强调一下,在Linux这个系统当中,几乎所有的硬件设备文件都在/dev这个目录内, 所以你会看到/dev/sda, /dev/sr0等等的文件名喔。
那么打印机与软盘呢?分别是/dev/lp0, /dev/fd0啰!好了,其他的周边设备呢? 下面列出几个常见的设备与其在Linux当中的文件名啰:
设备 | 设备在Linux内的文件名 |
---|---|
SCSI/SATA/USB硬盘机 | /dev/sd[a-p] |
USB闪存盘 | /dev/sd[a-p] (与SATA相同) |
VirtI/O界面 | /dev/vd[a-p] (用于虚拟机内) |
软盘机 | /dev/fd[0-7] |
打印机 | /dev/lp[0-2] (25针打印机) /dev/usb/lp[0-15] (USB 接口) |
鼠标 | /dev/input/mouse[0-15] (通用) /dev/psaux (PS/2界面) /dev/mouse (当前鼠标) |
CDROM/DVDROM | /dev/scd[0-1] (通用) /dev/sr[0-1] (通用,CentOS 较常见) /dev/cdrom (当前 CDROM) |
磁带机 | /dev/ht0 (IDE 界面) /dev/st0 (SATA/SCSI界面) /dev/tape (当前磁带) |
IDE硬盘机 | /dev/hd[a-d] (旧式系统才有) |
时至今日,由于 IDE 界面的磁盘机几乎已经被淘汰,太少见了!因此现在连 IDE 界面的磁盘文件名也都被仿真成 /dev/sd[a-p] 了!此外, 如果你的机器使用的是跟网际网络供应商 (ISP) 申请使用的云端机器,这时可能会得到的是虚拟机。为了加速,虚拟机内的磁盘是使用仿真器产生, 该仿真器产生的磁盘文件名为 /dev/vd[a-p] 系列的文件名喔!要注意!要注意!
Tips 更多Linux核心支持的硬件设备与文件名,可以参考如下网页: https://www.kernel.org/doc/Documentation/devices.txt
2.1.4 使用虚拟机学习
由于近年来硬件虚拟化技术的成熟,目前普通的中阶个人计算机的 CPU 微指令集中,就已经整合了硬件虚拟化指令集了! 所以,随便一台计算机就能够虚拟化出好几台逻辑独立的系统了!很赞!
因为虚拟化系统可以很简单的制作出相仿的硬件资源,因此我们在学习的时候,比较能够取得相同的环境来查阅学习的效果! 所以,在本书的后续所有动作中,我们都是使用虚拟化系统来做说明!毕竟未来你实际接触到 Linux 系统时,很有可能公司交代给你的就是虚拟机了! 趁早学也不错!
由于虚拟化的软件非常之多,网络上也有一堆朋友的教学在。如果你的系统是 windows 系列的话,鸟哥个人推荐你使用 virtualbox 这个软件! 至于如果你原本就用 Linux 系统,例如 Fedora/Ubuntu 等系列的话,那么建议你使用原本系统内就有的虚拟机管理员来处理即可。目前 Linux 系统大多使用 KVM 这个虚拟化软件就是了。下面提供一些网站给您学习学习!鸟哥之后的章节所使用的机器,就是通过 KVM 创建出来的系统喔! 提供给你作参考啰。