閱讀目錄
檢查內核是否支持配額
檢查指定分區的掛載屬性是否滿足條件
quotacheck 生成用戶和組的配置文件
edquota 編輯配額文件,設置指定限制大小
啟動quota配額管理
關閉quota配額管理
quota 查看指定用戶和組的配額信息
repquota 查看指定分區的磁盤配額
setquota 非交互設置磁盤配額命令
磁盤配額小實驗
PV 物理卷創建與移除
VG 卷組創建與移除
LV 邏輯卷創建與移除
LV 容量增加 (將LV的容量增加5G的空間)
LV 容量縮小(將LV的容量縮小5G的空間)
LV 快照功能
Mdadm 命令解析
構建一個RAID 5
RAID 仿真救援模式
如果您的 Linux 服務器有多個用戶經常存取數據時,為了維護所有使用者在硬盤容量的公平使用,磁盤配額 (Quota) 就是一項非常有用的工具,另外,如果你的用戶常常抱怨磁盤容量不夠用,那么更進階的文件系統就得要學習,本章我們會介紹磁盤陣列 (RAID),及邏輯卷軸文件系統 (LVM),這些工具都可以幫助你管理與維護使用者可用的磁盤容量.
Quota 磁盤配額配置
Quota 這個玩意兒就字面上的意思來看,就是有多少『限額』的意思啦,如果是用在零用錢上面,就是類似『有多少零用錢一個月』的意思之類的,如果是在計算機主機的磁盤使用量上呢? 以 Linux 來說,就是有多少容量限制的意思,我們可以使用 quota 來讓磁盤的容量使用較為公平,下面我們會介紹什么是 quota 然后以一個完整的范例來介紹 quota 的使用作用.
由于Linux是一個多用戶管理的操作系統,而Linux默認情況下并不限制每個用戶使用磁盤空間的大小,假如某個用戶疏忽或者惡意占滿磁盤空間,將導致系統磁盤無法寫入甚至崩潰;為了保證系統磁
盤的有足夠的剩余空間,我們需要對用戶和組進行磁盤空間使用限制。
磁盤配額限制類型:
? 限制用戶和組,對磁盤空間的使用量
? 限制用戶和組,在磁盤內創建文件的個數
磁盤配額限制級別:
? 軟限制:低級限制,此限制可以突破,突破時會被警告,超出部分會有寬限天數,寬限天數到期后超出部分被清空,軟限制不能超過硬限制
? 硬限制:絕對限制,此限制不會被突破,達到指定限制后無法使用更多空間
? 寬限天數:當有數據超過軟限制后,超出部分會被計時,寬限天數到期后超出部分數據將被清空,寬限天數默認是7天
注:磁盤配額是針對分區進行設置的,無法實現,"某用戶在系統中共計只能使用50MB磁盤空間",只能設置某用戶在/home分區能使用30M這樣的限制.切記:磁盤配額是針對分區的!
精簡模式下沒有此命令,執行 yum install -y quota 安裝
回到頂部
檢查內核是否支持配額
[root@localhost ~]# cat /boot/config-3.10.0-693.el7.x86_64 |grep "CONFIG_QUOTA" CONFIG_QUOTA=y CONFIG_QUOTA_NETLINK_INTERFACE=y # CONFIG_QUOTA_DEBUG is not set CONFIG_QUOTA_TREE=y CONFIG_QUOTACTL=y CONFIG_QUOTACTL_COMPAT=y
回到頂部
檢查指定分區的掛載屬性是否滿足條件
[root@localhost ~]# dumpe2fs -h /dev/vdb |grep "Default mount options" dumpe2fs 1.42.9 (28-Dec-2013) Default mount options: user_xattr acl #檢查結果中是否包含,usrquota,grpquota兩個掛載屬性
回到頂部
quotacheck 生成用戶和組的配置文件
[root@localhost ~]# quotacheck --help Utility for checking and repairing quota files. quotacheck [-gucbfinvdmMR] [-F] filesystem|-a 語法格式:[ quota [選項] [分區名] ] -a #掃描/etc/mtab文件中所有啟用磁盤配額功能的分區.如果加入此參數,命令后面就不需要加入分區名了 -u #建立用戶配額的配置文件,即生成aquota.user -g #建立組配額的配置文件,即aquota.group -v #顯示掃描過程 -c #清除原有的配置文件,重新建立新的配置文件
回到頂部
edquota 編輯配額文件,設置指定限制大小
[root@localhost ~]# edquota --help edquota: Usage: edquota [-rm] [-u] [-F formatname] [-p username] [-f filesystem] username ... edquota [-rm] -g [-F formatname] [-p groupname] [-f filesystem] groupname ... edquota [-u|g] [-F formatname] [-f filesystem] -t edquota [-u|g] [-F formatname] [-f filesystem] -T username|groupname ... 語法格式:[ edquota [選項] [用戶名或組名] ] -u #用戶名 -g #組名 -t #設定寬限時間 -p #復制磁盤配額規則,不需要每一個用戶或者組都手動設置一遍 #edquota -p 模板用戶 -u 目標用戶 #注:配置文件中所寫大小默認單位KB
回到頂部
啟動quota配額管理
[root@localhost ~]# quotaon --help quotaon: Usage: quotaon [-guvp] [-F quotaformat] [-x state] -a quotaon [-guvp] [-F quotaformat] [-x state] filesys ... 語法格式:[ quotaon [選項] [分區名] ] -a #根據/etc/mtab文件啟動所有分區的磁盤配額(不寫分區名) -u #啟動用戶的磁盤配額 -g #啟動組的磁盤配額 -v #顯示啟動過程信息
回到頂部
關閉quota配額管理
[root@localhost ~]# quotaoff --help quotaoff: Usage: quotaoff [-guvp] [-F quotaformat] [-x state] -a quotaoff [-guvp] [-F quotaformat] [-x state] filesys ... 語法格式:[ quotaoff [選項] [分區名] ] -a #根據/etc/mtab文件關閉所有分區的磁盤配額(不寫分區名) -u #關閉用戶的磁盤配額 -g #關閉組的磁盤配額 -v #顯示關閉過程信息
回到頂部
quota 查看指定用戶和組的配額信息
[root@localhost ~]# quota --hlep quota: unrecognized option '--hlep' quota: Usage: quota [-guqvswim] [-l | [-Q | -A]] [-F quotaformat] quota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -u username ... quota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -g groupname ... quota [-qvswugQm] [-F quotaformat] -f filesystem ... 語法格式:[ quota [選項] [用戶名] ] -u #用戶名 -g #組名 -v #顯示詳細信息 -s #以常見單位顯示大小
回到頂部
repquota 查看指定分區的磁盤配額
[root@localhost ~]# repquota --help repquota: Utility for reporting quotas. Usage: repquota [-vugsi] [-c|C] [-t|n] [-F quotaformat] (-a | mntpoint) 語法格式:[ repquota [選項] [分區名] ] -u #查詢用戶配額 -g #查詢組配額 -v #顯示詳情 -s #以常見單位顯示
回到頂部
setquota 非交互設置磁盤配額命令
[root@localhost ~]# setquota --help setquota: Usage: setquota [-u|-g] [-rm] [-F quotaformat]-a| ... setquota [-u|-g] [-rm] [-F quotaformat] <-p protouser|protogroup> -a| ... setquota [-u|-g] [-rm] [-F quotaformat] -b [-c] -a| ... setquota [-u|-g] [-F quotaformat] -t -a| ... setquota [-u|-g] [-F quotaformat] -T -a| ... setquota -u 用戶名 軟(容) 硬(容) 軟(數) 硬(數) 分區名 注:這樣的非交互式的命令更適合寫入腳本,而且假如有很多用戶的磁盤配額配置相同也可以用復制來實現。
回到頂部
磁盤配額小實驗
? 這里有一塊未分區的磁盤/dev/sdb,手動分區并格式化.
? 將磁盤配額開啟,并寫入開機自啟動列表.
? 創建lyshark用戶,和temp組.
? 配置lyshark的軟限制200M,硬限制500M,配置temp組軟限制100M,硬限制200M.
1.檢查系統是否支持配額
[root@localhost ~]# cat /boot/config-3.10.0-862.el7.x86_64 |grep "CONFIG_QUOTA" CONFIG_QUOTA=y CONFIG_QUOTA_NETLINK_INTERFACE=y # CONFIG_QUOTA_DEBUG is not set CONFIG_QUOTA_TREE=y CONFIG_QUOTACTL=y CONFIG_QUOTACTL_COMPAT=y
2.查看磁盤信息
[root@localhost ~]# ll /dev/sd* brw-rw---- 1 root disk 8, 0 6月 24 09:14 /dev/sda brw-rw---- 1 root disk 8, 1 6月 24 09:14 /dev/sda1 brw-rw---- 1 root disk 8, 2 6月 24 09:14 /dev/sda2 brw-rw---- 1 root disk 8, 16 6月 24 09:14 /dev/sdb
3.磁盤分區/dev/sdb,并格式化為ext4格式
[root@localhost ~]# parted /dev/sdb GNU Parted 3.1 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) mkpart Partition name? []? sdb1 File system type? [ext2]? ext2 Start? 1M End? 10000M (parted) p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 10.7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 10.0GB 9999MB ext4 sdb1 (parted) q Information: You may need to update /etc/fstab. [root@localhost ~]# mkfs.ext4 /dev/sdb1 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 610800 inodes, 2441216 blocks 122060 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2151677952 75 block groups 32768 blocks per group, 32768 fragments per group 8144 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
4.創建掛載點,并掛載設備
[root@localhost ~]# mkdir /sdb1 [root@localhost ~]# mount /dev/sdb1 /sdb1/ [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 8.0G 1.4G 6.7G 17% / devtmpfs 98M 0 98M 0% /dev tmpfs 110M 0 110M 0% /dev/shm tmpfs 110M 5.5M 104M 6% /run tmpfs 110M 0 110M 0% /sys/fs/cgroup /dev/sda1 1014M 130M 885M 13% /boot tmpfs 22M 0 22M 0% /run/user/0 /dev/sr0 4.2G 4.2G 0 100% /mnt /dev/sdb1 9.1G 37M 8.6G 1% /sdb1
5.檢查分區是否支持配額 (主要看有沒有usrquota,grpquota)
[root@localhost ~]# dumpe2fs -h /dev/sdb1 |grep "Default mount options" dumpe2fs 1.42.9 (28-Dec-2013) Default mount options: user_xattr acl [root@localhost ~]# cat /proc/mounts |grep "/dev/sdb1" /dev/sdb1 /sdb1 ext4 rw,relatime,data=ordered 0 0 #上面沒有看到相關權限,此時我們要重新掛載一下磁盤,加上權限 [root@localhost ~]# mount -o remount,usrquota,grpquota /dev/sdb1 [root@localhost ~]# cat /proc/mounts |grep "/dev/sdb1" /dev/sdb1 /sdb1 ext4 rw,relatime,quota,usrquota,grpquota,data=ordered 0 0
6.設置開機自動掛載分區,并開啟配額
[root@localhost ~]# ls -l /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 10 Sep 21 20:07 13d5ccc2-52db-4aec-963a-f88e8edcf01c -> ../../sda1 lrwxrwxrwx 1 root root 9 Sep 21 20:07 2018-05-03-20-55-23-00 -> ../../sr0 lrwxrwxrwx 1 root root 10 Sep 21 20:07 4604dcf2-da39-455a-9719-e7c5833e566c -> ../../dm-0 lrwxrwxrwx 1 root root 10 Sep 21 20:47 939cbeb8-bc88-44aa-9221-50672111e123 -> ../../sdb1 lrwxrwxrwx 1 root root 10 Sep 21 20:07 f6a4b420-aa6a-4e66-bbb3-c8e8280a099f -> ../../dm-1 [root@localhost ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Sep 18 0906 2018 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos-root / xfs defaults 0 0 UUID=13d5ccc2-52db-4aec-963a-f88e8edcf01c /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 UUID=7d7f22ed-466e-4205-8efe-1b6184dc5e1b swap swap defaults 0 0 UUID=939cbeb8-bc88-44aa-9221-50672111e123 /sdb1 ext4 defaults,usrquota,grpquota 0 0 [root@localhost ~]# mount -o remount,usrquota,grpquota /dev/sdb1
7.生成配額文件 quotackeck -ugv[分區名]
[root@localhost ~]# quotacheck -ugv /dev/sdb1 quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown. quotacheck: Scanning /dev/sdb1 [/sdb1] done quotacheck: Cannot stat old user quota file /sdb1/aquota.user: No such file or directory. Usage will not be subtracted. quotacheck: Cannot stat old group quota file /sdb1/aquota.group: No such file or directory. Usage will not be subtracted. quotacheck: Cannot stat old user quota file /sdb1/aquota.user: No such file or directory. Usage will not be subtracted. quotacheck: Cannot stat old group quota file /sdb1/aquota.group: No such file or directory. Usage will not be subtracted. quotacheck: Checked 3 directories and 0 files quotacheck: Old file not found. quotacheck: Old file not found.
8.編輯限制,edquota -ugtp [用戶名/組名]
配置lyshark的軟限制200M,硬限制500M
[root@localhost ~]# edquota -u lyshark Disk quotas for user lyshark (uid 1000): ↓文件系統 軟(容量) 硬(容量) I節點 軟(數) 硬(數) Filesystem blocks soft hard inodes soft hard /dev/sdb1 0 200M 500M 0 0 0
配置temp組軟限制100M,硬限制200M.
[root@localhost ~]# edquota -g temp Disk quotas for group temp (gid 1001): Filesystem blocks soft hard inodes soft hard /dev/sdb1 0 102400 204800 0 0 0
9.開啟配額,quota on/off -augv
[root@localhost ~]# quotaon -augv /dev/sdb1 [/sdb1]: group quotas turned on /dev/sdb1 [/sdb1]: user quotas turned on
10.查看指定用戶或組的配額,quota -ugvs
[root@localhost ~]# quota -ugvs Disk quotas for user root (uid 0): Filesystem space quota limit grace files quota limit grace /dev/sdb1 20K 0K 0K 2 0 0 Disk quotas for group root (gid 0): Filesystem space quota limit grace files quota limit grace /dev/sdb1 20K 0K 0K 2 0 0
LVM 邏輯卷管理器
LVM(Logical Volume Manager)邏輯卷管理,它是Linux環境下對磁盤分區進行管理的一種機制,普通的磁盤分區管理方式在分區劃分好之后就無法改變其大小,當一個邏輯分區存放不下某個文件時,解決的方法通常是使用符號鏈接,或者使用調整分區大小的工具,但這只是暫時解決辦法,沒有從根本上解決問題.簡單來說LVM就是將物理磁盤融合成一個或幾個大的虛擬磁盤存儲池,按照我們的需求去存儲池劃分空間來使用,由于是虛擬的存儲池,所以劃分空間時可以自由的調整大小,如下:
LVM的組成部分:
? 物理卷(PV,Physical Volume):由磁盤或分區轉化而成
? 卷組(VG,Volume Group):將多個物理卷組合在一起組成了卷組,組成同一個卷組的可以是同一個硬盤的不同分區,也可以是不同硬盤上的不同分區,我們通常把卷組理解為一塊硬盤.
? 邏輯卷(LV,Logical Volume):把卷組理解為硬盤的話,那么我們的邏輯卷則是硬盤上的分區,邏輯卷可以進行格式化,存儲數據.
? 物理擴展(PE,Physical Extend):PE卷組的最小存儲單元,PE所在的位置是VG卷組,即硬盤上,那么我們可以把PE理解為硬盤上的扇區,默認是4MB,可自由配置.
這里準備好4塊硬盤,無需分區與格式化.
[root@localhost ~]# ll /dev/sd[b-z] brw-rw---- 1 root disk 8, 16 Sep 21 22:04 /dev/sdb brw-rw---- 1 root disk 8, 32 Sep 21 22:04 /dev/sdc brw-rw---- 1 root disk 8, 48 Sep 21 22:04 /dev/sdd brw-rw---- 1 root disk 8, 64 Sep 21 22:04 /dev/sde
回到頂部
PV 物理卷創建與移除
PV的創建
pvcreate [分區路徑],[分區路徑][.......] [root@localhost ~]# ll /dev/sd[b-z] brw-rw---- 1 root disk 8, 16 Sep 21 22:04 /dev/sdb brw-rw---- 1 root disk 8, 32 Sep 21 22:04 /dev/sdc brw-rw---- 1 root disk 8, 48 Sep 21 22:04 /dev/sdd brw-rw---- 1 root disk 8, 64 Sep 21 22:04 /dev/sde [root@localhost ~]# pvcreate /dev/sdb /dev/sdc #此處拿3塊硬盤創建 Physical volume "/dev/sdb" successfully created. Physical volume "/dev/sdc" successfully created. Physical volume "/dev/sdd" successfully created. [root@localhost ~]# pvs #查詢創建好的硬盤 PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <9.00g 0 /dev/sdb lvm2 --- 10.00g 10.00g /dev/sdc lvm2 --- 10.00g 10.00g /dev/sdd lvm2 --- 10.00g 10.00g
PV的移除
pvremove [分區路徑] [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <9.00g 0 /dev/sdb lvm2 --- 10.00g 10.00g /dev/sdc lvm2 --- 10.00g 10.00g /dev/sdd lvm2 --- 10.00g 10.00g [root@localhost ~]# pvremove /dev/sdd #移除/dev/sdd Labels on physical volume "/dev/sdd" successfully wiped. [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <9.00g 0 /dev/sdb lvm2 --- 10.00g 10.00g /dev/sdc lvm2 --- 10.00g 10.00g
回到頂部
VG 卷組創建與移除
創建VG卷組,VG卷組要在PV中選擇
vgcreate -s [指定PE大小] [VG卷組名] [分區路徑] [分區路徑][.....] [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <9.00g 0 /dev/sdb lvm2 --- 10.00g 10.00g /dev/sdc lvm2 --- 10.00g 10.00g [root@localhost ~]# vgcreate -s 4M my_vg /dev/sdb /dev/sdc #此處就是創建一個VG卷組 Volume group "my_vg" successfully created [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <9.00g 0 my_vg 2 0 0 wz--n- 19.99g 19.99g #這就是VG卷組,名字是my_vg
給當前my_vg卷組,添加一塊新的PV,也就是擴展卷組
vgextend [卷組名] [物理卷分區] [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <9.00g 0 /dev/sdb my_vg lvm2 a-- <10.00g <10.00g /dev/sdc my_vg lvm2 a-- <10.00g <10.00g /dev/sdd lvm2 --- 10.00g 10.00g #這個物理卷沒有劃分卷組 [root@localhost ~]# vgextend my_vg /dev/sdd #添加一個PV到指定卷組 Volume group "my_vg" successfully extended [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <9.00g 0 /dev/sdb my_vg lvm2 a-- <10.00g <10.00g /dev/sdc my_vg lvm2 a-- <10.00g <10.00g /dev/sdd my_vg lvm2 a-- <10.00g <10.00g #已被劃分到my_vg卷組
在VG卷組里移除一個PV(移除單個PG)
vgreduce [卷組名] [物理卷分區] [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <9.00g 0 /dev/sdb my_vg lvm2 a-- <10.00g <10.00g /dev/sdc my_vg lvm2 a-- <10.00g <10.00g /dev/sdd my_vg lvm2 a-- <10.00g <10.00g [root@localhost ~]# vgreduce my_vg /dev/sdd #將/dev/sdd從my_vg卷組里移除 Removed "/dev/sdd" from volume group "my_vg" [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <9.00g 0 /dev/sdb my_vg lvm2 a-- <10.00g <10.00g /dev/sdc my_vg lvm2 a-- <10.00g <10.00g /dev/sdd lvm2 --- 10.00g 10.00g
移除整個VG卷組
vgremove [卷組名] [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <9.00g 0 my_vg 2 0 0 wz--n- 19.99g 19.99g [root@localhost ~]# vgremove my_vg #移除整個卷組 Volume group "my_vg" successfully removed [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <9.00g 0 [root@localhost ~]#
移除空的物理卷VG
vgreduce -a [卷組名] [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <9.00g 0 my_vg 3 0 0 wz--n- <29.99g <29.99g [root@localhost ~]# vgreduce -a my_vg #只移除空卷組 Removed "/dev/sdb" from volume group "my_vg" Removed "/dev/sdc" from volume group "my_vg" [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <9.00g 0 my_vg 1 0 0 wz--n- <10.00g <10.00g
回到頂部
LV 邏輯卷創建與移除
創建LVM
lvcreate -L [指定大小] -n [LV名字] [VG卷組:從哪個卷組里劃分] [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <8.00g swap centos -wi-ao---- 1.00g [root@localhost ~]# lvcreate -L 10G -n my_lv my_vg #創建LVM邏輯卷 Logical volume "my_lv" created. [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <8.00g swap centos -wi-ao---- 1.00g my_lv my_vg -wi-a----- 10.00g
格式化并掛載使用
[root@localhost ~]# mkdir /LVM #首先創建一個掛載點 [root@localhost ~]# [root@localhost ~]# mkfs.ext4 /dev/my_vg/my_lv #格式化LVM分區 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 655360 inodes, 2621440 blocks 131072 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2151677952 80 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done [root@localhost ~]# mount /dev/my_vg/my_lv /LVM/ #掛載LVM [root@localhost ~]# [root@localhost ~]# df -h #查看結果 Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 8.0G 1.2G 6.9G 15% / devtmpfs 98M 0 98M 0% /dev tmpfs 110M 0 110M 0% /dev/shm tmpfs 110M 5.5M 104M 5% /run tmpfs 110M 0 110M 0% /sys/fs/cgroup /dev/sda1 1014M 130M 885M 13% /boot tmpfs 22M 0 22M 0% /run/user/0 /dev/mapper/my_vg-my_lv 9.8G 37M 9.2G 1% /LVM ← 掛載成功
回到頂部
LV 容量增加 (將LV的容量增加5G的空間)
注意:這里擴展,要先擴展LVM,然后再擴展文件系統
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 8.0G 1.2G 6.9G 15% / devtmpfs 98M 0 98M 0% /dev tmpfs 110M 0 110M 0% /dev/shm tmpfs 110M 5.5M 104M 5% /run tmpfs 110M 0 110M 0% /sys/fs/cgroup /dev/sda1 1014M 130M 885M 13% /boot tmpfs 22M 0 22M 0% /run/user/0 /dev/mapper/my_vg-my_lv 9.8G 37M 9.2G 1% /LVM ←此處是10G [root@localhost ~]# lvextend -L +5G /dev/my_vg/my_lv #執行增加命令,從VG卷組劃分5G Size of logical volume my_vg/my_lv changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840). Logical volume my_vg/my_lv successfully resized. [root@localhost ~]# resize2fs -f /dev/my_vg/my_lv #擴展文件系統 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/my_vg/my_lv is mounted on /LVM; on-line resizing required old_desc_blocks = 2, new_desc_blocks = 2 The filesystem on /dev/my_vg/my_lv is now 3932160 blocks long. [root@localhost ~]# df -h #驗證擴展結果 Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 8.0G 1.2G 6.9G 15% / devtmpfs 98M 0 98M 0% /dev tmpfs 110M 0 110M 0% /dev/shm tmpfs 110M 5.5M 104M 5% /run tmpfs 110M 0 110M 0% /sys/fs/cgroup /dev/sda1 1014M 130M 885M 13% /boot tmpfs 22M 0 22M 0% /run/user/0 /dev/mapper/my_vg-my_lv 15G 41M 14G 1% /LVM ←此處已經從10G 增加到15G
回到頂部
LV 容量縮小(將LV的容量縮小5G的空間)
注意:這里縮小,要卸載文件系統,檢查分區,然后縮小文件系統,最后再縮小LVM
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 8.0G 1.2G 6.9G 15% / devtmpfs 98M 0 98M 0% /dev tmpfs 110M 0 110M 0% /dev/shm tmpfs 110M 5.5M 104M 5% /run tmpfs 110M 0 110M 0% /sys/fs/cgroup /dev/sda1 1014M 130M 885M 13% /boot tmpfs 22M 0 22M 0% /run/user/0 /dev/mapper/my_vg-my_lv 15G 41M 14G 1% /LVM ←此處顯示15G空間 [root@localhost ~]# umount /dev/my_vg/my_lv #卸載LVM卷組 [root@localhost ~]# e2fsck -f /dev/my_vg/my_lv #檢查文件系統 e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/my_vg/my_lv: 11/983040 files (0.0% non-contiguous), 104724/3932160 blocks [root@localhost ~]# resize2fs -f /dev/my_vg/my_lv 10G(減小后的大小) #縮小文件系統 resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/my_vg/my_lv to 2621440 (4k) blocks. The filesystem on /dev/my_vg/my_lv is now 2621440 blocks long. [root@localhost ~]# lvreduce -L 10G /dev/my_vg/my_lv #縮小LVM WARNING: Reducing active logical volume to 10.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce my_vg/my_lv? [y/n]: y #輸入y Size of logical volume my_vg/my_lv changed from 15.00 GiB (3840 extents) to 10.00 GiB (2560). Logical volume my_vg/my_lv successfully resized. [root@localhost ~]# mount /dev/my_vg/my_lv /LVM/ #掛載 [root@localhost ~]# df -h #再次查看分區變化 Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 8.0G 1.2G 6.9G 15% / devtmpfs 98M 0 98M 0% /dev tmpfs 110M 0 110M 0% /dev/shm tmpfs 110M 5.5M 104M 5% /run tmpfs 110M 0 110M 0% /sys/fs/cgroup /dev/sda1 1014M 130M 885M 13% /boot tmpfs 22M 0 22M 0% /run/user/0 /dev/mapper/my_vg-my_lv 9.8G 37M 9.2G 1% /LVM ←此處已經從15G變成10G
回到頂部
LV 快照功能
拍攝快照
lvcreate [-s 快照] -n [快照名] -L [快照大小] [指定分區] [root@localhost LVM]# ls 1 12 16 2 23 27 30 34 38 41 45 49 52 56 6 63 67 70 74 78 81 85 89 92 96 10 13 17 20 24 28 31 35 39 42 46 5 53 57 60 64 68 71 75 79 82 86 9 93 97 100 14 18 21 25 29 32 36 4 43 47 50 54 58 61 65 69 72 76 8 83 87 90 94 98 11 15 19 22 26 3 33 37 40 44 48 51 55 59 62 66 7 73 77 80 84 88 91 95 99 [root@localhost LVM]# lvcreate -s -n mylv_back -L 200M /dev/my_vg/my_lv #給/LVM目錄拍攝快照 Logical volume "mylv_back" created. [root@localhost LVM]# lvs #查看快照 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <8.00g swap centos -wi-ao---- 1.00g my_lv my_vg owi-aos--- 10.00g mylv_back my_vg swi-a-s--- 200.00m my_lv 0.01 ←此處就是快照
快照恢復
[root@localhost LVM]# ls 1 12 16 2 23 27 30 34 38 41 45 49 52 56 6 63 67 70 74 78 81 85 89 92 96 10 13 17 20 24 28 31 35 39 42 46 5 53 57 60 64 68 71 75 79 82 86 9 93 97 100 14 18 21 25 29 32 36 4 43 47 50 54 58 61 65 69 72 76 8 83 87 90 94 98 11 15 19 22 26 3 33 37 40 44 48 51 55 59 62 66 7 73 77 80 84 88 91 95 99 [root@localhost LVM]# rm -fr * #模擬被刪除 [root@localhost LVM]# mkdir /back #創建掛載點 [root@localhost LVM]# mount /dev/my_vg/mylv_back /back/ #掛載備份文件 [root@localhost LVM]# cp -a /back/* ./ #復制備份文件 [root@localhost LVM]# ls 1 12 16 2 23 27 30 34 38 41 45 49 52 56 6 63 67 70 74 78 81 85 89 92 96 10 13 17 20 24 28 31 35 39 42 46 5 53 57 60 64 68 71 75 79 82 86 9 93 97 100 14 18 21 25 29 32 36 4 43 47 50 54 58 61 65 69 72 76 8 83 87 90 94 98 11 15 19 22 26 3 33 37 40 44 48 51 55 59 62 66 7 73 77 80 84 88 91 95 99
RAID 獨立磁盤冗余陣列
定義:獨立磁盤構成的具有冗余能力的陣列
磁盤陣列分類:一是外接式磁盤陣列柜、二是內接式磁盤陣列卡,三是利用軟件來仿真
1.通過把多個磁盤組織在一起作為一個邏輯卷提供磁盤跨越功能
2.通過把數據分成多個數據塊(Block)并行寫入/讀出多個磁盤以提高訪問磁盤的速度
3.通過鏡像或校驗操作提供容錯能力
注意:RAID磁盤陣列主要為了保證硬件損壞的情況下業務不會終止,無法防止誤操作
磁盤陣列的分類
1.外接式磁盤陣列柜
2.內接式磁盤陣列
3.利用軟件來仿真
注意:通常情況下,生產環境中,一般使用硬件RAID來做,這里只做了解即可
RAID磁盤陣列簡介
RAID 0 沒有奇偶校驗的 (條帶卷)
RAID 0 提高存儲性能的原理是把連續的數據分散到多個磁盤上存取,這樣系統有數據請求就可以被多個磁盤并行的執行,每個磁盤執行屬于它自己的那部分數據請求
RAID 1 獨立磁盤冗余陣 (鏡像卷)
RAID 1 通過磁盤數據鏡像實現數據冗余,在成對的獨立磁盤上產生互為備份的數據.當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID 1可以提高讀取性能.
RAID10 (鏡象陣列條帶)
Raid 10 是一個Raid1與Raid0的組合體,它是利用奇偶校驗實現條帶集鏡像,所以它繼承了Raid0的快速和Raid1的安全.
RAID5 分布式奇偶校驗的獨立磁盤結構(最少3塊)
RAID 5 是一種存儲性能,數據安全,和存儲成本,兼顧的存儲解決方案. RAID 5可以理解為是RAID 0和RAID 1的折中方案.
回到頂部
Mdadm 命令解析
[root@localhost ~]# mdadm --help mdadm is used for building, managing, and monitoring Linux md devices (aka RAID arrays) Usage: mdadm mdadm --create --auto=yes /dev/md[0-9] --raid-devices=[0-n] --level=[015] --spare-devices=[0-n] /dev/sd[a-z] --create #新建RAID參數 --auto=yes #默認配置 --raid-devices=N #磁盤陣列數 --spare-devices=N #備份磁盤數 --level [015] #陣列等級 mdadm --detail #查詢陣列信息
回到頂部
構建一個RAID 5
注意:精簡模式下,沒有安裝此命令,執行 yum install -y mdadm 安裝
[root@localhost ~]# ls -l /dev/sd[b-z] brw-rw---- 1 root disk 8, 16 Sep 21 23:06 /dev/sdb brw-rw---- 1 root disk 8, 32 Sep 21 23:06 /dev/sdc brw-rw---- 1 root disk 8, 48 Sep 21 23:06 /dev/sdd brw-rw---- 1 root disk 8, 64 Sep 21 23:04 /dev/sde [root@localhost ~]# mdadm --create --auto=yes /dev/md0 --level=5 > --raid-devices=3 --spare-devices=1 /dev/sd{b,c,d,e} #創建一個RAID,其中接口是/dev/md0,等級是RAID5 mdadm: Defaulting to version 1.2 metadata #主磁盤數3,備份盤數1,提供sd{b,c,d,e}磁盤 mdadm: array /dev/md0 started. [root@localhost ~]# mdadm --detail /dev/md0 #查看陣列信息 /dev/md0: ←設備文件名 Version : 1.2 Creation Time : Fri Sep 21 2309 2018 ←創建日期 Raid Level : raid5 ←RAID等級 Array Size : 20953088 (19.98 GiB 21.46 GB) ←可用空間 Used Dev Size : 10476544 (9.99 GiB 10.73 GB) ←每個設備可用空間 Raid Devices : 3 ←RAID設備數量 Total Devices : 4 ←全部設備數量 Persistence : Superblock is persistent Update Time : Fri Sep 21 2326 2018 State : clean, degraded, recovering Active Devices : 3 ←啟動磁盤 Working Devices : 4 ←可用磁盤 Failed Devices : 0 ←錯誤磁盤 Spare Devices : 1 ←預備磁盤 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Rebuild Status : 34% complete Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 2ee2bcd5d3810252:23c2d5a8 ←此設備UUID Events : 6 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 4 8 48 2 spare rebuilding /dev/sdd 3 8 64 - spare /dev/sde
格式化 /dev/md0并掛載使用
[root@localhost ~]# mkfs -t ext4 /dev/md0 #格式化 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=128 blocks, Stripe width=256 blocks 1310720 inodes, 5238272 blocks 261913 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2153775104 160 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done [root@localhost ~]# mkdir /RAID #新建掛載目錄 [root@localhost ~]# [root@localhost ~]# mount /dev/md0 /RAID/ #掛載設備 [root@localhost ~]# [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 8.0G 1.2G 6.9G 15% / devtmpfs 98M 0 98M 0% /dev /dev/sr0 4.2G 4.2G 0 100% /mnt /dev/md0 20G 45M 19G 1% /RAID ←此處可看到掛載成功
回到頂部
RAID 仿真救援模式
mdadm --manage /dev/md[0-9] --add 設備 --remove 設備 --fail 設備 --add #將后面的設備加入md中 --remove #移除設備 --fail #設置出錯磁盤 ------------------------------------------------------------ [實驗] [root@localhost /]# mdadm --manage /dev/md0 --fail /dev/sdb #將/dev/sdb標注為錯誤 mdadm: set /dev/sdb faulty in /dev/md0 [root@localhost /]# mdadm --detail /dev/md0 #查看一下狀態 /dev/md0: Version : 1.2 Creation Time : Fri Sep 21 23:19:09 2018 Raid Level : raid5 Array Size : 20953088 (19.98 GiB 21.46 GB) Used Dev Size : 10476544 (9.99 GiB 10.73 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Fri Sep 21 23:50:12 2018 State : clean, degraded, recovering Active Devices : 2 Working Devices : 3 Failed Devices : 1 ← 出錯磁盤一個 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Rebuild Status : 5% complete ←此處需要注意,他正在恢復數據,等到100%時又可以正常工作 Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 2ee2bcd5d3810252:23c2d5a8 Events : 20 Number Major Minor RaidDevice State 3 8 64 0 spare rebuilding /dev/sde 1 8 32 1 active sync /dev/sdc 4 8 48 2 active sync /dev/sdd 0 8 16 - faulty /dev/sdb ← 出錯磁盤 [root@localhost /]# mdadm --manage /dev/md0 --remove /dev/sdb #移除這個壞掉的磁盤 mdadm: hot removed /dev/sdb from /dev/md0 [root@localhost /]# mdadm --manage /dev/md0 --add /dev/sdb #添加一個新的磁盤mdadm: added /dev/sdb
-
Linux
+關注
關注
87文章
11292瀏覽量
209328 -
磁盤
+關注
關注
1文章
375瀏覽量
25201 -
文件系統
+關注
關注
0文章
284瀏覽量
19904
原文標題:Linux 高級文件系統管理
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論