閱讀目錄
檢查內(nèi)核是否支持配額
檢查指定分區(qū)的掛載屬性是否滿足條件
quotacheck 生成用戶和組的配置文件
edquota 編輯配額文件,設(shè)置指定限制大小
啟動(dòng)quota配額管理
關(guān)閉quota配額管理
quota 查看指定用戶和組的配額信息
repquota 查看指定分區(qū)的磁盤(pán)配額
setquota 非交互設(shè)置磁盤(pán)配額命令
磁盤(pán)配額小實(shí)驗(yàn)
PV 物理卷創(chuàng)建與移除
VG 卷組創(chuàng)建與移除
LV 邏輯卷創(chuàng)建與移除
LV 容量增加 (將LV的容量增加5G的空間)
LV 容量縮小(將LV的容量縮小5G的空間)
LV 快照功能
Mdadm 命令解析
構(gòu)建一個(gè)RAID 5
RAID 仿真救援模式
如果您的 Linux 服務(wù)器有多個(gè)用戶經(jīng)常存取數(shù)據(jù)時(shí),為了維護(hù)所有使用者在硬盤(pán)容量的公平使用,磁盤(pán)配額 (Quota) 就是一項(xiàng)非常有用的工具,另外,如果你的用戶常常抱怨磁盤(pán)容量不夠用,那么更進(jìn)階的文件系統(tǒng)就得要學(xué)習(xí),本章我們會(huì)介紹磁盤(pán)陣列 (RAID),及邏輯卷軸文件系統(tǒng) (LVM),這些工具都可以幫助你管理與維護(hù)使用者可用的磁盤(pán)容量.
Quota 磁盤(pán)配額配置
Quota 這個(gè)玩意兒就字面上的意思來(lái)看,就是有多少『限額』的意思啦,如果是用在零用錢(qián)上面,就是類似『有多少零用錢(qián)一個(gè)月』的意思之類的,如果是在計(jì)算機(jī)主機(jī)的磁盤(pán)使用量上呢? 以 Linux 來(lái)說(shuō),就是有多少容量限制的意思,我們可以使用 quota 來(lái)讓磁盤(pán)的容量使用較為公平,下面我們會(huì)介紹什么是 quota 然后以一個(gè)完整的范例來(lái)介紹 quota 的使用作用.
由于Linux是一個(gè)多用戶管理的操作系統(tǒng),而Linux默認(rèn)情況下并不限制每個(gè)用戶使用磁盤(pán)空間的大小,假如某個(gè)用戶疏忽或者惡意占滿磁盤(pán)空間,將導(dǎo)致系統(tǒng)磁盤(pán)無(wú)法寫(xiě)入甚至崩潰;為了保證系統(tǒng)磁
盤(pán)的有足夠的剩余空間,我們需要對(duì)用戶和組進(jìn)行磁盤(pán)空間使用限制。
磁盤(pán)配額限制類型:
? 限制用戶和組,對(duì)磁盤(pán)空間的使用量
? 限制用戶和組,在磁盤(pán)內(nèi)創(chuàng)建文件的個(gè)數(shù)
磁盤(pán)配額限制級(jí)別:
? 軟限制:低級(jí)限制,此限制可以突破,突破時(shí)會(huì)被警告,超出部分會(huì)有寬限天數(shù),寬限天數(shù)到期后超出部分被清空,軟限制不能超過(guò)硬限制
? 硬限制:絕對(duì)限制,此限制不會(huì)被突破,達(dá)到指定限制后無(wú)法使用更多空間
? 寬限天數(shù):當(dāng)有數(shù)據(jù)超過(guò)軟限制后,超出部分會(huì)被計(jì)時(shí),寬限天數(shù)到期后超出部分?jǐn)?shù)據(jù)將被清空,寬限天數(shù)默認(rèn)是7天
注:磁盤(pán)配額是針對(duì)分區(qū)進(jìn)行設(shè)置的,無(wú)法實(shí)現(xiàn),"某用戶在系統(tǒng)中共計(jì)只能使用50MB磁盤(pán)空間",只能設(shè)置某用戶在/home分區(qū)能使用30M這樣的限制.切記:磁盤(pán)配額是針對(duì)分區(qū)的!
精簡(jiǎn)模式下沒(méi)有此命令,執(zhí)行 yum install -y quota 安裝
回到頂部
檢查內(nèi)核是否支持配額
[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
回到頂部
檢查指定分區(qū)的掛載屬性是否滿足條件
[root@localhost ~]# dumpe2fs -h /dev/vdb |grep "Default mount options" dumpe2fs 1.42.9 (28-Dec-2013) Default mount options: user_xattr acl #檢查結(jié)果中是否包含,usrquota,grpquota兩個(gè)掛載屬性
回到頂部
quotacheck 生成用戶和組的配置文件
[root@localhost ~]# quotacheck --help Utility for checking and repairing quota files. quotacheck [-gucbfinvdmMR] [-F] filesystem|-a 語(yǔ)法格式:[ quota [選項(xiàng)] [分區(qū)名] ] -a #掃描/etc/mtab文件中所有啟用磁盤(pán)配額功能的分區(qū).如果加入此參數(shù),命令后面就不需要加入分區(qū)名了 -u #建立用戶配額的配置文件,即生成aquota.user -g #建立組配額的配置文件,即aquota.group -v #顯示掃描過(guò)程 -c #清除原有的配置文件,重新建立新的配置文件
回到頂部
edquota 編輯配額文件,設(shè)置指定限制大小
[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 ... 語(yǔ)法格式:[ edquota [選項(xiàng)] [用戶名或組名] ] -u #用戶名 -g #組名 -t #設(shè)定寬限時(shí)間 -p #復(fù)制磁盤(pán)配額規(guī)則,不需要每一個(gè)用戶或者組都手動(dòng)設(shè)置一遍 #edquota -p 模板用戶 -u 目標(biāo)用戶 #注:配置文件中所寫(xiě)大小默認(rèn)單位KB
回到頂部
啟動(dòng)quota配額管理
[root@localhost ~]# quotaon --help quotaon: Usage: quotaon [-guvp] [-F quotaformat] [-x state] -a quotaon [-guvp] [-F quotaformat] [-x state] filesys ... 語(yǔ)法格式:[ quotaon [選項(xiàng)] [分區(qū)名] ] -a #根據(jù)/etc/mtab文件啟動(dòng)所有分區(qū)的磁盤(pán)配額(不寫(xiě)分區(qū)名) -u #啟動(dòng)用戶的磁盤(pán)配額 -g #啟動(dòng)組的磁盤(pán)配額 -v #顯示啟動(dòng)過(guò)程信息
回到頂部
關(guān)閉quota配額管理
[root@localhost ~]# quotaoff --help quotaoff: Usage: quotaoff [-guvp] [-F quotaformat] [-x state] -a quotaoff [-guvp] [-F quotaformat] [-x state] filesys ... 語(yǔ)法格式:[ quotaoff [選項(xiàng)] [分區(qū)名] ] -a #根據(jù)/etc/mtab文件關(guān)閉所有分區(qū)的磁盤(pán)配額(不寫(xiě)分區(qū)名) -u #關(guān)閉用戶的磁盤(pán)配額 -g #關(guān)閉組的磁盤(pán)配額 -v #顯示關(guān)閉過(guò)程信息
回到頂部
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 ... 語(yǔ)法格式:[ quota [選項(xiàng)] [用戶名] ] -u #用戶名 -g #組名 -v #顯示詳細(xì)信息 -s #以常見(jiàn)單位顯示大小
回到頂部
repquota 查看指定分區(qū)的磁盤(pán)配額
[root@localhost ~]# repquota --help repquota: Utility for reporting quotas. Usage: repquota [-vugsi] [-c|C] [-t|n] [-F quotaformat] (-a | mntpoint) 語(yǔ)法格式:[ repquota [選項(xiàng)] [分區(qū)名] ] -u #查詢用戶配額 -g #查詢組配額 -v #顯示詳情 -s #以常見(jiàn)單位顯示
回到頂部
setquota 非交互設(shè)置磁盤(pán)配額命令
[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 用戶名 軟(容) 硬(容) 軟(數(shù)) 硬(數(shù)) 分區(qū)名 注:這樣的非交互式的命令更適合寫(xiě)入腳本,而且假如有很多用戶的磁盤(pán)配額配置相同也可以用復(fù)制來(lái)實(shí)現(xiàn)。
回到頂部
磁盤(pán)配額小實(shí)驗(yàn)
? 這里有一塊未分區(qū)的磁盤(pán)/dev/sdb,手動(dòng)分區(qū)并格式化.
? 將磁盤(pán)配額開(kāi)啟,并寫(xiě)入開(kāi)機(jī)自啟動(dòng)列表.
? 創(chuàng)建lyshark用戶,和temp組.
? 配置lyshark的軟限制200M,硬限制500M,配置temp組軟限制100M,硬限制200M.
1.檢查系統(tǒng)是否支持配額
[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.查看磁盤(pán)信息
[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.磁盤(pán)分區(qū)/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.創(chuàng)建掛載點(diǎn),并掛載設(shè)備
[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.檢查分區(qū)是否支持配額 (主要看有沒(méi)有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 #上面沒(méi)有看到相關(guān)權(quán)限,此時(shí)我們要重新掛載一下磁盤(pán),加上權(quán)限 [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.設(shè)置開(kāi)機(jī)自動(dòng)掛載分區(qū),并開(kāi)啟配額
[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[分區(qū)名]
[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): ↓文件系統(tǒng) 軟(容量) 硬(容量) I節(jié)點(diǎn) 軟(數(shù)) 硬(數(shù)) 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.開(kāi)啟配額,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環(huán)境下對(duì)磁盤(pán)分區(qū)進(jìn)行管理的一種機(jī)制,普通的磁盤(pán)分區(qū)管理方式在分區(qū)劃分好之后就無(wú)法改變其大小,當(dāng)一個(gè)邏輯分區(qū)存放不下某個(gè)文件時(shí),解決的方法通常是使用符號(hào)鏈接,或者使用調(diào)整分區(qū)大小的工具,但這只是暫時(shí)解決辦法,沒(méi)有從根本上解決問(wèn)題.簡(jiǎn)單來(lái)說(shuō)LVM就是將物理磁盤(pán)融合成一個(gè)或幾個(gè)大的虛擬磁盤(pán)存儲(chǔ)池,按照我們的需求去存儲(chǔ)池劃分空間來(lái)使用,由于是虛擬的存儲(chǔ)池,所以劃分空間時(shí)可以自由的調(diào)整大小,如下:
LVM的組成部分:
? 物理卷(PV,Physical Volume):由磁盤(pán)或分區(qū)轉(zhuǎn)化而成
? 卷組(VG,Volume Group):將多個(gè)物理卷組合在一起組成了卷組,組成同一個(gè)卷組的可以是同一個(gè)硬盤(pán)的不同分區(qū),也可以是不同硬盤(pán)上的不同分區(qū),我們通常把卷組理解為一塊硬盤(pán).
? 邏輯卷(LV,Logical Volume):把卷組理解為硬盤(pán)的話,那么我們的邏輯卷則是硬盤(pán)上的分區(qū),邏輯卷可以進(jìn)行格式化,存儲(chǔ)數(shù)據(jù).
? 物理擴(kuò)展(PE,Physical Extend):PE卷組的最小存儲(chǔ)單元,PE所在的位置是VG卷組,即硬盤(pán)上,那么我們可以把PE理解為硬盤(pán)上的扇區(qū),默認(rèn)是4MB,可自由配置.
這里準(zhǔn)備好4塊硬盤(pán),無(wú)需分區(qū)與格式化.
[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 物理卷創(chuàng)建與移除
PV的創(chuàng)建
pvcreate [分區(qū)路徑],[分區(qū)路徑][.......] [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塊硬盤(pán)創(chuàng)建 Physical volume "/dev/sdb" successfully created. Physical volume "/dev/sdc" successfully created. Physical volume "/dev/sdd" successfully created. [root@localhost ~]# pvs #查詢創(chuàng)建好的硬盤(pán) 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 [分區(qū)路徑] [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 卷組創(chuàng)建與移除
創(chuàng)建VG卷組,VG卷組要在PV中選擇
vgcreate -s [指定PE大小] [VG卷組名] [分區(qū)路徑] [分區(qū)路徑][.....] [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 #此處就是創(chuàng)建一個(gè)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
給當(dāng)前my_vg卷組,添加一塊新的PV,也就是擴(kuò)展卷組
vgextend [卷組名] [物理卷分區(qū)] [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 #這個(gè)物理卷沒(méi)有劃分卷組 [root@localhost ~]# vgextend my_vg /dev/sdd #添加一個(gè)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卷組里移除一個(gè)PV(移除單個(gè)PG)
vgreduce [卷組名] [物理卷分區(qū)] [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
移除整個(gè)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 #移除整個(gè)卷組 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 邏輯卷創(chuàng)建與移除
創(chuàng)建LVM
lvcreate -L [指定大小] -n [LV名字] [VG卷組:從哪個(gè)卷組里劃分] [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 #創(chuàng)建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 #首先創(chuàng)建一個(gè)掛載點(diǎn) [root@localhost ~]# [root@localhost ~]# mkfs.ext4 /dev/my_vg/my_lv #格式化LVM分區(qū) 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 #查看結(jié)果 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的空間)
注意:這里擴(kuò)展,要先擴(kuò)展LVM,然后再擴(kuò)展文件系統(tǒng)
[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 #執(zhí)行增加命令,從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 #擴(kuò)展文件系統(tǒng) 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 #驗(yàn)證擴(kuò)展結(jié)果 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 ←此處已經(jīng)從10G 增加到15G
回到頂部
LV 容量縮小(將LV的容量縮小5G的空間)
注意:這里縮小,要卸載文件系統(tǒng),檢查分區(qū),然后縮小文件系統(tǒng),最后再縮小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 #檢查文件系統(tǒng) 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(減小后的大小) #縮小文件系統(tǒng) 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 #再次查看分區(qū)變化 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 ←此處已經(jīng)從15G變成10G
回到頂部
LV 快照功能
拍攝快照
lvcreate [-s 快照] -n [快照名] -L [快照大小] [指定分區(qū)] [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 ←此處就是快照
快照恢復(fù)
[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 #創(chuàng)建掛載點(diǎn) [root@localhost LVM]# mount /dev/my_vg/mylv_back /back/ #掛載備份文件 [root@localhost LVM]# cp -a /back/* ./ #復(fù)制備份文件 [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 獨(dú)立磁盤(pán)冗余陣列
定義:獨(dú)立磁盤(pán)構(gòu)成的具有冗余能力的陣列
磁盤(pán)陣列分類:一是外接式磁盤(pán)陣列柜、二是內(nèi)接式磁盤(pán)陣列卡,三是利用軟件來(lái)仿真
1.通過(guò)把多個(gè)磁盤(pán)組織在一起作為一個(gè)邏輯卷提供磁盤(pán)跨越功能
2.通過(guò)把數(shù)據(jù)分成多個(gè)數(shù)據(jù)塊(Block)并行寫(xiě)入/讀出多個(gè)磁盤(pán)以提高訪問(wèn)磁盤(pán)的速度
3.通過(guò)鏡像或校驗(yàn)操作提供容錯(cuò)能力
注意:RAID磁盤(pán)陣列主要為了保證硬件損壞的情況下業(yè)務(wù)不會(huì)終止,無(wú)法防止誤操作
磁盤(pán)陣列的分類
1.外接式磁盤(pán)陣列柜
2.內(nèi)接式磁盤(pán)陣列
3.利用軟件來(lái)仿真
注意:通常情況下,生產(chǎn)環(huán)境中,一般使用硬件RAID來(lái)做,這里只做了解即可
RAID磁盤(pán)陣列簡(jiǎn)介
RAID 0 沒(méi)有奇偶校驗(yàn)的 (條帶卷)
RAID 0 提高存儲(chǔ)性能的原理是把連續(xù)的數(shù)據(jù)分散到多個(gè)磁盤(pán)上存取,這樣系統(tǒng)有數(shù)據(jù)請(qǐng)求就可以被多個(gè)磁盤(pán)并行的執(zhí)行,每個(gè)磁盤(pán)執(zhí)行屬于它自己的那部分?jǐn)?shù)據(jù)請(qǐng)求
RAID 1 獨(dú)立磁盤(pán)冗余陣 (鏡像卷)
RAID 1 通過(guò)磁盤(pán)數(shù)據(jù)鏡像實(shí)現(xiàn)數(shù)據(jù)冗余,在成對(duì)的獨(dú)立磁盤(pán)上產(chǎn)生互為備份的數(shù)據(jù).當(dāng)原始數(shù)據(jù)繁忙時(shí),可直接從鏡像拷貝中讀取數(shù)據(jù),因此RAID 1可以提高讀取性能.
RAID10 (鏡象陣列條帶)
Raid 10 是一個(gè)Raid1與Raid0的組合體,它是利用奇偶校驗(yàn)實(shí)現(xiàn)條帶集鏡像,所以它繼承了Raid0的快速和Raid1的安全.
RAID5 分布式奇偶校驗(yàn)的獨(dú)立磁盤(pán)結(jié)構(gòu)(最少3塊)
RAID 5 是一種存儲(chǔ)性能,數(shù)據(jù)安全,和存儲(chǔ)成本,兼顧的存儲(chǔ)解決方案. 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參數(shù) --auto=yes #默認(rèn)配置 --raid-devices=N #磁盤(pán)陣列數(shù) --spare-devices=N #備份磁盤(pán)數(shù) --level [015] #陣列等級(jí) mdadm --detail #查詢陣列信息
回到頂部
構(gòu)建一個(gè)RAID 5
注意:精簡(jiǎn)模式下,沒(méi)有安裝此命令,執(zhí)行 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} #創(chuàng)建一個(gè)RAID,其中接口是/dev/md0,等級(jí)是RAID5 mdadm: Defaulting to version 1.2 metadata #主磁盤(pán)數(shù)3,備份盤(pán)數(shù)1,提供sd{b,c,d,e}磁盤(pán) mdadm: array /dev/md0 started. [root@localhost ~]# mdadm --detail /dev/md0 #查看陣列信息 /dev/md0: ←設(shè)備文件名 Version : 1.2 Creation Time : Fri Sep 21 2309 2018 ←創(chuàng)建日期 Raid Level : raid5 ←RAID等級(jí) Array Size : 20953088 (19.98 GiB 21.46 GB) ←可用空間 Used Dev Size : 10476544 (9.99 GiB 10.73 GB) ←每個(gè)設(shè)備可用空間 Raid Devices : 3 ←RAID設(shè)備數(shù)量 Total Devices : 4 ←全部設(shè)備數(shù)量 Persistence : Superblock is persistent Update Time : Fri Sep 21 2326 2018 State : clean, degraded, recovering Active Devices : 3 ←啟動(dòng)磁盤(pán) Working Devices : 4 ←可用磁盤(pán) Failed Devices : 0 ←錯(cuò)誤磁盤(pán) Spare Devices : 1 ←預(yù)備磁盤(pán) 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 ←此設(shè)備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/ #掛載設(shè)備 [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 設(shè)備 --remove 設(shè)備 --fail 設(shè)備 --add #將后面的設(shè)備加入md中 --remove #移除設(shè)備 --fail #設(shè)置出錯(cuò)磁盤(pán) ------------------------------------------------------------ [實(shí)驗(yàn)] [root@localhost /]# mdadm --manage /dev/md0 --fail /dev/sdb #將/dev/sdb標(biāo)注為錯(cuò)誤 mdadm: set /dev/sdb faulty in /dev/md0 [root@localhost /]# mdadm --detail /dev/md0 #查看一下?tīng)顟B(tài) /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 ← 出錯(cuò)磁盤(pán)一個(gè) Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Rebuild Status : 5% complete ←此處需要注意,他正在恢復(fù)數(shù)據(jù),等到100%時(shí)又可以正常工作 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 ← 出錯(cuò)磁盤(pán) [root@localhost /]# mdadm --manage /dev/md0 --remove /dev/sdb #移除這個(gè)壞掉的磁盤(pán) mdadm: hot removed /dev/sdb from /dev/md0 [root@localhost /]# mdadm --manage /dev/md0 --add /dev/sdb #添加一個(gè)新的磁盤(pán)mdadm: added /dev/sdb
-
Linux
+關(guān)注
關(guān)注
87文章
11436瀏覽量
212529 -
磁盤(pán)
+關(guān)注
關(guān)注
1文章
388瀏覽量
25597 -
文件系統(tǒng)
+關(guān)注
關(guān)注
0文章
293瀏覽量
20258
原文標(biāo)題:Linux 高級(jí)文件系統(tǒng)管理
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
嵌入式Linux文件系統(tǒng)管理

Linux的文件系統(tǒng)管理
系統(tǒng)管理的詳細(xì)設(shè)計(jì)
文件系統(tǒng)管理操作
Linux系統(tǒng)管理命令
Linux系統(tǒng)管理技術(shù)手冊(cè)—奈米斯

《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》第5章、Linux文件系統(tǒng)與設(shè)備文件系統(tǒng)

Linux系統(tǒng)管理命令整理及使用方法介紹
Linux應(yīng)用基礎(chǔ)教程之Linux如何進(jìn)行系統(tǒng)管理
嵌入式Linux文件系統(tǒng)管理的工具選擇

評(píng)論