freebsd的優(yōu)缺點(diǎn)
BSD和SYSV是世上最正統(tǒng)的UNIX操作系統(tǒng),在LINUX出現(xiàn)之前,他們統(tǒng)治了整個(gè)UNIX世界。也正因?yàn)榇?,這兩個(gè)最正統(tǒng)的UNIX核心流派都在實(shí)踐中積累豐富的經(jīng)驗(yàn)。SYSV偏向于商業(yè),BSD更偏向于自由和實(shí)用。
現(xiàn)在,本文只討論BSD流派最活躍的發(fā)行版FreeBSD。FreeBSD作為最重要的一個(gè)BSD發(fā)行版,它保持了BSD自由和實(shí)用的原則。但亦因?yàn)榇硕雎院芏嗌虡I(yè)的考慮的相應(yīng)的功能。憑藉我自己多年UNIX的使用經(jīng)驗(yàn),列出一些BSD的優(yōu)勢與不足,希望以此作為讀者的參考。
優(yōu)點(diǎn):
FreeBSD 的網(wǎng)絡(luò)性能非常好,可以同時(shí)處理海量的網(wǎng)絡(luò)請求,這使 BSD 非常適合作為防火墻的環(huán)境。另外,在網(wǎng)絡(luò)聊天服務(wù)器,如 IM 這種應(yīng)用上,F(xiàn)reeBSD 也是很合適的選擇。網(wǎng)易的 POPO 聊天軟件服務(wù)器端就是在 FreeBSD 下開發(fā)并投入到實(shí)際環(huán)境中使用的,通過對內(nèi)核的修改,可以輕松支持?jǐn)?shù)以萬計(jì)的用戶連接,要注意,是永久性的連接,除非用戶點(diǎn)擊注銷按鈕。
內(nèi)存:
你 會發(fā)現(xiàn)你服務(wù)器上的內(nèi)存會被 FreeBSD 很好地利用,以使你的服務(wù)達(dá)至最佳的狀態(tài)。FreeBSD 不會因?yàn)閷⑦^多的內(nèi)存用于磁盤 CACHE 而使更重要的程序獲取不到物理內(nèi)存而讓系統(tǒng)使用 SWAP。在實(shí)際的環(huán)境中,我就遇到過 LINUX 為保持磁盤的 CACHE,而讓新任務(wù)使用 SWAP,導(dǎo)致新任務(wù)執(zhí)行時(shí)間大大拉長。在執(zhí)行 swapoff -a 操作后,運(yùn)行同樣的新任務(wù)只需要原來時(shí)間的一半。而系統(tǒng)并沒有因?yàn)殛P(guān)閉 SWAP 而停機(jī),表示物理內(nèi)存并沒有因?yàn)樾氯蝿?wù)而被耗盡。
一個(gè)例子:
Memcached 是一個(gè)非常出眾的基于內(nèi)存的緩存服務(wù)器。它可以為被其支持的程序語言提供串行化數(shù)據(jù)保存的功能,這樣可以讓同一份數(shù)據(jù)被多臺服務(wù)器共享,而更重要的是,它的速度非??臁?/p>
我 可以利用 PHP 或 JAVA 從數(shù)據(jù)庫中獲取數(shù)據(jù)結(jié)果集,然后將結(jié)果集的內(nèi)容保存進(jìn) Memcached,其他服務(wù)器上的程序同樣可以相應(yīng)的 key 從 Memcached 中獲得相同的拷貝。在分布式的環(huán)境,這種需求非常明顯。我自己也嘗試當(dāng) SESSION 數(shù)據(jù)保存至 Memcached 而無需為共享 SESSION 數(shù)據(jù)而專門架設(shè)一臺 MYSQL 數(shù)據(jù)庫。
在利用 Memcached 作為數(shù)據(jù)的中心點(diǎn),網(wǎng)絡(luò)的流量會非常大,內(nèi)存的使用會非常頻繁,基本上不與磁盤打交道,而且整個(gè)系統(tǒng)的穩(wěn)健性要求非常高。在這種應(yīng)用需求下,F(xiàn)reeBSD 自然地成為首選。因?yàn)樗鼮楦咝У木W(wǎng)絡(luò)性能,更合理的內(nèi)存利用率,和穩(wěn)健的系統(tǒng)基礎(chǔ)。
缺點(diǎn):
文件系統(tǒng):
FreeBSD的文件系統(tǒng)屬于中上水平,但未達(dá)至企業(yè)級的應(yīng)用需求。主要體現(xiàn)于文件系統(tǒng)本身存在的脆弱性。在高負(fù)載的情況下,文件系統(tǒng)存在有崩潰的可能性。需要注意的是,導(dǎo)致這樣的結(jié)果,也有可能由于磁盤控制器(SCSI,RAID等等)驅(qū)動程序本身導(dǎo)致的。沒有原廠設(shè)備驅(qū)動程序是個(gè)比較大的問題。
網(wǎng)絡(luò):
FreeBSD的網(wǎng)絡(luò)性能是無用置疑的!但是網(wǎng)卡驅(qū)動(是的,設(shè)備驅(qū)動是個(gè)很重要的因素)不完善會導(dǎo)致性能和穩(wěn)定性大打節(jié)扣。雖然這與FreeBSD的核心沒有關(guān)系,但對于一個(gè)可提供服務(wù)的整體來說,驅(qū)動程序卻是一個(gè)很重要的組成部份。
另外,由于一個(gè)網(wǎng)卡接口上的線的松動,有可能導(dǎo)致網(wǎng)絡(luò)中斷。而一些商業(yè)化的UNIX操作系統(tǒng)可以在當(dāng)主網(wǎng)卡不可用時(shí)將該網(wǎng)卡上的IP轉(zhuǎn)移至可提供正確連接的網(wǎng)卡上。
多處理器(超線程)支持:
在6.0出版之前,F(xiàn)reeBSD對多處理器支持是不盡人意的。INTELCPU提供有HT(超線程)功能。FreeBSD在HT開啟的狀態(tài)下會比在關(guān)閉的狀態(tài)下差。我忘記了超線程的原理,只記得擁有超線程功能的CPU在過多的切換情況下性能就會降低,不過在什么時(shí)候切換和切換些什么我忘記了。FreeBSD在開啟HT后性能會變差,可能與這個(gè)有關(guān)。
FreeBSD圖形界面配置
系統(tǒng)是剛裝的FreeBSD8.0Release,athlon3000+處理器,Nvidia6100集成顯卡,明基FP71G顯示器,USB鼠標(biāo),PS2鍵盤
首先當(dāng)然是Xorg的安裝,可以用下面的命令安裝
pkg_add -r xorg
我輸入上面命令后提示xorg已經(jīng)安裝,應(yīng)該是在裝系統(tǒng)時(shí)已經(jīng)安裝了
然后輸入
startx
發(fā)現(xiàn)可以成功的啟動X,不過不能響應(yīng)鍵盤鼠標(biāo)的輸入,使用Xorg -configure產(chǎn)生的xorg.conf文件反倒不能啟動X(啟動X后可以用ctrl+alt+backspace退出圖形界面)
安裝kde4
pkg_add_r kde4
同樣的,系統(tǒng)提示已經(jīng)安裝kde4
然后告訴X server 啟動這個(gè)應(yīng)用程序來代替默認(rèn)的窗口管理器,這可以通過編輯.xinitrc來完成:
echo “exec /usr/local/kde4/bin/startkde” 》 ~/.xinitrc
現(xiàn)在,輸入startx就可以啟動kde桌面環(huán)境了,不過分辨率還不夠,另外,我的USB鼠標(biāo)還是不能用
為了使每個(gè)用戶都能正常進(jìn)入kde4桌面環(huán)境,需要對每個(gè)用戶都進(jìn)行上面的配置(.xinitrc文件)
為了提供圖形化的登錄界面,還需要編輯/etc/ttys文件,修改其中的ttyv8項(xiàng),將其改為下面的樣子:
ttyv8 “/usr/local/kde4/bin/kdm -nodaemon” xterm on secure
然后輸入reboot重啟,就能自動出現(xiàn)圖形登錄界面了,不過郁悶的是似乎不接受我的鼠標(biāo)鍵盤輸入,
這個(gè)問題手冊上沒寫,GOOGLE了一下,改了一堆亂七八糟的配置,其中被改動的文件有:
1)/etc/rc.conf,改到最后是這個(gè)樣子:
# -- sysinstall generated deltas -- # Sat Dec 12 06:09:48 2009
# Created: Sat Dec 12 06:09:48 2009
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
hostname=“FreeBSD.domain”
ifconfig_rl0=“DHCP”
inetd_enable=“YES”
keymap=“us.iso” # 《=鍵鼠配置可能是從這里開始的
moused_enable=“NO”
#moused_port=“/dev/psm0”
moused_port=“dev/ums0”
usbd_enable=“YES”
usb_flags=“”
moused_type=“NO”
dbus_enable=“YES”
hald_enable=“YES” # 《=到這里結(jié)束
nfs_client_enable=“YES”
nfs_server_enable=“YES”
2)/etc/devd.conf,搜索moused找到下面的部分:
attach 100 {
device-name “ums[0-9]+”;
action “/etc/rc.d/moused quietstart $device-name”;
};
detach 100 {
device-name “ums[0-9]+”;
action “/etc/rc.d/moused stop $device-name”;
};
將其修改為:
attach 100 {
device-name “ums[0-9]+”;
#action “/etc/rc.d/moused quietstart $device-name”;
action “/usr/sbin/moused -p /dev/ums0 -t auto -I /var/run/moused.pid”;
};
detach 100 {
device-name “ums[0-9]+”;
#action “/etc/rc.d/moused stop $device-name”;
action “echo ‘(unplug)’ 》 /var/run/moused.pid”;
};
到這里,已經(jīng)可以響應(yīng)鍵鼠的輸入了,但是分辨率太低的問題還是沒解決,關(guān)鍵是按照我前面的步驟,我的/etc/X11/下還沒有xorg.conf呢
只好回到前面,開始修改/root/xorg.conf.new,修改其中的Section “Screen”部分為如下的樣子
Section “Screen”
Identifier “Screen0”
Device “Card0”
DefaultDepth 24
Monitor “Monitor0”
SubSection “Display”
Viewport 0 0
Depth 24
Modes “1280x1024” “800x600” “640x480”
EndSubSection
EndSection
其中1280x1024是我的顯示器的分辨率
然后startx,很不幸,系統(tǒng)提示只能啟動一個(gè)X server,怒了,修改/etc/ttys中的ttyv8項(xiàng):
ttyv8 “/usr/libexec/getty Pc” cons25 on secure
#ttyv8 “/usr/local/kde4/bin/kdm -nodaemon” xterm on secure
重啟。
開始重新?lián)v騰X配置
運(yùn)行Xorg -config xorg.conf.new,不行,于是
cp xorg.conf.new xorg.conf.test
vi xorg.conf.test
將其余部分全部刪除,只保留Section “Screen”部分
還是不能啟動X,報(bào)以下錯(cuò)誤:
(EE) Failed to load module “fbdev” (module does not exist, 0)
上網(wǎng)求助,在
http://www.linuxquestions.org/questions/bsd-17/x-not-starting-on-freebsd-6.1-release-504004/
找到建議
#cd /usr/ports/x11/nvidia-driver/ && make install clean
但是郁悶的是ports中的驅(qū)動只支持32位系統(tǒng),而我裝的是amd64版,上官方網(wǎng)站下驅(qū)動吧
官方下載的驅(qū)動還不支持8.0系統(tǒng),哎……
尋找直接安裝32位軟件的辦法無果后,直接裝了個(gè)xf86-video-nv
cd /usr/ports/x11-drivers/xf86-video-nv
make install clean
完成后繼續(xù)運(yùn)行
Xorg -config xorg.conf.new
還是不行
重新運(yùn)行Xorg -configure之后嘗試,繼續(xù)失敗
不管了,直接將xorg.conf.new復(fù)制到/etc/X11
cp ~/xorg.conf.new /etc/X11/xorg.conf
然后對其中相應(yīng)的配置做了改動,比如刷新率,分辨率等
輸入startx,終于把分辨率調(diào)好了,但是新問題又來了,我的鼠標(biāo)呢?鼠標(biāo)移動的時(shí)候倒是可以看到偶爾有地方變量,并且可以點(diǎn)擊,說明鼠標(biāo)輸入還是有的,但是指針不見了
這個(gè)問題我以前遇見過,修改xorg.conf中的 Section “Device”部分,在下面增加一句:Option “HWCursor” “false”,重啟x window 就可以看見了
最后將/etc/ttys中ttyv8項(xiàng)修改回來,reboot一下,一切都是那么美好,唯一有點(diǎn)瑕疵的是任務(wù)欄右側(cè)沒有頂?shù)狡聊贿呇兀@個(gè)直接拖一下就好了
明天繼續(xù)整中文顯示
附:最后我的xorg.conf
Section “ServerLayout”
Identifier “X.org Configured”
Screen 0 “Screen0” 0 0
InputDevice “Mouse0” “CorePointer”
InputDevice “Keyboard0” “CoreKeyboard”
EndSection
Section “Files”
ModulePath “/usr/local/lib/xorg/modules”
FontPath “/usr/local/lib/X11/fonts/misc/”
FontPath “/usr/local/lib/X11/fonts/TTF/”
FontPath “/usr/local/lib/X11/fonts/OTF”
FontPath “/usr/local/lib/X11/fonts/Type1/”
FontPath “/usr/local/lib/X11/fonts/100dpi/”
FontPath “/usr/local/lib/X11/fonts/75dpi/”
EndSection
Section “Module”
Load “dbe”
Load “dri”
Load “dri2”
Load “extmod”
Load “glx”
Load “record”
EndSection
Section “InputDevice”
Identifier “Keyboard0”
Driver “kbd”
EndSection
Section “InputDevice”
Identifier “Mouse0”
Driver “mouse”
Option “Protocol” “auto”
Option “Device” “/dev/sysmouse”
Option “ZAxisMapping” “4 5 6 7”
EndSection
Section “Monitor”
Identifier “Monitor0”
VendorName “Monitor Vendor”
ModelName “Monitor Model”
HorizSync 31.5-64.0
VertRefresh 56.0-65.0
Option “dpms”
EndSection
Section “Device”
### Available Driver options are:-
### Values: : integer, : float, : “True”/“False”,
### : “String”, : “ Hz/kHz/MHz”
### [arg]: arg optional
#Option “SWcursor” # []
#Option “HWcursor” # []
#Option “NoAccel” # []
#Option “ShadowFB” # []
#Option “UseFBDev” # []
#Option “Rotate” # []
#Option “VideoKey” #
#Option “FlatPanel” # []
#Option “FPDither” # []
#Option “CrtcNumber” #
#Option “FPScale” # []
#Option “FPTweak” #
#Option “DualHead” # []
Identifier “Card0”
Driver “nv”
VendorName “nVidia Corporation”
BoardName “C51G [GeForce 6100]”
BusID “PCI:0:5:0”
Option “HWCursor” “false”
EndSection
Section “Screen”
Identifier “Screen0”
Device “Card0”
Monitor “Monitor0”
DefaultDepth 24
SubSection “Display”
Viewport 0 0
Depth 1
Modes “1280x1024”
EndSubSection
EndSection
Section “ServerLayout”
Identifier “X.org Configured”
Screen 0 “Screen0” 0 0
InputDevice “Mouse0” “CorePointer”
InputDevice “Keyboard0” “CoreKeyboard”
EndSection
Section “Files”
ModulePath “/usr/local/lib/xorg/modules”
FontPath “/usr/local/lib/X11/fonts/misc/”
FontPath “/usr/local/lib/X11/fonts/TTF/”
FontPath “/usr/local/lib/X11/fonts/OTF”
FontPath “/usr/local/lib/X11/fonts/Type1/”
FontPath “/usr/local/lib/X11/fonts/100dpi/”
FontPath “/usr/local/lib/X11/fonts/75dpi/”
EndSection
Section “Module”
Load “dbe”
Load “dri”
Load “dri2”
Load “extmod”
Load “glx”
Load “record”
EndSection
Section “InputDevice”
Identifier “Keyboard0”
Driver “kbd”
EndSection
Section “InputDevice”
Identifier “Mouse0”
Driver “mouse”
Option “Protocol” “auto”
Option “Device” “/dev/sysmouse”
Option “ZAxisMapping” “4 5 6 7”
EndSection
Section “Monitor”
Identifier “Monitor0”
VendorName “Monitor Vendor”
ModelName “Monitor Model”
HorizSync 31.5-64.0
VertRefresh 56.0-65.0
Option “dpms”
EndSection
Section “Device”
### Available Driver options are:-
### Values: : integer, : float, : “True”/“False”,
### : “String”, : “ Hz/kHz/MHz”
### [arg]: arg optional
#Option “SWcursor” # []
#Option “HWcursor” # []
#Option “NoAccel” # []
#Option “ShadowFB” # []
#Option “UseFBDev” # []
#Option “Rotate” # []
#Option “VideoKey” #
#Option “FlatPanel” # []
#Option “FPDither” # []
#Option “CrtcNumber” #
#Option “FPScale” # []
#Option “FPTweak” #
#Option “DualHead” # []
Identifier “Card0”
Driver “nv”
VendorName “nVidia Corporation”
BoardName “C51G [GeForce 6100]”
BusID “PCI:0:5:0”
Option “HWCursor” “false”
EndSection
Section “Screen”
Identifier “Screen0”
Device “Card0”
Monitor “Monitor0”
DefaultDepth 24
SubSection “Display”
Viewport 0 0
Depth 1
Modes “1280x1024”
EndSubSection
EndSection
Section “ServerLayout”
Identifier “X.org Configured”
Screen 0 “Screen0” 0 0
InputDevice “Mouse0” “CorePointer”
InputDevice “Keyboard0” “CoreKeyboard”
EndSection
Section “Files”
ModulePath “/usr/local/lib/xorg/modules”
FontPath “/usr/local/lib/X11/fonts/misc/”
FontPath “/usr/local/lib/X11/fonts/TTF/”
FontPath “/usr/local/lib/X11/fonts/OTF”
FontPath “/usr/local/lib/X11/fonts/Type1/”
FontPath “/usr/local/lib/X11/fonts/100dpi/”
FontPath “/usr/local/lib/X11/fonts/75dpi/”
EndSection
Section “Module”
Load “dbe”
Load “dri”
Load “dri2”
Load “extmod”
Load “glx”
Load “record”
EndSection
Section “InputDevice”
Identifier “Keyboard0”
Driver “kbd”
EndSection
Section “InputDevice”
Identifier “Mouse0”
Driver “mouse”
Option “Protocol” “auto”
Option “Device” “/dev/sysmouse”
Option “ZAxisMapping” “4 5 6 7”
EndSection
Section “Monitor”
Identifier “Monitor0”
VendorName “Monitor Vendor”
ModelName “Monitor Model”
HorizSync 31.5-64.0
VertRefresh 56.0-65.0
Option “dpms”
EndSection
Section “Device”
### Available Driver options are:-
### Values: : integer, : float, : “True”/“False”,
### : “String”, : “ Hz/kHz/MHz”
### [arg]: arg optional
#Option “SWcursor” # []
#Option “HWcursor” # []
#Option “NoAccel” # []
#Option “ShadowFB” # []
#Option “UseFBDev” # []
#Option “Rotate” # []
#Option “VideoKey” #
#Option “FlatPanel” # []
#Option “FPDither” # []
#Option “CrtcNumber” #
#Option “FPScale” # []
#Option “FPTweak” #
#Option “DualHead” # []
Identifier “Card0”
Driver “nv”
VendorName “nVidia Corporation”
BoardName “C51G [GeForce 6100]”
BusID “PCI:0:5:0”
Option “HWCursor” “false”
EndSection
Section “Screen”
Identifier “Screen0”
Device “Card0”
Monitor “Monitor0”
DefaultDepth 24
SubSection “Display”
Viewport 0 0
Depth 1
Modes “1280x1024”
EndSubSection
EndSection
評論
查看更多