LVM邏輯卷&RAID管理&磁盤配置詳解

LVM邏輯卷管理

應用場景:想象一下,你通過傳統的硬盤分區方式為某些用戶提供了一塊磁盤,隨著用戶數據的不斷增加,分區的容量告急。這時要增加容量,只能選擇用另一塊容量更大的硬盤或分區來替換,在這個過程中,你需要將數據先拷貝至新設備,拷貝完成之后,再用新設備替換容量告罄的設備。假設你很有耐心并且整個數據的拷貝過程是順順利利的,你也需要考慮靠背后文件的權限變化、替換過程中用戶業務終止造成的損失;即便你搞定了所有的問題,當用戶業務迎來快速增長,或者你業務增長估計不足,或者出于節省開支的考慮,你需要縮減用戶的硬盤空間,這時,你要怎么做呢?

還是來看看LVM吧。

LVM(Logical Volume Manager)是內核提供的一種邏輯卷管理器。適用于管理大型存儲設備,允許用戶動態調整文件系統的大小。LVM提供邏輯上的存儲設備,用戶不用再關心底層的物理硬盤。

一、邏輯卷的創建過程:

將一個或多個硬盤創建為PV(物理卷,Physical Volume),由一個或多個物理硬盤組合成VG(卷組,Volume Group),卷組是邏輯概念上的設備,其最小構成單位被稱為PE(物理長度,Physical Extended),再將指定個數的PE組合成LV(邏輯卷Logic Volume)

blob.png

二、創建邏輯卷

       實驗:給系統新增3塊硬盤,容量分別為20G、20G、10G。在此基礎上,創建一個名為newbie的VG,PE大小為8M,容量為35G,在VG的基礎上創建一個名為newbie_lv的LV,容量為25G。將其掛載至/newbie目錄,文件系統要求為xfs。

blob.png

       2.1 創建PV

              要達到容量為35G需求,需要對sdb或sdc進行分區,創建一個大小為5G的分區。以sdb為例。

blob.png

       注意:創建完成后,要將分區的類型轉換為LVM,類型選項8e。之后通知內核硬盤所做的改動:

       CentOS6:partx

       CentOS5、7:partxprobe

通過lsblk可查看到分區已創建完成。

blob.png

之后,開始創建PV

使用:pvcreate device

       pvcreate  /dev/sdb1

blob.png

因為之前sdd被使用過,并且創建了文件系統,系統詢問是否擦掉硬盤上的文件系統,測試用,刪之。

創建成功之后??梢酝ㄟ^pvs、pvdisplay??聪到y上的PV信息。pvdisplay能查看詳細信息。

blob.png

/dev/sda2為安裝系統時的配置。通過pvdisplay可以查看到每個pv的PE大小,總的PE數,剩余PE數,已使用PE數等信息。

~]#pvdisplay
"/dev/sdc" is a new physical volume of "20.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name                         #屬于哪個卷組,因為還沒有將其加入到卷組中,所以無信息
  PV Size               20.00 GiB     #PV大小
  Allocatable           NO
  PE Size               0          #PE大小
  Total PE              0          #總PE數
  Free PE               0          #剩余PE數
  Allocated PE          0              #已使用PE數
  PV UUID               ClySli-njRv-u4Ot-AuNL-6qte-jCt3-2bqXOj

       2.2 PV創建完成之后,將PV加入VG

根據實驗要求,大小為35G,名稱為newbie,PE大小為8M

       使用vgcreate命令

       vgcreate  vg_name [option] devices

       常用option:

              -s:指定PE的大小。默認為4M

blob.png

       創建成功之后,通過vgs、vgdisplay(查看詳細信息)查看VG的相關信息

       vgdisplay [vgname]

blob.png

       2.3 在vg的基礎上創建名為newbie_lv的邏輯卷,大小為25G

使用lvcreate命令創建lv

       lvcreate [options] vgname

       -n  lvname :指定lv名稱

-L  size:指定lv的大小,單位為{M|G|T}

-l pe_count:指定創建的lv包含的PE數量(一般情況下直接指定大小。)

blob.png

創建之后,查看,lvs、lvdisplay(詳細信息)

blob.png

lv在創建完成之后,其目錄存放于/dev目錄下,以dm-開頭。為了方便使用,創建了2個軟連接指向lv;分別為/dev/mapper/vgname-lvname、/dev/vgname/lvname,如圖:

blob.png

2.4 使用創建完成的lv

lv創建完成之后,就可以格式化和掛載使用了。此過程不再贅述

blob.png

 blob.png

三、邏輯卷的擴容和縮減

3.1 邏輯卷擴容

       LV的大小不能超過VG的大小,LV可擴展的大小即為VG的剩余大小。

       VG的大小由PV決定,若VG大小不足,增加新的PV至VG中即可。

在上文中,我們增加了一個大小為25G的LV,已知VG的大小為35G,怎樣將LV的大小擴容至45G。

       在前文中,增加的硬盤容量共計為50G,我們只使用了35G,還有15G可用。將剩余的15G劃分為一個分區,創建為PV,加入到VG中。

blob.png

blob.png

PV創建之后,使用vgextend來將PV加入VG

用法:vgextend  vgname  pvname

blob.png

VG容量擴展之后,就可以將LV的容量擴展至45G了。

使用lvcreate來擴展

用法:

lvcreate  lvname [option]

       常用option;

       -L m{M|G|T}:直接指定LV的大小為m  {M|G|T}
       -L + m{M|G|T}:在原有大小之上,再增加m{M|G|T}

注:請注意兩者之間的區別,并且,新增后的LV大小不能小于原有的大小

blob.png

這時,我們去查看/newbie是否相應的增加。注意在擴容的過程中沒有umount該LV

blob.png

發現/newbie的容量并沒有增加,這是因為邏輯卷邊界擴展之后,對應的文件系統邊界并沒有相應的擴展。需要注意的是,擴展ext系列的文件系統與xfs文件系統的方式并不一致。

       擴展ext系列文件系統的邊界:

       resize2fs  /dev/vg_name/lv_name

       擴展xfs文件系統的邊界:

       blob.png

擴展文件系統的邊界之后,整個邏輯卷的擴展才算成功。

3.2 縮減LV

在生成環境中,縮減LV是一個比較危險的操作,為了避免數據被破壞,在操作前應將LV上的數據備份。建議慎用此操作。

       將newbie_lv的大小縮減為40G。

邏輯卷的縮減順序:

              1)、先卸載,umount  /dev/vg_name-lv_name

              2)、強制檢測修復文件系統:

ext系列:e2fsck -f  /dev/vg_name-lv_name

                     xfs系列:xfs_repair  /dev/vg_name-lv_name

              3)、縮減文件系統(邏輯邊界):resize2fs /dev/vg_name/lv_name  m[MGT]

              4)、縮減lvm: lvreduce  -L  [-]#[MGT]  /dev/vg_name/lv_name

              5)、掛載使用:mount

google了下,發現xfs文件系統只能擴容,不能縮減,沒辦法,只好把LV的文件系統調整為ext4了。我擦!當然,有興趣的同志可以試試xfsdump和xfsrestore命令,前者用來備份,后者用來還原。

1)先卸載(注意:若將LV同時掛載到多個目錄上,應全部卸載之后再操作),再修改文件系統類型(ext文件系統忽略)

~]#mkfs.ext4 /dev/newbie/newbie_lv

blob.png

       2)強制檢測文件系統;縮減文件系統邏輯邊界,縮減LV

注意:在縮減時,是先縮減文件系統的邏輯邊界,再縮減LV

blob.png

       3)掛載使用。因為文件系統改變了,所以LV的UUID也發生了變化,在掛載時注意修改,

blob.png

RAID管理

RAID:Redundent Arrays of Independent Disks 獨立磁盤冗余陣列,其 思想是:將多塊獨立的磁盤按不同的方式組合為一個邏輯磁盤,從而提高存儲容量,提升存儲性能或提供數據備份功能

注意:RAID只是為磁盤自身提供冗余,避免出現因為磁盤損壞導致數據丟失的現象,并不能替代數據備份。

RAID實現的方式:

       硬件方式:生產環境中多采用此方式

              外接式磁盤陣列,通過擴展卡提供適配能力

              內接式磁盤陣列,主板集成RAID控制器

       軟件方式:

              Software RAID             

一、RAID級別:

不同的級別表示多塊磁盤組織在一起的工作方式不同。級別之間并無高低、上下之分。

       1、RAID-0:0,不含校驗和冗余的條帶卷(strip)

       數據被分割為多個部分,分別寫入每塊硬盤,所以能極大地提升存儲性能和存儲空間,磁盤利用率為100%,但無容錯能力,一旦某塊磁盤被損壞,則數據將被破壞,數據安全得不到保障。最少需要2塊磁盤。

例:下圖中,數據被同步分別存放于A、B、C三塊磁盤中。若每塊磁盤的容量為100G,則可利用的總容量為300G。因為沒有備份和校驗,若其中一塊磁盤損壞,則會導致文件無法讀取。

blob.png

       2、RAID-1:不含校驗的鏡像卷(mirror)

       使用磁盤鏡像技術,在一個磁盤上存放數據的同時也在另一個磁盤存放相同的數據。寫性能下降,讀取性能提升。具有冗余能力,數據安全得到保障,但最少需要2塊磁盤,磁盤利用率低,僅為50%

blob.png

        RAID2,3,4(不常用,不做介紹)

       3、RAID-5:

        數據以block為單位同步式分別寫入不同的磁盤上,并對數據作奇偶校驗,并將校驗碼存入磁盤,校驗碼交互存放在各個磁盤中,當某塊磁盤中的數據發送損壞時,可以通過其他2塊磁盤來計算出損壞盤的數據,從而保證了數據的安全,數據的讀寫性能也得到提升。校驗碼占用一個磁盤空間大小。可用空間:(n-1)/n。具有容錯能力:冗余1塊。最少需要3塊磁盤。還可以額外提供一塊磁盤用作spare,并不真正加入陣列中,但當陣列中的某塊磁盤損壞時,能自動替換損壞的磁盤。 

   blob.png 

       4、RAID-6:

              類似于RAID-5,但多用一塊磁盤做校驗。

磁盤利用率為(n-2)/n,

冗余2塊,

最少磁盤數為4

二、RAID組合模式:

1、RAID-10:RAID1和RAID0的組合,先做RAID1(優于RAID01)。繼承了RAID0的高效和RAID1的安全。磁盤利用率為50%,最少4塊磁盤。

       先將磁盤A和B做出一個RAID1,再將磁盤C和D做出一個RAID1,之后再將兩個RAID1做成RAID0。當數據寫入時,首先會議條帶的方式分別寫入由兩個RAID1組合成的RAID0中,隨后,在RAID1中又會以鏡像的方式,寫入數據時,同時備份該數據并寫入到陣列中的另一塊磁盤上。

blob.png

              2、RAID-01:RAID0和RAID1的組合,先做RAID0

              3、RAID-50

                   最少6塊磁盤                                     

三、軟RAID的實現方式:

       注:在生產環境中盡量不要使用這種方式。應該采用硬件的方式來實現RAID功能。

       使用mdadm命令來實現軟raid

madam:模式化的工具

              mdadm  [mode]  <RAIDdevice>  [OPTIONS]  <component-devices>

              支持的RAID級別:RAID0、RAID1、RAID4、RAID5、RAID6

              模式:

                     創建: -C

                     裝配: -A

                     監控: -F

                     管理: -f,-r,-a                  

              <RAIDdevice>:/dev/md#

              -C:創建模式

                     -n #:使用#個塊設備來創建此RAID

                     -l #:指明要創建的RAID的級別

                     -a {yes|no}:自動創建目標RAID設備的設備文件

                     -c CHUNK_SIZE:指明塊大小

                     -x #:指明空閑盤的個數

創建軟RAID的過程:

1)、創建磁盤分區。fdisk,并將分區格式修改為riad

       2)、創建RAID5

mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sdb{5,6,7,8}            

       3)、給RAID5創建文件系統

       4)、掛載該RAID。在/etc/fstab中掛載最好使用UUID來掛載

查看當前系統的磁盤陣列信息:cat /proc/mdstat

       mdadm  -D  /dev/md0   查看指定磁盤陣列的詳細信息

       mdadm   /dev/md0  -f  /dev/sdb5   將屬于某 磁盤陣列中的某塊磁盤指定為損壞

       mdadm   /dev/md0  -r /dev/sdb5    將陣列中損壞的磁盤移除

       mdadm   /dev/md0  -a  /dev/sdb5   為陣列增加新的磁盤

       mdadm  -S  /dev/md0     停止md設備

四、實戰演練:

例1:創建一個可用空間為1G的RAID1設備,文件系統為ext4,有一個空閑盤,開機可自動掛載至/backup目錄

       步驟:

       (1)新增一塊1G的硬盤

       (2)將其分為2個分區,大小分別為500M

       (3)創建raid1。

              mdadm –C /dev/md100 –a yes –n2 –l 1 /dev/sdb{1,2}

       (4)為raid1創建文件系統

              mkfs.ext4 /dev/md100

       (5)設置自動掛載

              mkdir /backup

              cat /etc/fstab

                     /dev/md100 /backup ext4 default 0 0

              mount -a 

例2:創建由三塊硬盤組成的可用空間為2G的RAID5設備,要求其chunk大小為256k,文件系統為ext4,開機可自動掛載至/mydata目錄

       步驟:

       (1)增加三塊硬盤,容量分別為500M、500M、1G

       (2)創建RAID5,指定chunk大小為256k

              mdadm –C /dev/md200 –c 256 –n 3 –l 5 /dev/sd{c,d,e}

       (3)創建文件系統

              mkfs.ext4 /dev/md100

       (4)設置自動掛載

              mkdir /mydata

              cat /etc/fstab

                     /dev/md200 /mydata ext4 default 0 0

              mount -a

五、磁盤配額

綜述:

配額在內核中執行,以文件系統為單位啟用。對不同組或者用戶的策略不同,可靈活應用。根據塊或者節點進行限制

如何實現磁盤配額限制:

       配額限制只能對磁盤進行操作

要對某個目錄進行限額,需要將其掛載至獨立的磁盤上。

       步驟:

              1、掛載時啟用配額選項

                     vim /etc/fstab;在掛載選項增加usrquota,grpquota

              2、創建配額數據庫

                     quotacheck -cug /home 

                            -c:創建

                            -u:usrquota

                            -g:grpquota

                     注:若提示權限問題,關閉selinux,setenforce 0

              3、啟用數據庫

                     quotaon /home

                     quotaon -p /home:查看數據庫是否啟用

              4、配置配額:三種方式

                     1)、edquota hadoop

                     文件格式:

blocks       soft         hard         inodes        soft              hard

已使用的大小   警告大小     限定大小    已創建文件數     警告文件數      限定文件數

                     2)、edquota  -p  hadoop  gentoo:參考hadoop用戶的配額設置gentoo用戶的配額限制

                     3)、setquota  hadoop 100000 150000 0 0 /home

              5、測試

                     quota  hadoop

                     repoquota /home

                     dd往目錄寫文件                  

注:如何判斷文件是否屬于該用戶:判斷文件的屬主,而不是文件的存放位置。

例:以給/home下每用戶限額1G為例。

       1)、給系統新增一塊10G的硬盤。將硬盤掛載至/mnt/home。將/home的數據拷貝至/mnt/home

       2)、卸載/mnt/home,將新增的磁盤設置自動掛載到/home目錄下,注意在掛載是,掛載特性應增加上usrquota,grpquota兩個選項。

       3)、quotacheck -cug /home/;若報錯,執行:setenforce 0

       4)、quotaon -p /home/

       5)、edquota hadoop,為hadoop用戶配置限額

       6)、edquota -p hadoop gentoo,參考hadoop用戶配置gentoo用戶的配額

原創文章,作者:M20-1鐘明波,如若轉載,請注明出處:http://www.www58058.com/42311

(0)
M20-1鐘明波M20-1鐘明波
上一篇 2016-09-02
下一篇 2016-09-02

相關推薦

  • 程序包管理:rpm、yum以及(make)源代碼編譯安裝

    程序包管理:rpm、yum以及(make)源代碼編譯安裝 在Linux上安裝程序一般都有三種方法:源代碼編譯安裝,rpm包安裝和rpm包的前端安裝yum, (rpm,和yum程序包管理器是針對CentOS6平臺的) 程序包管理方式都大同小異:  源代碼–>目標二進制格式(二進制程序、庫文件、配置文件、幫助文件)–&gt…

    Linux干貨 2017-01-10
  • RAID[Redundant Array of Independent Disks | 獨立硬盤冗余陣列 ]

    前言 一個技術要知其然還要知其所以然 RAID 獨立硬盤冗余陣列(RAID, Redundant Array of Independent Disks),舊稱廉價磁盤冗余陣列(Redundant Array of Inexpensive Disks),簡稱磁盤陣列 RAID的基本思想 其基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到…

    Linux干貨 2016-05-20
  • linux基于密鑰的認證

    生成密鑰對兒: [root@Ams ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa):  Enter passphrase (empty for no passph…

    Linux干貨 2016-08-02
  • N26-第十二周

    1、請描述一次完整的http請求處理過程;        1、建立或處理鏈接:接收請求或拒絕請求        2、接收請求:接收來自于網絡的請求報文中對某資源的一次請求的過程;接收請求的方式通常是并發訪問響應模型        3、處理請…

    2017-05-14
  • 計算機網絡基礎知識與Linux網絡配置

    本文主要內容是: 1.講述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 2、IP地址的分類有哪些?子網掩碼的表示形式及其作用 3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。 4、如何給網絡接口配置多個地址,有哪些方式? 5、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方…

    Linux干貨 2016-11-14
  • 文本處理三劍客之 Sed

         Sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。Sed主要用來自…

    2017-08-26
欧美性久久久久