• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            無法遞歸的五點半

            for_each(day.begin(),day.end(),bind2nd(Add(),me))

            導航

            <2007年4月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            統計

            常用鏈接

            留言簿(4)

            隨筆分類

            隨筆檔案

            文章分類

            相冊

            收藏夾

            C++

            Unix/Linux

            個人主頁

            其他

            軟件工程

            網絡管理

            綜合

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            #

            Solaris使用點滴

            偶爾會用用Solaris,一些點滴記錄如下:
            • 關于環境變量
            Solaris沒有/etc/ld.so.conf,需要添加庫目錄可以使用"crle" (Configure Runtime Linker Environment)。如:
            crle -u -l /usr/local/lib
            • 軟件的安裝
            通常使用pkginfo、pkgadd和pkgrm
            pkginfo查看軟件包
            查看當前操作系統已經安裝的軟件包。
            # pkginfo | more
            查看一個軟件包。
            # pkginfo -d /cdrom/cdrom0/s0/Solaris_2.7/Product -l SUNWaudio
            pkgrm 刪除軟件包
            # pkgrm SUNWaudio
            ?
            pkgadd添加軟件包
            命令格式:
            pkgadd [ -d [device | pathname ]] pkg_name
            # pkgadd -d /cdrom/cdrom0/s0/Solaris_2.7/Product SUNWaudio
            # pkgadd -d ./libgcc-3.3-sol10-sparc-local

            posted @ 2007-03-15 21:18 五點半 閱讀(390) | 評論 (0)編輯 收藏

            JavaScript調試器

            ??? 最近作一個項目,C++的代碼不多,B/S結構。因為使用了Ajax,有大量的JavaScript代碼。臨時學用JS。Web的東西就是不好調試,JS也是這樣。昨天突然發現一個Firefox的插件,可以調試JS代碼,做得很好(這是地址:https://addons.mozilla.org/firefox/216/)??赡芎芏嗳嗽谟眠@個了,JS高手不要嘲笑哦:)

            posted @ 2006-11-16 21:47 五點半 閱讀(862) | 評論 (2)編輯 收藏

            在Debian下安裝Oracle 10 XE

            現在安裝Oracle已經很簡單了,看來有官方的支持。記錄下備忘:
            1. 在source.list中加入deb http://oss.oracle.com/debian/ unstable main non-free
            2. aptitude update
            3. aptitude oracle-xe-client oracle-xe-universal? 包有點大200多兆
            4. 通過/etc/init.d/oracle-xe configure配置基本參數
            5. 通過http://127.0.0.1:8080/apex/進行管理
            Oracle 10 XE 需要1G的交換分區,如果沒有可以建一個交換文件
            1. dd if=/dev/zero of=/mnt/swapfile bs=1024 count=1048576
            2. mkswap /mnt/swapfile
            3. swapon /mnt/swapfile
            參考了一下:瘋狂小強 (沒有使用aptitude,不過很詳細)

            posted @ 2006-11-03 23:17 五點半 閱讀(691) | 評論 (0)編輯 收藏

            指數函數的模板元編程

            在程序中需要將一個正整數(如123)轉換成一個固定長的串(如8位,00000123)。算法有很多了。我采用可以這個方法123+10^8=100000123,將100000123轉換成串"100000123",然后返回這個串的子串substr(1)。在這個方法當中會涉及指數的運算,C++只能作浮點數的指數運算,為提高效率使用模板元編程,將這一過程提前到編譯期完成。程序很簡單,大家看看就明白了:

            ????template
            <int?d,int?pow>
            ????
            struct?Power
            ????{
            ????????
            static?const?int?value?=?Power<d,pow-1>::value?*?d;
            ????};

            ????template
            <int?d>
            ????
            struct?Power<d,0>
            ????{
            ????????
            static?const?int?value?=?1;
            ????};

            ????
            /**
            ?????*?該函數將一個整數轉換成固定長度的0不齊的串,如12->"00012"
            ?????
            */
            ????template
            <int?len>
            ????std::
            string?int_cast_zerostr(const?int?i)
            ????{

            ????????std::
            string?result??=?boost::lexical_cast<std::string>(Power<10,len>::value?+?i);
            ????????
            return?result.substr(1);
            ????}

            如果要將12轉換成"00000012",可使用函數int_cast_zerostr<8>(12)。

            謝謝小明的提醒,想起Boost有個format庫,所以可以這樣
            ????boost::format?f("%08d");
            ????std::
            string?s?=?(f%12).str();
            ????std::cout
            <<s; //s = "00000012"
            不過個人更喜歡int_cast_zerostr<8>(12)方式。呵呵!

            posted @ 2006-10-24 11:09 五點半 閱讀(1120) | 評論 (1)編輯 收藏

            將map中的數據導入到vector中

            要將一個map<T1,T2>中的數據導入到一個vector<T2>中,可以考慮使用標準庫中的transform,但map<T1,T2>::iterator與vector<T2>::iterator是不匹配的,受《Effective STL》第20條啟發寫個map2vector的functor,可以解決這個問題(不過這個還不算真正的meta-programming):
            #include?<map>
            #include?
            <vector>
            #include?
            <iostream>
            #include?
            <string>
            #include?
            <iterator>

            using?namespace?std;

            struct?map2vector
            {
            ????template
            <typename?T>
            ????
            const?typename?T::second_type&?operator()(const?T&?p)
            ????????{
            ????????????
            return?p.second;
            ????????}
            };


            int?main()
            {
            ????map
            <string,string>?m;
            ????vector
            <string>?v;

            ????m[
            "key1"]="sdf111";
            ????m[
            "k2"]="sdf11";
            ????m[
            "k3"]="sdf2";

            ????transform(m.begin(),m.end(),back_inserter(v),map2vector());
            ????copy(v.begin(),v.end(),ostream_iterator
            <string>(cout,"\n"));
            ??? return?0;
            }


            posted @ 2006-10-23 21:57 五點半 閱讀(1851) | 評論 (2)編輯 收藏

            讀《UNIX編程藝術》

            ??? 對每一個希望設計軟件的人員,都有必要閱讀這本書。對那些在Windows下開發的程序員,理曼德(Raymond)的話可能刺耳,賴著性子吧,中國的程序員有哪一位不是從DOS、Windows下轉過來的呢?
               想當初DEC解體微軟挖走了DEC公司那一幫操作系統大牛,這就有了WindowNT,有了Windows虛擬內存,直到現在WindowsXP也和NT 一脈相承。很少有人批評Windows的內核和API(Windows是符合POSIX)。但在軟件用戶接口設計,UNIX與Windows的一開始就沿 著兩個截然相反的方向發展。UNIX崇尚命令行,崇尚對自己的操作負責,崇尚有計劃、有條理的工作。Windows卻認為用戶可能粗心,用戶可能根本就不 喜歡計算機,僅僅不得不學習計算機(多痛苦啊),好了,Windows告訴你“不用記什么命令,用鼠標點就行了”。一句話Windows統治了桌面。
               我到覺得將這本書作為對Windows設計的反思可能更好,一個UNIX程序員很有可能已經按書中所講在設計軟件了,比如他可能將配置文件放在/etc/ 下,并不是因為他很懂UNIX編程的藝術,他僅僅在按慣例做事。而Windows程序員,同樣是按慣例,他將配置放在了注冊表中,作為Windows程序 員他不是不知道注冊表會膨脹,但他能打破慣例,在C盤建一個dot文件?
               比打口水戰更有意義可能是UNIX\Windows的相互學習吧,有容乃大。如果說UNIX\Windows的設計理念完全不同,無法融合,學習兩種不同的思維方式對我們來說也不是個壞事,你說呢?
            ?? 本文轉自我的豆瓣書評:)

            posted @ 2006-07-03 17:45 五點半 閱讀(619) | 評論 (0)編輯 收藏

            SUN Solstice DiskSuite 磁盤管理軟件的初步使用[轉]

            一. SUN Solstice DiskSuite
            ??????? SUN Solstice DiskSuite是SUN公司自主研發的磁盤管理軟件,并向廣大用戶免費提供。此軟件支持Solaris 2.6 、Solaris 7、 Solaris 8。雖然在Solaris 9中更名為“Sun Volume Manager”,但原理和命令幾乎沒有任何改變。SUN Solstice DiskSuite最常用的用途是磁盤鏡像RAID 1,串連RAID 0(striping,concatenation),RAID 5,RAID 0+1,RAID 1+0,磁盤熱備(hotspare),Diskset,操作系統擴容(growfs),文件系統日志(UFS logging)

            二. SUN Solstice DiskSuite軟件安裝
              SUN Solstice DiskSuite軟件免費提供于Solaris 2.6、Solaris 7、Solaris 8、Solaris 9及最新發布的Solaris 10中。在Solaris 9和Solaris 10中,SUN Solstice DiskSuite已經集成在操作系統當中,不需要安裝就可以直接使用。在Solaris 2.6、Solaris 7、 Solaris 8的操作系統環境下,需要對SUN Solstice DiskSuite進行安裝。以下介紹具體安裝過程(以Solaris 8為例)。
               SUN Solstice DiskSuite軟件存在于Solaris8系統安裝盤的software 2 of 2中,也就是平常所說的Solaris 8安裝盤的第3張(通常所說的Solaris 8安裝盤有4張:install ,software 1 of 2,software 2 of 2,language)。軟件具體目錄如下: /sol_8_401_sparc_2/Solaris_8/EA/products/DiskSuite_4.2.1
              其中, sol_8_401為操作系統版本號,本例中的操作系統版本號為Solaris 8 0401。DiskSuite_4.2.1為SUN Solstice DiskSuite軟件版本號,此版本為4.2.1(如果沒有安裝介質,可以到SUN的網站免費下載軟件包)。SUN Solstice DiskSuite軟件的安裝路徑在/usr/opt下,所以您的/usr下至少需要30兆空間來安裝SUN Solstice DiskSuite軟件。
              軟件安裝方法有兩種,在圖形界面環境下可以直接執行以上路徑中的installer腳本程序。啟動圖形界面,進而根據下一步提示完成安裝。除了 installer腳本程序,我們通常利用命令行通過安裝軟件包來安裝SUN Solstice DiskSuite。SUN Solstice DiskSuite軟件包存在目錄為: sol_8_401_sparc_2/Solaris_8/EA/products/DiskSuite_4.2.1/sparc/packages/

              以下為安裝實例:
              1.進入Packages所在的目錄
                #cd /cdrom/cdrom0/Solaris_8/EA
                #cd /products/DiskSuite_4.2.1/sparc/Packages
              2.查看軟件包
                # ls
                SUNWlvma SUNWlvmg SUNWlvmr SUNWmdg SUNWmdja SUNWmdnr SUNWmdnu SUNWmdr SUNWmdu SUNWmdx

              3.添加軟件包
                # pkgadd -d . (注:“.”為安裝路徑為當前目錄,不可省略)
                he following packages are available:
                1 SUNWlvma Solaris Volume Management API's
                (sparc) 1.0,REV=2001.11.02.03.17
                2 SUNWlvmg Solaris Volume Management Application
                (sparc) 1.0,REV=2001.11.14.03.19
                3 SUNWlvmr Solaris Volume Management (root)
                (sparc) 1.0,REV=2001.11.14.03.19
                4 SUNWmdg Solstice DiskSuite Tool
                (sparc) 4.2.1,REV=1999.11.04.18.29
                5 SUNWmdja Solstice DiskSuite Japanese localization
                (sparc) 4.2.1,REV=1999.12.09.15.37
                6 SUNWmdnr Solstice DiskSuite Log Daemon Configuration Files
                (sparc) 4.2.1,REV=1999.11.04.18.29
                7 SUNWmdnu Solstice DiskSuite Log Daemon
                (sparc) 4.2.1,REV=1999.11.04.18.29
                8 SUNWmdr Solstice DiskSuite Drivers
                (sparc) 4.2.1,REV=1999.12.03.10.00
                9 SUNWmdu Solstice DiskSuite Commands
                (sparc) 4.2.1,REV=1999.11.04.18.29
                10 SUNWmdx Solstice DiskSuite Drivers(64-bit)
                (sparc) 4.2.1,REV=1999.11.04.18.29
                Select package(s) you wish to process (or 'all' to process all packages). (default: all) [?,??,q]:

              輸入all來安裝所有軟件包。在實際安裝過程中,筆者在較早的操作系統環境下曾經遇到安裝不成功的情況,原因是驅動不符。SUN Solstice DiskSuite驅動由8號軟件包SUNWmdr提供,大家如果碰到類似問題可以先安裝8號軟件包再安裝其他軟件包。也就是先在輸入欄輸入8,等待8號軟件包安裝成功后再對其它軟件包進行安裝。

            三. Metadevice State Database介紹
              SUN Solstice DiskSuite軟件在使用的時候需要調用一個其特有的Metadevice State Database小數據庫。Metadevice State Database通常被稱為Metadb,Metadb用來存儲SUN Solstice DiskSuite軟件對服務器硬盤的所有配置信息。換句話說,我們所做的所有磁盤、卷、RAID的結構,都存儲在Metadb當中。每當服務器重新啟動,SUN Solstice DiskSuite軟件就會自動調用Metadb中的信息,從而按照這些信息配置物理磁盤,掛接UFS文件系統,從而使操作系統正常啟動。相反,如果 Metadb被破壞了,操作系統就有可能無法正常啟動,進入單用戶狀態,甚至可能丟失硬盤數據。
              Metadb對于SUN Solstice DiskSuite軟件來講是異常重要的。因此我們會在建立Metadb時建立很多備份。一旦Metadb被破壞,SUN Solstice DiskSuite軟件可以自動將其恢復,如果Metadb損壞嚴重,我們也可以手動恢復Metadb,Metadb和其備份之間是實時備份的。
              在物理磁盤中,Metadb通常是磁盤的一個專有分區,也就是說在安裝操作系統的時候要預留出一個分區給Metadb。這個分區不能存在文件系統,一旦這個分區被做成Metadb,它也就不能再做其他應用。我們通常把磁盤的7號分區預留給Metadb,其大小通常為10兆到50兆。當然,大家也可以用別的分區代替7號分區預留給Metadb。
              在實際應用中,我們通常把SUN Solstice DiskSuite軟件下的所有硬盤都建立一個Metadb。每個硬盤上的Metadb分區又可以存在多個備份,所有這些備份之間都是實時同步的。這樣,我們就基本可以保證Metadb不會被破壞。
              Metadb必須在SUN Solstice DiskSuite軟件使用之前建立,否則SUN Solstice DiskSuite軟件不會生效。我們使用metadb命令,建立Metadevice State Database。下面是一個建立Metadevice State Database的實例:
              # metadb -a -f -c 3 cxtxdxsx cytydysy
              metadb為軟件命令;-a參數為增加metadb;-f參數為建立一個初始的metadb;-c參數后邊要加個數字,表示在一個物理分區里的 metadb備份的數目,此例中為每個分區里面3個備份;cxtxdxsx cytydysy 則是要建立metadb的物理分區,可以增加他的個數。注意,一旦metadb命令執行成功,預留分區上的其他數據將會被破壞。所以此條命令可以解釋為:在cxtxdxsx cytydysy兩個硬盤分區上建立初始的Metadb,每塊硬盤分區上的備份數目為3。

              下面介紹一個刪除Metadb的實例:
              # metadb –d cxtxdxsx
              -d參數為刪除metadb。這條命令可以解釋為:在cxtxdxsx分區上刪除原有的Metadb。我們要查看已經存在的Metadb可以用以下命令:
              # metadb –I
              最后,總結介紹一下metadb的參數:-a 參數意為增加一個metadb;-f 參數意為建立一個初始化的Metadb;-c n 其中n為數字,此參數意為在每一個分區中建立n個Metadb備份,如果不指定此參數,默認只建立一個Metadb;-d 參數意為刪除一個Metadb;-I參數意為查詢現有的Metadb的信息,包括備份個數,分布情況和Metadb的健康狀況。
              SUN Solstice DiskSuite軟件的使用接口有三種:基于圖形界面操作系統的GUI軟件界面方式、命令行方式、修改/etc/opt/SUNWmd/md.tab文件方式。其中,命令行方式應用廣泛,本文著重介紹命令行方式。

            四. RAID 0
              我們通常所說的RAID 0就是對硬盤進行串連,把兩個或更多的硬盤或分區串接起來,當做一個邏輯設備使用。RAID 0增加了X倍的數據空間(X為磁盤個數),但是數據的危險性也同時增加到X倍。例如,我們做一個3塊硬盤的RAID 0,那么數據空間就是原來的3倍,危險性也是原來的3倍,壞掉3塊盤中任何一塊硬盤,整個RAID的數據將會全部丟失。
              SUN Solstice DiskSuite軟件通過把物理硬盤上的邏輯分區設備轉換成特殊的DiskSuite設備,通常我們將DiskSuite設備稱為 “metadevice”,可以通過metainit命令把一個系統邏輯分區做成一個metadevice。metadevice的設備路徑和系統原來的設備路徑不同,塊設備路徑在/dev/md/dsk下,裸設備路徑在/dev/md/rdsk下。
              SUN Solstice DiskSuite軟件下的RAID 0有兩種方式:concatenation方式和 striping方式。它們為RAID 0提供了兩種不同的結構,而且各有各的優、缺點。
              1.concatenation方式
              concatenation方式把多個邏輯硬盤或分區首尾相接做成一個metadevice。具體結構如下圖:



              由于數據是從第一個block順序往下寫的,因此,concatenation方式具有良好的可擴展性。也就是說,管理員可以根據文件系統的實時使用情況隨時擴充metadevice的大小。然而,就是因為這種順序寫入的結構,使得concatenation方式有個致命的缺點,即IO性能降低。因為當數據寫入的時候,只要第一塊硬盤沒有寫滿,在其后的硬盤上,都不會有任何的寫入動作。這樣,也就造成了后面硬盤IO帶寬的浪費,從而使整個 concatenation方式的RAID 0 IO性能降低。下面是一個制作Concatenation方式RAID 0的實例:
              # metainit d1 2 1 /dev/dsk/c0t0d0s1 1 /dev/dsk/c0t1d0s5
              metainit為制作metadevice的命令;d1為metadevice的名字;metadevice的名字用dN表示,N可以從0到 127;2 為RAID 0的子盤個數,子盤實際上是以striping的方式做成的;1 為每個striping的方式做成的子盤中的分區個數,只有當這個數字為1的時候,我們做成的metadevice才是真正的concatenation 方式;/dev/dsk/c0t0d0s1 為要做成metadevice的物理分區。這條命令可以解釋為,用metainit命令制作一個concatenation方式的包含兩個子盤名為d1的 RAID 0,兩個子盤分別為/dev/dsk/c0t0d0s1和/dev/dsk/c0t1d0s5。

             ?。玻畇triping方式
              striping方式把多個邏輯硬盤以條帶化的方式連接成一個metadevice。具體方式參照下圖:



              striping方式就是把硬盤分割成若干條帶,數據寫入的時候和concatenation方式不同。striping方式在寫入數據的時候由于條帶化的分割,對所有的磁盤都有寫入操作,因此striping方式比concatenation方式有著良好的IO。但是,也由于這種條帶結構, striping方式不可以在線擴充文件系統容量。下面是一個制作striping方式RAID 0的實例:
              # metainit d2 1 2 /dev/dsk/c0t0d0s4 /dev/dsk/c0t0d0s5 –i 32k
              metainit為制作metadevice的命令;d2為metadevice的名字;1 為RAID 0的子盤個數,只有當這個數字為1的時候,我們做成的RAID 0才是真正的striping方式;2 為striping方式做成的子盤中的分區個數;/dev/dsk/c0t0d0s4 為要做成metadevice的物理分區;-i 參數為每個條帶的大?。?i 32k的意思是每個條帶為32k字節。這條命令可以解釋為,用metainit命令制作一個striping方式的包含兩個子盤名為d2的RAID 0,兩個子盤分別為/dev/dsk/ c0t0d0s4和/dev/dsk/ c0t0d0s4,每個條帶大小為32k。
              除了striping方式和concatenation方式,我們還可以通過metainit命令制作混合方式的RAID 0,不過很少有客戶會要求把RAID 0制作成混合方式。 下面是一個制作混合RAID 0的實例:
              #metainit d12 3 2 c0t1d0s1 c1t1d0s1 1 c0t2d0s3 3 c0t3d0s4 c1t3d0s4 c2t3d0s4
              這條命令可以解釋為,用metainit命令制作一個包含3個子盤名為d12的RAID 0,第一個子盤分別為c0t1d0s1和c1t1d0s1做成的striping,第二個子盤分別為c0t2d0s3,第三個子盤分別為c0t3d0s4 c1t3d0s4 c2t3d0s4做成的striping。

            五. RAID 1
              我們通常所說的RAID 1也就是對磁盤進行并聯,把兩個或更多的硬盤或分區并聯起來當做一個邏輯設備使用,起到鏡像的作用。RAID 1提供了數據最大限度的安全性,它的數據安全性是沒有RAID 1時候的X倍(X為子鏡像數目)。為了提高數據安全性RAID 1浪費了X-1倍的空間,磁盤利用率是沒有RAID 1時候的1/X,IO性能也略有下降。具體結構參照下圖:


               在RAID 1中,兩個子鏡像的數據是實時同步的。也就是說,兩個子鏡像在同一時間進行相同的讀寫操作。RAID 1的方式被廣泛的應用到系統盤的磁盤管理之中。就我個人的經驗,超過半數的客戶會要求管理員或者工程師對他的系統盤進行鏡像操作,以便于當一塊硬盤損壞之后,可以從另一塊鏡像盤引導操作系統。 下面是一個系統盤制作RAID 1完整的實例;
              1.首先規劃需要鏡像的硬盤
              d0 d10 d20 / s0
              d1 d11 d21 /var s1
              d2 d12 d22 swap s3
              d3 d13 d23 /export/home s6 

              d0,d1,d2,d3為對應各個分區的metadevice名字;d10等是每個metadevice對應的子鏡像。一般在做系統盤鏡像前,大家最好規劃一下各個metadevice的對應關系和子鏡像名字以免混亂,同時也便于后期的維護。

              2.硬盤分區同步
              # prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2  

              由于系統盤鏡象要求磁盤分區完全一致,兩塊硬盤分區大小也必須相同。如果兩塊物理硬盤大小不一致,在保持所有分區大小和順序完全一致后,其他的空間將會浪費掉。上面的prtvtoc可以使硬盤c0t1d0的分區和硬盤c0t0d0的分區相同,c0t0d0上的數據不會被破壞,但是c0t1d0上的數據將會被完全毀滅。除此之外,也可以利用系統中的format命令手動修改磁盤分區至完全一致。
              

              3.制作metadb
              # metadb -a -f -c 3 c0t0d0s7 c1t0d0s7

              在c0t0d0s7、c0t1d0s7兩個硬盤分區上建立初始的metadb,每塊硬盤分區上的備份數目為3。

              4.作根分區的兩路子鏡像
              # metainit -f d10 1 1 c0t0d0s0

              把c0t0d0s0制成名為d10的子鏡像,實際上這個子鏡像就是一個只包含一個分區的RAID 0。由于c0t0d0s0是操作系統的跟盤,分區中存在文件系統,所以使用參數-f在文件系統的分區中強制執行metainit命令,即:

               # metainit d20 1 1 c0t1d0s0

              把c0t1d0s0制作成名為d20的子鏡像。
              

              5.制作根分區的鏡像盤
              # metainit d0 -m d10  

              制名為d0的鏡像盤,其中一路子鏡像為d10。使用metainit命令和-f參數制作鏡像盤,所制的鏡像盤必須包含一路的子鏡像。這路鏡像硬盤必須是鏡像源盤所對應的分區,也就是說這路子鏡像中必須包含文件系統。

              6.備份vfstab
            、 # cp /etc/vfstab /etc/vfstab.backup

              由于要修改vfstab文件,所以事先要備份vfstab文件,以便修改失敗時可以通過單用戶或者光盤單用戶方式恢復。

              7.修改vfstab文件中關于根分區的項目
              # metaroot d0
              # lockfs
              # reboot

              把系統邏輯設備制作成metadevice后,需要修改/etc/vfstab文件,從而使下次重啟之后操作系統可以用metadevice的路徑掛接文件系統。通常情況要把類似于/dev/dsk/c0t0d0s0和/dev/rdsk/c0t0d0s0的行改為 /dev/md/dsk/c0t0d0s0和/dev/md/rdsk/c0t0d0s0。
              metaroot命令可以自動修改vfstab文件的有關根分區的內容, vfstab文件中非根分區的內容要進行手動修改。修改時注意項目之間要用tab鍵格開,不能用空格。
            當系統重新引導成功后,用df –k命令可以看出系統根分區的掛接目錄已經由原來的c0t0d0s0改為存在單路子鏡像的metadevice,這個metadevice的名字是d0。

              8.制作其他分區的鏡像盤

              其它分區鏡像盤的制作方法類似于根分區的制作方法。

              # metainit -f d11 1 1 c0t0d0s1
              制作c0t0d0硬盤上的1號分區的metadevice,名為d11。

              # metainit d21 1 1 c0t1d0s1
              制作c0t1d0硬盤上的1號分區的metadevice,名為d21。

              # metainit d1 -m d11
              制作/var分區鏡像的metadevice,名為d1。其中,包含單路子鏡像的d11。d11必是包含文件系統的源盤對應的分區。

              # metainit -f d12 1 1 c0t0d0s3
              制作c0t0d0硬盤上的3號分區的metadevice,名為d12。

              # metainit d22 1 1 c0t1d0s3
              制作c0t1d0硬盤上的3號分區的metadevice,名為d22。

              # metainit d2 -m d12
              制作swap分區鏡像的metadevice,名為d2,其中包含單路子鏡像的d12。d12必須是包含文件系統的源盤對應的分區。

              # metainit -f d13 1 1 c0t0d0s6
              制作c0t0d0硬盤上的6號分區的metadevice,名為d13。

              # metainit d23 1 1 c0t1d0s6
              制作c0t1d0硬盤上的1號分區的metadevice,名為d23。

              # metainit d3 -m d13
              制作/export/home分區鏡像的metadevice, 名為d3,其中包含單路子鏡像的d13。d13也必須是包含文件系統的源盤對應的分區。

              我們可以使用metastat命令來查看SUN Solstice DiskSuite軟件使用的狀態。metastat命令可以查看到各個metadevice的屬性——也就是它們的RAID級別,各個 metadevice之間的依存關系,各個metadevice和系統邏輯硬盤分區的關系,各個metadevice的健康狀況以及同步時顯示同步百分比。在實際應用中,metastat是一個非常有用的命令,系統管理員和工程師可以很容易地從metastat命令的輸出中觀察到各個 metadevice的結構和健康狀況。我們還可以使用metaclear命令清除對硬盤的metadevice操作。這個命令可以理解為是 metainit的反向命令。例如:
              # metaclear d0

              9.將另外一路子鏡像盤加入到鏡像盤中

              # metattach d0 d20
              # metattach d1 d21
              # metattach d2 d22
              # metattach d3 d23

              分別把子鏡像d20、d21、d22、d23加入相應的鏡像盤。我們使用metattach命令把另外一路子鏡像添加到鏡像盤中。metattach命令的格式是:metattach 鏡像盤名子鏡像盤名,這兩個名字必須都是metadevice名稱。同樣的,我們還經常使用metadetach命令將一路子鏡像盤從鏡像盤中分離出去。 metadetach命令和metattach命令的作用是相反的。
            在使用metattach命令把另外一路子鏡像添加到鏡像盤之后,兩路子鏡像會進行同步,這個同步的過程比較漫長。

              #metastat | grep %

              查看鏡像同步百分比。可以使用此命令查看所有分區同步的百分比。

              10.修改/etc/vfstab文件中關于其它分區的項目
              metaroot命令只能修改vfstab文件中關于根分區的項目,非根分區的項目需要手動修改。當修改vfstab文件和同步進程全部完成之后,可以重新引導操作系統,至此,系統盤鏡像制作完畢。

            六.RAID 5
              RAID 5是一種帶有校驗位的RAID形式。RAID 5的構成至少需要3塊硬盤。它在把物理硬盤以類似于striping方式排列起來,并在其中加入校驗位。在RAID 5中,校驗位是以Z字形的順序排列的。這樣排列的好處是,一旦其中任何一塊硬盤損壞,RAID 5都可以至少占有2個數據模塊和一個校驗模塊中至少兩項。而另外一項總可以根據已經存在的兩項算出。也就是說RAID 5的空間可以增加到沒有RAID 5之前的X-1倍,而同時又可以允許任何一塊硬盤故障而不丟失數據(X為RAID 5中的物理硬盤個數)。RAID 5的具體結構可以參照下圖。

              可利用metainit命令制作RAID 5,下面是一個制作RAID 5的實例:

              # metainit /dev/md/dsk/d12 –r /dev/dsk/c0t0d0s3 /dev/dsk/c0t0d0s4 /dev/dsk/c0t0d0s5 –i 8k

              我們用-r參數代表制作RAID 5,在-r參數后邊加上需要做成RAID5的子磁盤;用 –i 參數來指定RAID 5中每個條帶的大小。這條命令可以解釋為用/dev/dsk/c0t0d0s3、/dev/dsk/c0t0d0s4、 /dev/dsk/c0t0d0s5三個分區制作一個名為d12的RAID 5,每個條帶的大小為8k。同樣可以用metastat命令查看RAID 5 的各項信息。由于RAID 5有著很好的容量和容錯的平衡性,所以在實際項目實施中,RAID 5被應用十分普遍。由于通常情況下RAID 5都是用來存儲數據,所以系統管理員需要經常觀察RAID 5的健康狀況,從而確保數據安全。
            ========
            以下是使用心得(在一臺SunFire V880使用):
            1 在第0個盤上安裝Solaris系統,由于無知沒有預留metadb的空間
            2 通過format命令,在第1、2個盤上安裝metadb分區(c1t1d0s7,c1t2d0s7),在1-5盤上聯立33GB的數據分區(c1t1d0s1,c1t2d0s1,c1t3d0s1,c1t4d0s1,c1t5d0s1)
            3 建立meta數據
            #metadb -a -f -c 3 c1t1d0s7 c1t2d0s7
            ??? 結果:
            # metadb
            ??????? flags?????????? first blk?????? block count
            ???? a??????? u???????? 16????????????? 8192??????????? /dev/dsk/c1t1d0s7
            ???? a??????? u???????? 8208??????????? 8192??????????? /dev/dsk/c1t1d0s7
            ???? a??????? u???????? 16400?????????? 8192??????????? /dev/dsk/c1t1d0s7
            ???? a??????? u???????? 16????????????? 8192??????????? /dev/dsk/c1t2d0s7
            ???? a??????? u???????? 8208??????????? 8192??????????? /dev/dsk/c1t2d0s7
            ???? a??????? u???????? 16400?????????? 8192??????????? /dev/dsk/c1t2d0s7
            4 建立RAID5
            ?#metainit /dev/md/dsk/d12 -r /dev/dsk/c1t1d0s1 /dev/dsk/c1t2d0s1 \??
            ? ?? /dev/dsk/c1t3d0s1 /dev/dsk/c1t4d0s1 /dev/dsk/c1t5d0s1 -i 8k
            結果:
            # metastat d12: RAID
            ??? 狀態: 初始化
            ??? 正在進行初始化: 56.6% 完成
            ??? 交錯: 16 塊
            ??? 大小: 276821091 塊 (131 GB)
            原始設備:
            ??? 大?。?276823296 塊 (131 GB)
            ??????? 設備?????? 引導塊?????? Dbase???????? 狀態 Reloc? 熱備援
            ??????? c1t1d0s1?????? 3059??????? 否?????? 初始化??? 是
            ??????? c1t2d0s1?????? 3059??????? 否?????? 初始化??? 是
            ??????? c1t3d0s1?????? 3059??????? 否?????? 初始化??? 是
            ??????? c1t4d0s1?????? 3059??????? 否?????? 初始化??? 是
            ??????? c1t5d0s1?????? 3059??????? 否?????? 初始化??? 是

            Device Relocation Information:
            Device?? Reloc? Device ID
            c1t1d0?? 是???? id1,ssd@n20000004cf7f1ce9
            c1t2d0?? 是???? id1,ssd@n20000004cf7f1757
            c1t3d0?? 是???? id1,ssd@n20000004cf7f178b
            c1t4d0?? 是???? id1,ssd@n2000002037f834fc
            c1t5d0?? 是???? id1,ssd@n20000004cf7f1a88
            5 格式化
            # newfs? /dev/md/dsk/d12
            newfs: 建構新的文件系統 /dev/md/rdsk/d12: (y/n)? y
            警告:最后一個未分配柱面中的 2974 扇區
            /dev/md/rdsk/d12:?????? 在 45056 磁道上,48 扇區的 128 柱面的 276821090 扇區
            ??????? 135166.5MB 在 2816 柱面群組 (16 c/g, 48.00MB/g, 5824 i/g)
            超塊 (fsck -F ufs -o b=#) 備份在:
            ?32, 98464, 196896, 295328, 393760, 492192, 590624, 689056, 787488, 885920,
            初始化柱面組:
            ........................................................
            最后 10 個柱面組的超級塊備份位置:
            ?275847968, 275946400, 276044832, 276143264, 276241696, 276340128, 276438560,
            ?276536992, 276635424, 276733856
            6 mount
            # mount /dev/md/dsk/d12 /data/
            在/etc/vfstab中添加
            /dev/md/dsk/d12???????? /dev/md/dsk/d12???????? /data?? ufs???? 2?????? yes???? -



            posted @ 2006-06-19 23:42 五點半 閱讀(1155) | 評論 (0)編輯 收藏

            試用Google SpreadSheets

            ??? 昨天注冊了一下,今天收到google的邀請,試用了一把。感覺不錯,可以編輯電子表格,可以打開本地的Excel文件,至于功能,對于我已經足夠了。但速度很慢,據說WikiCalc可以離線操作。
            ? ? 一點感想,計算機行業中有時創意比技術還重要,看這一批一批被應試教育抹殺了思想的孩子長大后還有大膽的創意嗎?

            posted @ 2006-06-11 10:33 五點半 閱讀(446) | 評論 (1)編輯 收藏

            使用Lua

            ??? 一直以為,只有游戲開發才會使用Lua。昨天認真的看了一天《Programming in Lua》才知道自己完全錯了。Lua真是非常強大的動態語言。
            ??? 初步決定在現在進行的項目中使用Lua作為配置管理(本來是使用類似ini的配置文件,不要說我太土哦)。但現有的封裝Lua API的C++庫好象都不是太好用,決定自己寫一個簡單的,先用著。

            posted @ 2006-06-11 09:34 五點半 閱讀(539) | 評論 (0)編輯 收藏

            讀《編程卓越之道(第一卷 深入理解計算機)》

            ??? 星期天,買了這本書。其實有一本國外教材就叫《深入理解計算機》,厚厚的、很經典、很實用。這本是《編程卓越之道》的第一卷,作者就是那個寫《匯編程序的藝術》的Randall Hyde。這本書可以看成是厚《深入理解計算機》的簡略本,把程序中最重要的計算機系統知識為讀者疏離了一遍。書中沒有太多的理論,讀起來很輕松愉快,但我可以保證,讀者的計算機系統知識再全面也能有一些收獲,可能是不知道的、可能是以前沒有注意到的、也可能是知道又遺忘的。

            posted @ 2006-06-07 11:26 五點半 閱讀(1808) | 評論 (1)編輯 收藏

            僅列出標題
            共4頁: 1 2 3 4 
            99久久精品国产麻豆| 日本强好片久久久久久AAA| 久久久久久久尹人综合网亚洲| 99久久久国产精品免费无卡顿| 香蕉久久一区二区不卡无毒影院| 久久成人国产精品一区二区| 久久无码AV一区二区三区| 国产亚洲精品美女久久久| 久久久久18| av无码久久久久久不卡网站 | 亚洲国产日韩欧美综合久久| 久久精品国产日本波多野结衣| 国产精品99久久免费观看| 久久婷婷午色综合夜啪| 秋霞久久国产精品电影院| 色综合久久久久综合体桃花网| 亚洲国产精品久久66| 久久久精品人妻一区二区三区四| 91超碰碰碰碰久久久久久综合| 精品久久久无码21p发布| 久久精品国产亚洲av瑜伽| 99久久er这里只有精品18| 成人综合久久精品色婷婷| 精品久久久久久久中文字幕| 久久久久无码精品国产不卡| 久久人人爽人人人人爽AV| 亚洲国产综合久久天堂| 久久久久国产视频电影| 精品国产综合区久久久久久 | 久久国产精品国产自线拍免费| 久久精品国产久精国产一老狼| 久久中文字幕视频、最近更新| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 久久天天躁狠狠躁夜夜avapp| 日本精品久久久久久久久免费| 久久高清一级毛片| 久久e热在这里只有国产中文精品99| 国产精品99精品久久免费| 精品久久777| 精品国产91久久久久久久a| 久久九九久精品国产免费直播|