freebsd的優(yōu)缺點
BSD和SYSV是世上最正統(tǒng)的UNIX操作系統(tǒng),在LINUX出現(xiàn)之前,他們統(tǒng)治了整個UNIX世界。也正因為此,這兩個最正統(tǒng)的UNIX核心流派都在實踐中積累豐富的經(jīng)驗。SYSV偏向于商業(yè),BSD更偏向于自由和實用。
現(xiàn)在,本文只討論BSD流派最活躍的發(fā)行版FreeBSD。FreeBSD作為最重要的一個BSD發(fā)行版,它保持了BSD自由和實用的原則。但亦因為此而忽略很多商業(yè)的考慮的相應的功能。憑藉我自己多年UNIX的使用經(jīng)驗,列出一些BSD的優(yōu)勢與不足,希望以此作為讀者的參考。
優(yōu)點:
FreeBSD 的網(wǎng)絡(luò)性能非常好,可以同時處理海量的網(wǎng)絡(luò)請求,這使 BSD 非常適合作為防火墻的環(huán)境。另外,在網(wǎng)絡(luò)聊天服務器,如 IM 這種應用上,F(xiàn)reeBSD 也是很合適的選擇。網(wǎng)易的 POPO 聊天軟件服務器端就是在 FreeBSD 下開發(fā)并投入到實際環(huán)境中使用的,通過對內(nèi)核的修改,可以輕松支持數(shù)以萬計的用戶連接,要注意,是永久性的連接,除非用戶點擊注銷按鈕。
內(nèi)存:
你 會發(fā)現(xiàn)你服務器上的內(nèi)存會被 FreeBSD 很好地利用,以使你的服務達至最佳的狀態(tài)。FreeBSD 不會因為將過多的內(nèi)存用于磁盤 CACHE 而使更重要的程序獲取不到物理內(nèi)存而讓系統(tǒng)使用 SWAP。在實際的環(huán)境中,我就遇到過 LINUX 為保持磁盤的 CACHE,而讓新任務使用 SWAP,導致新任務執(zhí)行時間大大拉長。在執(zhí)行 swapoff -a 操作后,運行同樣的新任務只需要原來時間的一半。而系統(tǒng)并沒有因為關(guān)閉 SWAP 而停機,表示物理內(nèi)存并沒有因為新任務而被耗盡。
一個例子:
Memcached 是一個非常出眾的基于內(nèi)存的緩存服務器。它可以為被其支持的程序語言提供串行化數(shù)據(jù)保存的功能,這樣可以讓同一份數(shù)據(jù)被多臺服務器共享,而更重要的是,它的速度非常快。
我 可以利用 PHP 或 JAVA 從數(shù)據(jù)庫中獲取數(shù)據(jù)結(jié)果集,然后將結(jié)果集的內(nèi)容保存進 Memcached,其他服務器上的程序同樣可以相應的 key 從 Memcached 中獲得相同的拷貝。在分布式的環(huán)境,這種需求非常明顯。我自己也嘗試當 SESSION 數(shù)據(jù)保存至 Memcached 而無需為共享 SESSION 數(shù)據(jù)而專門架設(shè)一臺 MYSQL 數(shù)據(jù)庫。
在利用 Memcached 作為數(shù)據(jù)的中心點,網(wǎng)絡(luò)的流量會非常大,內(nèi)存的使用會非常頻繁,基本上不與磁盤打交道,而且整個系統(tǒng)的穩(wěn)健性要求非常高。在這種應用需求下,F(xiàn)reeBSD 自然地成為首選。因為它為高效的網(wǎng)絡(luò)性能,更合理的內(nèi)存利用率,和穩(wěn)健的系統(tǒng)基礎(chǔ)。
缺點:
文件系統(tǒng):
FreeBSD的文件系統(tǒng)屬于中上水平,但未達至企業(yè)級的應用需求。主要體現(xiàn)于文件系統(tǒng)本身存在的脆弱性。在高負載的情況下,文件系統(tǒng)存在有崩潰的可能性。需要注意的是,導致這樣的結(jié)果,也有可能由于磁盤控制器(SCSI,RAID等等)驅(qū)動程序本身導致的。沒有原廠設(shè)備驅(qū)動程序是個比較大的問題。
網(wǎng)絡(luò):
FreeBSD的網(wǎng)絡(luò)性能是無用置疑的!但是網(wǎng)卡驅(qū)動(是的,設(shè)備驅(qū)動是個很重要的因素)不完善會導致性能和穩(wěn)定性大打節(jié)扣。雖然這與FreeBSD的核心沒有關(guān)系,但對于一個可提供服務的整體來說,驅(qū)動程序卻是一個很重要的組成部份。
另外,由于一個網(wǎng)卡接口上的線的松動,有可能導致網(wǎng)絡(luò)中斷。而一些商業(yè)化的UNIX操作系統(tǒng)可以在當主網(wǎng)卡不可用時將該網(wǎng)卡上的IP轉(zhuǎn)移至可提供正確連接的網(wǎng)卡上。
多處理器(超線程)支持:
在6.0出版之前,F(xiàn)reeBSD對多處理器支持是不盡人意的。INTELCPU提供有HT(超線程)功能。FreeBSD在HT開啟的狀態(tài)下會比在關(guān)閉的狀態(tài)下差。我忘記了超線程的原理,只記得擁有超線程功能的CPU在過多的切換情況下性能就會降低,不過在什么時候切換和切換些什么我忘記了。FreeBSD在開啟HT后性能會變差,可能與這個有關(guān)。
FreeBSD圖形界面配置
系統(tǒng)是剛裝的FreeBSD8.0Release,athlon3000+處理器,Nvidia6100集成顯卡,明基FP71G顯示器,USB鼠標,PS2鍵盤
首先當然是Xorg的安裝,可以用下面的命令安裝
pkg_add -r xorg
我輸入上面命令后提示xorg已經(jīng)安裝,應該是在裝系統(tǒng)時已經(jīng)安裝了
然后輸入
startx
發(fā)現(xiàn)可以成功的啟動X,不過不能響應鍵盤鼠標的輸入,使用Xorg -configure產(chǎn)生的xorg.conf文件反倒不能啟動X(啟動X后可以用ctrl+alt+backspace退出圖形界面)
安裝kde4
pkg_add_r kde4
同樣的,系統(tǒng)提示已經(jīng)安裝kde4
然后告訴X server 啟動這個應用程序來代替默認的窗口管理器,這可以通過編輯.xinitrc來完成:
echo “exec /usr/local/kde4/bin/startkde” 》 ~/.xinitrc
現(xiàn)在,輸入startx就可以啟動kde桌面環(huán)境了,不過分辨率還不夠,另外,我的USB鼠標還是不能用
為了使每個用戶都能正常進入kde4桌面環(huán)境,需要對每個用戶都進行上面的配置(.xinitrc文件)
為了提供圖形化的登錄界面,還需要編輯/etc/ttys文件,修改其中的ttyv8項,將其改為下面的樣子:
ttyv8 “/usr/local/kde4/bin/kdm -nodaemon” xterm on secure
然后輸入reboot重啟,就能自動出現(xiàn)圖形登錄界面了,不過郁悶的是似乎不接受我的鼠標鍵盤輸入,
這個問題手冊上沒寫,GOOGLE了一下,改了一堆亂七八糟的配置,其中被改動的文件有:
1)/etc/rc.conf,改到最后是這個樣子:
# -- 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)可以響應鍵鼠的輸入了,但是分辨率太低的問題還是沒解決,關(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)提示只能啟動一個X server,怒了,修改/etc/ttys中的ttyv8項:
ttyv8 “/usr/libexec/getty Pc” cons25 on secure
#ttyv8 “/usr/local/kde4/bin/kdm -nodaemon” xterm on secure
重啟。
開始重新?lián)v騰X配置
運行Xorg -config xorg.conf.new,不行,于是
cp xorg.conf.new xorg.conf.test
vi xorg.conf.test
將其余部分全部刪除,只保留Section “Screen”部分
還是不能啟動X,報以下錯誤:
?。‥E) 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位軟件的辦法無果后,直接裝了個xf86-video-nv
cd /usr/ports/x11-drivers/xf86-video-nv
make install clean
完成后繼續(xù)運行
Xorg -config xorg.conf.new
還是不行
重新運行Xorg -configure之后嘗試,繼續(xù)失敗
不管了,直接將xorg.conf.new復制到/etc/X11
cp ~/xorg.conf.new /etc/X11/xorg.conf
然后對其中相應的配置做了改動,比如刷新率,分辨率等
輸入startx,終于把分辨率調(diào)好了,但是新問題又來了,我的鼠標呢?鼠標移動的時候倒是可以看到偶爾有地方變量,并且可以點擊,說明鼠標輸入還是有的,但是指針不見了
這個問題我以前遇見過,修改xorg.conf中的 Section “Device”部分,在下面增加一句:Option “HWCursor” “false”,重啟x window 就可以看見了
最后將/etc/ttys中ttyv8項修改回來,reboot一下,一切都是那么美好,唯一有點瑕疵的是任務欄右側(cè)沒有頂?shù)狡聊贿呇兀@個直接拖一下就好了
明天繼續(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
評論