中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
邏輯卷管理:使用LVM2工具執(zhí)行卷的構(gòu)建和管理、建立備份快照等各種功能
from site : http://club.topsage.com/thread-191017-1-2.html

邏輯卷管理(logical volume management,LVM)在 Linux? 內(nèi)核 2.4v1 和 2.6.9v2 中就已經(jīng)出現(xiàn)了。本文討論 LVM2 最有用的特性(LVM2 是一個相當新的用戶空間工具集,它提供邏輯卷管理功能),并提供幾種簡化系統(tǒng)管理任務的方法。

 邏輯卷管理(LVM)指系統(tǒng)將物理卷管理抽象到更高的層次,常常會形成更簡單的管理模式。通過使用 LVM,所有物理磁盤和分區(qū),無論它們的大小和分布方式如何,都被抽象為單一存儲(single storage)源。例如,在圖 1 所示的物理到邏輯映射布局中,最大的磁盤是 80GB 的,那么用戶如何創(chuàng)建更大(比如 150GB)的文件系統(tǒng)呢?

 

圖 1. 物理到邏輯的映射


 

LVM 可以將分區(qū)和磁盤聚合成一個虛擬磁盤(virtual disk),從而用小的存儲空間組成一個統(tǒng)一的大空間。這個虛擬磁盤在 LVM 術語中稱為卷組(volume group)。

建立比最大的磁盤還大的文件系統(tǒng)并不是這種高級存儲管理方法的惟一用途。還可以使用 LVM 完成以下任務:

  • 在磁盤池中添加磁盤和分區(qū),對現(xiàn)有的文件系統(tǒng)進行在線擴展
  • 用一個 160GB 磁盤替換兩個 80GB 磁盤,而不需要讓系統(tǒng)離線,也不需要在磁盤之間手工轉(zhuǎn)移數(shù)據(jù)
  • 當存儲空間超過所需的空間量時,從池中去除磁盤,從而縮小文件系統(tǒng)
  • 使用快照(snapshot)執(zhí)行一致的備份(本文后面會進一步討論)

LVM2 是一個新的用戶空間工具集,它為 Linux 提供邏輯卷管理功能。它完全向后兼容原來的 LVM 工具集。在本文中,將介紹 LVM2 最有用的特性以及幾種簡化系統(tǒng)管理任務的方法。(隨便說一句,如果您正在尋找關于 LVM 的基本指南,那么可以看看 參考資料 中列出的 LVM HowTo。)

我們來看看 LVM 的結(jié)構(gòu)是什么樣子的。




LVM 的結(jié)構(gòu)

LVM 被組織為三種元素:

  • 卷(Volume):物理 和邏輯卷 和卷組
  • 區(qū)段(Extent):物理 和邏輯區(qū)段
  • 設備映射器(Device mapper):Linux 內(nèi)核模塊

Linux LVM 組織為物理卷(PV)、卷組(VG)和邏輯卷(LV)。物理卷 是物理磁盤或物理磁盤分區(qū)(比如 /dev/hda 或 /dev/hdb1)。卷組 是物理卷的集合。卷組 可以在邏輯上劃分成多個邏輯卷。

圖 2 顯示一個三個磁盤構(gòu)成的布局。


圖 2. 物理到邏輯卷的映射


 

物理磁盤 0 上的所有四個分區(qū)(/dev/hda[1-4])以及完整的物理磁盤 1(/dev/hdb)和物理磁盤 2(/dev/hdd)作為物理卷添加到卷組 VG0 中。

卷組是實現(xiàn) n-to-m 映射的關鍵(也就是,將 n 個 PV 看作 m 個 LV)。在將 PV 分配給卷組之后, 就可以創(chuàng)建任意大小的邏輯卷(只要不超過 VG 的大?。?。在圖 2 的示例中,創(chuàng)建了一個稱為 LV0 的卷組,并給其他 LV 留下了一些空間(這些空間也可以用來應付 LV0 以后的增長)。

LVM 中的邏輯卷就相當于物理磁盤分區(qū);在實際使用中,它們就是 物理磁盤分區(qū)。

在創(chuàng)建 LV 之后,可以使用任何文件系統(tǒng)對它進行格式化并將它掛載在某個掛載點上,然后就可以開始使用它了。圖 3 顯示一個經(jīng)過格式化的邏輯卷 LV0 被掛載在 /var。


圖 3. 物理卷到文件系統(tǒng)的映射


區(qū)段

為了實現(xiàn) n-to-m 物理到邏輯卷映射,PV 和 VG 的基本塊必須具有相同的大小;這些基本塊稱為物理區(qū)段(PE)和邏輯區(qū)段(LE)。盡管 n 個物理卷映射到 m 個邏輯卷,但是 PE 和 LE 總是一對一映射的。

在使用 LVM2 時,對于每個 PV/LV 的最大區(qū)段數(shù)量并沒有限制。默認的區(qū)段大小是 4MB,對于大多數(shù)配置不需要修改這個設置,因為區(qū)段的大小并不影響 I/O 性能。但是,區(qū)段數(shù)量太多會降低 LVM 工具的效率,所以可以使用比較大的區(qū)段,從而降低區(qū)段數(shù)量。但是注意,在一個 VG 中不能混用不同的區(qū)段大小,而且用 LVM 修改區(qū)段大小是一種不安全的操作,會破壞數(shù)據(jù)。所以建議在初始設置時選擇一個區(qū)段大小,以后不再修改。

不同的區(qū)段大小意味著不同的 VG 粒度。例如,如果選擇的區(qū)段大小是 4GB,那么只能以 4GB 的整數(shù)倍縮小或擴展 LV。

圖 4 用 PE 和 LE 顯示與前一個示例相同的布局(VG0 中的空閑空間也由空閑 LE 組成,盡管圖中沒有顯示它們)。


圖 4. 物理到邏輯區(qū)段的映射

 

另外,請注意圖 4 中的區(qū)段分配策略。LVM2 并非總是連續(xù)分配 PE;細節(jié)參見關于 lvm 的 Linux 手冊頁(見 參考資料 中的鏈接)。系統(tǒng)管理員可以設置不同的分配策略,但是一般不需要這么做,因為默認策略(名為一般分配策略(normal allocation policy))使用符合常規(guī)的規(guī)則,比如不把并行的條帶放在同一物理卷上。

如果決定創(chuàng)建第二個 LV(LV1),那么最終的 PE 布局可能像圖 5 這樣。


圖 5. 物理到邏輯區(qū)段的映射


設備映射器

設備映射器(也稱為 dm_mod)是一個 Linux 內(nèi)核模塊(也可以是內(nèi)置的),最早出現(xiàn)在 2.6.9 內(nèi)核中。它的作用是對設備進行映射 —— LVM2 必須使用這個模塊。

在大多數(shù)主流發(fā)行版中,設備映射器會被默認安裝,常常會在引導時或者在安裝或啟用 LVM2/EVMS 包時自動裝載(EVMS 是一種替代 LVM 的工具,更多信息見 參考資料)。如果沒有啟用這個模塊,那么對 dm_mod 執(zhí)行 modprobe 命令,在發(fā)行版的文檔中查找在引導時啟用它的方法:modprobe dm_mod。

在創(chuàng)建 VG 和 LV 時, 可以給它們起一個有意義的名稱(而不是像前面的示例那樣使用 VG0、LV0 和 LV1 等名稱)。設備映射器的作用就是將這些名稱正確地映射到物理設備。對于前面的示例,設備映射器會在 /dev 文件系統(tǒng)中創(chuàng)建下面的設備節(jié)點:

  • /dev/mapper/VG0-LV0
    • /dev/VG0/LV0 是以上節(jié)點的鏈接
  • /dev/mapper/VG0-LV1
    • /dev/VG0/LV1 是以上節(jié)點的鏈接

(注意名稱的格式標準:/dev/{vg_name}/{lv_name} -> /dev/mapper/{vg_name}{lv_name})。

與物理磁盤相反,無法直接訪問卷組(這意味著沒有 /dev/mapper/VG0 這樣的文件,也不能執(zhí)行 dd if=/dev/VG0 of=dev/VG1)。常常使用 lvm(8) 命令訪問卷組。

 

常見任務

在使用 LVM2 時常常執(zhí)行的任務包括系統(tǒng)檢驗(是否安裝了 LVM2)以及創(chuàng)建、擴展和管理卷。






系統(tǒng)準備好運行 LVM2 了嗎?


檢查您的 Linux 發(fā)行版是否安裝了 LVM2 軟件包。如果還沒有,就安裝它(最好安裝發(fā)行版附帶的軟件包)。

設備映射器模塊必須在系統(tǒng)啟動時裝載。用 lsmod | grep dm_mod 命令檢查當前是否裝載了這個模塊。如果沒有裝載,那么可能需要安裝并配置更多的軟件包(文檔會說明如何啟用 LVM2)。

如果只是想測試一下(或者挽救某個系統(tǒng)),那么可以使用以下命令啟動 LVM2:


清單 1. 啟動 LVM2 的基本命令
                        #this should load the Device-mapper module                        modprobe dm_mod                        #this should find all the PVs in your physical disks                        pvscan                        #this should activete all the Volume Groups                        vgchange -ay                        

如果打算將根文件系統(tǒng)放在一個 LVM LV 中,那么還要注意 initial-ramdisk 映像。同樣,發(fā)行版常常會負責處理這個問題 —— 在安裝 LVM2 包時,它們常常會重新構(gòu)建或更新 initrd 映像,在其中添加適當?shù)膬?nèi)核模塊和啟動腳本。但是,可能需要查看發(fā)行版的文檔,確保系統(tǒng)支持 LVM2 根文件系統(tǒng)。

注意,通常只有當探測到根文件系統(tǒng)在一個 VG 中時,initial-ramdisk 映像才會啟用 LVM。這種探測常常是通過分析 root= 內(nèi)核參數(shù)執(zhí)行的。不同的發(fā)行版以不同的方式判斷根文件系統(tǒng)是否在卷組中。細節(jié)參見發(fā)行版的文檔。如果不確定的話,就需要檢查 initrd 或 initramdisk 的配置。






創(chuàng)建新的卷


使用您喜歡的分區(qū)工具(比如 fdisk、parted 或 gparted),創(chuàng)建一個供 LVM 使用的新分區(qū)。盡管 LVM 支持在整個磁盤上使用 LVM,但是 建議這么做:其他操作系統(tǒng)可能認為這個磁盤沒有初始化,可能會破壞它!更好的方法是創(chuàng)建一個覆蓋整個磁盤的分區(qū)。

大多數(shù)分區(qū)工具常常默認使用分區(qū) ID 0x83(或 Linux)來創(chuàng)建新分區(qū)??梢允褂眠@個默認 ID,但是為了便于組織,最好將它改為 0x8e(或 Linux LVM)。

在創(chuàng)建分區(qū)之后,應該會在分區(qū)表中看到一個(或多個)Linux LVM 分區(qū):

root@klausk:/tmp/a# fdisk -l                        Disk /dev/hda: 80.0 GB, 80026361856 bytes                        255 heads, 63 sectors/track, 9729 cylinders                        Units = cylinders of 16065 * 512 = 8225280 bytes                        Device Boot      Start         End      Blocks   Id  System                        /dev/hda1   *           1        1623    13036716    7  HPFS/NTFS                        /dev/hda2            1624        2103     3855600   8e  Linux LVM                        /dev/hda3            2104        2740     5116702+  83  Linux                        /dev/hda4            3000        9729    54058725    5  Extended                        /dev/hda5            9569        9729     1293232+  82  Linux swap / Solaris                        /dev/hda6            3000        4274    10241374+  83  Linux                        /dev/hda7            4275        5549    10241406   83  Linux                        /dev/hda8            5550        6824    10241406   83  Linux                        /dev/hda9            6825        8099    10241406   83  Linux                        /dev/hda10           8100        9568    11799711   8e  Linux LVM                        Partition table entries are not in disk order                        root@klausk:/tmp/a#                        

現(xiàn)在用 pvcreate 對每個分區(qū)進行初始化:


清單 2. 分區(qū)初始化
                        root@klausk:/tmp/a# pvcreate /dev/hda2 /dev/hda10                        Physical volume "/dev/hda2" successfully created                        Physical volume "/dev/hda10" successfully created                        root@klausk:/tmp/a#                        

在一個步驟中同時創(chuàng)建 PV 和 VG:vgcreate


清單 3. 創(chuàng)建 PV 和 VG
                        root@klausk:~# vgcreate test-volume /dev/hda2 /dev/hda10                        Volume group "test-volume" successfully created                        root@klausk:~#                        

上面的命令創(chuàng)建一個稱為 test-volume 的邏輯卷,它使用 /dev/hda2 和 /dev/hda10 作為最初的 PV。

在創(chuàng)建 VG test-volume 之后,使用 vgdisplay 命令查看剛創(chuàng)建的 VG 的基本信息:


清單 4. 查看剛創(chuàng)建的 VG 的基本信息
                        root@klausk:/dev# vgdisplay -v test-volume                        Using volume group(s) on command line                        Finding volume group "test-volume"                        --- Volume group ---                        VG Name               test-volume                        System ID                        Format                lvm2                        Metadata Areas        2                        Metadata Sequence No  1                        VG Access             read/write                        VG Status             resizable                        MAX LV                0                        Cur LV                0                        Open LV               0                        Max PV                0                        Cur PV                2                        Act PV                2                        VG Size               14.93 GB                        PE Size               4.00 MB                        Total PE              3821                        Alloc PE / Size       0 / 0                        Free  PE / Size       3821 / 14.93 GB                        VG UUID               lk8oco-ndQA-yIMZ-ZWhu-LtYX-T2D7-7sGKaV                        --- Physical volumes ---                        PV Name               /dev/hda2                        PV UUID               8LTWlw-p1OJ-dF6w-ZfMI-PCuo-8CiU-CT4Oc6                        PV Status             allocatable                        Total PE / Free PE    941 / 941                        PV Name               /dev/hda10                        PV UUID               vC9Lwb-wvgU-UZnF-0YcE-KMBb-rCmU-x1G3hw                        PV Status             allocatable                        Total PE / Free PE    2880 / 2880                        root@klausk:/dev#                        

在清單 4 中,可以看到有兩個 PV 被分配給這個 VG,總大小為 14.93GB,有 3,821 個 4MB 的 PE,這些 PE 都是空閑的!

既然卷組已經(jīng)準備好了,就可以像使用磁盤一樣用它創(chuàng)建分區(qū)(LV)、刪除分區(qū)和重新設置分區(qū)大小 —— 注意,卷組是一個抽象實體,只有 LVM 工具集能夠看到它們。使用 lvcreate 創(chuàng)建一個新的邏輯卷:


清單 5. 創(chuàng)建新的邏輯卷(分區(qū))
                        root@klausk:/# lvcreate -L 5G -n data test-volume                        Logical volume "data" created                        root@klausk:/#                        

清單 5 創(chuàng)建一個名為 data 的 5GB LV。創(chuàng)建這個 LV 之后,可以檢查它的設備節(jié)點:


清單 6. 檢查 LV 的設備節(jié)點
                        root@klausk:/# ls -l /dev/mapper/test--volume-data                        brw-rw---- 1 root disk 253, 4 2006-11-28 17:48 /dev/mapper/test--volume-data                        root@klausk:/# ls -l /dev/test-volume/data                        lrwxrwxrwx 1 root root 29 2006-11-28 17:48 /dev/test-volume/data ->                        /dev/mapper/test--volume-data                        root@klausk:/#                        

還可以用 lvdisplay 命令查看 LV 的屬性:


清單 7. 查看 LV 的屬性
                        root@klausk:~# lvdisplay /dev/test-volume/data                        --- Logical volume ---                        LV Name                /dev/test-volume/data                        VG Name                test-volume                        LV UUID                FZK4le-RzHx-VfLz-tLjK-0xXH-mOML-lfucOH                        LV Write Access        read/write                        LV Status              available                        # open                 0                        LV Size                5.00 GB                        Current LE             1280                        Segments               1                        Allocation             inherit                        Read ahead sectors     0                        Block device           253:4                        root@klausk:~#                        

在這里可以看到,在實際使用時 LV 的名稱/路徑是 /dev/{VG_name}/{LV_name},比如 /dev/test-volume/data。除了用作 /dev/{VG_name}/{LV_name} 鏈接的目標之外,不應該在其他地方使用 /dev/mapper/{VG_name}-{LV_name} 文件。大多數(shù) LVM 命令要求以 /dev/{vg-name}/{lv-name} 格式指定操作的目標。

建立邏輯卷之后,可以使用任何文件系統(tǒng)對它進行格式化,然后將它掛載在某個掛載點上:


清單 8. 掛載 LV
                        root@klausk:~# mkfs.reiserfs /dev/test-volume/data                        root@klausk:~# mkdir /data                        root@klausk:~# mount -t reiserfs /dev/test-volume/data /data/                        root@klausk:~# df -h /data                        Filesystem            Size  Used Avail Use% Mounted on                        /dev/mapper/test--volume-data                        5.0G   33M  5.0G   1% /data                        root@klausk:~#                        

還可以編輯 fstab(5) 文件,從而在引導時自動掛載這個文件系統(tǒng):


清單 9. 自動掛載 LV
                        #mount Logical Volume 'data' under /data                        /dev/test-volume/data   /data   reiserfs        defaults        0 2                        

在實際使用中,邏輯卷的表現(xiàn)就像一個塊設備,比如可以將它用作數(shù)據(jù)庫的原始分區(qū)。實際上,如果希望對數(shù)據(jù)庫執(zhí)行一致的備份,那么使用 LVM 快照是標準的最佳實踐。




擴展卷


擴展卷是非常容易的。如果卷組中有足夠的空閑空間,那么只需使用 lvextend 來擴展卷,不需要卸載它。然后,還要擴展邏輯卷中的文件系統(tǒng)(請記住,它們是兩回事兒)。根據(jù)所用文件系統(tǒng)的不同,也可以進行在線擴展(即在掛載狀態(tài)下進行擴展)。

如果 VG 中沒有足夠的空間,那么首先需要添加更多的物理磁盤。步驟如下:

  • 使用一個物理磁盤創(chuàng)建一個分區(qū)。建議將分區(qū)類型改為 0x8e(Linux LVM),這樣便于識別 LVM 分區(qū)/磁盤。使用 pvcreate 對物理磁盤進行初始化:pvcreate /dev/hda3。
  • 然后,使用 vgextend 將它添加到現(xiàn)有的 VG 中:vgextend test-volume /dev/hda2。

還可以同時創(chuàng)建或添加多個物理磁盤:

pvcreate /dev/hda2 /dev/hda3 /dev/hda5                        vgextend test-volume /dev/hda2 /dev/hda3 /dev/hda5                        

添加了 PV 之后,就有了足以擴展邏輯卷的空間,就可以使用 lvextend 擴展邏輯卷了:lvextend -L 8G /dev/test-volume/data。這個命令將 /dev/test-volume/data LV 的大小擴展到 8GB。

lvextend 有一些有用的參數(shù):

  • 如果希望讓 LV 增加 5GB,那么可以使用 -L +5G。
  • 可以指定擴展部分的位置(也就是,用哪些 PV 提供新的空間);只需將希望使用的 PV 附加在命令后面。
  • 還可以以 PE 為單位指定絕對/相對擴展大小。

細節(jié)參見 lvextend(8)

在擴展 LV 之后,不要忘記擴展文件系統(tǒng)(這樣才能實際使用增加的空間)。根據(jù)文件系統(tǒng)類型,這個操作可以在文件系統(tǒng)掛載狀態(tài)下在線執(zhí)行。

清單 10 是一個用 resize_reiserfs 重新設置 LV 大小的示例(隨便說一句,可以在掛載的文件系統(tǒng)上使用這個命令):resize_reiserfs /dev/test-volume/data。

 

 
 

管理卷


為了管理卷,需要知道如何減小 LV 和刪除 PV。

減小邏輯卷
可以按照擴展 LV 的方式使用 lvreduce 命令減小 LV。從 LVM 的角度來說,這個操作可以在卷在線的情況下執(zhí)行;但是,大多數(shù)文件系統(tǒng)不支持縮小在線文件系統(tǒng)。清單 10 給出這個過程的示例:

            #unmount LV            umount /path/to/mounted-volume            #shrink filesystem to 4G            resize_reiserfs -s 4G /dev/test-volume/data            #reduce LV            lvreduce -L 4G /dev/vg00/test            

請注意大小和單位:文件系統(tǒng)不應該比 LV 大!

刪除物理卷
假設出現(xiàn)了以下情況:一個卷組包含兩個 80GB 的磁盤,希望將它們替換為 160GB 的磁盤。在使用 LVM 時,可以按照添加 PV 的方式從 VG 中刪除 PV(即在在線情況下執(zhí)行刪除)。但是注意,不能刪除 LV 中正在使用的 PV。對于這些情況,可以使用 pvmove,它可以釋放在線的 PV,這樣就可以輕松地替換它們。在熱交換環(huán)境中,甚至可以交換所有磁盤,而根本不需要停機!

pvmove 的惟一要求是,VG 中連續(xù)空閑區(qū)段的數(shù)量必須等于要從 PV 中刪除的區(qū)段數(shù)量。沒有直接判斷連續(xù)空閑 PE 的最大數(shù)量的簡便方法,但是可以使用 pvdisplay -m 顯示 PV 分配圖:

            #shows the allocation map            pvdisplay -m            --- Physical volume ---            PV Name               /dev/hda6            VG Name               test-volume            PV Size               4.91 GB / not usable 1.34 MB            Allocatable           yes (but full)            PE Size (KByte)       4096            Total PE              1200            Free PE               0            Allocated PE          1200            PV UUID               BA99ay-tOcn-Atmd-LTCZ-2KQr-b4Z0-CJ0FjO            --- Physical Segments ---            Physical extent 0 to 2367:            Logical volume      /dev/test-volume/data            Logical extents     5692 to 8059            Physical extent 2368 to 2499:            Logical volume      /dev/test-volume/data            Logical extents     5560 to 5691            --- Physical volume ---            PV Name               /dev/hda7            VG Name               test-volume            PV Size               9.77 GB / not usable 1.37 MB            Allocatable           yes            PE Size (KByte)       4096            Total PE              2500            Free PE               1220            Allocated PE          1280            PV UUID               Es9jwb-IjiL-jtd5-TgBx-XSxK-Xshj-Wxnjni            --- Physical Segments ---            Physical extent 0 to 1279:            Logical volume      /dev/test-volume/LV0            Logical extents     0 to 1279            Physical extent 1280 to 2499:            FREE            

清單 11 顯示有 2,499-1,280 = 1,219 個連續(xù)空閑區(qū)段,這表示最多能夠?qū)?1,219 個區(qū)段從另一個 PV 轉(zhuǎn)移到 /dev/hda7。

如果希望釋放一個 PV 以便進行替換,那么最好禁止它的分配,這樣就可以在從卷組中刪除它之前確保它一直是空閑的。在轉(zhuǎn)移數(shù)據(jù)之前,執(zhí)行以下命令:

            #Disable /dev/hda6 allocation            pvchange -xn /dev/hda6            

釋放之后,PV /dev/hda6 的大小為 1,200 個區(qū)段,沒有空閑區(qū)段了。使用以下命令將數(shù)據(jù)轉(zhuǎn)移出這個 PV:

            #Move allocated extents out of /dev/hda6            pvmove -i 10 /dev/hda6            

清單 13 中的 -i 10 參數(shù)指示 pvmove 每 10 秒報告一次狀態(tài)。根據(jù)要轉(zhuǎn)移的數(shù)據(jù)量,這個操作可能要花費幾分鐘(甚至幾小時)。還可以使用 -b 參數(shù)將這個操作轉(zhuǎn)到后臺執(zhí)行。在后臺執(zhí)行的情況下,狀態(tài)報告會發(fā)送到系統(tǒng)日志。

如果沒有足以進行 pvmove 操作的連續(xù)空閑區(qū)段,那么可以在 VG 中添加 一個或多個磁盤/分區(qū),從而形成 pvmove 所需的連續(xù)空間。

其他有用的 LVM 操作
關于下面這些 LVM 操作的細節(jié),請查閱手冊頁:

  • pvresize:如果底層分區(qū)也已經(jīng)擴展了,那么可以用這個操作擴展 PV;如果分配圖允許的話,它也可以縮小 PV。
  • pvremove:銷毀 PV(清空它的元數(shù)據(jù))。只有在用 vgreduce 從 VG 中刪除 PV 之后,才能使用這個操作。
  • vgreduce:從卷組中刪除未分配的 PV,這會減小 VG。
  • vgmerge:將兩個 VG 合并成一個。目標 VG 可以是在線的!
  • vgsplit:分割一個卷組。
  • vgchange:修改一個 VG 的屬性和權限。
  • lvchange:修改一個 LV 的屬性和權限。
  • lvconvert:在線性卷和鏡像或快照之間進行轉(zhuǎn)換。


用快照執(zhí)行備份


如果在備份過程期間數(shù)據(jù)沒有發(fā)生變化,那么就能夠獲得一致的備份。如果不在備份期間停止系統(tǒng),就很難保證數(shù)據(jù)沒有變化。

Linux LVM 實現(xiàn)了一種稱為快照(Snapshot)的特性,它的作用就像是 “拍攝” 邏輯卷在某一時刻的照片。通過使用快照, 可以獲得同一 LV 的兩個拷貝 —— 一個可以用于備份,另一個繼續(xù)用于日常操作。

快照有兩大優(yōu)點:

  1. 快照的創(chuàng)建非???,不需要停止生產(chǎn)環(huán)境。
  2. 建立兩個拷貝,但是它們的大小并不一樣??煺帐褂玫目臻g僅僅是存儲兩個 LV 之間的差異所需的空間。

快照由一個例外列表(exception list)來實現(xiàn),每當 LV 之間出現(xiàn)差異時就會更新這個列表(正式的說法是 CoW,Copy-on-Write)。

創(chuàng)建新的快照

創(chuàng)建新的快照 LV 也是使用 lvcreate 命令,但是要指定 -s 參數(shù)和原來的 LV。在這種情況下,-L size 指定例外列表的大小,這影響快照支持的最大差異量,如果差異超過這個量,就無法保持一致性。


清單 14. 建立快照
                        #create a Snapshot LV called 'snap' from origin LV 'test'                        lvcreate -s -L 2G -n snap/dev/test-volume/test                        

可以使用 lvdisplay 查詢特殊信息,比如 CoW 的大小和使用情況:


清單 15. CoW 的大小和使用情況
                        lvdisplay /dev/vg00/snap                        --- Logical volume ---                        LV Name                /dev/vg00/snap                        VG Name                vg00                        LV UUID                QHVJYh-PR3s-A4SG-s4Aa-MyWN-Ra7a-HL47KL                        LV Write Access        read/write                        LV snapshot status     active destination for /dev/vg00/test                        LV Status              available                        # open                 0                        LV Size                4.00 GB                        Current LE             1024                        COW-table size         2.00 GB                        COW-table LE           512                        Allocated to snapshot  54.16%                        Snapshot chunk size    8.00 KB                        Segments               1                        Allocation             inherit                        Read ahead sectors     0                        Block device           254:5                        

清單 15 表明這個 CoW 的大小為 2GB,其中的 54.16 % 已經(jīng)使用了。

對于所有日常操作,快照看起來就是 原 LV 的一個拷貝。如果已經(jīng)建立了文件系統(tǒng)的話,可以用以下命令掛載它:

#mount snapshot volume                        mount -o ro /dev/test-volume/test /mnt/snap                        

在這個命令中,ro 標志表示將它掛載為只讀的。可以在 lvcreate 命令后面加上 -p r,這樣就在 LVM 級將它設置為只讀的。

掛載文件系統(tǒng)之后,就可以用 tarrsync 或其他備份工具執(zhí)行備份。如果 LV 不包含文件系統(tǒng),或者需要原始備份,那么也可以在這個設備節(jié)點上直接使用 dd

復制過程完成之后,就不需要快照了,這時只需用 lvremove 卸載并銷毀它:

#remove snapshot                        lvremove /dev/test-volume/snap                        

如果數(shù)據(jù)庫建立在 LV 上,并且需要一個一致的備份,那么一定要刷新表并在獲得讀取鎖(read-lock)的情況下建立快照卷(見下面的偽代碼):

SQL> flush tables read lock                        {create Snapshot}                        SQL> release read lock                        {start copy process from the snapshot LV}                        

備份腳本示例

清單 16 中的腳本直接取自我的筆記本電腦,我在這個腳本中使用 rsync 向一臺遠程服務器執(zhí)行每日備份。這個腳本并不適合企業(yè)環(huán)境;在企業(yè)環(huán)境中,帶歷史記錄的增量備份更合適,但概念是相同的。


清單 16. 簡單的備份腳本示例
                        #!/bin/sh                        # we need the dm-snapshot module                        modprobe dm-snapshot                        if [ -e /dev/vg00/home-snap ]                        then                        # remove left-overs, if any                        umount -f /mnt/home-snap && true                        lvremove -f /dev/vg00/home-snap                        fi                        # create snapshot, 1GB CoW space                        # that should be sufficient for accommodating changes during copy                        lvcreate -vs -p r -n home-snap -L 1G /dev/vg00/home                        mkdir -p /mnt/home-snap                        # mount recently-created snapshot as read-only                        mount -o ro /dev/vg00/home-snap /mnt/home-snap                        # magical rsync command__rsync -avhzPCi --delete -e "ssh -i /home/klausk/.ssh/id_rsa"
--filter '- .Trash/' --filter '- *~' --filter '- .local/share/Trash/'
--filter '- *.mp3' --filter '- *Cache*' --filter '- *cache*'
/mnt/home-snap/klausk klausk2@pokgsa.ibm.comThis e-mail address is being protected from spam bots, you need JavaScript enabled to view it :bkp/ # unmount and scrap snapshot LV umount /mnt/home-snap lvremove -f /dev/vg00/home-snap

在某些特殊情況下,無法估計備份周期或者復制過程很長,那么腳本可以用 lvdisplay 查詢 Snapshot CoW 的使用情況并根據(jù)需要擴展這個 LV。在極端情況下, 可以讓快照與原 LV 同樣大 —— 這樣就不需要執(zhí)行查詢,因為變化量不會比整個卷更大!

 
 
 
 

其他 LVM2 系統(tǒng)管理技巧


最后, 我要介紹一些可以用 LVM2 執(zhí)行的系統(tǒng)管理任務,包括按需虛擬化、用鏡像提高容錯能力以及透明地對塊設備執(zhí)行加密。

快照和虛擬化

在使用 LVM2 時,快照可以不是只讀的。這意味著,在創(chuàng)建快照之后, 可以像常規(guī)塊設備一樣掛載和讀寫快照。

因為流行的虛擬化系統(tǒng)(比如 Xen、VMWare、Qemu 和 KVM)可以將塊設備用作 guest 映像,所以可以創(chuàng)建這些映像的完整拷貝,并根據(jù)需要使用它們,它們就像是內(nèi)存占用量很低的虛擬機。這樣做的好處是部署迅速(創(chuàng)建快照的時間常常不超過幾秒)和節(jié)省空間(guest 共享原映像的大多數(shù)數(shù)據(jù))。

設置的步驟如下:

  1. 為原映像創(chuàng)建一個邏輯卷。
  2. 使用這個 LV 作為磁盤映像安裝 guest 虛擬機。
  3. 暫停這個虛擬機。內(nèi)存映像可以是一個常規(guī)文件,所有其他快照都放在里面。
  4. 為原 LV 創(chuàng)建一個可讀寫的快照。
  5. 使用快照卷作為磁盤映像生成一個新的虛擬機。如果需要的話,要修改網(wǎng)絡/控制臺設置。
  6. 登錄已經(jīng)創(chuàng)建的虛擬機,修改網(wǎng)絡設置/主機名。

完成這些步驟之后, 就可以讓用戶訪問剛創(chuàng)建的虛擬機了。如果需要另一個虛擬機,那么只需重復步驟 4 到 6(所以不需要重新安裝虛擬機)。還可以用一個腳本自動執(zhí)行這些步驟。

在使用完虛擬機之后, 可以停止虛擬機并銷毀快照。

 

更好的容錯能力

最近的 LVM2 開發(fā)成果為邏輯卷提供了高可用性。邏輯卷可以有兩個或更多的鏡像,鏡像可以放在不同的物理卷(或不同的設備)上。當在設備上發(fā)現(xiàn) I/O 錯誤時,可以使用 dmeventd 讓一個 PV 離線,而不會影響服務。更多信息請參考 lvcreate(8)、lvconvert(8)lvchange(8) 手冊頁。

如果硬件能夠支持的話,可以用 dm_multipath 通過不同的通道訪問同一設備,這樣的話在一個通道發(fā)生故障時,可以轉(zhuǎn)移到另一個通道。更多細節(jié)請參考 dm_multipathmultipathd 的文檔。

透明的設備加密

可以用 dm_crypt 對塊設備或邏輯卷執(zhí)行透明的加密。更多信息請參考 dm_crypt 的文檔和 cryptsetup(8) 手冊頁。

迅雷專鏈  gJ89XhWC.gif (6.8 KB)

 

邏輯卷管理:使用LVM2工具執(zhí)行卷的構(gòu)建和管理、建立備份快照等各種功能

迅雷專鏈  OIyVgJRM.gif (7.75 KB)

 

邏輯卷管理:使用LVM2工具執(zhí)行卷的構(gòu)建和管理、建立備份快照等各種功能

迅雷專鏈  iyRQWf8G.gif (9.72 KB)

 

邏輯卷管理:使用LVM2工具執(zhí)行卷的構(gòu)建和管理、建立備份快照等各種功能

迅雷專鏈  eEpCuYoq.gif (10.84 KB)

 

邏輯卷管理:使用LVM2工具執(zhí)行卷的構(gòu)建和管理、建立備份快照等各種功能

 
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Linuxeden.com---自由文檔- lvm(邏輯卷管理器)的介紹和常用功能流程實驗
LVM邏輯卷管理一PV/VG/LV的創(chuàng)建
存儲基礎知識之——磁盤陣列原理及操作實戰(zhàn) | 碼范 | Code Fine
lvm 用法
Linux LVM
Linux創(chuàng)建LVM(LogicalVolumeManager)基本過程及配置方法【轉(zhuǎn)載】
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服