8.31_Linux高級文件系統管理之磁盤配額、RAID和LVM的使用

磁盤配額Quota

磁盤配額(Quota)的作用:

  在Linux系統中,由於是多用戶、多任務的環境,所以會有多用戶共同使用一個硬盤空間的情況發生,如果其中有少數幾個用戶大量佔掉了硬盤空間的話,那肯定影響其他用戶的使用權限。因此管理員應該適當限制硬盤的空間給用戶,以妥善分配系統資源。


磁盤配額的一般用途

   比較常使用的幾種用途:

    針對www server,例如:每個人的網頁空間的容量限制。

    針對mail server,例如:每個人的郵件空間限制。

    針對file server,例如:每個人最大的可用網絡磁盤空間。

    限制某一用戶組所能使用的最大磁盤配額


配置配額系統:

   在內核中執行

   以整個文件系統爲單位啓用(即該目錄必須有獨立的掛載目錄)

   對不同組或者用戶的策略不同

   根據塊或者節點進行限制

    執行軟限制(soft limit)

    硬限制(hard limit)


初始化命令:

   分區掛載選項:usrquota、grpquota

   初始化數據庫:quotacheck


爲用戶設定配額

   開啓或者取消配額:quotaon、quotaoff

   直接編輯配額:edquota username

   在shell中直接編輯:

    etquota usename 4096 5120 40 50 /foo

   定義原始標準用戶

    edquota -p user1 user2


配額選項意義:

wKiom1fFY32DHeNmAABRXp6j6UM984.png

User:用戶名

---Block limits

used:已使用的磁盤空間

soft:軟上限,默認7天內可以超過這個磁盤上限

hard:硬上限,一定不能超過的磁盤上限

grace:當存儲超過soft的上限的時候,這個就是倒計時


---File limits

used:已經存放的文件的數量

soft:文件的軟上限,跟上面的soft差不多意思

hard:文件的硬上限,跟上面的soft差不多意思

grace:當文件超過soft的上限的時候,這個就是倒計時


報告配額狀態

   用戶調查:quota USERNAME

   配額概述:repquota /MOUNTZ_POINT

   其它工具:warnquota


示例:給/home目錄創建一個磁盤配額

確認/home目錄是否爲獨立分區,此處不爲獨立分區,所以需要先把家目錄設置成獨立分區

wKioL1fFM5aQ9ZXVAAAzXfm8EL8477.png

此處創建一個/dev/sda6的分區,並且掛載到/mnt/home,然後賦值/home目錄的所有文件到/mnt/home目錄下面,然後把/dev/sda6目錄掛載到/home,之後取消掛載/mnt/home,然後切換到普通用戶測試家目錄是否正常,如果一切正常就可以進行下一步的操作

wKioL1fFQq-RtiZOAADLmaVBBgw333.png

啓用配額掛載選項

vim /etc/fstab  加上,usrquota,grpquota

wKioL1fFRo7CN9cIAACYEvlLHas725.png創建配額數據庫

quotacheck  -cug /home,-c表示創建配額數據,-u表示user,-g表示組

如圖,centos6創建的時候提示權限受限,這個時候輸入setenforce 0可以暫時解除限制,這個限制是SeLinux限制的

wKiom1fFSFWjfSeKAACYEvlLHas002.png

wKioL1fFSFWyeG-WAAAHtlgC9ZU962.png

wKioL1fFSFWAQLWSAACoon5L5RA419.png

啓用數據庫

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

quotaon  /home 啓用數據庫

wKiom1fFSVyhxtuAAAAvhiN04tc159.png

配置配額項

edquota wan

編輯soft爲100000,約爲100m,hard爲120000約爲120m     

wKioL1fFT1fTfT98AAAZP4yfSO0314.png

wKiom1fFSc_zrIIVAAAaMyqHprs474.png

edquota -p wan mage 讓mage的用戶複製wan用戶的數據

wKiom1fFUF2CPB8PAAAQcHs34nY934.png

wKioL1fFUF2CPT6AAAAVsgCudpQ378.png

setquota wangcai 80000 120000 0 0 /home

wKiom1fFUc-QaHEPAAAtVYe91Sw365.png

測試磁盤配額是否生效

查看用戶的磁盤配額設置 quota wan

wKioL1fFUjXCg9IbAABYU6VaB8Q734.png

查看整個目錄的磁盤配額設置repquota /home

wKioL1fFUmuQ_ikcAABGtEdCUP0580.png

用dd工具創建大文件寫入數據測試

因爲該用戶限制的文件大小是,軟的100M,硬的120M

當創建80M大小的文件的時候,系統不會有任何提示

當創建大於100M小於120M的文件的時候,系統會提示配額的塊超標,但是依然能把文件寫入

當創建大於120M的文件的時候,因爲硬設置上限是120M,寫入文件失敗

wKiom1fFU0PRSoRHAACKyZHvXEY236.png

wKioL1fFVJWQOwmhAABKuNRoHaw659.png

取消quota

wKiom1fFZaWSQLKjAAAe9EhrPVE240.png


磁盤陣列---RAID


什麼是RAID?

RAID:Redundant Arrays of Inexpensive(Independent)Disks

1988年由加利福尼亞大學伯克利分校(University of California-Berkeley)“A Case for Redundant Arrays of Inexpensive Disks”。

多個磁盤合成一個“陣列”來提供更好的性能、冗餘,或者兩者都提供


常用級別:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD


RAID作用

提高IO能力:

   磁盤並行讀寫

提高耐用性;

   磁盤冗餘來實現

級別:多塊磁盤組織在一起的工作方式有所不同


RAID實現的方式:

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

內接式RAID:主板集成RAID控制器

   安裝OS前在BIOS裏配置

軟件RAID:通過OS實現


RAID級別及其作用

RAID-0:條帶卷,strip

    讀、寫性能提升;

    可用空間:100%全部磁盤總容量

    無容錯能力

    最少磁盤數:2, 2

工作原理:把數據平分放在各硬盤空間,RAID-0磁盤當其中一個磁盤壞掉的時候,所以的數據都會丟失

wKiom1fFaYvzQTSWAAAf9bA6rzg309.png



RAID-1: 鏡像卷,mirror

    讀性能提升、寫性能略有下降;

    可用空間:50%磁盤總容量

    有冗餘能力

    最少磁盤數:2, 2N

工作原理:把數據同時存放在多個硬盤冗餘備份

wKioL1fFarHTQOI1AAAUw8wX4mE923.png


RAID-4

    多塊數據盤異或運算值,存於專用校驗盤

    有容錯能力

    最少磁盤數:3

    容量:N-1

工作原理:其中一塊硬盤用來做校驗,其他盤用戶分散存儲數據,但是當有磁盤壞的時候,更換新的硬盤上面,需要校驗同步數據,壓力較大,校驗盤壓力較大容易壞

wKioL1fFa3Hhzm6vAAAgHGRvZDc812.png


RAID-5:

    讀、寫性能提升

    可用空間:(N-1)*min(S1,S2,...)

    有容錯能力:允許最多1塊磁盤損壞

    最少磁盤數:3, 3+

工作原理:把數據和校驗數據平分存放在各硬盤,但是當有磁盤壞的時候,更換新的硬盤上面,需要校驗同步數據,壓力較大

wKiom1fFbOCz7vEwAAAfv48Vxns458.png

RAID-6

    讀、寫性能提升

    可用空間:(N-2)*min(S1,S2,...)

    有容錯能力:允許最多2塊磁盤損壞

    最少磁盤數:4, 4+

工作原理:把兩個校驗的數據和數據平分存放在其他硬盤

wKioL1fFblvjzBx4AAAgSUFxX50940.png

RAID-10

    讀、寫性能提升

    可用空間:50%

    有容錯能力:每組鏡像最多隻能壞一塊

    最少磁盤數:4, 4+

工作原理:先做RAID1,再做RAID0

wKioL1fFb2WTIXouAAAgFomOj4U568.png

RAID-01

    讀、寫性能提升

    可用空間:50%

    有容錯能力:每組鏡像最多隻能壞一塊

    最少磁盤數:4, 4+

wKiom1fFcETSa05DAAAgTEIhpRg245.png


RAID-50

    讀、寫性能提升

     有容錯能力,每組鏡像最多隻能壞一塊

    可用空間:N-2

    最少磁盤數:6, 6+

工作原理:先做RAID5,再做RAID0

wKiom1fFcf7RDDnOAAArFkGUD-Y850.png



RAID7:可以理解爲一個獨立存儲計算機,自身帶有操作系統和管理工具,可以獨立運行,理論上性能最高的RAID模式


JBOD:Just a Bunch Of Disks

功能:將多塊磁盤的空間合併一個大的連續空間使用

可用空間:sum(S1,S2,...)


軟RAID

   mdadm:爲軟RAID提供管理界面

   爲空餘磁盤添加冗餘

   結合內核中的md(multi devices)

   RAID設備可命名爲/dev/md0、/dev/md1、/dev/md2、/dev/md3等等


軟件RAID的實現

   mdadm:模式化的工具

   命令的語法格式:mdadm[mode] <raiddevice> [options] <component-devices>

   支持的RAID級別:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10

   模式:

    創建:-C

    裝配: -A

    監控: -F

    管理:-f, -r, -a

   <raiddevice>: /dev/md#

   <component-devices>: 任意塊設備


madam常用選項

   -C: 創建模式

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

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

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

   -c CHUNK_SIZE: 指明塊大小

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

   -D:顯示raid的詳細信息;

    mdadm -D /dev/md#

   管理模式:

    -f: 標記指定磁盤爲損壞

    -a: 添加磁盤

    -r: 移除磁盤

   觀察md的狀態:

    cat /proc/mdstat


軟RAID配置示例

使用mdadm創建並定義RAID設備

   #mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

用文件系統對每個RAID設備進行格式化

   #mke2fs -j /dev/md0

使用mdadm檢查RAID設備的狀況

   #mdadm --detail|D /dev/md0

增加新的成員

   #mdadm –G /dev/md0 –n4 -a /dev/sdf1


軟RAID測試和修復

模擬磁盤故障

   #mdadm /dev/md0 -f /dev/sda1

移除磁盤

   #mdadm /dev/md0 –r /dev/sda1

從軟件RAID磁盤修復磁盤故障

   替換出故障的磁盤然後開機

   在備用驅動器上重建分區

   mdadm /dev/md0 -a /dev/sda1

mdadm、cat /proc/mdstat及系統日誌信息


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


1.首先創建3個1G的磁盤,System ID爲fd,如下圖所示

wKiom1fFeHiwQ4nIAABoD1Hdoxg019.png

wKiom1fFe4CQFIrrAABg8EwyScM641.png

2.創建RAID1,-l 1表示raid 1,-n 2b表示使用兩個磁盤,-x 1表示其中一個是備用的。

wKiom1fFhAzhGXq5AAB97Iw7Mjc928.png

wKioL1fFhBqjLbWIAACVE3JQQQ8395.png

wKioL1fFhY_wcmyBAABWSZq3vHA762.png

3.格式化成ext4格式 mkfs.ext4 /dev/md0

wKioL1fFfT7SIzVmAAATyaR4u4Q652.png

4.寫入/etc/fstab

wKioL1fFfj-gEcekAACkLPqtC2c271.png5.寫入/etc目錄下配置raid的信息,不然下次登陸的時候raid就沒了

wKiom1fFfyCgtHwmAABEZb2UxHA842.png


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

  1. 創建3個2G大小的磁盤,system ID 爲fd

wKiom1fFh_7whjh7AACPZCy_Ot4403.png

2.創建raid5,-a yes自動創建raid設備文件,-l 5表示raid 5 ,-n 3表示使用3個磁盤,-c 256表示chunk塊大小爲256k

wKioL1fFiWuis7wsAADFTOW_E_I461.png

wKiom1fFiWyxRvWdAACHyvqOVao009.png

3.格式化/dev/md1

wKiom1fFih-waI5cAACTX7yRV94976.png

4.寫入/etc/fstab配置掛載目錄

wKioL1fFioyCsFrdAACcMm73hAY879.png5.寫入/etc/mdadm.conf文件

wKiom1fFi3_gncQSAACZ5mNa8bk058.png


邏輯卷管理器(LVM)

什麼是LVM?

   LVM(Logical Volume Manager,邏輯卷管理)的重點在於可以彈性的調整filesystem的容量!而並非在於數據的存儲效率及安全上面。需要文件的讀寫效能或者是數據的可靠性是RAID所考慮的問題。LVM可以整合多個屍體partition在一起,讓這些partition看起來就像是一個磁盤一樣。而且,還可以在未來新增或移除其他的實體partition到這個LVM管理的磁盤當中,如此一來,整個磁盤空間的使用上,具有相當的彈性。

LVM允許對捲進行方便操作的抽象層,包括重新設定文件系統的大小

LVM允許在多個物理設備間重新組織文件系統

   將設備指定爲物理卷

   用一個或者多個物理捲來創建一個卷組

   物理卷是用固定大小的物理區域(Physical Extent,PE)來定義的

   在物理捲上創建的邏輯卷是由物理區域(PE)組成

   可以在邏輯捲上創建文件系統


LVM介紹

LVM: Logical Volume Manager,Version: 2

dm: device mapper:將一個或多個底層塊設備組織成一個邏輯設備的模塊

設備名:/dev/dm-#

軟鏈接:

   /dev/mapper/VG_NAME-LV_NAME

   /dev/mapper/vol0-root

   /dev/VG_NAME/LV_NAME    

   /dev/vol0/root

wKioL1fH_XDQTZCpAAAgYgaJqAg699.png

LVM可以彈性的更改LVM的容量

通過交換PE來進行資料的轉換,將原來LV內的PE轉移到其他的設備中以降低LV的容量,或將其他設備中的PE加到LV中以加大容量


刪除邏輯卷

注意:刪除邏輯卷必須先刪除LV,再刪除VG,最後刪除PV


pv管理工具


顯示pv信息

   pvs:簡要pv信息顯示

   pvdisplay


創建pv

   pvcreate /dev/DEVICE


複製老卷組的內容到其他卷組

   pvmove PhysicalDevicePath


刪除pv

   pvremove


vg管理工具


顯示卷組

   vgs

   vgdisplay


創建卷組

  vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

    -s 指定塊大小,默認是4Mib


管理卷組

   擴容 vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

   減容 vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]


刪除卷組

   先做vgmove,再做pvremove


lv管理工具


顯示邏輯卷

   lvs

   Lvdisplay


創建邏輯卷

   lvcreate -L #[mMgGtT] -n NAME VolumeGroup


刪除邏輯卷

   lvremove /dev/VG_NAME/LV_NAME


重設文件系統大小

   fsadm [options] resize device [new_size[BKMGTEP]]

   resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]


lv擴展和縮減邏輯卷

擴展邏輯卷:

   lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME

    此處-L可以指定容量,或者使用+1G這種表示方式來擴容

   resize2fs /dev/VG_NAME/LV_NAME

    擴容後需要同步磁盤,不然df掛載顯示裏面還是擴容前的容量


縮減邏輯卷:(必須按照以下步驟先後來操作,不然會丟失數據)

   1.umount /dev/VG_NAME/LV_NAME

   2.e2fsck -f /dev/VG_NAME/LV_NAME

   3.resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]

   4.lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME


創建邏輯卷實例

創建物理卷

   pvcreate /dev/sda3

爲卷組分配物理卷

   vgcreate vg0 /dev/sda3

從卷組創建邏輯卷

   lvcreate -L 256M -n data vg0

   mke2fs -t ext4 /dev/vg0/data

   mount /dev/vg0/data /mnt/data


邏輯卷管理器快照


快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝

對於需要備份或者複製的現有數據集臨時拷貝以及其它操作來說,快照是最合適的選擇。

快照只有在它們和原來的邏輯卷不同時纔會消耗空間。

   在生成快照時會分配給它一定的空間,但只有在原來的邏輯卷或者快照有所改變纔會使用這些空間

   當原來的邏輯卷中有所改變時,會將舊的數據複製到快照中。

   快照中只含有原來的邏輯卷中更改的數據或者自生成快照後的快照中更改的數據

   建立快照的卷大小只需要原始邏輯卷的15%~20%就夠了。也可以使用lvextend放大快照。


快照就是將當時的系統信息記錄下來,就好像照相一般,若將來有任何數據改動了,則原始數據會被移動到快照區,沒有改動的區域則由快照區和文件系統共享。

wKiom1fHnqixX_p-AAClpOmJl70145.png

由於快照區與原本的LV共用很多PE的區塊,因此快照去與被快照的LV必須要要在同一個VG上!系統恢復的時候的文件數量不能高於快照區的實際容量。


使用LVM快照

爲現有邏輯卷創建快照

   lvcreate -l 64 -s -n snap-data -p r /dev/vg0/data

掛載快照

   mkdir -p /mnt/snap

   mount -o ro /dev/vg0/snap-data /mnt/snap    

刪除快照

   umount /mnt/databackup

   lvremove /dev/vg0/databackup


LVM實戰示例

示例1:創建一個至少有兩個PV組成的大小爲20G的名爲testvg的VG;要求PE大小爲16MB, 而後在卷組中創建大小爲5G的邏輯卷testlv;掛載至/users目錄

1.先找兩個空的磁盤

wKiom1fH3vaii1-vAABgAk8PkBs154.png

2.創建pv盤

wKioL1fH3vaRdRykAAAw8pXOjiw698.png

wKiom1fH3vaSmL3CAAB308fsUtk222.png

3.創建pe大小爲16M,名爲testvg的vg

wKioL1fH3vej3zD0AACEkihrz1I453.png

4.從testvg空間裏面創建名字爲testlv,大小爲5G的lv盤,

wKiom1fH3veSOmZOAACEVsoeMWg897.png

5.格式化新建的lv盤

wKioL1fH3viBkRxBAACCWoFzoVk857.png

6.掛載

wKiom1fH3vnzH8cuAAAU10zG7Pw648.png

wKioL1fH3vnjAC0LAABx07z_FCc105.png

wKiom1fH3vnikLpBAAAMOsoJQVM569.png

wKioL1fH3vrDZMDzAAAOlmLJ_s0621.png


示例2:新建用戶archlinux,要求其家目錄爲/users/archlinux,而後su切換至archlinux用戶,複製/etc/pam.d目錄至自己的家目錄

wKiom1fH4rjyM8hDAAANYDHYW0A510.png

wKioL1fH4rnTA_tdAAA1d636w-o559.png


示例3:擴展testlv至7G,要求archlinux用戶的文件不能丟失fr

-L 可以直接指定擴展至的容量,或者使用 +2G 這樣的方式來執行

-l +100%FREE DEVICE 可以直接擴容所有的容量

-r 等於 resize2fs,這一步必須執行,不然硬盤掛載顯示跟擴容顯示會不一致。

wKioL1fH92-j0SrlAAClcnFwAxg187.png

wKioL1fH-PORkDavAAARr4QhhKE626.png


示例4:收縮testlv至3G,要求archlinux用戶的文件不能丟失

wKiom1fH-orzcB4cAADyRN5PxJU756.png


示例5:對testlv創建快照,並嘗試基於快照備份數據,驗正快照的功能

確認現有的lv卷

wKioL1fILofgboMPAACK0P32YdQ073.png

創建快照,並且-p r的意思是這個快照只讀,然後把快照掛載到/mnt/testlv-snapsht目錄下面

wKioL1fILoqCJ9NLAAA5EpNOk0o010.png

可以發現這個目錄下面有文件了,這些文件是跟/users目錄下面是一樣的

wKiom1fILorz2QdBAAAcxtjyxck703.png

查看一下快照,可以發現有兩個快照

wKiom1fILozSiZx5AAAcqpxhrz8529.png

此時可以發現,testlv有一個test-snapshot的快照lv

wKiom1fILp-AUvh5AAByqZqtMsg581.png

此時查看快照lv,可以看見此快照是爲testlv的做快照。雖然這個磁盤上面顯示有東西,但是大家仔細看的話,會發現下面Allocated to snapshot是0,說明快照裏面其實沒有文件,文件夾裏面的文件只是暫時映射/users裏面的文件,好讓用戶能看見當前備份的文件。

wKiom1fILrTD7BLzAAB7Uv0pSA4983.png

此時查看兩個目錄,並且把testlv掛載的目錄/users裏面的所有文件刪除掉。但是我們發現快照目錄的文件依然存在!這就相當於做了備份,如果需要的話,我們只需要從快照的目錄裏面把備份文件複製出來即可。

wKiom1fILrWgajdoAABH4qN2lbc450.png

此時查看快照的lv,會發現已經佔用了一點空間,說明快照已經保存了我們已經修改過的文件,所以就佔用掉了快照lv卷的一部分空間。此時,說明快照的實驗已經成功!

wKioL1fILreRjDlWAABrupJ2Gz4997.png


示例6:刪除容量小的pv,並且保留數據

創建3個pv

wKioL1fIGMaCbhRZAABHFKgBqIM172.png

用/dev/sdd1創建一個testvg

wKiom1fIGMfz_38EAABzWOt__zw516.png

創建一個lv

wKioL1fIGMfgvI41AAB2oHFLnG0971.png

掛載lv到/users目錄下面,並且複製文件到該目錄下面

wKioL1fIGMiD1oLFAABdRWuf764132.png

因爲原有的1g的vg太小,現在再加一個1g的vg,一共2g的vg

wKiom1fIGMix8r3BAACR6M98Np0044.png

lv卷擴容到最大的2g

wKioL1fIGMmAeqxHAACpxflAFoI821.png

由於2g的空間用完了,這時候,我們想着淘汰這兩個 1g的磁盤,此時加入一個4g的磁盤/dev/sdb1

wKiom1fIGMnDeEjWAAA2fIDVidg477.png

爲了保留vgtest裏面的數據,先把舊的pv卷裏面/dev/sdc1的數據移動到其他盤

wKioL1fIGMnDHp4EAAAnHuq38vo294.png

移動完數據以後,刪除/dev/sdc1

wKiom1fIGMrTZ1ZWAABYq8t57hg449.png

刪除/dev/sdc1以後,可以看到只剩下兩個pv卷,vg卷也對應減少到4g

wKioL1fIGMqiKRc7AABYDNb2oTs763.png

然後再把/dev/sdd1的數據移動到其他空閒的pv,然後再刪除該pv

wKiom1fIGMuwbWH4AAA6lFcVYdA088.png

把其他盤刪除以後,我們看看lv卷裏面,發現數據還在,實驗成功

wKioL1fIGMuiMWumAACK0P32YdQ030.png


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