2007年8月30日
#
基礎(chǔ):
http://blog.csai.cn/user3/50125/archives/2009/35140.html
多進(jìn)程:
http://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/index.html
多線程:
http://www.91linux.com/html/article/program/20070406/1441.html
break [linespec] thread [threadno]
http://www.linuxforum.net/forum/gshowflat.php?Cat=&Board=program&Number=692404&page=0&view=collapsed&sb=5&o=all
In
Unix operating systems, a
soname is a field of data in a
shared object file. The soname is a string (typically the
filename of the library) which is used as a "logical name" describing the functionality of the object. This is often used to provide version backwards-compatibility information. For instance, if versions 1.0 through 1.9 of the shared library
libx provide identical interface, they would all have the same soname, e.g.
libx.so.1. If the system only includes version 1.3 of that shared object,
libx.so.1.3, the soname field of the shared object tells the system that it can be used to fill the dependency for a binary which was originally compiled using version 1.2.
摘要: http://blog.csdn.net/kanghua/archive/2007/10/22/1837876.aspx
http://blog.csdn.net/kanghua/archive/2007/10/22/1837872.aspx
摘要:本章首先以應(yīng)用程序開發(fā)者的角度審視Linux的進(jìn)程內(nèi)存管理,在此基礎(chǔ)上逐步深入到內(nèi)核中討論系統(tǒng)物理內(nèi)存管理和內(nèi)核內(nèi)存地使用方法。力求從外自內(nèi)、...
閱讀全文
From http://os.rdxx.com/Linux/LinuxRudiment/2008/5/17017197011.shtml
庫有動態(tài)與靜態(tài)兩種,動態(tài)通常用.so為后綴,靜態(tài)用.a為后綴。例如:libhello.so libhello.a
為了在同一系統(tǒng)中使用不同版本的庫,可以在庫文件名后加上版本號為后綴,例如: libhello.so.1.0,由于程序連接默認(rèn)以.so為文件后綴名。所以為了使用這些庫,通常使用建立符號連接的方式。
ln -s libhello.so.1.0 libhello.so.1
ln -s libhello.so.1 libhello.so
使用庫
當(dāng) 要使用靜態(tài)的程序庫時,連接器會找出程序所需的函數(shù),然后將它們拷貝到執(zhí)行文件,由于這種拷貝是完整的,所以一旦連接成功,靜態(tài)程序庫也就不再需要了。然 而,對動態(tài)庫而言,就不是這樣。動態(tài)庫會在執(zhí)行程序內(nèi)留下一個標(biāo)記‘指明當(dāng)程序執(zhí)行時,首先必須載入這個庫。由于動態(tài)庫節(jié)省空間,linux下進(jìn)行連接的 缺省操作是首先連接動態(tài)庫,也就是說,如果同時存在靜態(tài)和動態(tài)庫,不特別指定的話,將與動態(tài)庫相連接。
現(xiàn)在假設(shè)有一個叫hello的程序開發(fā)包,它提供一個靜態(tài)庫libhello.a 一個動態(tài)庫libhello.so,一個頭文件hello.h,頭文件中提供sayhello()這個函數(shù)
/* hello.h */
void sayhello();
另外還有一些說明文檔。這一個典型的程序開發(fā)包結(jié)構(gòu)
1.與動態(tài)庫連接
linux默認(rèn)的就是與動態(tài)庫連接,下面這段程序testlib.c使用hello庫中的sayhello()函數(shù)
/*testlib.c*/
#include
#include
int main()
{
sayhello();
return 0;
}
使用如下命令進(jìn)行編譯
$gcc -c testlib.c -o testlib.o
用如下命令連接:
$gcc testlib.o -lhello -o testlib
在連接時要注意,假設(shè)libhello.o 和libhello.a都在缺省的庫搜索路徑下/usr/lib下,如果在其它位置要加上-L參數(shù)
與與靜態(tài)庫連接麻煩一些,主要是參數(shù)問題。還是上面的例子:
$gcc testlib.o -o testlib -WI,-Bstatic -lhello
注:這個特別的"-WI,-Bstatic"參數(shù),實(shí)際上是傳給了連接器ld.
指示它與靜態(tài)庫連接,如果系統(tǒng)中只有靜態(tài)庫當(dāng)然就不需要這個參數(shù)了。
如果要和多個庫相連接,而每個庫的連接方式不一樣,比如上面的程序既要和libhello進(jìn)行靜態(tài)連接,又要和libbye進(jìn)行動態(tài)連接,其命令應(yīng)為:
$gcc testlib.o -o testlib -WI,-Bstatic -lhello -WI,-Bdynamic -lbye
3.動態(tài)庫的路徑問題
為了讓執(zhí)行程序順利找到動態(tài)庫,有三種方法:
(1)把庫拷貝到/usr/lib和/lib目錄下。
(2)在LD_LIBRARY_PATH環(huán)境變量中加上庫所在路徑。例如動態(tài)庫libhello.so在/home/ting/lib目錄下,以bash為例,使用命令:
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/ting/lib
(3) 修改/etc/ld.so.conf文件,把庫所在的路徑加到文件末尾,并執(zhí)行l(wèi)dconfig刷新。這樣,加入的目錄下的所有庫文件都可見、
4.查看庫中的符號
有 時候可能需要查看一個庫中到底有哪些函數(shù),nm命令可以打印出庫中的涉及到的所有符號。庫既可以是靜態(tài)的也可以是動態(tài)的。nm列出的符號有很多,常見的有 三種,一種是在庫中被調(diào)用,但并沒有在庫中定義(表明需要其他庫支持),用U表示;一種是庫中定義的函數(shù),用T表示,這是最常見的;另外一種是所謂的“弱 態(tài)”符號,它們雖然在庫中被定義,但是可能被其他庫中的同名符號覆蓋,用W表示。例如,假設(shè)開發(fā)者希望知道上央提到的hello庫中是否定義了 printf():
$nm libhello.so |grep printf
U printf
U表示符號printf被引用,但是并沒有在函數(shù)內(nèi)定義,由此可以推斷,要正常使用hello庫,必須有其它庫支持,再使用ldd命令查看hello依賴于哪些庫:
$ldd hello
libc.so.6=>/lib/libc.so.6(0x400la000)
/lib/ld-linux.so.2=>/lib/ld-linux.so.2 (0x40000000)
從上面的結(jié)果可以繼續(xù)查看printf最終在哪里被定義,有興趣可以go on
生成庫
第一步要把源代碼編繹成目標(biāo)代碼。以下面的代碼為例,生成上面用到的hello庫:
/* hello.c */
#include
void sayhello()
{
printf("hello,world\n");
}
用gcc編繹該文件,在編繹時可以使用任何全法的編繹參數(shù),例如-g加入調(diào)試代碼等:
gcc -c hello.c -o hello.o
1.連接成靜態(tài)庫
連接成靜態(tài)庫使用ar命令,其實(shí)ar是archive的意思
$ar cqs libhello.a hello.o
2.連接成動態(tài)庫
生成動態(tài)庫用gcc來完成,由于可能存在多個版本,因此通常指定版本號:
$gcc -shared -Wl,-soname,libhello.so.1 -o libhello.so.1.0 hello.o
另外再建立兩個符號連接:
$ln -s libhello.so.1.0 libhello.so.1
$ln -s libhello.so.1 libhello.so
這樣一個libhello的動態(tài)連接庫就生成了。最重要的是傳gcc -shared 參數(shù)使其生成是動態(tài)庫而不是普通執(zhí)行程序。
-Wl 表示后面的參數(shù)也就是-soname,libhello.so.1直接傳給連接器ld進(jìn)行處理。實(shí)際上,每一個庫都有一個soname,當(dāng)連接器發(fā)現(xiàn)它正 在查找的程序庫中有這樣一個名稱,連接器便會將soname嵌入連結(jié)中的二進(jìn)制文件內(nèi),而不是它正在運(yùn)行的實(shí)際文件名,在程序執(zhí)行期間,程序會查找擁有 soname名字的文件,而不是庫的文件名,換句話說,soname是庫的區(qū)分標(biāo)志。
這樣做的目的主要是允許系統(tǒng)中多個版本的庫文件共存,習(xí)慣上在命名庫文件的時候通常與soname相同
libxxxx.so.major.minor
其中,xxxx是庫的名字,major是主版本號,minor 是次版本號
=====================
摘要:動態(tài)鏈接庫技術(shù)實(shí)現(xiàn)和設(shè)計(jì)程序常用的技術(shù),在Windows和Linux系統(tǒng)中都有動態(tài)庫的概念,采用動態(tài)庫可以有效的減少程序大小,節(jié)省空間,提高效率,增加程序的可擴(kuò)展性,便于模塊化管理。但不同操作系統(tǒng)的動態(tài)庫由于格式 不同,在需要不同操作系統(tǒng)調(diào)用時需要進(jìn)行動態(tài)庫程序移植。本文分析和比較了兩種操作系統(tǒng)動態(tài)庫技術(shù),并給出了將Visual C++編制的動態(tài)庫移植到Linux上的方法和經(jīng)驗(yàn)。
1、引言
動態(tài)庫(Dynamic Link Library abbr,DLL)技術(shù)是程序設(shè)計(jì)中經(jīng)常采用的技術(shù)。其目的減少程序的大小,節(jié)省空間,提高效率,具有很高的靈活性。采用動態(tài)庫技術(shù)對于升級軟件版本更加容易。與靜態(tài)庫(Static Link Library)不同,動態(tài)庫里面的函數(shù)不是執(zhí)行程序本身的一部分,而是根據(jù)執(zhí)行需要按需載入,其執(zhí)行代碼可以同時在多個程序中共享。
在Windows和Linux操作系統(tǒng)中,都可采用這種方式進(jìn)行軟件設(shè)計(jì),但他們的調(diào)用方式以及程序編制方式不盡相同。本文首先分析了在這兩種操作系統(tǒng)中通常采用的動態(tài)庫調(diào)用方法以及程序編制方式,然后分析比較了這兩種方式的不同之處,最后根據(jù)實(shí)際移植程序經(jīng)驗(yàn),介紹了將VC++編制的Windows動態(tài)庫移植到Linux下的方法。
2、動態(tài)庫技術(shù)
2.1 Windows動態(tài)庫技術(shù)
動態(tài)鏈接庫是實(shí)現(xiàn)Windows應(yīng)用程序共享資源、節(jié)省內(nèi)存空間、提高使用效率的一個重要技術(shù)手段。常見的動態(tài)庫包含外部函數(shù)和資源,也有一些動態(tài)庫只包含資源,如Windows字體資源文件,稱之為資源動態(tài)鏈接庫。通常動態(tài)庫以.dll,.drv、.fon等作為后綴。相應(yīng)的windows靜態(tài)庫通常以.lib結(jié)尾,Windows自己就將一些主要的系統(tǒng)功能以動態(tài)庫模塊的形式實(shí)現(xiàn)。
Windows動態(tài)庫在運(yùn)行時被系統(tǒng)加載到進(jìn)程的虛擬空間中,使用從調(diào)用進(jìn)程的虛擬地址空間分配的內(nèi)存,成為調(diào)用進(jìn)程的一部分。DLL也只能被該進(jìn)程的線程所訪問。DLL的句柄可以被調(diào)用進(jìn)程使用;調(diào)用進(jìn)程的句柄可以被DLL使用。DLL模塊中包含各種導(dǎo)出函數(shù),用于向外界提供服務(wù)。DLL可以有自己的數(shù)據(jù)段,但沒有自己的堆棧,使用與調(diào)用它的應(yīng)用程序相同的堆棧模式;一個DLL在內(nèi)存中只有一個實(shí)例;DLL實(shí)現(xiàn)了代碼封裝性;DLL的編制與具體的編程語言及編譯器無關(guān),可以通過DLL來實(shí)現(xiàn)混合語言編程。DLL函數(shù)中的代碼所創(chuàng)建的任何對象(包括變量)都?xì)w調(diào)用它的線程或進(jìn)程所有。
根據(jù)調(diào)用方式的不同,對動態(tài)庫的調(diào)用可分為靜態(tài)調(diào)用方式和動態(tài)調(diào)用方式。
(1)靜態(tài)調(diào)用,也稱為隱式調(diào)用,由編譯系統(tǒng)完成對DLL的加載和應(yīng)用程序結(jié)束時DLL卸載的編碼(Windows系統(tǒng)負(fù)責(zé)對DLL調(diào)用次數(shù)的計(jì)數(shù)),調(diào)用方式簡單,能夠滿足通常的要求。通常采用的調(diào)用方式是把產(chǎn)生動態(tài)連接庫時產(chǎn)生的.LIB文件加入到應(yīng)用程序的工程中,想使用DLL中的函數(shù)時,只須在源文件中聲明一下。 LIB文件包含了每一個DLL導(dǎo)出函數(shù)的符號名和可選擇的標(biāo)識號以及DLL文件名,不含有實(shí)際的代碼。Lib文件包含的信息進(jìn)入到生成的應(yīng)用程序中,被調(diào)用的DLL文件會在應(yīng)用程序加載時同時加載在到內(nèi)存中。
(2)動態(tài)調(diào)用,即顯式調(diào)用方式,是由編程者用API函數(shù)加載和卸載DLL來達(dá)到調(diào)用DLL的目的,比較復(fù)雜,但能更加有效地使用內(nèi)存,是編制大型應(yīng)用程序時的重要方式。在Windows系統(tǒng)中,與動態(tài)庫調(diào)用有關(guān)的函數(shù)包括:
①LoadLibrary(或MFC 的AfxLoadLibrary),裝載動態(tài)庫。
②GetProcAddress,獲取要引入的函數(shù),將符號名或標(biāo)識號轉(zhuǎn)換為DLL內(nèi)部地址。
③FreeLibrary(或MFC的AfxFreeLibrary),釋放動態(tài)鏈接庫。
在windows中創(chuàng)建動態(tài)庫也非常方便和簡單。在Visual C++中,可以創(chuàng)建不用MFC而直接用C語言寫的DLL程序,也可以創(chuàng)建基于MFC類庫的DLL程序。每一個DLL必須有一個入口點(diǎn),在VC++中,DllMain是一個缺省的入口函數(shù)。DllMain負(fù)責(zé)初始化(Initialization)和結(jié)束(Termination)工作。動態(tài)庫輸出函數(shù)也有兩種約定,分別是基于調(diào)用約定和名字修飾約定。DLL程序定義的函數(shù)分為內(nèi)部函數(shù)和導(dǎo)出函數(shù),動態(tài)庫導(dǎo)出的函數(shù)供其它程序模塊調(diào)用。通常可以有下面幾種方法導(dǎo)出函數(shù):
①采用模塊定義文件的EXPORT部分指定要輸入的函數(shù)或者變量。
②使用MFC提供的修飾符號_declspec(dllexport)。
③以命令行方式,采用/EXPORT命令行輸出有關(guān)函數(shù)。
在windows動態(tài)庫中,有時需要編寫模塊定義文件(.DEF),它是用于描述DLL屬性的模塊語句組成的文本文件。
2.2 Linux共享對象技術(shù)
在Linux操作系統(tǒng)中,采用了很多共享對象技術(shù)(Shared Object),雖然它和Windows里的動態(tài)庫相對應(yīng),但它并不稱為動態(tài)庫。相應(yīng)的共享對象文件以.so作為后綴,為了方便,在本文中,對該概念不進(jìn)行專門區(qū)分。Linux系統(tǒng)的/lib以及標(biāo)準(zhǔn)圖形界面的/usr/X11R6/lib等目錄里面,就有許多以so結(jié)尾的共享對象。同樣,在Linux下,也有靜態(tài)函數(shù)庫這種調(diào)用方式,相應(yīng)的后綴以.a結(jié)束。Linux采用該共享對象技術(shù)以方便程序間共享,節(jié)省程序占有空間,增加程序的可擴(kuò)展性和靈活性。Linux還可以通過LD-PRELOAD變量讓開發(fā)人員可以使用自己的程序庫中的模塊來替換系統(tǒng)模塊。
同Windows系統(tǒng)一樣,在Linux中創(chuàng)建和使用動態(tài)庫是比較容易的事情,在編譯函數(shù)庫源程序時加上-shared選項(xiàng)即可,這樣所生成的執(zhí)行程序就是動態(tài)鏈接庫。通常這樣的程序以so為后綴,在Linux動態(tài)庫程序設(shè)計(jì)過程中,通常流程是編寫用戶的接口文件,通常是.h文件,編寫實(shí)際的函數(shù)文件,以.c或.cpp為后綴,再編寫makefile文件。對于較小的動態(tài)庫程序可以不用如此,但這樣設(shè)計(jì)使程序更加合理。
編譯生成動態(tài)連接庫后,進(jìn)而可以在程序中進(jìn)行調(diào)用。在Linux中,可以采用多種調(diào)用方式,同Windows的系統(tǒng)目錄(..\system32等)一樣,可以將動態(tài)庫文件拷貝到/lib目錄或者在/lib目錄里面建立符號連接,以便所有用戶使用。下面介紹Linux調(diào)用動態(tài)庫經(jīng)常使用的函數(shù),但在使用動態(tài)庫時,源程序必須包含dlfcn.h頭文件,該文件定義調(diào)用動態(tài)鏈接庫的函數(shù)的原型。
(1)_打開動態(tài)鏈接庫:dlopen,函數(shù)原型void *dlopen (const char *filename, int flag);
dlopen用于打開指定名字(filename)的動態(tài)鏈接庫,并返回操作句柄。
(2)取函數(shù)執(zhí)行地址:dlsym,函數(shù)原型為: void *dlsym(void *handle, char *symbol);
dlsym根據(jù)動態(tài)鏈接庫操作句柄(handle)與符號(symbol),返回符號對應(yīng)的函數(shù)的執(zhí)行代碼地址。
(3)關(guān)閉動態(tài)鏈接庫:dlclose,函數(shù)原型為: int dlclose (void *handle);
dlclose用于關(guān)閉指定句柄的動態(tài)鏈接庫,只有當(dāng)此動態(tài)鏈接庫的使用計(jì)數(shù)為0時,才會真正被系統(tǒng)卸載。
(4)動態(tài)庫錯誤函數(shù):dlerror,函數(shù)原型為: const char *dlerror(void); 當(dāng)動態(tài)鏈接庫操作函數(shù)執(zhí)行失敗時,dlerror可以返回出錯信息,返回值為NULL時表示操作函數(shù)執(zhí)行成功。
在取到函數(shù)執(zhí)行地址后,就可以在動態(tài)庫的使用程序里面根據(jù)動態(tài)庫提供的函數(shù)接口聲明調(diào)用動態(tài)庫里面的函數(shù)。在編寫調(diào)用動態(tài)庫的程序的makefile文件時,需要加入編譯選項(xiàng)-rdynamic和-ldl。
除了采用這種方式編寫和調(diào)用動態(tài)庫之外,Linux操作系統(tǒng)也提供了一種更為方便的動態(tài)庫調(diào)用方式,也方便了其它程序調(diào)用,這種方式與Windows系統(tǒng)的隱式鏈接類似。其動態(tài)庫命名方式為“lib*.so.*”。在這個命名方式中,第一個*表示動態(tài)鏈接庫的庫名,第二個*通常表示該動態(tài)庫的版本號,也可以沒有版本號。在這種調(diào)用方式中,需要維護(hù)動態(tài)鏈接庫的配置文件/etc/ld.so.conf來讓動態(tài)鏈接庫為系統(tǒng)所使用,通常將動態(tài)鏈接庫所在目錄名追加到動態(tài)鏈接庫配置文件中。如具有X window窗口系統(tǒng)發(fā)行版該文件中都具有/usr/X11R6/lib,它指向X window窗口系統(tǒng)的動態(tài)鏈接庫所在目錄。為了使動態(tài)鏈接庫能為系統(tǒng)所共享,還需運(yùn)行動態(tài)鏈接庫的管理命令./sbin/ldconfig。在編譯所引用的動態(tài)庫時,可以在gcc采用 ?l或-L選項(xiàng)或直接引用所需的動態(tài)鏈接庫方式進(jìn)行編譯。在Linux里面,可以采用ldd命令來檢查程序依賴共享庫。
3、兩種系統(tǒng)動態(tài)庫比較分析
Windows和Linux采用動態(tài)鏈接庫技術(shù)目的是基本一致的,但由于操作系統(tǒng)的不同,他們在許多方面還是不盡相同,下面從以下幾個方面進(jìn)行闡述。
(1)動態(tài)庫程序編寫,在Windows系統(tǒng)下的執(zhí)行文件格式是PE格式,動態(tài)庫需要一個DllMain函數(shù)作為初始化的人口,通常在導(dǎo)出函數(shù)的聲明時需要有_declspec(dllexport)關(guān)鍵字。Linux下的gcc編譯的執(zhí)行文件默認(rèn)是ELF格式,不需要初始化入口,亦不需要到函數(shù)做特別聲明,編寫比較方便。
(2)動態(tài)庫編譯,在windows系統(tǒng)下面,有方便的調(diào)試編譯環(huán)境,通常不用自己去編寫makefile文件,但在linux下面,需要自己動手去編寫makefile文件,因此,必須掌握一定的makefile編寫技巧,另外,通常Linux編譯規(guī)則相對嚴(yán)格。
(3)動態(tài)庫調(diào)用方面,Windows和Linux對其下編制的動態(tài)庫都可以采用顯式調(diào)用或隱式調(diào)用,但具體的調(diào)用方式也不盡相同。
(4)動態(tài)庫輸出函數(shù)查看,在Windows中,有許多工具和軟件可以進(jìn)行查看DLL中所輸出的函數(shù),例如命令行方式的dumpbin以及VC++工具中的DEPENDS程序。在Linux系統(tǒng)中通常采用nm來查看輸出函數(shù),也可以使用ldd查看程序隱式鏈接的共享對象文件。
(5)對操作系統(tǒng)的依賴,這兩種動態(tài)庫運(yùn)行依賴于各自的操作系統(tǒng),不能跨平臺使用。因此,對于實(shí)現(xiàn)相同功能的動態(tài)庫,必須為兩種不同的操作系統(tǒng)提供不同的動態(tài)庫版本。
4、動態(tài)庫移植方法
如果要編制在兩個系統(tǒng)中都能使用的動態(tài)鏈接庫,通常會先選擇在Windows的VC++提供的調(diào)試環(huán)境中完成初始的開發(fā),畢
ORA-01034: ORACLE not available
ORA-27121: unable to determine size of shared memory segment
Linux Error: 13: Permission denied
主要是因?yàn)閛racle安裝程序沒有給oracle這個可執(zhí)行程序設(shè)置正確的setuid。這樣設(shè)置一下:
$ cd $ORACLE_HOME/bin
$ chmod 6751 oracle
結(jié)果類似這樣就行了。
$ ls -l $ORACLE_HOME/bin/oracle
-rwsr-s--x 1 oracle oinstall 23352783 Aug 14 2001 /home/oracle/app/oracle/product/8.1.6/bin/oracle
========================
ORA-01034 ORA-27121 13: Permission denied
ORA-01034
ORA-27121
Error: 13: Permission denied
雙實(shí)例 兩個實(shí)例
日月明王 http://sunmoonking.spaces.live.com
環(huán)境
HP-UX jmc080 B.11.11 U 9000/800 1805586595 unlimited-user license
SQL*Plus: Release 9.2.0.1.0 - Production on Mon Oct 16 16:48:45 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 – Production
裝兩個數(shù)據(jù)庫db1和db2,分別有兩個用戶db1user和db2user,分別屬于ORADBA1,ORADBA2,共同屬于oragroup安裝組。裝好兩個庫后出現(xiàn)如下錯誤
現(xiàn)象
SQL> connect db2user/db2user@db2
ERROR:
ORA-01034: ORACLE not available
ORA-27121: unable to determine size of shared memory segment
HP-UX Error: 13: Permission denied
此時
$ ls -alt $ORACLE_HOME/bin/oracle
Warning! One or more of your selected locales are not available.
Please invoke the commands "locale" and "locale -a" to verify your
selections and the available locales.
Continuing processing using the "C" locale.
-rwsrwsrwx 1 oracle1 oragroup 77765688 Sep 7 16:00 /usr/sap3/oracle/product/920/bin/oracle (原權(quán)限是6751)
如果把/usr/sap3/oracle/product/920/bin/oracle的所有者改成oracle2則可以啟動DB2,但是DB1卻出現(xiàn)同樣錯誤,無法連接。于是判斷是某個文件的權(quán)限不對。于是一步一步檢查。
看誰擁有內(nèi)存
$ ipcs -a
IPC status from /dev/kmem as of Mon Oct 16 18:05:13 2006
T ID KEY MODE OWNER GROUP CREATOR CGROUP CBYTES QNUM QBYTES LSPID LRPID STIME RTIME CTIME
Message Queues:
q 0 0x3c200731 -Rrw--w--w- root root root root 0 0 65535 0 0 no-entry no-entry 19:46:07
q 1 0x3e200731 --rw-r--r-- root root root root 0 0 264 0 0 no-entry no-entry 19:46:07
T ID KEY MODE OWNER GROUP CREATOR CGROUP NATTCH SEGSZ CPID LPID ATIME DTIME CTIME
Shared Memory:
m 0 0x412007a8 --rw-rw-rw- root root root root 0 348 607 607 19:46:17 19:46:17 19:46:11
m 1 0x4e0c0002 --rw-rw-rw- root root root root 1 61760 607 607 19:46:13 19:46:17 19:46:11
m 2 0x411809a4 --rw-rw-rw- root root root root 1 8192 607 619 19:46:13 19:46:11 19:46:11
m 3 0x30203ebc --rw-rw-rw- root root root root 2 1048576 1282 1302 19:49:19 no-entry 19:48:40
m 17412 0x5e14045d --rw------- root root root root 1 512 1667 1667 19:49:13 no-entry 19:49:13
m 312325 0x7bf2fe68 --rw------- oracle1 users oracle1 users 13 873955328 20914 22016 18:04:49 18:04:49 16:22:30
m 4102 0x36ba48e8 --rw-rw---- oracle2 users oracle2 users 14 706183168 21014 21991 18:03:37 18:03:37 16:26:16
T ID KEY MODE OWNER GROUP CREATOR CGROUP NSEMS OTIME CTIME
Semaphores:
s 0 0x412007a8 --ra-ra-ra- root root root root 1 19:46:17 19:46:11
s 1 0x4e0c0002 --ra-ra-ra- root root root root 2 19:46:13 19:46:11
s 2 0x411809a4 --ra-ra-ra- root root root root 2 no-entry 19:46:11
s 3 0x00446f6e --ra-r--r-- root root root root 1 no-entry 19:46:50
s 4 0x00446f6d --ra-r--r-- root root root root 1 no-entry 19:46:50
s 5 0x01090522 --ra-r--r-- root root root root 1 no-entry 19:47:09
s 6 0x41207339 --ra-ra-ra- root root root root 1 19:48:35 19:48:35
s 7 0x31203ebc --ra-ra-ra- root root root root 1 19:49:19 19:48:40
s 8 0x611804f5 --ra-ra-ra- root root root root 1 19:53:03 19:49:04
s 9 0x731804f5 --ra-ra-ra- root root root root 1 19:59:47 19:49:04
s 10 0x701804f5 --ra-ra-ra- root root root root 1 19:53:43 19:49:04
s 11 0x691804f5 --ra-ra-ra- root root root root 1 19:53:01 19:49:04
s 12 0x751804f5 --ra-ra-ra- root root root root 1 19:49:04 19:49:04
s 13 0x631804f5 --ra-ra-ra- root root root root 1 19:49:04 19:49:04
s 14 0x641804f5 --ra-ra-ra- root root root root 1 19:53:04 19:49:04
s 15 0x661804f5 --ra-ra-ra- root root root root 1 no-entry 19:49:04
s 16 0x6c1804f5 --ra-ra-ra- root root root root 1 19:53:03 19:49:04
s 17 0x6d1804f5 --ra-ra-ra- root root root root 1 19:59:47 19:49:04
s 18 0x6f1804f5 --ra-ra-ra- root root root root 1 no-entry 19:49:04
s 19 0x410c01e0 --ra-ra-ra- root root root root 1 19:49:09 19:49:09
s 20 0x00000001 --ra-ra-ra- root root root root 1 19:49:49 19:49:13
s 21 0x4528e5bf --ra-ra-ra- root root root root 1 no-entry 19:49:19
s 22 0x4528e5c0 --ra-ra-ra- root root root root 1 19:49:19 19:49:19
s 23 0x521804f5 --ra-ra-ra- root root root root 1 19:59:47 19:53:04
s 182624 0xfc6c0898 --ra------- oracle1 users oracle1 users 154 18:05:06 16:22:32
s 49825 0xa01e08b0 --ra-ra---- oracle2 users oracle2 users 154 18:04:44 16:26:17
沒看出什么明顯問題。
首先設(shè)置UMAKS 000
在設(shè)置/var/opt/oracle/oratab為
DB1:/usr/sap3/oracle/product/920:Y
DB2:/usr/sap3/oracle/product/920:Y
再
chown -R oracle1:oragroup $ORACLE_BASE
chmod -R 777 $ORACLE_BASE
chmod 6777 $ORACLE_HOME/bin/oracle
讓進(jìn)程在后臺可靠運(yùn)行的幾種方法
想讓進(jìn)程在斷開連接后依然保持運(yùn)行?如果該進(jìn)程已經(jīng)開始運(yùn)行了該如何補(bǔ)救? 如果有大量這類需求如何簡化操作?
我們經(jīng)常會碰到這樣的問題,用 telnet/ssh 登錄了遠(yuǎn)程的 Linux 服務(wù)器,運(yùn)行了一些耗時較長的任務(wù), 結(jié)果卻由于網(wǎng)絡(luò)的不穩(wěn)定導(dǎo)致任務(wù)中途失敗。如何讓命令提交后不受本地關(guān)閉終端窗口/網(wǎng)絡(luò)斷開連接的干擾呢?下面舉了一些例子, 您可以針對不同的場景選擇不同的方式來處理這個問題。
nohup/setsid/&
場景:
如果只是臨時有一個命令需要長時間運(yùn)行,什么方法能最簡便的保證它在后臺穩(wěn)定運(yùn)行呢?
解決方法:
我們知道,當(dāng)用戶注銷(logout)或者網(wǎng)絡(luò)斷開時,終端會收到 HUP(hangup)信號從而關(guān)閉其所有子進(jìn)程。因此,我們的解決辦法就有兩種途徑:要么讓進(jìn)程忽略 HUP 信號,要么讓進(jìn)程運(yùn)行在新的會話里從而成為不屬于此終端的子進(jìn)程。
1. nohup
nohup 無疑是我們首先想到的辦法。顧名思義,nohup 的用途就是讓提交的命令忽略 hangup(在 Unix 的早期版本中,每個終端都會通過 modem 和系統(tǒng)通訊。當(dāng)用戶 logout 時,modem 就會掛斷(hang up)電話。 同理,當(dāng) modem 斷開連接時,就會給終端發(fā)送 hangup 信號來通知其關(guān)閉所有子進(jìn)程。) 信號。讓我們先來看一下 nohup 的幫助信息
NOHUP(1) User Commands NOHUP(1)
NAME
nohup - run a command immune to hangups, with output to a non-tty
SYNOPSIS
nohup COMMAND [ARG]...
nohup OPTION
DESCRIPTION
Run COMMAND, ignoring hangup signals.
--help display this help and exit
--version
output version information and exit
可見,nohup 的使用是十分方便的,只需在要處理的命令前加上 nohup 即可,標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤缺省會被重定向到 nohup.out 文件中。一般我們可在結(jié)尾加上"&"來將命令同時放入后臺運(yùn)行,也可用">filename 2>&1"來更改缺省的重定向文件名。
nohup 示例
[root@pvcent107 ~]# nohup ping www.ibm.com &
[1] 3059
nohup: appending output to `nohup.out'
[root@pvcent107 ~]# ps -ef |grep 3059
root 3059 984 0 21:06 pts/3 00:00:00 ping www.ibm.com
root 3067 984 0 21:06 pts/3 00:00:00 grep 3059
[root@pvcent107 ~]#
2。setsid
nohup 無疑能通過忽略 HUP 信號來使我們的進(jìn)程避免中途被中斷,但如果我們換個角度思考,如果我們的進(jìn)程不屬于接受 HUP 信號的終端的子進(jìn)程,那么自然也就不會受到 HUP 信號的影響了。setsid 就能幫助我們做到這一點(diǎn)。讓我們先來看一下 setsid 的幫助信息:
SETSID(8) Linux Programmer’s Manual SETSID(8) NAME setsid - run a program in a new session SYNOPSIS setsid program [ arg ... ] DESCRIPTION setsid runs a program in a new session.
可見 setsid 的使用也是非常方便的,也只需在要處理的命令前加上 setsid 即可。
setsid 示例
[root@pvcent107 ~]# setsid ping www.ibm.com
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root 31094 1 0 07:28 ? 00:00:00 ping www.ibm.com
root 31102 29217 0 07:29 pts/4 00:00:00 grep www.ibm.com
[root@pvcent107 ~]#
值得注意的是,上例中我們的進(jìn)程 ID(PID)為31094,而它的父 ID(PPID)為1(即為 init 進(jìn)程 ID),并不是當(dāng)前終端的進(jìn)程 ID。請將此例與nohup 例中的父 ID 做比較。
3。&
這里還有一個關(guān)于 subshell 的小技巧。我們知道,將一個或多個命名包含在“()”中就能讓這些命令在子 shell 中運(yùn)行中,從而擴(kuò)展出很多有趣的功能,我們現(xiàn)在要討論的就是其中之一。
當(dāng)我們將"&"也放入“()”內(nèi)之后,我們就會發(fā)現(xiàn)所提交的作業(yè)并不在作業(yè)列表中,也就是說,是無法通過jobs來查看的。讓我們來看看為什么這樣就能躲過 HUP 信號的影響吧。
subshell 示例
[root@pvcent107 ~]# (ping www.ibm.com &)
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root 16270 1 0 14:13 pts/4 00:00:00 ping www.ibm.com
root 16278 15362 0 14:13 pts/4 00:00:00 grep www.ibm.com
[root@pvcent107 ~]#
從上例中可以看出,新提交的進(jìn)程的父 ID(PPID)為1(init 進(jìn)程的 PID),并不是當(dāng)前終端的進(jìn)程 ID。因此并不屬于當(dāng)前終端的子進(jìn)程,從而也就不會受到當(dāng)前終端的 HUP 信號的影響了
screen
場景:
我們已經(jīng)知道了如何讓進(jìn)程免受 HUP 信號的影響,但是如果有大量這種命令需要在穩(wěn)定的后臺里運(yùn)行,如何避免對每條命令都做這樣的操作呢?
解決方法:
此時最方便的方法就是 screen 了。簡單的說,screen 提供了 ANSI/VT100 的終端模擬器,使它能夠在一個真實(shí)終端下運(yùn)行多個全屏的偽終端。screen 的參數(shù)很多,具有很強(qiáng)大的功能,我們在此僅介紹其常用功能以及簡要分析一下為什么使用 screen 能夠避免 HUP 信號的影響。我們先看一下 screen 的幫助信息:
SCREEN(1) SCREEN(1)
NAME
screen - screen manager with VT100/ANSI terminal emulation
SYNOPSIS
screen [ -options ] [ cmd [ args ] ]
screen -r [[pid.]tty[.host]]
screen -r sessionowner/[[pid.]tty[.host]]
DESCRIPTION
Screen is a full-screen window manager that multiplexes a physical
terminal between several processes (typically interactive shells).
Each virtual terminal provides the functions of a DEC VT100 terminal
and, in addition, several control functions from the ISO 6429 (ECMA
48, ANSI X3.64) and ISO 2022 standards (e.g. insert/delete line and
support for multiple character sets). There is a scrollback history
buffer for each virtual terminal and a copy-and-paste mechanism that
allows moving text regions between windows.
使用 screen 很方便,有以下幾個常用選項(xiàng):
用screen -dmS session name 來建立一個處于斷開模式下的會話(并指定其會話名)。
用screen -list 來列出所有會話。
用screen -r session name 來重新連接指定會話。
用快捷鍵CTRL-a d 來暫時斷開當(dāng)前會話。
screen 示例
[root@pvcent107 ~]# screen -dmS Urumchi
[root@pvcent107 ~]# screen -list
There is a screen on:
12842.Urumchi (Detached)
1 Socket in /tmp/screens/S-root.
[root@pvcent107 ~]# screen -r Urumchi
當(dāng)我們用“-r”連接到 screen 會話后,我們就可以在這個偽終端里面為所欲為,再也不用擔(dān)心 HUP 信號會對我們的進(jìn)程造成影響,也不用給每個命令前都加上“nohup”或者“setsid”了。這是為什么呢?讓我來看一下下面兩個例子吧。
1. 未使用 screen 時新進(jìn)程的進(jìn)程樹
[root@pvcent107 ~]# ping www.google.com &
[1] 9499
[root@pvcent107 ~]# pstree -H 9499
init─┬─Xvnc
├─acpid
├─atd
├─2*[sendmail]
├─sshd─┬─sshd───bash───pstree
│ └─sshd───bash───ping
我們可以看出,未使用 screen 時我們所處的 bash 是 sshd 的子進(jìn)程,當(dāng) ssh 斷開連接時,HUP 信號自然會影響到它下面的所有子進(jìn)程(包括我們新建立的 ping 進(jìn)程)。
2. 使用了 screen 后新進(jìn)程的進(jìn)程樹
[root@pvcent107 ~]# screen -r Urumchi
[root@pvcent107 ~]# ping www.ibm.com &
[1] 9488
[root@pvcent107 ~]# pstree -H 9488
init─┬─Xvnc
├─acpid
├─atd
├─screen───bash───ping
├─2*[sendmail]
而使用了 screen 后就不同了,此時 bash 是 screen 的子進(jìn)程,而 screen 是 init(PID為1)的子進(jìn)程。那么當(dāng) ssh 斷開連接時,HUP 信號自然不會影響到 screen 下面的子進(jìn)程了。
總結(jié)
現(xiàn)在幾種方法已經(jīng)介紹完畢,我們可以根據(jù)不同的場景來選擇不同的方案。nohup/setsid 無疑是臨時需要時最方便的方法,disown 能幫助我們來事后補(bǔ)救當(dāng)前已經(jīng)在運(yùn)行了的作業(yè),而 screen 則是在大批量操作時不二的選擇了
Q: 在SLES8中如何修改主機(jī)名(hostname)
A: SLES8中可以用yast network來修改主機(jī)名(hostname),也可以通過修改配置文件的方式并運(yùn)行命令
實(shí)現(xiàn)這個目的
方法1. 通過yast2管理工具進(jìn)行配置
在console中運(yùn)行yast2工具修改主機(jī)名(hostname)
# yast2 network
對于配置未經(jīng)配置的網(wǎng)卡
"Network cards configuration"中"Network cards configuration"中“Configure...”
對于修改已配置網(wǎng)卡的設(shè)置
"Network cards configuration"中"Network cards configuration"中“Changev...”
“Network address setup”中“Detailed settings”單擊“Host name and name server”
在“Host name”輸入框中輸入主機(jī)名,在“Domain name”中數(shù)入域名,如果沒有域名,接受缺省的
“local”
方法2. 通過修改配置文件的方式并運(yùn)行命令修改主機(jī)名
修改/etc/HOSTNAME文件,在此文件中保存主機(jī)名,例如:
linuxserv1
然后運(yùn)行命令設(shè)置主機(jī)名
# /etc/rc.d/boot.localnet start
方法3. 運(yùn)行 sysctl 動態(tài)改變主機(jī)名
# sysctl -w kernel.hostname=linuxserv1
Q:如何更改網(wǎng)卡配置IP
# vi /etc/sysconfig/network/ifcfg-eth-id-00\:0d\:61\:cd\:31\:f2
BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='192.168.1.70'
MTU=''
NAME='Giga-byte GA-7VM400M/7VT600 Motherboard'
NETMASK='255.255.255.0'
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
UNIQUE='rBUF.0ayJ55PfLqC'
USERCONTROL='no'
_nm_name='bus-pci-0000:01:05.0'
摘要: http://www.ibm.com/developerworks/cn/aix/library/0806_chench_core/index.html
...
閱讀全文
用vi 編輯文件時“終端太寬”(Terminal too wide)
#stty -a check you columns setting .
#stty columns 132 may solve it .
root用戶ftp-telnet 登陸設(shè)置
root用戶ftp-telnet 登陸設(shè)置
--------------------------------------
Linux 精華---root用戶ftp/telnet 登陸設(shè)置 (筆者原版---共享)
--------------------------------------------------------
筆者以FedCore 4(2.6.11)為藍(lán)本,一般情況下系統(tǒng)默認(rèn)的 root用戶不能遠(yuǎn)程ftp 和 telnet 服務(wù)器.網(wǎng)絡(luò)上有些更改
遠(yuǎn)程登陸的文章,筆者還是認(rèn)為都不夠全面,經(jīng)過自己一個小時的折騰終于解決了.
1),解決root用戶 ftp登陸的問題
一般情況下,由于種種原因ftp是不讓root用戶遠(yuǎn)程登陸,但只要你修改以個文件就可以登陸了.
a ,去掉或注釋掉 /etc/vsftpd/ftpusers 中的root
b ,去掉或注釋掉 /etc/vsftpd/user_list 中的root
2),修改ftp的默認(rèn)的路徑
我的硬盤空間有限,如何把帳號ftp默認(rèn)的路徑/var/ftp更改到別處?或者是,我的linux所有的目錄都放在/根分區(qū),因?yàn)榭臻g緊張,我能否把ftp這個用戶的默認(rèn)路徑放到別的分區(qū)?
可以,應(yīng)該如下操作!
首先要把ftp這個用戶刪除
#userdel -r ftp
會有錯誤信息,不過不用理,這是正常的。
然后我們再把這個用戶添加上,比如我想為帳號ftp的家目錄設(shè)置在/mnt/LinG/ftp,我們就可以如下操作
[root@linuxsir001 root]# mkdir /root/ftp
[root@linuxsir001 root]# adduser -d /root/ftp -g ftp -s /sbin/nologin ftp
僅僅是這樣做還不行,因?yàn)檫@樣還是不能讓匿名用戶找到它的家目錄,所以我們必須改變/mnt/LinG/ftp這個目錄的權(quán)限。
[root@linuxsir001 root]# chmod 755 /root/ftp/
[root@linuxsir001 root]# chown -R root.root /root/ftp/
3),root用戶登陸 telnet
a,檢查你的服務(wù)器是否安裝 telnet 服務(wù)器
rpm -qa | grep telnet-server[root@fedorasvr tmp]# ls
telnet-server-0.17-35.i386.rpm
[root@fedorasvr tmp]# rpm -i telnet-server-0.17-35.i386.rpm
warning: telnet-server-0.17-35.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
error: Failed dependencies:
xinetd is needed by telnet-server-0.17-35.i386
-------------哦是什么出錯了呢?????
檢查,檢查可能是沒有安裝 xinetd ,因?yàn)閘inux的安裝包依賴性可能強(qiáng),好安裝一下了,在安1.rpm -ivh xinetd-2.3.13-6.i386.rpm
2.service xinetd start
3.rpm-ivh telnet-server-0.17-35.i386.rpm
4.chkconfig telnet on
裝telnet-server 等
測試 telnet 服務(wù)器已經(jīng)安裝好了,
b),開啟root用戶的telnet功能
1,編輯/etc/default/login文件.
添加內(nèi)容:CONSOLE=/dev/console
2,編輯/etc/securetty 文件,加上下面幾行:
pts/0
pts/1
pts/2
pts/3
測試root用戶直接telnet登陸成功,
特別提示:對了最好不要使用root用戶telnet 登陸,也不要使用telnet功能,因?yàn)樗话踩?最好使用 ssh2登陸.
----------------------------------------------------
Linux 精華---root用戶ftp/telnet 登陸設(shè)置 (筆者原版---共享)
--------------------------------------------------------
筆者以FedCore 4(2.6.11)為藍(lán)本,一般情況下系統(tǒng)默認(rèn)的 root用戶不能遠(yuǎn)程ftp 和 telnet 服務(wù)器.網(wǎng)絡(luò)上有些更改
遠(yuǎn)程登陸的文章,筆者還是認(rèn)為都不夠全面,經(jīng)過自己一個小時的折騰終于解決了.
1),解決root用戶 ftp登陸的問題
一般情況下,由于種種原因ftp是不讓root用戶遠(yuǎn)程登陸,但只要你修改以個文件就可以登陸了.
a ,去掉或注釋掉 /etc/vsftpd/ftpusers 中的root
b ,去掉或注釋掉 /etc/vsftpd/user_list 中的root
2),修改ftp的默認(rèn)的路徑
我的硬盤空間有限,如何把帳號ftp默認(rèn)的路徑/var/ftp更改到別處?或者是,我的linux所有的目錄都放在/根分區(qū),因?yàn)榭臻g緊張,我能否把ftp這個用戶的默認(rèn)路徑放到別的分區(qū)?
可以,應(yīng)該如下操作!
首先要把ftp這個用戶刪除
#userdel -r ftp
會有錯誤信息,不過不用理,這是正常的。
然后我們再把這個用戶添加上,比如我想為帳號ftp的家目錄設(shè)置在/mnt/LinG/ftp,我們就可以如下操作
[root@linuxsir001 root]# mkdir /root/ftp
[root@linuxsir001 root]# adduser -d /root/ftp -g ftp -s /sbin/nologin ftp
僅僅是這樣做還不行,因?yàn)檫@樣還是不能讓匿名用戶找到它的家目錄,所以我們必須改變/mnt/LinG/ftp這個目錄的權(quán)限。
[root@linuxsir001 root]# chmod 755 /root/ftp/
[root@linuxsir001 root]# chown -R root.root /root/ftp/
3),root用戶登陸 telnet
a,檢查你的服務(wù)器是否安裝 telnet 服務(wù)器
rpm -qa | grep telnet-server[root@fedorasvr tmp]# ls
telnet-server-0.17-35.i386.rpm
[root@fedorasvr tmp]# rpm -i telnet-server-0.17-35.i386.rpm
warning: telnet-server-0.17-35.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
error: Failed dependencies:
xinetd is needed by telnet-server-0.17-35.i386
-------------哦是什么出錯了呢?????
檢查,檢查可能是沒有安裝 xinetd ,因?yàn)閘inux的安裝包依賴性可能強(qiáng),好安裝一下了,在安1.rpm -ivh xinetd-2.3.13-6.i386.rpm
2.service xinetd start
3.rpm-ivh telnet-server-0.17-35.i386.rpm
4.chkconfig telnet on
裝telnet-server 等
測試 telnet 服務(wù)器已經(jīng)安裝好了,
b),開啟root用戶的telnet功能
1,編輯/etc/default/login文件.
添加內(nèi)容:CONSOLE=/dev/console
2,編輯/etc/securetty 文件,加上下面幾行:
pts/0
pts/1
pts/2
pts/3
測試root用戶直接telnet登陸成功,
特別提示:對了最好不要使用root用戶telnet 登陸,也不要使用telnet功能,因?yàn)樗话踩?最好使用 ssh2登陸.
---------------------------------------------------- |
一.NFS Server設(shè)置:
啟動NFS Server服務(wù):
# /etc/rc3.d/S15nfs.server start
|
Share目錄:
編輯文件/etc/dfs/dfstab:
share -F nfs -o rw=10.0.0.13,root=10.0.0.13 /home
|
然后運(yùn)行shareall將目錄share出去,或者不編輯該文件,直接在命令行輸入效果一樣.
查看是否成功share"
# dfshares
RESOURCE SERVER ACCESS TRANSPORT
solaris:/home solaris - -
|
二.NIS設(shè)置:
復(fù)制配置文件:
# cp /etc/nsswitch.nis /etc/nsswitch.conf
|
設(shè)置域名:
# domainname congli
# echo congli > /etc/defaultdomain
|
初始化及啟動服務(wù):
# ypinit -m
# /usr/lib/netsvc/yp/ypstart
|
客戶端(Solaris 9)
一.NFS Client設(shè)置:
啟動NFS Client服務(wù):
# /etc/rc2.d/S73nfs.client start
|
編輯/etc/vfstab:
10.0.0.12:/home - /home nfs - yes soft,bg
|
把NFS文件系統(tǒng)掛上:
二.NIS設(shè)置:
復(fù)制配置文件:
# cp /etc/nsswitch.nis /etc/nsswitch.conf
|
設(shè)置域名:
# domainname congli
# echo congli > /etc/defaultdomain |
把NIS服務(wù)端的IP加到/etc/hosts:
初始化及啟動服務(wù):
# ypinit -m (填上NIS服務(wù)端的hostname,Ctrl+D結(jié)束)
# /usr/lib/netsvc/yp/ypstart |
摘要: 1 UNIX起源、流派及標(biāo)準(zhǔn)
1.1 UNIX的發(fā)展簡史
60年代由麻省理工學(xué)院、通用電器公司、AT&T貝爾試驗(yàn)室組成一個專家小組,研制一個MULICS,是一個靈活的交互式操作系統(tǒng)。
60年后期,BELL脫離該組織,失去了靈活的交互式操作系統(tǒng)。
1990年,有一個叫Ken.Tompson寫了一個SPACE TRAVEL的游戲,是在PDP-7上寫的,為了更有效地發(fā)揮PDP-7的強(qiáng)大功...
閱讀全文
摘要: 1 UNIX起源、流派及標(biāo)準(zhǔn)
1.1 UNIX的發(fā)展簡史
60年代由麻省理工學(xué)院、通用電器公司、AT&T貝爾試驗(yàn)室組成一個專家小組,研制一個MULICS,是一個靈活的交互式操作系統(tǒng)。
60年后期,BELL脫離該組織,失去了靈活的交互式操作系統(tǒng)。
1990年,有一個叫Ken.Tompson寫了一個SPACE TRAVEL的游戲,是在PDP-7上寫的,為了更有效地發(fā)揮PDP-7的強(qiáng)大功...
閱讀全文
http://blog.csdn.net/taodm/archive/2003/04/16/15756.aspx
http://keith.ecjtu.com/article.asp?id=657
總結(jié)的比較全,但對esx snapshot的功能說得不對, esx server 支持多級snapshots,應(yīng)該是權(quán)限受到了控制的原因.
ASP.net
WCF
Flex
Siverlight
Web Service
WPF
不知不覺已經(jīng)進(jìn)入06年,業(yè)界在數(shù)年前就已經(jīng)提出的SAS(Serial Attached SCSI)硬盤規(guī)格也早已有成品上市,但是SAS的推廣時機(jī)在05年還不夠成熟,存儲設(shè)備提供商也只是推出幾款產(chǎn)品作為先頭部隊(duì),SAS硬盤的大規(guī)模普及還要看06年,根據(jù)國外相關(guān)市場預(yù)測機(jī)構(gòu)的估計(jì),在今年,SAS硬盤將會搶占SCSI市場的三分之一,這個數(shù)目確實(shí)不小,而且這種新的硬盤設(shè)計(jì)規(guī)格也擁有更多的優(yōu)勢,我們相信在06年,SAS硬盤一定會在中高端市場有所作為。因此,今天我們就來談?wù)凷AS技術(shù)和SAS硬盤。
存儲設(shè)備的分類
網(wǎng)絡(luò)存儲設(shè)備目前大致可分為3類,即高端、中端和近端(Near-Line)。高端存儲設(shè)備主要是光纖通道,應(yīng)用于任務(wù)級的關(guān)鍵數(shù)據(jù)的大容量實(shí)時存儲。中端存儲設(shè)備主要是SCSI,應(yīng)用于商業(yè)級的關(guān)鍵數(shù)據(jù)的大容量存儲。近端是近年來新出現(xiàn)的存儲領(lǐng)域,其產(chǎn)品主要是串行ATA(Serial ATA,縮寫為SATA),應(yīng)用于非關(guān)鍵數(shù)據(jù)的大容量存儲,目的是替代以前使用磁帶的數(shù)據(jù)備份。由于SATA的硬盤價(jià)格越來越低,容量越來越大,可以用于數(shù)據(jù)備份。用硬盤作數(shù)據(jù)備份還有一個優(yōu)點(diǎn),就是攜帶和存儲方便。傳統(tǒng)的企業(yè)級存儲由于考慮到性能和穩(wěn)定性,以SCSI硬盤和光纖通道為主要存儲平臺,ATA則多用于非關(guān)鍵性資料或桌面?zhèn)€人計(jì)算機(jī)上,不過SATA的興起正逐漸改變企業(yè)存儲的形式。
前
邁拓公司全球
服務(wù)器產(chǎn)品部門營銷總監(jiān)Brendan Collins表示,SAS技術(shù)將大幅改變企業(yè)內(nèi)部存儲結(jié)構(gòu),并在若干年后成為存儲設(shè)備的主要標(biāo)準(zhǔn)。由于成本的降低和性能的提高,基于SAS技術(shù)的硬盤將取代SCSI硬盤甚至光纖通道,成為未來企業(yè)存儲系統(tǒng)或服務(wù)器硬盤的主流。
什么是SAS
SAS是新一代的SCSI技術(shù),和現(xiàn)在流行的Serial ATA(SATA)硬盤相同,都是采用串行技術(shù)以獲得更高的傳輸速度,并通過縮短連結(jié)線改善內(nèi)部空間等。SAS是并行SCSI接口之后開發(fā)出的全新接口。此接口的設(shè)計(jì)是為了改善存儲系統(tǒng)的效能、可用性和擴(kuò)充性,提供與串行ATA (Serial ATA,縮寫為SATA)硬盤的兼容性。
SAS的接口技術(shù)可以向下兼容SATA。SAS系統(tǒng)的背板(Backplane)既可以連接具有雙端口、高性能的SAS驅(qū)動器,也可以連接高容量、低成本的SATA驅(qū)動器。因?yàn)镾AS驅(qū)動器的端口與SATA驅(qū)動器的端口形狀看上去類似,所以SAS驅(qū)動器和SATA驅(qū)動器可以同時存在于一個存儲系統(tǒng)之中。但需要注意的是,SATA系統(tǒng)并不兼容SAS,所以SAS驅(qū)動器不能連接到SATA背板上。由于SAS系統(tǒng)的兼容性,IT人員能夠運(yùn)用不同接口的硬盤來滿足各類應(yīng)用在容量上或效能上的需求,因此在擴(kuò)充存儲系統(tǒng)時擁有更多的彈性,讓存儲設(shè)備發(fā)揮最大的投資效益。
SAS技術(shù)還有簡化內(nèi)部連接設(shè)計(jì)的優(yōu)勢,存儲設(shè)備廠商目前投入相當(dāng)多的成本以支持包括光纖通道陣列、SATA陣列等不同的存儲設(shè)備,而SAS連接技術(shù)將可以通過共用組件降低設(shè)計(jì)成本。
SAS的特點(diǎn)
串行SCSI是點(diǎn)到點(diǎn)的結(jié)構(gòu),可以建立磁盤到控制器的直接連接。具有以下特點(diǎn):
1、更好的性能:
點(diǎn)到點(diǎn)的技術(shù)減少了地址沖突以及菊花鏈連結(jié)的減速;
為每個設(shè)備提供了專用的信號通路來保證最大的帶寬;
全雙工方式下的數(shù)據(jù)操作保證最有效的數(shù)據(jù)吞吐量;
2、簡便的線纜連結(jié):
更細(xì)的電纜搭配更小的連接器;
3、更好的擴(kuò)展性:
可以同時連結(jié)更多的磁盤設(shè)備。
由于串行SCSI(SAS)是點(diǎn)到點(diǎn)的結(jié)構(gòu),因此除了提高性能之外,每個設(shè)備連接到指定的數(shù)據(jù)通路上提高了帶寬。SAS的電纜結(jié)構(gòu)節(jié)省了空間,從而提高了使用SAS硬盤服務(wù)器的散熱、通風(fēng)能力。一般情況下,較大的并行電纜會帶來電子干擾,SAS的電纜結(jié)構(gòu)可以解決這個問題。此外SAS結(jié)構(gòu)有非常好的擴(kuò)展能力,最多可以連接16384個磁盤設(shè)備。
串行SCSI(SAS)硬盤使用與S-ATA相同的接口,但是使用較多的信號,因此SAS硬盤不能與S-ATA硬盤控制器連結(jié)。SAS是通用接口,支持SAS和S-ATA,SAS控制器可以支持SAS和SATA磁盤。S-ATA使用SAS控制器的信號子集,因此SAS控制器支持S-ATA硬盤。
初期的SAS硬盤使用2.5英寸封裝,這樣可以使機(jī)架服務(wù)器支持更多的硬盤,現(xiàn)在已經(jīng)有廠商推出標(biāo)準(zhǔn)3.5英寸的SAS硬盤;初期產(chǎn)品的轉(zhuǎn)速是10000RPM,而現(xiàn)在15000RPM的產(chǎn)品也已經(jīng)問世。SAS硬盤與相同轉(zhuǎn)速的SCSI硬盤相比有相同或者更好的性能。串行接口減少了線纜的尺寸,允許更快的傳輸速度,SAS硬盤傳輸數(shù)據(jù)可以達(dá)到3.0Gbit/sec。
每個SAS電纜有4根電纜,2根輸入2根輸出。SAS可以同時進(jìn)行數(shù)據(jù)的讀寫,全雙工的數(shù)據(jù)操作提高數(shù)據(jù)的吞吐效率。
SAS的發(fā)展史
2001年11月26日,Compaq、
IBM、LSI邏輯、
Maxtor和
Seagate聯(lián)合宣布成立SAS工作組。
在2003年的CEBIT大會上,
惠普和
希捷早已推出了SAS界面的硬盤樣品。當(dāng)時,英特爾和Emulex也表示,將計(jì)劃開發(fā)支持SAS和SATA界面的處理器。去年11月,Adaptec也推出了SAS控制器出樣,新品的平均數(shù)據(jù)帶寬為3Gbps,峰值帶寬達(dá)5Gbps。
未來,第二代和第三代的SAS界面將提供6-12Gbps的數(shù)據(jù)帶寬,并支持HostRAID。
現(xiàn)在開發(fā)SAS架構(gòu)的存儲設(shè)備企業(yè)包括希捷、前邁拓、LSI Logic和Adaptec等。
SAS產(chǎn)品市場的發(fā)展趨勢
在新一代以SAS為基礎(chǔ)的應(yīng)用結(jié)構(gòu)下,SAS與SATA企業(yè)用硬盤是彼此能夠截長補(bǔ)短非常理想的儲存組件。SAS硬盤是為需求量較大及具備關(guān)鍵性處理任務(wù)的應(yīng)用裝置所設(shè)計(jì)的產(chǎn)品,而SATA硬盤則適合于近線儲存及其它對于儲存需求量較小的中小型企業(yè)所應(yīng)用。
預(yù)計(jì)今年,低端的存儲系統(tǒng)將由SATA取代SCSI硬盤,而高、中端的外部存儲系統(tǒng)將大部分采用光纖通道。但存儲系統(tǒng)價(jià)格的迅速下滑等因素卻讓業(yè)界對SAS硬盤的態(tài)度大幅改變。在產(chǎn)品價(jià)格快速下降的趨勢下,存儲設(shè)備廠商勢必通過更具有成本優(yōu)勢的技術(shù)制造存儲設(shè)備,而SAS硬盤正是符合這種需求的產(chǎn)品。另外,SAS系統(tǒng)和SATA系統(tǒng)的兼容性,以及I-SCSI連接標(biāo)準(zhǔn)的實(shí)行,也都會推動SAS系統(tǒng)的發(fā)展。
由于企業(yè)市場一向?qū)π录夹g(shù)較為保守,也許SAS技術(shù)的普及不會像SATA技術(shù)那樣迅速,但是這也只是時間問題。前邁拓公司預(yù)計(jì),到2009年將有三分之二的外部存儲設(shè)備采用SAS技術(shù),以連接SAS或SATA硬盤。
SAS硬盤應(yīng)用
存儲設(shè)備的反應(yīng)速度,除了各環(huán)節(jié)間的配合與
操作系統(tǒng)的影響之外,硬盤的反應(yīng)速度其實(shí)具有關(guān)鍵性的地位。企業(yè)級的工作站或存儲設(shè)備,一般來說,都采用光纖信道(Fibre Channel,F(xiàn)C)與SCSI硬盤作為內(nèi)部的存儲媒體。但是隨著SCSI硬盤在擴(kuò)增性上的限制,SAS(Serial Attached SCSI)硬盤展露頭角。由于服務(wù)器廠商有越來越多采用SAS硬盤作為內(nèi)部的存儲媒體,那么在存儲市場里,SAS硬盤是否會成為FC硬盤的勁敵?NetApp表示小型負(fù)載的應(yīng)用可以采用SAS硬盤,可兼具預(yù)算與效能的考慮。
既然SAS硬盤比較適合小型負(fù)載的應(yīng)用,那么哪些應(yīng)用為小型負(fù)載的狀況呢?NetApp解釋,例如在1,000人以下的電子郵件系統(tǒng),或者規(guī)模不大的ERP、CRM系統(tǒng),很多國內(nèi)中小企業(yè)就相當(dāng)適合。而像是大型的ERP、CRM系統(tǒng),或是在線實(shí)時交易系統(tǒng)等,因?yàn)閭鬏斄看螅磻?yīng)速度需要實(shí)時快速,所以還是應(yīng)當(dāng)采用更高端的光纖信道硬盤。
SAS適配器
SAS適配器其實(shí)就類似于SCSI控制芯片,因?yàn)楝F(xiàn)在的主板上基本都沒有集成支持SAS的刂菩酒孕枰褂枚鍆獾睦┱箍ǎ屠嗨樸赟CSI控制卡這種概念。目前提供這種控制卡的主要是業(yè)界著名的LSI Logic和Adaptec。
★L(fēng)SI Logic
LSI最新的支持SAS接口的硬盤卡去年8月在東京也已經(jīng)開始銷售,型號為SAS3442X,采用服務(wù)器主板常見的PCI-X接口,售價(jià)在5萬8590日元。此款產(chǎn)品僅提供了1個SAS硬盤接口,付送的數(shù)據(jù)線提供了4個擴(kuò)展硬盤接口。
LSI邏輯去年9月則宣布已開始向主要的OEM客戶供應(yīng)LSI 3Gb/s串行 SCSI(SAS)28和36端口擴(kuò)展器IC樣品,該新品--LSISASx28 和 LSISASx36進(jìn)一步拓寬了LSI邏輯在IC、HBA、MegaRAID卡以及SAS ROMB解決方案等領(lǐng)域業(yè)界領(lǐng)先的SAS產(chǎn)品線,也更增強(qiáng)了其作為技術(shù)創(chuàng)新者的市場地位。
主要的產(chǎn)品特性包括:用于網(wǎng)絡(luò)安全應(yīng)用及啟動設(shè)備功能的基于物理層的分區(qū)(phy-based zoning for network security applications and initiator functionality),如自動檢測和自動配置(self-discovery and self-configuration)。該產(chǎn)品主要通過一個ARM處理器實(shí)現(xiàn)處理及擴(kuò)展SAS功能。LSI邏輯目前正積極進(jìn)行在客戶端的產(chǎn)品演示工作。
LSISASx28 和 x36擴(kuò)展器IC為內(nèi)、外部 SEP提供了一個通用的可編程模塊,便于產(chǎn)品開發(fā)及客戶的無縫移植(seamless customer migration)。此外,還可以為客戶降低向后兼容LSISASx12 和LSISASx12A外部SEP接口的風(fēng)險(xiǎn)。這兩種高端口數(shù)擴(kuò)展器每個端口都支持1.5和3Gb/s SATA和SAS的數(shù)據(jù)傳輸速率,并提供了一種靈活、可升級、高性能的解決方案。大量的測試已驗(yàn)證了該SAS擴(kuò)展器 IC 和LSI邏輯的其他SAS元器件產(chǎn)品完全的互操作性。
LSI邏輯新的高端口數(shù)擴(kuò)展器建立在業(yè)界最完善的SAS產(chǎn)品線基礎(chǔ)上,該產(chǎn)品線包括12端口擴(kuò)展器、4和8端口PCI-X及PCI Express控制器IC,LSISAS1078 PCI Express到片上SAS RAID(RAID-on-Chip)解決方案、HBA、MegaRAID適配器卡以及ROMB解決方案。
根據(jù)最新的報(bào)道,LSI邏輯(LSI Logic)公司已經(jīng)于近日宣布出貨LSI 3Gb/s SAS(Serial Attached SCSI)36端口和28端口擴(kuò)展器(expander)的量產(chǎn)單元。
★Adaptec
Adaptec不是第一個在市場上推出SAS產(chǎn)品的廠商,不過,Adaptec一出手就不凡,發(fā)布了包括SAS HBA、RAID卡、內(nèi)部存儲和外部子系統(tǒng)在內(nèi)的最寬廣的SAS產(chǎn)品線。
去年年底,Adaptec同時推出了4塊板卡、1款軟件和兩個外部存儲陣列。串行連接SCSI 48300卡具有8個3.0Gb/s SAS/SATA端口,用于提高
多媒體和I/O密集型應(yīng)用的性能,提供RAID 0、1和10數(shù)據(jù)保護(hù);串行連接SCSI RAID 4800SAS和4805SAS控制器是高性能8端口SAS RAID卡,可通過PCI-X(4800SAS)或PCIe(4805SAS)主機(jī)接口安裝到服務(wù)器,并且都支持SAS或SATA硬盤,配置了128MB帶ECC保護(hù)的DDR2 DRAM和標(biāo)準(zhǔn)的RAID 0、1、10、5和50功能,控制器核心采用Adaptec RAID Code(ARC),提供增強(qiáng)型數(shù)據(jù)保護(hù)并簡化包括熱插拔、熱備、RAID類別轉(zhuǎn)換、在線容量擴(kuò)展和優(yōu)化磁盤利用在內(nèi)的眾多RAID功能的維護(hù);335SAS是高可靠、帶4個可熱插拔3.5英寸硬盤倉的內(nèi)部存儲柜,可接入SAS和SATA硬盤,包括一個小巧的CD-ROM倉,具有理想的性能和可靠性,每個SAS或SATA Ⅱ RAID控制器卡可支持最多兩個存儲柜;SANbloc 5000f RAID子系統(tǒng)是FC-SAS外部存儲解決方案,適用于DAS或SAN,提供高性能輸入輸出,可安裝SAS硬盤作為高可靠的主存儲,或接入SATA硬盤提供經(jīng)濟(jì)有效的存儲容量,也可以在同一系統(tǒng)中混接兩種硬盤,并可通過SANbloc S50 JBOD獲得容量擴(kuò)充,支持SMI-S和Microsoft VDS等行業(yè)軟件標(biāo)準(zhǔn);SANbloc S50 JBOD是高性能SAS-SAS JBOD產(chǎn)品,可用作DAS、基于主機(jī)的RAID陣列,或作為Adaptec SANbloc 5000f的擴(kuò)展存儲,支持SAS或SATA硬盤。
SAS硬盤
在希捷收購邁拓之前,邁拓已經(jīng)推出了自己的SAS硬盤,而且還計(jì)劃發(fā)布更高容量的產(chǎn)品,不過現(xiàn)在在SAS唱主角的也就只剩希捷了,而
日立、
富士通則 只是推出了相關(guān)產(chǎn)品而無法大量供貨。
★希捷
Seagate在04年推出過兩款SAS硬盤,分別是Cheetah 15k.4和Savvio 10k.1,采用SAS接口,可以提高硬盤的性能,包括更強(qiáng)的系統(tǒng)穩(wěn)定性以及總體而言更低的系統(tǒng)維護(hù)管理的開銷。值得一提的是Savvio 10k.1是一款2.5英寸硬盤。
去年年底,采用Serial Attached SCSI (SAS)接口介面,容量為37GB的希捷Cheetah 15K.4硬盤(型號:ST336754SS)終于上市,其電機(jī)轉(zhuǎn)速高達(dá)15000RPM,內(nèi)建8MB數(shù)據(jù)緩存,平均搜尋時間為3.5毫秒,最低零售價(jià)為4萬1790日元(約合人民幣2900元)。
目前市面上看到的SAS硬盤基本都是希捷的Savvio,Cheetah還不多見。
★前邁拓
邁拓被收購之前推出過兩款很經(jīng)典的Atlas 10K V和Atlas 15K II,這兩款硬盤還曾經(jīng)獲獎,而業(yè)界第一款300GB的高容量SAS硬盤--Atlas 10K V也是邁拓的杰作。
Atlas 15K II和 Atlas 10K V在型號上就已經(jīng)標(biāo)出了各自的硬盤轉(zhuǎn)數(shù),分別是15000RPM和10000RPM,而兩款硬盤都采用了雙通道SAS接口,使企業(yè)存儲系統(tǒng)的可用性更高。
★日立
去年下半年,日立公司最新的采用Serial Attached SCSI(SAS)和4Gb/s Fibre Channel(4GFC)接口的Ultrastar 15K147系列硬盤產(chǎn)品已經(jīng)進(jìn)入量產(chǎn)階段。
日立的3.5英寸 Ultrastar 15K147硬盤提供了超高的性能,平均搜尋時間為3.3毫秒,平均潛伏周期2毫秒,馬達(dá)轉(zhuǎn)速15,000rpm,內(nèi)置16MB容量的緩存,分別提供36GB,73GB,147GB三種不同容量版本。
4GFC規(guī)格硬盤設(shè)計(jì)用于網(wǎng)絡(luò),文件共享,工作組,科研和工程學(xué)環(huán)境等方面的數(shù)據(jù)存儲。半雙工模式下每個端口的接口數(shù)據(jù)傳輸率高達(dá)400MB/S,全雙工模式則可以達(dá)到800MB/S。高性能的4GFC接口全兼容之前的2Gb/s和1Gb/s規(guī)格硬件,并在保持原有設(shè)備的優(yōu)勢性功能特性基礎(chǔ)上,提供高達(dá)2倍的數(shù)據(jù)傳輸性能。
★富士通
富士通美國分公司在SAS Plugfest 2004大會上展出了他們的小型架構(gòu)(SFF)
硬盤新品。
去年3月,富士通正式發(fā)布了自己首款采用Serial Attached SCSI(SAS)規(guī)格的硬盤產(chǎn)品—MAV20xxRC,這也將是世界上第一款采用SAS規(guī)格的硬盤產(chǎn)品。該產(chǎn)品轉(zhuǎn)速為10000rpm,大小為2.5英寸,平均尋道時間為4ms、快取容量為8Mb、SAS傳送速度理論值達(dá)3Gbps,并且其工作時的耗電量僅為4.5W。首次推出的產(chǎn)品容量將為73Gb與36Gb兩種。
總結(jié)
作為一種新的存儲接口技術(shù),SAS不僅在功能上可與Fibre Channel媲美,還具有兼容SATA的能力,因而被業(yè)界公認(rèn)為取代并行SCSI的不二之選。據(jù)吳剛介紹,SAS的優(yōu)勢主要體現(xiàn)在:靈活性,可以兼容SATA,為用戶節(jié)省投資;擴(kuò)展性,一個SAS域最多可以直連16384個設(shè)備;性能卓越,點(diǎn)對點(diǎn)的架構(gòu)使性能隨端口數(shù)量增加而提高;更合理的電纜設(shè)計(jì),在高密度環(huán)境中提供更有效的散熱。衡量一種技術(shù)的優(yōu)劣通常有4個基本指標(biāo),即性能、可靠性、可擴(kuò)展性和成本。回顧串行磁盤技術(shù)的發(fā)展歷史,從光纖通道,到SATA,再到SAS,幾種技術(shù)各有所長。光纖通道最早出現(xiàn)的串行化存儲技術(shù),可以滿足高性能、高可靠和高擴(kuò)展性的存儲需要,但是價(jià)格居高不下;SATA硬盤成本倒是降下來了,但主要是用于近線存儲和非關(guān)鍵性應(yīng)用,畢竟在性能等方面差強(qiáng)人意;SAS應(yīng)該算是個全才,可以支持SAS和SATA磁盤,很方便地滿足不同性價(jià)比的存儲需求,是具有高性能、高可靠和高擴(kuò)展性的解決方案。
百科全書的summary
http://zh.wikipedia.org/wiki/VMware#VMware_ESX.E6.9C.8D.E5.8A.A1.E5.99.A8
終于完成了vmware server 到 ESX 的porting, 不容易。
還是要有探索精神,雖然手冊上寫ESX不適合裝在SATA硬盤上,但2950的SCSI controller還是很
大家都想用SATA硬盤上ESX,這樣可以節(jié)省很大一部份資金,所以我建議大家能否把支持SATA硬盤的陣列卡型列出來,如果有圖更好,有資源的朋友進(jìn)行一下測試,通過后,大家預(yù)定,或根椐該卡的圖去電腦城購買呀,我就打算等哪位兄弟例出兼容的卡,去電腦城找。大家覺的怎樣呀,大家一起動手,就不用花冤枉錢呀
LSI MegaRaid SATA 150-4 / 150-6 Raid card
Adaptec 2610SA RAID card
Dell Cerc 1.5/6ch Raid
Intel SRCS14L SATA Raid
以上四種SATA Raid卡確認(rèn)支持VMWare ESX Server ...
咱們要先從沒到有,再從有到尋找到最便宜又實(shí)用的卡,這幾個卡,偶今天去查查看都要多少錢
經(jīng)查LSI MegaRaid SATA 150-4 / 150-6 Raid card 要3800左右
Adaptec 2610SA RAID card 1500左右 6個SATA接口,raid 5 0 1支持 64位PCI接口,不能上普通PC PCI口,家用機(jī)沒希望 上 郁悶
另外兩個末知,呵呵,看來這個adaptec是我們首選 了,如果有更便宜的我會繼續(xù)跟進(jìn)。
大家可以參考
http://www.vmprofessional.com/index.php?content=sata_faq
Confirmed Working
Controller Driver vmware-devices.map lspci
LSILogic MegaRAID 150-4 megaraid2 unknown unknown
LSILogic MegaRAID 150-6 megaraid2 unknown unknown
Dell Cerc 1.5/6ch aacraid-115 device,0x9005,0x0285,scsi,CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) RAID bus controller: Adaptec Adaptec SCSI (rev 01)
Adaptec 2610SA aacraid-115 device,0x9005,0x0285,scsi,AAR-2610SA PCI SATA 6ch RAID bus controller: Adaptec Adaptec SCSI (rev 01)
Intel SRCS14L gdth device,0x8086,0x0600,scsi,RAID Controller RAID bus controller: Intel Corporation RAID Controller
Suspected to work Controller Driver vmware-devices.map lspci
Adaptec 2410SA aacraid-115 device,0x9005,0x0285,scsi,AAR-2410SA PCI SATA 4ch (Jaguar II) RAID bus controller: Adaptec Adaptec SCSI (rev 01)
HP P600 unknown unknown unknown
Confirmed not Working Controller Driver vmware-devices.map lspci
Intel SRCS28X unknown unknown unknown
http://www.cnblogs.com/cuihongyu3503319/archive/2007/02/25/655660.html
原來百科全書這種東西也總結(jié)了,收納
http://en.wikipedia.org/wiki/Linear_Tape-Open
SSL協(xié)議與數(shù)字證書原理 |
1樓 |
SSL 協(xié)議的握手和通訊
為了便于更好的認(rèn)識和理解 SSL 協(xié)議,這里著重介紹 SSL 協(xié)議的握手協(xié)議。SSL 協(xié)議既用到了公鑰加密技術(shù)又用到了對稱加密技術(shù),對稱加密技術(shù)雖然比公鑰加密技術(shù)的速度快,可是公鑰加密技術(shù)提供了更好的身份認(rèn)證技術(shù)。SSL 的握手協(xié)議非常有效的讓客戶和服務(wù)器之間完成相互之間的身份認(rèn)證,其主要過程如下:
① 客戶端的瀏覽器向服務(wù)器傳送客戶端 SSL 協(xié)議的版本號,加密算法的種類,產(chǎn)生的隨機(jī)數(shù),以及其他服務(wù)器和客戶端之間通訊所需要的各種信息。
② 服務(wù)器向客戶端傳送 SSL 協(xié)議的版本號,加密算法的種類,隨機(jī)數(shù)以及其他相關(guān)信息,同時服務(wù)器還將向客戶端傳送自己的證書。
③ 客戶利用服務(wù)器傳過來的信息驗(yàn)證服務(wù)器的合法性,服務(wù)器的合法性包括:證書是否過期,發(fā)行服務(wù)器證書的 CA 是否可靠,發(fā)行者證書的公鑰能否正確解開服務(wù)器證書的“發(fā)行者的數(shù)字簽名”,服務(wù)器證書上的域名是否和服務(wù)器的實(shí)際域名相匹配。如果合法性驗(yàn)證沒有通過,通訊將斷開;如果合法性驗(yàn)證通過,將繼續(xù)進(jìn)行第四步。
④ 用戶端隨機(jī)產(chǎn)生一個用于后面通訊的“對稱密碼”,然后用服務(wù)器的公鑰(服務(wù)器的公鑰從步驟②中的服務(wù)器的證書中獲得)對其加密,然后將加密后的“預(yù)主密碼”傳給服務(wù)器。
⑤ 如果服務(wù)器要求客戶的身份認(rèn)證(在握手過程中為可選),用戶可以建立一個隨機(jī)數(shù)然后對其進(jìn)行數(shù)據(jù)簽名,將這個含有簽名的隨機(jī)數(shù)和客戶自己的證書以及加密過的“預(yù)主密碼”一起傳給服務(wù)器。
⑥ 如果服務(wù)器要求客戶的身份認(rèn)證,服務(wù)器必須檢驗(yàn)客戶證書和簽名隨機(jī)數(shù)的合法性,具體的合法性驗(yàn)證過程包括:客戶的證書使用日期是否有效,為客戶提供證書的 CA 是否可靠,發(fā)行 CA 的公鑰能否正確解開客戶證書的發(fā)行 CA 的數(shù)字簽名,檢查客戶的證書是否在證書廢止列表(CRL)中。檢驗(yàn)如果沒有通過,通訊立刻中斷;如果驗(yàn)證通過,服務(wù)器將用自己的私鑰解開加密的“預(yù)主密碼”,然后執(zhí)行一系列步驟來產(chǎn)生主通訊密碼(客戶端也將通過同樣的方法產(chǎn)生相同的主通訊密碼)。
⑦ 服務(wù)器和客戶端用相同的主密碼即“通話密碼”,一個對稱密鑰用于 SSL 協(xié)議的安全數(shù)據(jù)通訊的加解密通訊。同時在 SSL 通訊過程中還要完成數(shù)據(jù)通訊的完整性,防止數(shù)據(jù)通訊中的任何變化。
⑧ 客戶端向服務(wù)器端發(fā)出信息,指明后面的數(shù)據(jù)通訊將使用的步驟⑦中的主密碼為對稱密鑰,同時通知服務(wù)器客戶端的握手過程結(jié)束。
⑨ 服務(wù)器向客戶端發(fā)出信息,指明后面的數(shù)據(jù)通訊將使用的步驟⑦中的主密碼為對稱密鑰,同時通知客戶端服務(wù)器端的握手過程結(jié)束。
⑩ SSL 的握手部分結(jié)束,SSL 安全通道的數(shù)據(jù)通訊開始,客戶和服務(wù)器開始使用相同的對稱密鑰進(jìn)行數(shù)據(jù)通訊,同時進(jìn)行通訊完整性的檢驗(yàn)。
雙向認(rèn)證 SSL 協(xié)議的具體過程
① 瀏覽器發(fā)送一個連接請求給安全服務(wù)器。
② 服務(wù)器將自己的證書,以及同證書相關(guān)的信息發(fā)送給客戶瀏覽器。
③ 客戶瀏覽器檢查服務(wù)器送過來的證書是否是由自己信賴的 CA 中心所簽發(fā)的。如果是,就繼續(xù)執(zhí)行協(xié)議;如果不是,客戶瀏覽器就給客戶一個警告消息:警告客戶這個證書不是可以信賴的,詢問客戶是否需要繼續(xù)。
④ 接著客戶瀏覽器比較證書里的消息,例如域名和公鑰,與服務(wù)器剛剛發(fā)送的相關(guān)消息是否一致,如果是一致的,客戶瀏覽器認(rèn)可這個服務(wù)器的合法身份。
⑤ 服務(wù)器要求客戶發(fā)送客戶自己的證書。收到后,服務(wù)器驗(yàn)證客戶的證書,如果沒有通過驗(yàn)證,拒絕連接;如果通過驗(yàn)證,服務(wù)器獲得用戶的公鑰。
⑥ 客戶瀏覽器告訴服務(wù)器自己所能夠支持的通訊對稱密碼方案。
⑦ 服務(wù)器從客戶發(fā)送過來的密碼方案中,選擇一種加密程度最高的密碼方案,用客戶的公鑰加過密后通知瀏覽器。
⑧ 瀏覽器針對這個密碼方案,選擇一個通話密鑰,接著用服務(wù)器的公鑰加過密后發(fā)送給服務(wù)器。
⑨ 服務(wù)器接收到瀏覽器送過來的消息,用自己的私鑰解密,獲得通話密鑰。
⑩ 服務(wù)器、瀏覽器接下來的通訊都是用對稱密碼方案,對稱密鑰是加過密的。
上面所述的是雙向認(rèn)證 SSL 協(xié)議的具體通訊過程,這種情況要求服務(wù)器和用戶雙方都有證書。單向認(rèn)證 SSL 協(xié)議不需要客戶擁有 CA 證書,具體的過程相對于上面的步驟,只需將服務(wù)器端驗(yàn)證客戶證書的過程去掉,以及在協(xié)商對稱密碼方案,對稱通話密鑰時,服務(wù)器發(fā)送給客戶的是沒有加過密的(這并不影響 SSL 過程的安全性)密碼方案。 這樣,雙方具體的通訊內(nèi)容,就是加過密的數(shù)據(jù),如果有第三方攻擊,獲得的只是加密的數(shù)據(jù),第三方要獲得有用的信息,就需要對加密的數(shù)據(jù)進(jìn)行解密,這時候的安全就依賴于密碼方案的安全。而幸運(yùn)的是,目前所用的密碼方案,只要通訊密鑰長度足夠的長,就足夠的安全。這也是我們強(qiáng)調(diào)要求使用 128 位加密通訊的原因。
證 書 各 部 分 的 含 義
Version 證書版本號,不同版本的證書格式不同
Serial Number 序列號,同一身份驗(yàn)證機(jī)構(gòu)簽發(fā)的證書序列號唯一
Algorithm Identifier 簽名算法,包括必要的參數(shù) Issuer 身份驗(yàn)證機(jī)構(gòu)的標(biāo)識信息
Period of Validity 有效期
Subject 證書持有人的標(biāo)識信息
Subject’s Public Key 證書持有人的公鑰
Signature 身份驗(yàn)證機(jī)構(gòu)對證書的簽名
證書的格式 認(rèn)證中心所發(fā)放的證書均遵循 X.509 V3 標(biāo)準(zhǔn),其基本格式如下:
證書版本號(Certificate Format Version) 含義:用來指定證書格式采用的 X.509 版本號。
證書序列號(Certificate Serial Number) 含義:用來指定證書的唯一序列號,以標(biāo)識 CA 發(fā)出的所有公鑰證書。
簽名(Signature) 算法標(biāo)識(Algorithm Identifier) 含義:用來指定 CA 簽發(fā)證書所用的簽名算法。
簽發(fā)此證書的 CA 名稱(Issuer ) 含義:用來指定簽發(fā)證書的 CA 的 X.500 唯一名稱(DN, Distinguished Name)。
證書有效期(Validity Period) 起始日期(notBefore) 終止日期(notAfter) 含義:用來指定證書起始日期和終止日期。
用戶名稱(Subject) 含義:用來指定證書用戶的 X.500 唯一名稱(DN,Distinguished Name)。
用戶公鑰信息(Subject Public Key Information) 算法(algorithm) 算法標(biāo)識(Algorithm Identifier) 用戶公鑰(subject Public Key) 含義:用來標(biāo)識公鑰使用的算法,并包含公鑰本身。
證書擴(kuò)充部分(擴(kuò)展域)(Extensions) 含義:用來指定額外信息。
X.509 V3 證書的擴(kuò)充部分(擴(kuò)展域)及實(shí)現(xiàn)方法如下: CA 的公鑰標(biāo)識(Authority Key Identifier) 公鑰標(biāo)識(SET 未使用)(Key Identifier) 簽發(fā)證書者證書的簽發(fā)者的甄別名(Certificate Issuer) 簽發(fā)證書者證書的序列號(Certificate Serial Number)
X.509 V3 證書的擴(kuò)充部分(擴(kuò)展域)及實(shí)現(xiàn)CA 的公鑰標(biāo)識(Authority Key Identifier) 公鑰標(biāo)識(SET 未使用)(Key Identifier) 簽發(fā)證書者證書的簽發(fā)者的甄別名(Certificat簽發(fā)證書者證書的序列號(Certificate Serial N含義:CA 簽名證書所用的密鑰對的唯一標(biāo)識用戶的公鑰標(biāo)識(Subject Key Identifier) 含義:用來標(biāo)識與證書中公鑰相關(guān)的特定密鑰進(jìn)行解密。 證書中的公鑰用途(Key Usage) 含義:用來指定公鑰用途。
用戶的私鑰有效期(Private Key Usage Period) 起始日期(Note Before) 終止日期(Note After) 含義:用來指定用戶簽名私鑰的起始日期和終止日期。 CA 承認(rèn)的證書政策列表(Certificate Policies) 含義:用來指定用戶證書所適用的政策,證書政策可由對象標(biāo)識符表示。 用戶的代用名(Substitutional Name) 含義:用來指定用戶的代用名。 CA 的代用名(Issuer Alt Name) 含義:用來指定 CA 的代用名。 基本制約(Basic Constraints) 含義:用來表明證書用戶是最終用戶還是 CA。 在 SET 系統(tǒng)中有一些私有擴(kuò)充部分(擴(kuò)展域)Hashed Root Key 含義:只在根證書中使用,用于證書更新時進(jìn)行回溯。 證書類型(Certificate Type) 含義:用來區(qū)別不同的實(shí)體。該項(xiàng)是必選的。 商戶數(shù)據(jù)(Merchant Data) 含義:包含支付網(wǎng)關(guān)需要的所有商戶信息。 持卡人證書需求(Card Cert Required) 含義:顯示支付網(wǎng)關(guān)是否支持與沒有證書的持卡人進(jìn)行交易。 SET 擴(kuò)展(SETExtensions) 含義:列出支付網(wǎng)關(guān)支持的支付命令的 SET 信息擴(kuò)展。 CRL 數(shù)據(jù)定義版本(Version) 含義:顯示 CRL 的版本號。
CRL 的簽發(fā)者(Issuer) 含義:指明簽發(fā) CRL 的 CA 的甄別名。 CRL 發(fā)布時間(this Update) 預(yù)計(jì)下一個 CRL 更新時間(Next Update) 撤銷證書信息目錄(Revoked Certificates) CRL 擴(kuò)展(CRL Extension) CA 的公鑰標(biāo)識(Authority Key Identifier) CRL 號(CRL Number)
|
最近BQ關(guān)于時間處理出問題, 是因?yàn)闀r間的計(jì)算上沒有處理好DST,以前做計(jì)費(fèi)的時候老碰到,還做了專題,疏忽了,微軟倒有詳細(xì)的解釋,抄錄如下:
http://support.microsoft.com/kb/932955/zh-cn