磁盤配額、Raid及邏輯卷LVS
磁盤配額
Linux是多用戶的操作系統,同一時間可能有多個用戶登錄到系統上進行操作,某些用戶可能會寫入很多數據,占用大量磁盤空間,導致其他用戶沒有磁盤空間可用。如何限定某個用戶對磁盤的使用空間大小,以及可使用的inode多少,也就是限定可創建多少個文件,這就是磁盤配額管理的作用。
磁盤配額特點
在內核中執行;
以文件系統為單位啟用;
對不同組或者用戶的策略不同;
可根據塊或者節點進行限制;
可執行軟限制(soft limit)或硬限制(hard limit)
磁盤配額管理的設定
1、在/etc/fstab中啟用文件系統掛載選項usrquota、grpquota,根據需要,只針對用戶啟用或只針對組啟用,也可以兩個都啟用;一般對/home目錄做配額,下面以/home為例。
注:目錄內的內容需先備份出來;剛設置時需要重新掛載文件系統才能使用。
2、初始化數據庫
quotacheck -cug /home
使用quotacheck命令后會在目錄內生產兩個數據文件。分別為用戶或組配額的數據庫文件。
注:在直接使用quotacheck命令時,系統可能會提示權限不足,這是selinux的緣故。setenforce 0可臨時更改selinux安全模式。如下圖:
3、開啟或關閉配額功能
quotaon /home
查看配額開啟狀態
quotaon -p /home
關閉配額功能
quotaoff /home
4編輯用戶具體配額信息
edquota user_name
可根據大小或inodes節點數進行設定,大小默認單位為Bytes;
edquota -p username1 username2 命令可設定用戶1的配額方案與用戶2的一樣。
此外還可以用非交互式的命令來設定;
setquota USERNAME 軟容量 硬容量 軟數量 硬數量 /DIR
4、查看用戶配額情況;
quota username 查看某用戶的配額情況;
或repquota /dir 查看某目錄所有進行了配額限制的用戶的情況;
注意:只有目錄中已存在某用戶的文件此時此用戶的配額限制才會有效。
RAID管理
RAID(Redundant Array of Independent Disks獨立磁盤冗余陣列)是一個使用多個硬盤,在幾塊硬盤上分散存儲或者重復存儲數據的系統。RAID不僅有助于避免數據丟失,還能把因為硬件故障造成的停機時間減少到最?。ㄍǔD芙档偷?),同時還有可能提高性能。RAID可以使用硬件來實現,也可以由軟件來實現。
RAID特點:
提高IO能力:磁盤并行讀寫;
提高耐用性;磁盤冗余來實現;
RAID級別:多塊磁盤組織在一起的工作方式有所不同;
RAID實現的方式:
外接式磁盤陣列:通過擴展卡提供適配能力;
內接式RAID:主板集成RAID控制器,安裝OS前在BIOS里配置;
Software RAID:利用軟件實現RAID功能;
RAID工作原理
RAID能做兩件基本的事情。
首先,raid通過把數據分散到多塊硬盤上,因而能讓多個硬盤同時工作或讀取一條數據流,所以提供性能。
其次,RAID在多個硬盤上復制或者鏡像數據,降低了由于一塊硬盤發生故障帶來的風險。
RAID級別
RAID0:只提高性能。這個模式使用兩個或者多個容量相同的硬盤來縮短寫數據和訪問時間;
RAID1:只提供冗余性。它同時在兩個或者多個硬盤上復制數據。這個模式鏡像數據但卻可能會降低性能,因為必須不止一次寫數據。
RAID4:這個模式把數據分片存儲,但是需要用一個硬盤保存校驗信息,因此會花些時間等待寫校驗盤。除非有非常正當的理由使用RAID4,否則一般選則RAID5。
RAID5:通過把數據和校驗信息都分片存儲,這個模式既創建了一個冗余結構,同時又降低了讀寫時間。RAID5至少需要3塊硬盤,允許一塊硬盤損壞。
RAID6:采用兩塊硬盤分片存儲校驗信息,因此更加提高了冗余性。至少需要4快硬盤,允許2快硬盤損壞。
RAID7:可以理解為一個獨立存儲計算機,自身帶有操作系統和管理工具,可以獨立運行,理論上性能最高的RAID模式。
混合類型級別
RAID50:先做RAID5,再做RAID0,性能冗余皆有提升,空間利用率(n-2)/2,至少6快硬盤;
RAID01:先做RAID0,再做RAID1,性能提升冗余都有,至少4塊硬盤,空間利用率1/2;
RAID10:先做RAID1,再做RAID0,性能提升冗余都有,至少4塊硬盤,空間利用率1/2;
JBOD(Just a Bunch Of Disks)將多塊磁盤的空間合并一個大的連續空間使用.不提升讀寫速率,也不提供冗余。
常用級別:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
配置RAID
Linux使用mdadm來管理軟RAID,可以將任何塊設備做成RAID,支持將磁盤的某個分區、也支持整個磁盤創建為RAID設備。利用分區創建的時候,需要將分區類型修改為fd,利用整個磁盤創建時,則直接指定磁盤即可。
Linux軟raid支持的RAID級別:LINEAR, RAID0, RAID1, RAID4,RAID5, RAID6, RAID10
madadm命令用法:
mdadm [mode] <raiddevice> [options] <component-devices>
常用mode:
-A, –assemble:裝配已存在的磁盤陣列;
-C, –create:創建新的磁盤陣列;
-I, –incremental:增加單個設備到磁盤陣列;
-G, –grow:改變盤陣的大?。?/span>
常用options(in create,build,or grow mode):
-n, –raid-devices=#:指定RAID中活動的設備數量;
-x, –spare-devices=#:指明空閑盤的個數;
-c, –chunk=:指明塊大小,2^n,單位K,默認為512K;
-l, –level=:指明要創建的RAID的級別;
-a, –auto{=yes|no}:指明如何創建設備文件,yes表示按標準方式。
范例:創建RAID 使用mdadm創建一個10G的RAID5,分別使用四塊同樣大小的硬盤。
1、創建
mdadm -C /dev/md0 -a yes -l5 -n3 -x1 /dev/sd{b,c,d,e}
在創建raid的時候,/proc/mdstat文件顯示出進度信息;這個文件總是反映raid當前的狀態,在添加硬盤或者替換故障硬盤的時候,觀察這個文件非常有用(watch cat /proc/mdstat)
使用mdadm -D /dev/md0 可以查看詳細信息
使用mdadm -Ds /dev/md0 >> /etc/mdadm.conf 可以生成raid的配置文件/etc/mdadm.conf,mdadm命令在啟動或停止的時候會讀到這個文件,此時可以用配置文件重新啟用raid;
2、格式化 創建好raid后接著進行格式化
mkfs.ext4 /dev/md0
3、掛載 格式化后進行掛載就可以使用了,同理要每次系統啟動時自動掛載,須在/etc/fstab中配置好(建議用UUID配置,設備名重啟后可能會變動);
管理測試RAID
模擬磁盤故障
mdadm /dev/md0 -f /dev/sda1
移除磁盤
mdadm /dev/md0 –r /dev/sda1
移除認為損壞的設備,添加新的設備
mdadm /dev/md0 -a /dev/sda1
其他管理命令
增加raid設備的磁盤數量(增長模式)
mdadm -G /dev/md# -n # -a /DEVICE
-n指定要增長到幾塊磁盤,-a指定增加進去的磁盤
停用RAID設備(先取消掛載)
mdadm -S /dev/md#
重新啟用之前停用的RAID設備(前提是導出過配置文件)
mdadm -As /dev/md#
完全刪除停止RAID設備
1、停用RAID設備:mdadm -S /dev/md#
2、刪除保存過的RAID配置文件:rm -f /etc/mdadm.conf
3、刪除創建過RAID分區:fdisk 命令
4、如果發現無法完全刪除分區信息,利用mdadm –zero-superblock /DEVICE 將每個分區信息刪除
LVM
LVM(Logical Volume Manager,邏輯卷管理器)是一種可選的子系統,他提供了硬盤分區的一種超強版本.
它可以將多個單獨的物理硬盤指定成物理卷PV(Physical volume,由PE組成),再在物理卷上組成"卷組”(volume group).卷組的總容量接著可以分配給邏輯卷(logical volume),后者按照普通的塊設備來訪問.
邏輯卷的管理機制能讓實現:
更高效的使用和分配存儲空間;
在不同的物理設備之間移動邏輯卷;
隨時擴大和縮小邏輯卷的大??;
保存整個文件系統的“快照”
不必中斷設備就能替換聯機設備。
PV管理工具
創建pv(利用分區創建pv時,需要將分區類型改為8e)
pvcreate /dev/DEVICE
顯示pv信息
pvs [PhysicalVolume… 簡要顯示pv信息;
pvdisplay [PhysicalVolume…] 顯示pv詳細信息;
將指定的設備從pv中移除
pvremove /dev/DEVICE
移動pv
pvmove /dev/DEVICE
當縮減VG大小時,需要先將被縮減的設備上的文件移動到同一個VG上面的其他設備上,此時需要用pvmove來實現數據的轉移。
VG管理工具
顯示卷組信息
vgs 簡要
vgdisplay 詳細
創建卷組
Vgcreate [-s#[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
擴展卷組
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
縮減卷組
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
刪除卷組
先做pvmove,再做vgremove
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]
范例1:創建邏輯卷/dev/vg0/lv0,使用硬盤/dev/sdb(20G)和分區/dev/sdd1(10G)
1、創建pv
pvcreate /dev/sdb /dev/sdd1
2創建卷組vg
vgcreate vg0 /dev/sdb /dev/sdd1
創建了一個30G的卷組,默認PE大小4M,空閑30G。
3、創建lv
lvcreate -n lv0 -L 10G vg0
從vg0中創建了一個10G的邏輯卷/dev/vg0/lv0,名稱為lv0;
此時的/dev/vg0/lv0其實是軟鏈接指向/dev/dm-0
4、格式化
mkfs.ext4 /dev/vg0/lv0
此時使用blkid命令已經可以看到lv0文件系統了。
5、掛載lv–使用mount命令手動掛載或寫入配置文件/etc/fstab就可以使用了。
mount /dev/vg0/lv0 /mnt/lvm
范例2:擴展邏輯卷
1)lvextend -L +5G /dev/vg0/lv0 增加5個G
2)resize2fs /dev/vg0/lv0 更新文件系統大?。?/span>
步驟一也可以使用-r選項表示同時更新文件系統,此時第二步可省略eg. lvextend -L +5G -r /dev/vg0/lv0
可直接在線擴展不需要先umount文件系統
可使用lvextend -l +100%FREE /dev/vg0/lv0將所有空閑vg擴展到邏輯卷lv。
范例3:增加硬盤至卷組
1)pvcreate /dev/sdd2
2)vgextend vg0 /dev/sdd2
增加一個10G的分區/dev/sdd2,增加完后卷組vg0由30G變成40G.
范例4:縮減邏輯卷(須確??s減后的邏輯卷能容納縮減前lv內的數據,不然數據會丟失)
1、取消掛載
umount /dev/vg0/lv0
2、強制檢查文件系統
e2fsck -f /dev/vg0/lv0
3、縮減文件系統,例如至10G
resize2fs /dev/vg0/lv0 10G
4、縮減lv大小
lvreduce -L 10G /dev/vg0/lv0
5、重新掛載mount -a
范例5:刪除某塊磁盤,如刪除/dev/sdd2(不需要取消掛載)
1、將此塊磁盤上的PE移動到同卷組內其他磁盤上(其他磁盤剩余空間須足夠)
pvmove /dev/sdd2
2、縮減vg大小
vgreduce vg0 /dev/sdd2
3、刪除pv
pvremove /dev/sdd2
范例6:刪除整個邏輯卷
1、取消掛載umount
2、刪除邏輯卷(邏輯卷內容會清空)
lvremove /dev/vg0/lv0
3、刪除卷組
vgremove vg0
4、刪除物理卷
pvremove device…
邏輯卷管理器快照
快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝
快照將當時的系統信息記錄下來,就好像照相一般,若將來有任何數據改動了,則原始數據會被移動到快照區,沒有改動的區域則由快照區和文件系統共享。
由于快照區與原本的LV共用很多PE的區塊,因此快照須與被快照的LV在同一個VG上!系統恢復的時候的文件數量不能高于快照區的實際容量。
對于需要備份或者復制的現有數據集臨時拷貝以及其它操作來說,快照是最合適的選擇。
在生成快照時會分配給它一定的空間,但只有在原來的邏輯卷或者快照有所改變才會使用這些空間,所以快照中只含有原來的邏輯卷中更改的數據,建立快照的卷大小一般只需要原始邏輯卷的15%~20%就夠了。也可以使用lvextend放大快照。
快照管理命令
為現有邏輯卷創建快照
#lvcreate -L 1G -s -n snap-data -p r /dev/vg0/data
掛載快照
#mkdir -p /mnt/snap
#mount -o ro /dev/vg0/data /mnt/snap
刪除快照
#umount /mnt/snap
#lvremove /dev/vg0/data
范例:創建快照
lvcreate -L 2G -s -n lv0_snapshot -p r /dev/vg0/lv0
說明:給邏輯卷/dev/vg0/lv0創建一個2G的快照lv0_snapshot;-s 表明邏輯卷類型為快照,”-p r”表明為只讀。此時快照可直接掛載,不需要格式化了。
原創文章,作者:beyond,如若轉載,請注明出處:http://www.www58058.com/47120