磁盤配額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
配額選項意義:
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目錄是否為獨立分區,此處不為獨立分區,所以需要先把家目錄設置成獨立分區
此處創建一個/dev/sda6的分區,并且掛載到/mnt/home,然后賦值/home目錄的所有文件到/mnt/home目錄下面,然后把/dev/sda6目錄掛載到/home,之后取消掛載/mnt/home,然后切換到普通用戶測試家目錄是否正常,如果一切正常就可以進行下一步的操作
啟用配額掛載選項
vim /etc/fstab 加上,usrquota,grpquota
quotacheck -cug /home,-c表示創建配額數據,-u表示user,-g表示組
如圖,centos6創建的時候提示權限受限,這個時候輸入setenforce 0可以暫時解除限制,這個限制是SeLinux限制的
啟用數據庫
quotaon -p /home 查看是否啟用數據庫
quotaon /home 啟用數據庫
配置配額項
edquota wan
編輯soft為100000,約為100m,hard為120000約為120m
edquota -p wan mage 讓mage的用戶復制wan用戶的數據
setquota wangcai 80000 120000 0 0 /home
測試磁盤配額是否生效
查看用戶的磁盤配額設置 quota wan
查看整個目錄的磁盤配額設置repquota /home
用dd工具創建大文件寫入數據測試
因為該用戶限制的文件大小是,軟的100M,硬的120M
當創建80M大小的文件的時候,系統不會有任何提示
當創建大于100M小于120M的文件的時候,系統會提示配額的塊超標,但是依然能把文件寫入
當創建大于120M的文件的時候,因為硬設置上限是120M,寫入文件失敗
取消quota
磁盤陣列—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磁盤當其中一個磁盤壞掉的時候,所以的數據都會丟失
RAID-1: 鏡像卷,mirror
讀性能提升、寫性能略有下降;
可用空間:50%磁盤總容量
有冗余能力
最少磁盤數:2, 2N
工作原理:把數據同時存放在多個硬盤冗余備份
RAID-4:
多塊數據盤異或運算值,存于專用校驗盤
有容錯能力
最少磁盤數:3
容量:N-1
工作原理:其中一塊硬盤用來做校驗,其他盤用戶分散存儲數據,但是當有磁盤壞的時候,更換新的硬盤上面,需要校驗同步數據,壓力較大,校驗盤壓力較大容易壞
RAID-5:
讀、寫性能提升
可用空間:(N-1)*min(S1,S2,…)
有容錯能力:允許最多1塊磁盤損壞
最少磁盤數:3, 3+
工作原理:把數據和校驗數據平分存放在各硬盤,但是當有磁盤壞的時候,更換新的硬盤上面,需要校驗同步數據,壓力較大
RAID-6
讀、寫性能提升
可用空間:(N-2)*min(S1,S2,…)
有容錯能力:允許最多2塊磁盤損壞
最少磁盤數:4, 4+
工作原理:把兩個校驗的數據和數據平分存放在其他硬盤
RAID-10
讀、寫性能提升
可用空間:50%
有容錯能力:每組鏡像最多只能壞一塊
最少磁盤數:4, 4+
工作原理:先做RAID1,再做RAID0
RAID-01
讀、寫性能提升
可用空間:50%
有容錯能力:每組鏡像最多只能壞一塊
最少磁盤數:4, 4+
RAID-50
讀、寫性能提升
有容錯能力,每組鏡像最多只能壞一塊
可用空間:N-2
最少磁盤數:6, 6+
工作原理:先做RAID5,再做RAID0
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,如下圖所示
2.創建RAID1,-l 1表示raid 1,-n 2b表示使用兩個磁盤,-x 1表示其中一個是備用的。
3.格式化成ext4格式 mkfs.ext4 /dev/md0
4.寫入/etc/fstab
5.寫入/etc目錄下配置raid的信息,不然下次登陸的時候raid就沒了
示例2:創建由三塊硬盤組成的可用空間為2G的RAID5設備,要求其chunk大小為256k,文件系統為ext4,開機可自動掛載至/mydata目錄
-
創建3個2G大小的磁盤,system ID 為fd
2.創建raid5,-a yes自動創建raid設備文件,-l 5表示raid 5 ,-n 3表示使用3個磁盤,-c 256表示chunk塊大小為256k
3.格式化/dev/md1
4.寫入/etc/fstab配置掛載目錄
邏輯卷管理器(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
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放大快照。
快照就是將當時的系統信息記錄下來,就好像照相一般,若將來有任何數據改動了,則原始數據會被移動到快照區,沒有改動的區域則由快照區和文件系統共享。
由于快照區與原本的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.先找兩個空的磁盤
2.創建pv盤
3.創建pe大小為16M,名為testvg的vg
4.從testvg空間里面創建名字為testlv,大小為5G的lv盤,
5.格式化新建的lv盤
6.掛載
示例2:新建用戶archlinux,要求其家目錄為/users/archlinux,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己的家目錄
示例3:擴展testlv至7G,要求archlinux用戶的文件不能丟失fr
-L 可以直接指定擴展至的容量,或者使用 +2G 這樣的方式來執行
-l +100%FREE DEVICE 可以直接擴容所有的容量
-r 等于 resize2fs,這一步必須執行,不然硬盤掛載顯示跟擴容顯示會不一致。
示例4:收縮testlv至3G,要求archlinux用戶的文件不能丟失
示例5:對testlv創建快照,并嘗試基于快照備份數據,驗正快照的功能
確認現有的lv卷
創建快照,并且-p r的意思是這個快照只讀,然后把快照掛載到/mnt/testlv-snapsht目錄下面
可以發現這個目錄下面有文件了,這些文件是跟/users目錄下面是一樣的
查看一下快照,可以發現有兩個快照
此時可以發現,testlv有一個test-snapshot的快照lv
此時查看快照lv,可以看見此快照是為testlv的做快照。雖然這個磁盤上面顯示有東西,但是大家仔細看的話,會發現下面Allocated to snapshot是0,說明快照里面其實沒有文件,文件夾里面的文件只是暫時映射/users里面的文件,好讓用戶能看見當前備份的文件。
此時查看兩個目錄,并且把testlv掛載的目錄/users里面的所有文件刪除掉。但是我們發現快照目錄的文件依然存在!這就相當于做了備份,如果需要的話,我們只需要從快照的目錄里面把備份文件復制出來即可。
此時查看快照的lv,會發現已經占用了一點空間,說明快照已經保存了我們已經修改過的文件,所以就占用掉了快照lv卷的一部分空間。此時,說明快照的實驗已經成功!
示例6:刪除容量小的pv,并且保留數據
創建3個pv
用/dev/sdd1創建一個testvg
創建一個lv
掛載lv到/users目錄下面,并且復制文件到該目錄下面
因為原有的1g的vg太小,現在再加一個1g的vg,一共2g的vg
lv卷擴容到最大的2g
由于2g的空間用完了,這時候,我們想著淘汰這兩個 1g的磁盤,此時加入一個4g的磁盤/dev/sdb1
為了保留vgtest里面的數據,先把舊的pv卷里面/dev/sdc1的數據移動到其他盤
移動完數據以后,刪除/dev/sdc1
刪除/dev/sdc1以后,可以看到只剩下兩個pv卷,vg卷也對應減少到4g
然后再把/dev/sdd1的數據移動到其他空閑的pv,然后再刪除該pv
把其他盤刪除以后,我們看看lv卷里面,發現數據還在,實驗成功
原創文章,作者:~微風~,如若轉載,請注明出處:http://www.www58058.com/42287