天天看點

LVM應用(一)

一、LVM簡介

    LVM:logical Volume Manager,Version 2

    他們的驅動剛好相反

    raid用的核心子產品是:md

    lvm用的是dm:device mapper 裝置映射,将一個或多個底層快裝置組織成一個邏輯裝置的子產品

        dm:也能實作raid

        pv--vg(pe,pe,,,,)-lv

        PE:phsical Extent //預設是4M

            //把PV所擁有的存儲空間劃分為n個存儲塊,

            //PV建立後,并沒有pe,隻有加入到vg後,才會具有pe,每個vg對pe的大小定義是不同的

            //pe的大小取決于vg的定義

        lv //就是指定多少個pe組成一個fs的過程

            //少了可以加,多了可以減去(不損壞已經存在檔案)

            //預設centos就是使用的lv

        LE //一旦PE被配置設定給某個lv後,pe就變成了logical extent

    //可以動态伸縮,但是使用軟體實作,一旦資料發生損壞,修複困難,因為檔案不是直接存儲在硬碟上的,而是在軟體上組織的

        /dev/mapper/VG_NAME-LV_NAME  //例如vg0-root,vg0上一個叫root的vg

            /dev/VG_NAME-LV_NAME  // /dev/vol0/root 也是可以的,一個連結檔案,便于識别

            ls -l /dev/mapper/* //都是連結檔案,到/dev/dm0.*檔案

二、建立和使用邏輯卷

     fdisk /dev/sdb (10g,5g,8g) 8e

     partx -a /dev/sdb

    pv相關指令:

        pvck

        pvcreate

            -f 強制

            -v verbose

            -u 指定uuid

            pvcreate /dev/sdb3

        pvdisplay //顯示詳細資訊

        pvmove //移動pv上的pe資料,為了移除該pv

        pvremove 

        pvresize

        pvs        //簡要顯示pv

        pvscan

    vg相關指令

        vgs

        vgdisplay

        vgremove

        vgextend

        vgreduce

        vgsplit

        vgcreate

            -s 指定pe大小,bBsSkKmMgGtTpPeE

            vgcreate -s 4M myvg /dev/sdb3

            //縮減操作,需要先移動資料,然後操作

            vgextend myvg /dev/sdb5  //添加一個新的硬碟

            vgdisplay myvg

            pvmove /dev/sdb5 //移動pv,sdb5上的資料

            vgreduce myvg /dev/sdb5 //先從vg移除

            //移除的話,pvmove移動資料,vgreduce,最後pvremove

    lv相關指令

        lvcreate

            -L lv的大小

            -n name

            -l 指定邏輯盤區的數量pe的數量,-L和-l使用一個就可以

                lv的大小必須小于将要使用的vg的大小

                lv的大小未必精确,取決于pe的大小,pe預設為4M

                lvcreate -L 4G -n lv0 myvg

                ls -l /dev/mapper/myvg-lv0

                mke2fs -t ext4 -b 1024 -L MYLV /dev/myvg/lv0

                mount /dev/myvg/lv0 /tmp/test2 

            擴充邏輯卷://問題不大

                lvextend -L [+][mMgGtT] /dev/VG_name/LV_name

                        //增加了,和增加到,使用+ 和不使用+

                lvextend -L 5G /dev/myvg/lv0

                df -h //仍然是4G,已經挂載了,改變lv大小後,不會直接改變

                resize2fs /dev/myvg/lv0 //重新計算大小,不需要解除安裝

                        //resize2fs修改lv的邏輯邊界,lvextend修改的是實體邊界

            縮減邏輯卷://必須umount

                先縮減邏輯邊界,然後縮減實體邊界

                umount /dev/myvg/lv0 

                e2fsck -f /dev/myvg/lv0 //強制檢查

                resize2fs /dev/myvg/lv0  3G

                lvreduce -L [-][mMgGtT] /dev/VG_NAME/LV_NAME

            邏輯{_____}                resize2fs

            實體{_____________}        lvreduce,lvextend

        lvs

        lvdisplay

        lvextend

        lvremove

        lvmove

        lvconf //設定lv的配置檔案

        lvreduce

        lvresize

三、快照

    找了一張照片,例如把fs上的所有的中繼資料備份了一份(不精确)

    然後始終監控着中繼資料,

    建立一個快照:意味着建立了一個螢幕,監視着中繼資料

        //快照卷是通路源檔案的另外一個入口一樣,源檔案上的資料發生改變的話,相應也會變化

        //任何時刻當中繼資料要發生變化的時候,先複制一份到快照卷上,

        //再次通路的時候,沒有發生改變的,找原卷,發生改變的,檢視快照卷上的複制的那一份

    //快照卷上存儲的是發生變化的檔案

    //螢幕,監視資料的改變

    //快照卷的大小,最好根據

    //建立快照卷後,新增加的資料不會需要做增量備份

    //同一卷組中,不能跨fs

    -p r|rw //快照卷隻能是隻讀的,一般建議

    -n|--name 原卷 -s|--snapshot 目标卷 

    lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name 

    lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/lv0

    mount /dev/myvg/mylv_snap /mnt/test2

    在源卷中修改檔案,在這裡看是否發生改變

    快照卷是在原有vg的基礎上建立的,不用格式化

    umount /mnt/test2

    lvremove /dev/myvg/mylv_snap -y

四、檔案系統挂載使用

    挂載CD光牒裝置

        CD光牒裝置檔案:/dev/cdrom,sr0,dvd,sr1,cdrw

    mount -r /dev/cdrom /media/cdrom 

    fdisk -l //檢視CD光牒驅動

五、dd指令

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

    bs=# :block size ,複制單元大小

    count=# 複制多少個bs

    dd if=/etc/fstab of=/tmp/fstab bs=1 count=100 //1位元組,複制前100個位元組

    磁盤拷貝:

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

        dd if=/dev/zero of=/dev/sda bs=512 count=1 //清除mbr

六、LVM裝置驗證

1.ls /dev/mapper

<a href="https://s3.51cto.com/oss/201711/14/44b5e5fa1bebfec8b6066895d7d18f5f.png" target="_blank"></a>

<a href="https://s2.51cto.com/oss/201711/14/42bd4e42b57ad24bfb3a003deb7fcfb4.png-wh_500x0-wm_3-wmp_4-s_2293615180.png" target="_blank"></a>

//這兩種類都是lvm

<a href="https://s3.51cto.com/oss/201711/14/9a7635d7f7404a807ed83cd94c8935da.png-wh_500x0-wm_3-wmp_4-s_3181954482.png" target="_blank"></a>

//其中252是主裝置好,2,1分别是此裝置号

sar -d 1 2 //也可以看到裝置号

練習題

    1.建立一個至少有兩個pv組成的大小為20g的名為testvg的vg,要求PE大小為16MB,而後在卷組中建立大小為5G的邏輯卷testlv,挂載到/usr目錄

    2.建立使用者archlinux,要求其家目錄為/users/archlinux,而後su到archlinux使用者,複制/etc/pam.d目錄至自己的家目錄

    3.擴充testlv至7G,要求archlinux使用者的檔案不能丢失

    4.收縮testlv至3g,要求archlinux使用者的檔案不能丢失

    5.對testlv建立快照,并嘗試基于快照備份資料,驗證快照的功能

本文轉自MT_IT51CTO部落格,原文連結:http://blog.51cto.com/hmtk520/1950136,如需轉載請自行聯系原作者