磁盤配額:
當我們在一個指定分區內有多個用戶使用時,為了保證磁盤空間的大小,我們可以限制某些用戶在該磁盤空間中的使用量,此種功能我們稱之為磁盤配額。
初始化:
分區掛載選項:usrquota、grpquota
創建化數據庫:quotachek -c
執行:
開啟或取消數據庫:quotaon、quotaoff
直接編輯配額選項:edquota username
通過命令直接編輯:setquota usename 4096 5120 40 50 /foo
指定多個用戶:edquota -p user1 user2
查看配置信息:
用戶調查:quota
配額概述:repquota
其他工具:warnquota
舉例說明:限制wang用戶創建的文件總大小不能超過200M
1、fdisk /dev/sdd 創建一個1G的分區,格式化成ext4文件系統,創建一個目錄,將家目錄中的文件拷貝移動到該目錄中,然后掛載,掛載選項添加usrquota,grpquota,掛載成功后,將.quota目錄中的文件拷貝到/home路徑下。
mkdir /mnt/quota cp -a /home/* /mnt/quota/ /dev/sdd1 /home ext4 usrquota,grpquota 0 0 mount -a mount -s /dev/sdd1 on /home type ext4 (rw,usrquota,grpquota) cp -a /mnt/quota/* /home/
2、創建配額數據庫
root@cenots6.8 ~ # quotacheck -cug /home quotacheck: Cannot create new quotafile /home/aquota.user.new: 權限不夠 quotacheck: Cannot initialize IO on new quotafile: 權限不夠 quotacheck: Cannot create new quotafile /home/aquota.group.new: 權限不夠 quotacheck: Cannot initialize IO on new quotafile: 權限不夠 root@cenots6.8 ~ # setenforce 0 (centos6可能會報如上錯誤) root@cenots6.8 ~ # quotacheck -cug /home
3、啟用數據庫
root@cenots6.8 ~ # quotaon -p /home ###查看數據庫是否啟用 group quota on /home (/dev/sdd1) is off ###off 沒有啟用 user quota on /home (/dev/sdd1) is off root@cenots6.8 ~ # quotaon /home ###啟用數據庫 root@cenots6.8 ~ # quotaon -p /home ###查看數據庫是否啟用 group quota on /home (/dev/sdd1) is on ###on 啟用 user quota on /home (/dev/sdd1) is on
4、配置配額選項警告值為1,除了下面的方法也可以:setquota wang 102400 204800 0 0 /home 直接編輯。
root@cenots6.8 ~ # edquota wang Disk quotas for user wang (uid 500): Filesystem blocks soft hard inodes soft hard /dev/sdd1 36 102400 204800 9 0 0 ## 超過該值時警告 最大值(單位K)
5、分別創建三個90M的文件測試
wang@cenots6.8 ~ # dd if=/dev/zero of=f1 bs=1M count=90 記錄了90+0 的讀入 記錄了90+0 的寫出 94371840字節(94 MB)已復制,0.0834356 秒,1.1 GB/秒 wang@cenots6.8 ~ # dd if=/dev/zero of=f2 bs=1M count=90 sdd1: warning, user block quota exceeded. ############已經警告了 記錄了90+0 的讀入 記錄了90+0 的寫出 94371840字節(94 MB)已復制,0.20327 秒,464 MB/秒 wang@cenots6.8 ~ # ll -lh 總用量 180M -rw-rw-r--. 1 wang wang 90M 8月 29 23:42 f1 -rw-rw-r--. 1 wang wang 90M 8月 29 23:43 f2 wang@cenots6.8 ~ # dd if=/dev/zero of=f3 bs=1M count=90 sdd1: write failed, user block limit reached. dd: 正在寫入"f3": 超出磁盤限額 記錄了20+0 的讀入 記錄了19+0 的寫出 20934656字節(21 MB)已復制,0.12074 秒,173 MB/秒 wang@cenots6.8 ~ # ll -lh 總用量 200M -rw-rw-r--. 1 wang wang 90M 8月 29 23:42 f1 -rw-rw-r--. 1 wang wang 90M 8月 29 23:43 f2 -rw-rw-r--. 1 wang wang 20M 8月 29 23:44 f3 #####此處我們創建了90M的文件但是此處為20M,滿足我們設置的200M的需求
6、查看配置信息的命令
wang@cenots6.8 ~ # quota wang Disk quotas for user wang (uid 500): Filesystem blocks quota limit grace files quota limit grace /dev/sdd1 204800* 102400 204800 6days 12 0 0 root@cenots6.8 ~ # repquota /home *** Report for user quotas on device /dev/sdd1 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 52 0 0 10 0 0 wang +- 204800 102400 204800 6days 12 0 0 tom -- 32 0 0 8 0 0
RAID:
raid磁盤冗余陣列作用:
提供io能力:磁盤并行讀寫
提供其耐用性:提供冗余能力
級別:多塊磁盤組織在一起的工作方式有所不同。
raid的實現方式:
外界磁盤陣列:通過擴展卡提供適配能力
內接式raid:主板集成raid控制器
raid-0:
至少需要2塊磁盤,A磁盤存放數據塊chunk1,B磁盤存放數據塊chunk2,同時寫入,同時讀出,這樣讀寫性能提升,每個磁盤塊存放的數據塊大小一致,所以磁盤空間以最小的為主。
可用空間:N*min(s1,s2…..)
無容錯能力
最小磁盤數:2,2+
raid-1:
至少需要2塊磁盤,每塊磁盤同事存放同樣的數據,A磁盤存放數據塊1,B磁盤存放數據塊1,然后在同時存放數據塊2。
可用空間:1*mi
讀性能提升,寫性能下降
有容錯能力
最小磁盤數:2,2+
raid-4:
至少需要3塊磁盤,其中一塊A磁盤用于存放校驗碼,異或值,B磁盤存放數據塊chunk1,C磁盤存放數據塊chunk2,允許一塊磁盤損壞,此時的工作方式叫做降級模式,可以通過校驗和和另一個磁盤計算出壞磁盤中的數據,如果在有一塊損壞,那就不能工作了。
讀寫性能提升
有容錯能力
可用空間(N-1)*min
最小磁盤數:3,3+
raid-5:
至少需要3塊磁盤,第一個數據存第一塊盤上,第二個數據存第二塊盤上,校驗碼存第三塊盤上,下一次個數據存第三塊盤,第二個數據存第2塊盤,校驗碼存第一塊盤,第二塊盤存校驗碼,第二個數據放第一塊盤,三快盤輪流做校驗盤
讀寫性能提升
有容錯能力,允許壞一塊盤
最少磁盤數:3,3+
raid-6: 校驗碼存2次,校驗盤2塊
讀寫性能提升
可用空間:(N-2)*min
有容錯能力,允許壞2塊盤
最少磁盤數:4,4+
raid-01:
兩兩一組,組成raid0,然后將多個兩兩一組在組成raid1
讀寫性能提升
可用空間:N*min/2
有容錯能力:每組壞一個該組就不能用了
最少磁盤數:4
raid-10
兩兩一組,組成raid1,然后將多個兩兩一組在組成raid0
讀寫性能提升
可用空間:N*min/2
有容錯能力:每組raid允許壞一個
最少磁盤數:4
raid7:
可以理解為一個獨立存儲計算機,自身帶有操作系統和管理工具,可以獨立運行,理論上性能最高的RAID模式
JBOD:
功能:將多塊磁盤的空間合并一個大的連續空間使用;
可用空間:sum(s1,s2,s3.。。)
軟RAID
生產環境中,主要使用硬raid,但是我們也可以通過軟raid 來模擬硬raid的工作方式。
相關命令:
mdadm:模式化的工具
格式:mdadm [mode] <raiddevice> [options component-devices<>]
支持的raid級別:raid 0 1 4 5 6 10
mode:
創建:-C
裝配:-A
監控: -F
管理:-f,-r,-a
<raiddevice>:/dev/md# 任意塊設備
-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
生成配置文件:
mdadm -D -s >> /etc/mdadm.conf
停止md設備:
mdadm -S /dev/md#
激活:
mdadm -A -s /dev/md0
刪除raid信息:mdadm -zero-superblock /dev/sdb1
應用舉例:創建一個可用空間為1G的RAID1設備,要求其chunk大小為128k,文件系統為ext4,有一個空閑盤,開機可自動掛載至/backup目錄
1、首先創建兩個1G大小的分區/dev/sdc{1,2},調整ID為fd。
2、創建RAID1
mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sdc{1,2} ###創建raid1時,如果要使用備用硬盤,-n 2(此處不能選3) -x 1 root@cenots6.8 ~ # mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Tue Aug 30 09:19:25 2016 Raid Level : raid1 Array Size : 1048704 (1024.13 MiB 1073.87 MB) Used Dev Size : 1048704 (1024.13 MiB 1073.87 MB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Tue Aug 30 09:19:32 2016 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Name : cenots6.8:0 (local to host cenots6.8) UUID : 7d304fed:b021d2d4:0cc8720b:af8683fb Events : 17 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 1 8 34 1 active sync /dev/sdc2
3、格式化/dev/md0,并掛載
mkfs.ext4 /dev/md0 UUID=d5f1e3db-4f61-4651-9b7a-b2bf82446b59 /mnt/raid ext4 defaults 0 0 root@cenots6.8 ~ # mount -a root@cenots6.8 ~ # mount -s /dev/md0 on /mnt/raid type ext4 (rw) root@cenots6.8 ~ # cd /mnt/raid/ root@cenots6.8 /mnt/raid # touch a root@cenots6.8 /mnt/raid # echo bbbb > a root@cenots6.8 /mnt/raid # cat a bbbb
4、生成配置文件
mdadm -Ds /dev/md0 > /etc/mdadm.conf
5、測試模擬損壞sdc2,然后移除,重新添加,在原有兩塊raid盤的基礎上添加/dev/sdc3
root@cenots6.8 ~ # mdadm /dev/md0 -f /dev/sdc2 ###模擬損壞/dev/sdc2 mdadm: set /dev/sdc2 faulty in /dev/md0 root@cenots6.8 ~ # mdadm -D /dev/md0 ### 查看狀態 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 2 0 0 2 removed 1 8 34 - faulty /dev/sdc2 root@cenots6.8 ~ # mdadm /dev/md0 -r /dev/sdc2 ###移除損壞硬盤 mdadm: hot removed /dev/sdc2 from /dev/md0 root@cenots6.8 ~ # mdadm -D /dev/md0 ###查看狀態 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 2 0 0 2 removed root@cenots6.8 ~ # mdadm /dev/md0 -a /dev/sdc2 ###重新添加新的硬盤 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 2 8 34 1 active sync /dev/sdc2 root@cenots6.8 ~ # mdadm -G /dev/md0 -n 3 -a /dev/sdc3 ###添加/dev/sdc3 到原有raid mdadm: added /dev/sdc3 raid_disks for /dev/md0 set to 3 root@cenots6.8 ~ # mdadm -D /dev/md0 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 2 8 34 1 active sync /dev/sdc2 3 8 35 2 spare rebuilding /dev/sdc3
6、刪除raid
umount /mnt/raid mdadm -S /dev/md0 ###停止raid rm -f /etc/mdadm.conf vi /etc/fstab ###刪除掛載點 fdisk /dev/sda ###刪除分區 mdadm --zero-superblock /dev/sdd1 ###清楚記錄
創建由三塊硬盤組成的可用空間為2G的RAID5設備,要求其chunk大小為256k,文件系統為ext4,開機可自動掛載至/mydata目錄
root@cenots6.8 ~ # mdadm -C /dev/md0 -l 5 -a yes -n 3 -x 1 -c 256 /dev/sdc{1,2,3,4} mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. root@cenots6.8 ~ # mkfs.ext4 /dev/md0 root@cenots6.8 ~ # mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Tue Aug 30 09:56:31 2016 Raid Level : raid5 Array Size : 2117632 (2.02 GiB 2.17 GB) Used Dev Size : 1058816 (1034.00 MiB 1084.23 MB) Raid Devices : 3 Total Devices : 4 Chunk Size : 256K Name : cenots6.8:0 (local to host cenots6.8) UUID : d1c039d1:44071753:bd67c401:7f2898af Events : 18 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 1 8 34 1 active sync /dev/sdc2 4 8 35 2 active sync /dev/sdc3 3 8 36 - spare /dev/sdc4 root@cenots6.8 ~ # vim /etc/fstab UUID=d5f1e3db-4f61-4651-9b7a-b2bf82446b59 /mydata ext4 defaults 0 0 root@cenots6.8 ~ # mount -a
LVM邏輯卷管理器:
lvm:logical volume manager邏輯卷管理器,通過DM模塊設備映射組件,能夠將一個或者多個底層的塊設備組織成一個邏輯設備的模塊。
功能特點:可以動態的擴展和縮減而不影響磁盤中的數據內容。
缺點:lv是通過軟件控制的,不是直接存儲在物理設備上面,如果有數據損壞不容易恢復,真正使用的時候應該放到有冗余的raid上面。
lvm的創建過程:
假如現在底層有一個硬盤設備或者一個分區,或者一個RAID在或者基于任何塊設備進行,現在把這個分區做成物理卷PV(能夠自我存儲設備),我們可以把PV當中所提供的存儲空間,在一個更低的單位上劃分多個獨立的存儲單元,并且把存儲把多個存儲單元合并在一個高層上形成一個組件,我們成為卷組VG,卷組可以包含多個物理卷,卷組所有可用的空間都是有物理卷PV提供的,卷組類似于擴展分區,不能直接使用,需要分區為邏輯分區,在格式化掛載使用,所以在VG的基礎上還要在創建LV組件,lV才是真正的邏輯卷,可以才格式化掛載使用的,lv可以跨越多個PV 可以擴展和縮減,這里也有一個塊的概念那就是PE,PE是在創建VG的時候創建的,且默認大小為4M,如果已經創建好了VG了,則不能修改PE的大小,只能重新創建VG修改PE,如果PE已經分配給LV使用,那么這里PE叫做LE。
應用舉例:創建一個至少有兩個PV組成的大小為20G的名為testvg的VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄
1、通過fdisk 創建兩個10G的分區/dev/sdb1 、/dev/sdb2,調整分區ID 為8e。
2、創建物理卷PV
pvcreate /dev/sdb{1,2}
pvs 或pvdispaly 可以查看物理卷信息
3、創建卷組,指定PE大小為16M,注意:PE大小只能在此處指定。
vgcreate -s 16M testvg /dev/sdb{1,2}
vgs或vgdisplay 查看卷組VG的信息
4、創建一個5G的邏輯卷LVM
lvcreate -L 5G -n testlv testvg
lvs或lvdisplay查看邏輯卷lvm的信息
ls /dev/mapper 查看testvg-testlv就存在了,可以格式化掛載使用了
5、格式化掛載邏輯卷LVM,成功之后就可以使用了。
mkfs.ext4 -L TESTLV /dev/testvg/testlv
vim /etc/fstab
UUID=5aae9d44-745c-46dc-9c6d-68fce7b159b3 /users ext4 defaults 0 0
mount -a
mount -s
/dev/mapper/testvg-testlv on /users type ext4 (rw)
df -h
/dev/mapper/testvg-testlv 4.8G 10M 4.6G 1% /users
6、擴展卷組VG 和 邏輯卷lVM
pvcreate /dev/sdb3
vgextend testvg /dev/sdb3 如果此時卷組不夠用了,可以動態添加卷組VG
vgs或vgdisplay 查看卷組VG的信息
lvextend -L 10G /dev/testvg/testlv 擴展到10G,但是由于擴展的5G沒有文件系統,所以df的時候發現,空間沒有變為10G,因此需要執行:
resize2fs /dev/testvg/testlv 擴展文件系統 resize2fs只能針對ext類型的文件系統進行擴展,因此在使用xfs 創建lvm時如需擴展要使用xfs_growfs
擴展所有空間:lvextend –r –l +100%FREE /dev/testvg/testlv -r的作用可以替代resize2fs 的功能
df -h
/dev/mapper/testvg-testlv 9.8G 12M 9.3G 1% /users
7、邏輯卷lvm縮減
umount /users
e2fsck -f /dev/testvg/testlv 強制檢測和修復
resize2fs /dev/testvg/testlv 3G 調整到3個G
lvreduce -L 3G /dev/testvg/testlv 減小到3個G
mount /dev/testvg/testlv /users 重新掛載
df -h
/dev/mapper/testvg-testlv 2.9G 7.5M 2.7G 1% /users
8、創建快照
lvcreate -s -L 512M -n testlv-snap -p r /dev/testvg/testlv
mount /dev/testvg/testlv-snap /snap
9、如果想移除PV可以做如下操作
pvmove /dev/sdb1 此時執行的操作是將sdb1上面的PE移動到其他物理卷上面
vgreduce testvg /dev/sdb1
pvremove /dev/sdb1
10、刪除快照
umount /snap
lvremove /dev/testvg/testlv-snap
11、刪除lv、vg、pv
umount /users
lvremove /dev/testvg/testlv
vgremove testvg
pvremove /dev/sdb{1,2,3}
注意:注意快照也是一個邏輯卷,剛創建完成的時候是一個空的磁盤空間,當我們的源數據要修改時,我們就會把源數據拷貝到快照卷中,然后在修改源數據,如果源數據修改多少次,快照卷的文件也不會變化,只是保留創建快照卷之后,文件第一次變化之前的狀態,其他文件如果不修改,則不會備份到快照卷中,但是當我們創建完快照卷的時候,我們是可以看到里面是有文件存在的,這是因為里面的文件不是真正存儲在快照卷中,打開的時候里面的文件都在我們通過快照卷事實上是提供了訪問原卷的另外一個通路,且在設置快照卷大小時,原卷的數據量變化量不要超過快照卷大小。
原創文章,作者:Naruto,如若轉載,請注明出處:http://www.www58058.com/42017