LV2 卷組 特殊文件

兩種特殊文件;

   設備文件;

      mknod

   符號鏈接文件;


  鏈接;就是訪問一個文件的不同的路徑

    硬鏈接;

       數據塊指針指向同一個數據塊的文件;

       每次創建硬鏈接都會增加inode的引用計數

      注意;不能跨文件系統創建硬鏈接,目錄文件不能創建硬鏈接


    符號鏈接(軟鏈接)

        用於存儲被鏈接文件的路徑的文件

        可以誇文件系統創建,

        也可以對目錄創建符號鏈接

        每次都必須進行兩組路徑的查找


   ln命令;

    ln [option...] src_file link_file

      -s,--symbolic;創建符號鏈接,省略該選項,即創建硬鏈接

      -v, --verbose;顯示鏈接創建的過程可以,最好鏈接至


   注意;創建符號鏈接時,如果想要保證該鏈接文件被複制或移動到其他路徑中依然可以,最好鏈接至被鏈接文件的絕對路徑


   版本管理;

      apache;

       2.2  2.4

       將不同的版本的軟件分別放置於不同的目錄中,使用符號,將軟件鏈接的一個統一的路徑;


       /usr/local/apache ---> /usr/local/apache-2.2


       /usr/local/apache-2.2

       /usr/local/apache-2.4


RAID;

  IDE

  SCSI


  Redundant Array of Inexpensive Disks;廉價磁盤冗餘陣列

  Redundant Array of Independent Disks;獨立磁盤冗餘陣列


  RAID;

    提高IO能力

      使多個磁盤實現並行讀寫;

      磁盤條帶化,chunk

    提高耐用性

      磁盤冗餘實現

      即使磁盤發生故障或損壞,也不會影響數據;


  RAID的實現方式;

    硬件實現;

      通過硬件RAID控制器或適配器,將所需的磁盤組織成RAID,而後安裝OS;

      BIOS程序


    軟件模擬實現;

      操作系統通過系統調用的方式模擬RAID實現


  RAID的操作級別;

      RAID0;

        提高IO性能,條帶卷,strip

         至少2塊磁盤

         沒有冗餘容錯能力

         沒有存儲空間浪費,要求每個磁盤必須提供相同大小的存儲空間;

      RAID1;

        提供高可用性,鏡像卷,mirror

         需要2塊磁盤

         先將數據存入主盤,然後再將數據存入從盤;

         寫入效率較低,略微提升讀效率

         磁盤空間的整體利用率爲50%

         有冗餘容錯的能力

      RAID2;

      RAID3;

      RAID4;

        多塊磁盤進行異或運算,得到校驗值,並且使用專門的一塊磁盤存放校驗值;

        即使一塊磁盤損壞,也不會丟失數據

        校驗盤IO壓力巨大,很容易形成性能瓶頸;

      RAID5;

        多塊磁盤進行循環冗餘校驗嗎,將校驗值隨機分配到不同磁盤的條帶中;

        讀,寫IO性能均明顯提升,又不會出現性能瓶頸

        磁盤利用率=(n-1)/n * 100%

        冗餘容錯

        至少需要3塊磁盤

      RAID6;

        多塊磁盤進行兩輪循環冗餘校驗,將校驗值隨機分配到兩個不同磁盤的條帶中

        讀,寫IO性能均明顯提升,又不會出現性能瓶頸

        最多運行兩塊磁盤出現故障或損壞依然保證數據可用

        代價就是增加了計算校驗值的時間;


  RAID混合級別;

      RAID01;

        先做RAID0,在做RAID1

      RAID10;

        先做RAID1,在做RAID0

      RAID50;

        先做RAID5,在做RAID0

      RAID7;

        可以理解爲一個存儲計算機,自帶操作系統以及相應的管理工具,可以獨立運行


      JBOD;just a bunch of disks;僅僅就是一組磁盤

        將多塊磁盤的存儲空間連接到一起,順序存放數據


  在centos上實現軟RAID

      內核提供一個md的模塊(multi disks,multi devices)

      用戶空間需要mdadm的工具,來設置和修改md內核模塊的參數;


    mdadm;模式化工具

      mdadm [mode] <raiddevice> [option...] <component device>

        模式包括;

           創建模式;-C

                -n#(數字):使用#(數字)塊硬盤創建RAID設備

                -l#(數字);指示RAID的級別

                -a{yes|no};允許系統或不允許系統自動創建md設備文件;

                -c CHUNK_SIZE;指定CHUNK的大小,

                -x#(數字);指定在陣列中空閒磁盤的數量

           裝配模式;-A

           

              根據/etc/mdadm.conf指示的RAID進行裝配

           管理模式;-a,-r,-f

           雜項;

             -D,--scan

                顯示RAID設備的詳細信息

                mdadm -D --scan > /etc/mdadm.conf

                該配置文件用於RAID設備的再次裝配

             -S;停止RAID的設備


      dd


  LVM2;

    logical volume manager,邏輯卷管理器,Version 2

    IBM


    使用純軟件的方式組織一個或多個底層的塊設備,將他們重新定義爲一個邏輯塊設備的解決方案;


    利用內核中的dm模塊實現;

    dm;device mapper,設備映射表

    dm模塊可以將一個或多個底層塊設備組織成一個邏輯塊設備;

    用戶空間中的相應命令來向dm模塊發出系統調用,就可以完成後邏輯塊設備的管理;


    邏輯塊設備同意存放在/dev/dm -#(數字)


    使用DM機制實現LVM管理的步驟;

       1.創建並標識物理卷

           注意;如果用來創建物理卷的設備是普通分區,一定要將分區的ID修改爲8e;

       2.基於PV創建卷組,邏輯塊設備,創建卷組的同時指定PE的大小

           注意;一旦PE大小被指定,就不允許更改,

       3.在已經創建的卷組中創建邏輯卷

       4.在邏輯卷中創建文件系統(高級格式化)

       5.掛載


    物理卷的管理操作;

      pvcreate;創建物理卷

      pvdisplay;顯示物理卷的詳細信息

      pvs;顯示物理卷的簡單信息

      pvremove;刪除物理卷

      pvmove;將某個物理卷中的所有的PE移動到其他物理卷中;


    卷組的管理操作;

      vgcreate;創建卷組

         -s #(數字){kkmMgG};指定PE的大小,如果省略選項,默認的PE爲4M

      vgremove;刪除卷組

      vgextend;擴展卷組容量,將新的pv添加到卷組中

      vgreduce;縮減卷組容量,將pv從卷組中移除,在做此操作之前,應該先使用pvmove,保證被移除的pv上沒有被佔用的PE

      vgdisplay;顯示卷組的詳細信息

      vgs;顯示卷組的簡短信息


    邏輯卷的管理操作;

      lvcreate;創建邏輯卷

         -L lv_SIZE(#(數字){kk|mM|gG});指定邏輯卷的大小,不能超過卷組的容量

         -l #(數字)%{FREE|VG|ORIGIN|PVS};指定邏輯卷佔用對應存儲單元的百分比

         -n LV_name;指定邏輯卷的名稱

         -i #(數字);在創建邏輯卷的時候,以條帶的方式創建,並指明這個邏輯捲上有#(數字)個條帶

         -I #(數字);在創建邏輯卷的時候,以條帶的方式創建,並指明CHUNK的大小;

      lvremove;刪除邏輯卷

      lvdisplay;顯示邏輯卷的詳細信息

      lvs;顯示邏輯卷的簡短信息

      lvchange;修改LV的狀態

         -ay;激活邏輯卷

         -an;停用邏輯卷

      lvextend;擴展邏輯卷的空間; 

         注意;一定要擴展邏輯卷的物理邊界,在擴展邏輯卷的邏輯邊界

               使用ext系列文件系統的時候,resize2fs命令擴展邏輯邊界

      lvreduce;縮減邏輯卷的空間;

         注意;先縮減邏輯卷的邏輯邊界,在縮減邏輯卷的物理邊界

               使用ext系列文件系統的時候,resize2fs命令縮減邏輯邊界使用


        爲了更好的使用邏輯卷,爲/dev/dm-#(數字)設備創建了兩個符號鏈接爲念;

           /dev/mapper/VG_NAME-LV_NAME  -->  ../dm-#(數字)

           /dev/VG_NAME/LV_NAME --> ../dm -#(數字)


    邏輯卷的快照;

        快照,本身就是一種邏輯卷;目標邏輯卷的另外一個訪問路徑;

        lvcreate -s -p r -L 15G -n mylv-snopshot /PATH/TO/DEST_LV

           -L SIZE:指定快照邏輯卷的大小

           -s:創建一個快照邏輯卷

           -p r:創建處理的邏輯卷是隻讀權限

           -n SNAPSHOT_NAME:指定快照邏輯卷的名稱


三個命令:

  df命令:

    df - report file system disk space usage

    df [OPTION]... [FILE]...

      -h, --human-readble:單位轉換

      -l, --local:只顯示本地文件系統,不顯示網絡文件系統

      -i, --inodes:顯示inode使用狀態

      -T, --print-type:顯示文件系統類型

      -P, --portability:使用POSIX輸出格式,更易於閱讀



  du命令:

    du - estimate file space usage

    du [OPTION]... [FILE]...

      -s, sumary,:顯示整個目錄彙總的文件大小

      -h, human-readble:單位轉換


  dd命令:convert and copy a file

    dd [OPERAND]...

    dd OPTION


    常見的OPERAND:

      dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

      bs=BYTES:block size, 複製單元大小

      count=N:複製多少個bs

      of=FILE:寫到所命名的文件而不是到標準輸出

      if=FILE:從所命名文件讀取而不是從標準輸入

      ibs=BYTES:一次讀size個byte

      obs=BYTES:一次寫size個byte

      skip=BLOCKS:從開頭忽略blocks個ibs大小的塊

      seek=BLOCKS:從開頭忽略blocks個obs大小的塊

      conv=conversion[,conversion...]:用指定的參數轉換文件。

      轉換參數:

        ascii:轉換EBCDIC爲ASCII。

        ebcdic:轉換ASCII爲EBCDIC。

        block:把每一行轉換爲長度爲cbs的記錄,不足部分用空格填充。

        unblock:使每一行的長度都爲cbs,不足部分用空格填充。

        lcase:把大寫字符轉換爲小寫字符。

        ucase:把小寫字符轉換爲大寫字符。

        swab:交換輸入的每對字節。

        noerror:讀取出錯時繼續讀取。

        notrunc:不截短輸出文件。

        sync:把每個輸入塊填充到ibs個字節,不足部分用空(NULL)字符補齊


  磁盤拷貝:

    ~]# dd if=/dev/sda of=/dev/sdb

  備份MBR:

    ~]# dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

  破壞MBR中的bootloader:

    ~]# dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

  有二進制文件fileA,size>2K。現在想從第64個字節位置開始讀取,需要讀取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個字節開始的位置,替換128Bytes,請問如何實現?

    ~]# dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc

  備份:

    將本地的/dev/sdx整盤備份到/dev/sdy

      ~]# dd if=/dev/sdx of=/dev/sdy將本地的/dev/sdx整盤備份到/dev/sdy

    將/dev/sdx全盤數據備份到指定路徑的p_w_picpath文件

      ~]# dd if=/dev/sdx of=/path/to/p_w_picpath

    備份/dev/sdx全盤數據,並利用gzip工具進行壓縮,保存到指定路徑

      ~]# dd if=/dev/sdx | gzip >/path/to/p_w_picpath.gz


  恢復:

    將備份文件恢復到指定盤

      ~]# dd if=/path/to/p_w_picpath of=/dev/sdx

    將壓縮的備份文件恢復到指定盤

      ~]# gzip -dc /path/to/p_w_picpath.gz | dd of=/dev/sdx


  拷貝內存資料到硬盤

    將內存裏的數據拷貝到root目錄下的mem.bin文件

      ~]# dd if=/dev/mem of=/root/mem.bin bs=1024


  從光盤拷貝iso鏡像

    拷貝光盤數據到root文件夾下,並保存爲cd.iso文件

      ~]# dd if=/dev/cdrom of=/root/cd.iso


  銷燬磁盤數據

    利用隨機的數據填充硬盤,在某些必要的場合可以用來銷燬數據。執行此操作以後,/dev/sda1將無法掛載,創建和拷貝操作無法執行。

      ~]# dd if=/dev/urandom of=/dev/sda1


  得到最恰當的block size

    通過比較dd指令輸出中所顯示的命令執行時間,即可確定系統最佳的block size大小

      ~]# dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file

      ~]# dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file

      ~]# dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file

      ~]# dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file


  測試硬盤讀寫速度

    通過上兩個命令輸出的執行時間,可以計算出測試硬盤的讀/寫速度

      ~]# dd if=/root/1Gb.file bs=64k | dd of=/dev/null

      ~]# dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000


  修復硬盤

    當硬盤較長時間(比如1,2年)放置不使用後,磁盤上會產生消磁點。當磁頭讀到這些區域時會遇到困難,並可能導致I/O錯誤。當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢。上邊的命令有可能使這些數據起死回生。且這個過程是安全,高效的。

      ~]# dd if=/dev/sda of=/dev/sda


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章