磁盤配額:
linux是一個多用戶的系統,磁盤配額是分配給每個用戶的磁盤可用空間的限制。每一用戶只能使用最大配額范圍內的磁盤空間。root是不受配額限制的,只有普通用戶才受限制。
Quota是在RedHatlinux下實現linux磁盤配額的工具,它支持單獨的掛載文件系統,而不是一個目錄。quota默認是安裝的,如果沒有安裝,請用yum install quota命令進行安裝。
磁盤配額用于對新加載的分區進行磁盤配額,對系統安裝時設定的分區無效。
綜述
在內核中執行
以文件系統為單位啟用
對不同組或者用戶的策略不同
根據塊或者節點進行限制
執行軟限制(soft limit)
硬限制(hard limit)
配額中的術語:
<1>軟限制: 警告限制,可以被突破;
<2>硬限制: 最大可用限制,不可突破;
<3>配額大?。阂源笮為單位,以文件個數為單位;
<4>配額寬限日期:把硬限制降回到軟限制的寬限時間;
如何建立磁盤配額?
以創建home分區為例:
1、創建一個獨立的分區
fdisk /dev/sdb
2、格式化文件系統
mkfs.ext4 /dev/sdb1
3、掛載,
由于使用mount掛載,重啟后會失效,我們使用vim寫入文件
vim /etc/fstab
/dev/sdb1 /home ext4 defaults,usrquota,grpquota 0 0
4、重新讀取文件,使掛載生效,使用mount -a ,
5、創建配額數據庫
quotacheck -cug /home
如果出現
quotacheck: Cannot create new quotafile /data/aquota.user.new: Permission denied quotacheck: Cannot initialize IO on new quotafile: Permission denied
說明selinux沒關閉。使用#setenforce 0關閉selinux,同時編輯/etc/selinux/config文件,將SELINUX的值設為permissive或disabled。)
6、啟用數據庫
quotaon -p /home 查看是否啟用數據庫
quotaon /home 啟用數據
7、配置配額項
edquota wang
edquota -p wang tom 復制wang的配額給tom
setquota tom 60000 80000 15 18 /home 命令行直接指定配額
5、測試
quota wang
達到軟限制,顯示警告,文件正常創建
超過硬限制,顯示寫入失敗。
repquota /home 查看磁盤配額
磁盤陣列:RAID
什么是RAID?
磁盤陣列的英文全名為:Redundant Arrays of Inexpensive(Independent)Disks (RAID) ,即容錯廉價磁盤陣列。
RAID可以通過一些技術(軟件或硬件)將多個較小的磁盤整合為一個較大的磁盤設備;而這個較大的磁盤功能不止是存儲唯一,它還具有數據保護的功能。整個RAID由于選擇的等級不同,而是的整合后的磁盤具有不同的功能,常見的等級有以下幾種:
RAID-0(條帶卷,stripe):等量模式,性能最佳
這種模式如果使用相同型號與容量的磁盤來組成時,效果最佳。這種模式的RAID會將磁盤先切除等量的區塊,然后當一個文件要寫入RAID時,該文件會依據塊的大小先切割好,之后在依序放到各個磁盤里去。因此當寫入數據時,數據會被等量放置在各個磁盤上面。
-
讀、寫性能提升;
-
可用空間:N*min(S1,S2,…)
-
無容錯能力
-
最少磁盤數:2
RAID-1(鏡像卷,mirror):完整備份
這種模式也是需要形同的磁盤容量的,最好是一樣的磁盤。如果是不同容量的磁盤 組成RAID-1時,那么總容量將以最小的那一塊磁盤為主!這種模式主要是讓同一份數據完整保存在兩塊磁盤上面。因此,整體RAID的容量,會是全部磁盤容量的一半。
-
讀性能提升、寫性能略有下降;
-
可用空間:1*min(S1,S2,…)
-
有冗余能力
-
最少磁盤數:2
RAID-5:性能與數據備份的均衡考慮
RAID-5至少需要三塊以上的磁盤才能夠組成這種類型的磁盤陣列。這種磁盤陣列的數據寫入有點類似RAID-0,不過每個循環的寫入過程中,在每塊磁盤還加入一個同位檢查數據(Parity)這個數據會記錄其他磁盤的備份數據,用于當有磁盤損壞的救援。
-
讀、寫性能提升
-
可用空間:(N-1)*min(S1,S2,…)
-
有容錯能力:允許最多1塊磁盤損壞
-
最少磁盤數:3
RAID-6:RAID-5的升級版
RAID6技術是在RAID 5基礎上,為了進一步加強數據保護而設計的一種RAID方式,實際上是一種擴展RAID 5等級。與RAID 5的不同之處于除了每個硬盤上都有同級數據XOR校驗區外,還有一個針對每個數據塊的XOR校驗區。當然,當前盤數據塊的校驗數據不可能存在當前盤而是交錯存儲的,具體形式見圖。這樣一來,等于每個數據塊有了兩個校驗保護屏障(一個分層校驗,一個是總體校驗),因此RAID 6的數據冗余性能相當好。但是,由于增加了一個校驗,所以寫入的效率較RAID 5還差,而且控制系統的設計也更為復雜,第二塊的校驗區也減少了有效存儲空間。
-
讀、寫性能提升
-
可用空間:(N-2)*min(S1,S2,…)
-
有容錯能力:允許最多2塊磁盤損壞
-
最少磁盤數:4
RAID-10(1+0):結合RAID-1和RAID-0,先組建RAID-1再組建RAID0
RAID-10即為組成RAID-1,再將RAID-1組成RAID-0,所以RAID-10即彌補了RAID-1的數據安全但性能不佳,又彌補了RAID-0的性能佳但數據不安全。由于具有了RAID-0的優點,所以性能的一提升,由于具有RAID-1的優點,所以數據得以備份。但是也由于RAID-1的缺點。所以總容量會少一半用來作為備份。
-
讀、寫性能提升
-
可用空間:N*min(S1,S2,…)/2
-
有容錯能力:每組鏡像最多只能壞一塊
-
最少磁盤數:4
RAID-01(0+1):和RAID10相似,結合RADI-0和RAID-1,先組建RAID-0再組建RAID-1
RAID-50 (5+0):結合RAID-5和RAID-0,先組建RAID-5再組建RAID-0
此配置在RAID5的子磁盤組的每個磁盤上進行包括奇偶信息在內的數據的剝離。每個RAID5子磁盤組要求三個硬盤。RAID50具備更高的容錯能力,因為它允許某個組內有一個磁盤出現故障,而不會造成數據丟失。而且因為奇偶位分部于RAID5子磁盤組上,故重建速度有很大提高。優勢:更高的容錯能力,具備更快數據讀取速率的潛力。需要注意的是:磁盤故障會影響吞吐量。故障后重建信息的時間比鏡像配置情況下要長。
RAID7:可以理解為一個獨立存儲計算機,自身帶有操作系統和管理工具,可以獨立運行,理論上性能最高的RAID模式
JBOD:Just a Bunch Of Disks
功能:將多塊磁盤的空間合并一個大的連續空間使用
可用空間:sum(S1,S2,…)
Spare Disk:預備磁盤的功能
將一塊 或多塊沒有包含在原本磁盤陣列等級中的磁盤,這塊磁盤平時并不會被磁盤陣列所使用,當磁盤陣列有任何磁盤損壞時,則這塊spare disk會被主動拉近磁盤陣列中,并將壞掉的那塊硬盤移除磁盤陣列,然后重建數據系統。
軟件磁盤陣列設置
軟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>: 任意塊設備
-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
停止md設備:
mdadm -S /dev/md#
使用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 –G /dev/md0 –n4 -a /dev/sdf1
例:創建一個10G可用空間的RAID5
# fdisk /dev/sdb Device Boot Start End Blocks Id System /dev/sdb1 1 654 5253223+ 83 Linux /dev/sdb2 655 1308 5253255 83 Linux /dev/sdb3 1309 1962 5253255 83 Linux /dev/sdb4 1963 26108 193952745 5 Extended /dev/sdb5 1963 2616 5253223+ 83 Linux # mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sdb{1,2,3,5} # cat /proc/mdstat #查看創建狀態 # mkfs.ext4 /dev/md0 #格式化 # mount /dev/md0 /mnt/raid5/ #掛載 # mdadm -D /dev/md0 #查看 /dev/md0: Version : 1.2 Creation Time : Tue Aug 2 03:02:01 2016 Raid Level : raid5 Array Size : 10498048 (10.01 GiB 10.75 GB) Used Dev Size : 5249024 (5.01 GiB 5.38 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent
軟RAID測試和修復
模擬磁盤故障
#mdadm /dev/md0 -f /dev/sdb1
# mdadm -D /dev/md0 Number Major Minor RaidDevice State 3 8 21 0 spare rebuilding /dev/sdb5 1 8 18 1 active sync /dev/sdb2 4 8 19 2 active sync /dev/sdb3 0 8 17 - faulty /dev/sdb1
移除磁盤
#mdadm /dev/md0 –r /dev/sdb1
# mdadm -D /dev/md0 Number Major Minor RaidDevice State 3 8 21 0 active sync /dev/sdb5 1 8 18 1 active sync /dev/sdb2 4 8 19 2 active sync /dev/sdb3
從軟件RAID磁盤修復磁盤故障
替換出故障的磁盤然后開機
在備用驅動器上重建分區
# mdadm /dev/md0 -a /dev/sda1
# mdadm -D /dev/md0 Number Major Minor RaidDevice State 3 8 21 0 active sync /dev/sdb5 1 8 18 1 active sync /dev/sdb2 4 8 19 2 active sync /dev/sdb3 5 8 17 - spare /dev/sdb1
mdadm、/proc/mdstat及系統日志信息
軟RAID管理
生成配置文件:mdadm –D –s >> /etc/mdadm.conf
停服務:mdadm –S /dev/md0
激活:mdadm –A –s /dev/md0 激活
刪除raid信息:mdadm –zero-superblock /dev/sdb1
例::創建一個可用空間為10G的RAID1設備,要求其chunk大小為128k,文件系統為ext4,有一個空閑盤,開機可自動掛載至/backup目錄
# fdisk /dev/sdc # mdadm -C /dev/md1 -a yes -n 2 -x 1 -l 1 -c 128 /dev/sdc{1,2,3} # cat /proc/mdstat #查看創建狀態 # mkfs.ext4 /dev/md1 #格式化 # vim /etc/fstab /dev/md1 /backup ext4 defaults 0 0 # mount -a #掛載 # mdadm -D /dev/md0 /dev/md1: Version : 1.2 Creation Time : Tue Aug 2 03:52:13 2016 Raid Level : raid1 Array Size : 10466176 (9.98 GiB 10.72 GB) Used Dev Size : 10466176 (9.98 GiB 10.72 GB) Raid Devices : 2 Total Devices : 3 Persistence : Superblock is persistent
LVM邏輯卷管理器
LVM: (Logical Volume Manager)
是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。通過LVM系統管理員可以輕松管理磁盤分區,如:將若干個磁盤分區連接為一個整塊的卷組 (volumegroup),形成一個存儲池。管理員可以在卷組上隨意創建邏輯卷組(logicalvolumes),并進一步在邏輯卷組上創建文件系統。管理員通過LVM可以方便的調整存儲卷組的大小,并且可以對磁盤存儲按照組的方式進行命名、管理和分配,例如按照使用用途進行定義:“development”和“sales”,而不是使用物理磁盤名“sda”和“sdb”。而且當系統添加了新的磁盤,通過LVM管理員就不必將磁盤的文件移動到新的磁盤上以充分利用新的存儲空間,而是直接擴展文件系統跨越磁盤即可。
特點:
允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小
允許在多個物理設備間重新組織文件系統
-
將設備指定為物理卷
-
用一個或者多個物理卷來創建一個卷組
-
物理卷是用固定大小的物理區域(Physical Extent,PE)來定義的
-
在物理卷上創建的邏輯卷是由物理區域(PE)組成
-
可以在邏輯卷上創建文件系統
基本概念介紹:
-
PP:物理分區(Physical Partition),如硬盤的分區,或 RAID 分區。
-
PV:物理卷(Physical Volume),是 PP 的 LVM 抽象,它維護了 PP 的結構信息,是組成 VG 的基本邏輯單元,一般一個 PV 對應一個 PP。
-
PE:物理擴展單元(Physical Extends),每個 PV 都會以 PE 為基本單元劃分。
-
VG:卷組(Volume Group),即 LVM 卷組,它可由一個或數個 PV 組成,相當于 LVM 的存儲池。
-
LE:邏輯擴展單元(Logical Extends),組成 LV 的基本單元,一個 LE 對應一個 PE。
-
LV:邏輯卷(Logical Volume),它建立在 VG 之上,文件系統之下,由若干個 LE 組成。
LVM 默認使用4MB的PE區塊,而LVM的LV最多僅能含有65534個PE (lvm1 的格式),因此默認的LVM的LV最大容量為4M*65534/(1024M/G)=256G。PE是整個LVM 最小的儲存區塊,也就是說,其實我們的資料都是由寫入PE 來處理的。簡單的說,這個PE 就有點像文件系統里面的block 大小。所以調整PE 會影響到LVM 的最大容量!
PE與VG的相關性圖示:
實現流程:
通過PV,VG,LV的規劃后,再利用mkfs就可以將LV格式化為可以利用的文件系統,而且這個文件系統的容量在將來還能進行擴充或減少,里面的數據還不會被影響。
1、實現partition階段
創建分區,并將分區的System ID 改為 8e
2、PV階段:
pv管理工具
顯示pv信息
pvs:簡要pv信息顯示
pvdisplay
創建pv
pvcreate /dev/DEVICE
pvcreate /dev/sdb{1,2,3}創建 PV
pvscan 查看PV,分別顯示每個pv的信息與系統所有pv的信息
pvdisplay 詳細的列出系統上的每個PV的信息
3、VG階段
vg管理工具
顯示卷組
vgs
vgscan
vgdisplay
創建卷組
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
管理卷組
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
刪除卷組
先做pvmove,再做vgremove
4、LV階段:
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]
5、文件系統階段
格式化、掛載、查看使用lv
mkfs.ext4 /dev/testvg/testlv mkdir /mnt/lvm mount /dev/testvg/testlv /mnt/lvm/
擴展和縮減邏輯卷:
擴展邏輯卷:
# lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME #擴展LV
# resize2fs /dev/VG_NAME/LV_NAME #完整的LV的容量擴充至整個文件系統
# fdisk /dev/sdb # 新增pv # pvcreate /dev/sdb5 # vgextend testvg /dev/sdb5 # 擴展vg # lvextend -L 20G /dev/testvg/testlv # 擴展lv # resize2fs /dev/testvg/testlv #擴展文件系統
縮減邏輯卷:
# umount/dev/VG_NAME/LV_NAME #首先取消掛載
# e2fsck -f /dev/VG_NAME/LV_NAME #強制檢測文件系統
# resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] #縮小文件系統
# lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME #縮減LV
# mount #重新掛載
# umount /mnt/lvm/ # e2fsck -f /dev/testvg/testlv # resize2fs /dev/testvg/testlv 10G # lvreduce -L 16G /dev/testvg/testlv # mount /dev/testvg/testlv /mnt/lvm/
LVM的系統快照:
快照就是將當時的系統信息記錄下來,就好像照相一般,若將來有任何數據改動了,則原始數據會被移動到快照區,沒有改動的區域則由快照區和文件系統共享。
由于快照區與原本的LV共用很多PE的區塊,因此快照去與被快照的LV必須要要在同一個VG上!系統恢復的時候的文件數量不能高于快照區的實際容量。
-
快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝
-
對于需要備份或者復制的現有數據集臨時拷貝以及其它操作來說,快照是最合適的選擇。
-
快照只有在它們和原來的邏輯卷不同時才會消耗空間。
-
在生成快照時會分配給它一定空間,但只有在原來的邏輯卷或者快照有所改變才會使用這些空間
-
當原來的邏輯卷中有所改變時,會將舊的數據復制到快照中。
-
快照中只含有原來的邏輯卷中更改的數據或者自生成快照后的快照中更改的數據
-
建立快照的卷大小只需要原始邏輯卷的15%~20%就夠了。也可以使用lvextend放大快照。
使用LVM快照
為現有邏輯卷創建快照
# lvcreate -n testlv-s -L 10G -s -p r /dev/testvg/testlv
掛載快照
# mkdir /mnt/testlv-s
# mount /dev/testvg/textlv-s /mnt/testlv-s/
刪除快照
# umount /mnt/testlv-s
# lvremove /dev/testvg/testlv
示例:
1、創建一個至少有兩個PV組成的大小為20G的名為testvg的VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄
[root@localhost ~]# fdisk /dev/sdb [root@localhost ~]# pvcreate /dev/sdb1 [root@localhost ~]# pvcreate /dev/sdb2 [root@localhost ~]# vgcreate -s 16M testvg /dev/sdb{1,2} [root@localhost ~]# lvcreate -n textlv -L 5G /dev/testvg [root@localhost ~]# mkfs.ext4 /dev/testvg/testlv [root@localhost ~]# mkdir /users [root@localhost ~]# mount /dev/testvg/testlv /users/
2、新建用戶archlinux,要求其家目錄為/users/archlinux,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己的家目錄
[root@localhost ~]# useradd -d /users/archlinux archlinux [root@localhost ~]# su - archlinux [archlinux@localhost ~]$ pwd /users/archlinux [archlinux@localhost ~]$ cp -r /etc/pam.d . [archlinux@localhost ~]# ll pam.d/ | wc 46 419 2386
3、擴展testlv至7G,要求archlinux用戶的文件不能丟失
[root@localhost ~]# lvextend -L 7G /dev/testvg/textlv [root@localhost ~]# resize2fs /dev/testvg/textlv [root@localhost ~]# su - archlinux [archlinux@localhost ~]$ ll pam.d/ | wc 46 419 2836
4、收縮testlv至3G,要求archlinux用戶的文件不能丟失
[root@localhost ~]# umount /dev/testvg/testlv [root@localhost ~]# e2fsck -f /dev/testvg/testlv [root@localhost ~]# resize2fs /dev/testvg/testlv 3G [root@localhost ~]# lvreduce -L 3G /dev/testvg/testlv [root@localhost ~]# mount /dev/testvg/testlv /users/ [root@localhost ~]# ll /users/archlinux/pam.d/ | wc 46 419 2836
5、對testlv創建快照,并嘗試基于快照備份數據,驗正快照的功能
[root@localhost ~]# lvcreate -L 1G -p r -s -n testlv-snap /dev/testvg/testl [root@localhost ~]# mkdir /mnt/snap [root@localhost ~]# mount /dev/testvg/testlv-snap /mnt/snap/ [root@localhost ~]# rm -f /users/archlinux/pam.d/c* [root@localhost ~]# ls /users/archlinux/pam.d/c* ls: cannot access /users/archlinux/pam.d/c*: No such file or directory [root@localhost ~]# ls /mnt/snap/archlinux/pam.d/c* /mnt/snap/archlinux/pam.d/chfn /mnt/snap/archlinux/pam.d/crond /mnt/snap/archlinux/pam.d/chsh /mnt/snap/archlinux/pam.d/cups /mnt/snap/archlinux/pam.d/config-util
原創文章,作者:Groot,如若轉載,請注明出處:http://www.www58058.com/42618