LVM管理和ssm存儲管理器使用&磁盤配額 (二)
内容如下:
ü LVM快照
ü ssm存儲管理器的使用
ü 磁盤配額
第1章 LVM快照
lvm快照:為了保持系統的一緻性,我們先做一個快照當機目前系統狀态,這樣快照裡面的内容可暫時保持不變,系統本身繼續運作,通過備份快照來實作不中斷服務的備份。
當建立一個snapshot的時候,僅拷貝原始卷裡資料的中繼資料(meta-data)。建立的時候,并不會有資料的實體拷貝,是以snapshot的建立幾乎是實時的,當原始卷上有寫操作執行時,snapshot跟蹤原始卷塊的改變,這個時候原始卷上将要改變的資料在改變之前被拷貝到snapshot預留的空間裡,是以這個原理的實作叫做寫時複制COW(copy-on-write)。
在寫操作寫入塊之前,原始資料被移動到 snapshot空間裡,這樣就保證了所有的資料在snapshot建立時保持一緻。而對于snapshot的讀操作,如果是沒有修改過的塊,那麼會将讀操作直接重定向到原始卷上,如果是已經修改過的塊,那麼就讀取拷貝到snapshot中的塊
1.1 首先準備一個LV并挂載
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CO4kDM0ETN1ITMtUDM4IjM0IjMyUDM4ATOxAjMtEjM5kTNz8CX4ATOxAjMvwVMykTO1MzLcd2bsJ2Lc12bj5ycn9Gbi52YugTMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
1.2準備測試檔案
1.3 針對lv1建立一個300M快照
確定VG有空間
指令:lvcreate -s -n 快照名 -L 快照大小 建立快照的裝置
1、 LVM快照其實也是一個邏輯卷,快照隻能對邏輯卷LV進行備份,并且隻能對同一個卷組的邏輯卷進行備份,
2、 在挂載快照時,盡量使用ro的方式進行,這樣可以保證不破壞快照卷中的資料
3、 快照建立完成後是可以直接挂載的,不需要進行檔案系統格式化
4、 lvm快照是不會增長和變化的,是以它沒有永久存在的必要
[root@xuegod72 data]# lvcreate -s -n datalv_sp -L 300M /dev/datavg/data_lv
Logical volume "datalv_sp" created.
[root@xuegod72 data]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data_lv datavg owi-aos--- 600.00m
datalv_sp datavg swi-a-s--- 300.00m data_lv 0.00
[root@xuegod72 data]# lvdisplay /dev/datavg/datalv_sp
--- Logical volume ---
LV Path /dev/datavg/datalv_sp
LV Name datalv_sp
VG Name datavg
LV UUID uRcoSc-FMYR-BRso-A5pf-0FCf-Tdig-QbU5ds
LV Write Access read/write
LV Creation host, time xuegod72, 2016-12-20 20:46:13 +0800
LV snapshot status active destination for data_lv
LV Status available
# open 0
LV Size 600.00 MiB
Current LE 150
COW-table size 300.00 MiB
COW-table LE 75
Allocated to snapshot 0.01%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
1.4 使用快照
對源LV做了快照後,我們再對這個源LV的檔案系統進行一些資料讀寫操作
[root@xuegod72 ~]# cp /etc/hosts /datalv/
[root@xuegod72 datalv]# dd if=/dev/zero of=a.txt bs=1M count=20
恢複快照:
1、直接還原
[root@xuegod72 ~]umount /datalv
==============================================
umount不成功,判斷的兩種方法:
[root@panda ~]# lsof /lv1
[root@panda ~]# fuser -ks /lv1
===============================================
在用lvconvert做快照還原時,一定要把源LV和快照LV都解除安裝再進行
[root@xuegod72 ~]# lvconvert --merge /dev/datavg/data_lv_sp 後面跟的是快照LV
Merging of volume data_lv_sp started.
data_lv: Merged: 100.0%
[root@xuegod72 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data_lv datavg -wi-a----- 600.00m
[root@xuegod72 ~]# mount /dev/datavg/data_lv /data
[root@xuegod72 ~]# ls /data
hosts passwd
2、挂載挂照後,進行需求還原
[root@xuegod72 ~]# mount –o nouuid,norecovery,ro /dev/datavg/data_lv_snap /data_snap
1.5 快照損壞
超出大小
[root@xuegod72 data]# dd if=/dev/zero of=aa.txt bs=10M count=1
記錄了1+0 的讀入
記錄了1+0 的寫出
10485760位元組(10 MB)已複制,0.0391211 秒,268 MB/秒
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data_lv datavg owi-aos--- 600.00m
datasp datavg swi-I-s--- 100.00m data_lv 100.00
[root@xuegod72 data]# lvdisplay /dev/datavg/datasp
LV Path /dev/datavg/datasp
LV Name datasp
LV UUID XKV0RX-AbJH-0AF1-wLtt-lwJl-7RdI-uAsTfM
LV Creation host, time xuegod72, 2016-12-20 21:11:30 +0800
LV snapshot status INACTIVE destination for data_lv
COW-table size 100.00 MiB
COW-table LE 25
[root@xuegod72 ~]# lvconvert --merge /dev/datavg/datasp
Unable to merge invalidated snapshot LV "datasp".
Unable to merge LV "datasp" into its origin.
[root@xuegod72 ~]# mount /dev/datavg/datasp /data
mount: /dev/mapper/datavg-datasp:不能讀超級塊
LV快照的大小最好和源LV保持一緻
第2章借助ssm管理LVM卷
2.3 操作
安裝SSM
[root@xuegod72 Packages]# yum -y install system-storage-manager
檢查關于可用硬驅和LVM卷的資訊。顯示關于現有磁盤儲存設備、存儲池、LVM卷和存儲快照的資訊。
指令:
ssm list 列出資訊
2.3.1 檢視磁盤資訊
裝置資訊
存儲池資訊
卷的資訊
快照資訊
2.3.2 對VG擴容
[root@xuegod72 ~]# ssm add -p datavg /dev/sdb5
File descriptor 7 (/dev/urandom) leaked on lvm invocation. Parent PID 22600: /usr/bin/python
Volume group "datavg" successfully extended
2.3.3 對LV進行擴容
使用SSM擴容LV(針對建立了快照的lv無效)
通過resize進行擴容
[root@xuegod72 ~]# lvcreate -n applv -L 500M /dev/datavg
Logical volume "applv" created.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
applv datavg -wi-a----- 500.00m
data_lv datavg owi-a-s--- 600.00m
data_lv_sp datavg swi-a-s--- 100.00m data_lv 0.00
[root@xuegod72 ~]# ssm resize -s +500M /dev/datavg/applv
File descriptor 7 (/dev/urandom) leaked on lvm invocation. Parent PID 22907: /usr/bin/python
Size of logical volume datavg/applv changed from 500.00 MiB (125 extents) to 1000.00 MiB (250 extents).
Logical volume applv successfully resized.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
applv datavg -wi-a----- 1000.00m
data_lv datavg owi-a-s--- 600.00m
data_lv_sp datavg swi-a-s--- 100.00m data_lv 0.00
比較檔案系統容量的變化
[root@xuegod72 ~]# mkfs.xfs /dev/datavg/applv
meta-data=/dev/datavg/applv isize=256 agcount=4, agsize=64000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=256000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@xuegod72 ~]# mount /dev/datavg/applv /data
[root@xuegod72 ~]# df –Th /data
檔案系統 類型 容量 已用 可用 已用% 挂載點
/dev/mapper/datavg-applv xfs 997M 33M 965M 4% /data
applv datavg -wi-ao---- 1000.00m
data_lv_sp datavg swi-a-s--- 100.00m data_lv 0.00
[root@xuegod72 ~]# ssm resize -s +200M /dev/datavg/applv
File descriptor 7 (/dev/urandom) leaked on lvm invocation. Parent PID 23017: /usr/bin/python
Size of logical volume datavg/applv changed from 1000.00 MiB (250 extents) to 1.17 GiB (300 extents).
meta-data=/dev/mapper/datavg-applv isize=256 agcount=4, agsize=64000 blks
= sunit=0 swidth=0 blks
log =internal bsize=4096 blocks=853, version=2
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 256000 to 307200
/dev/mapper/datavg-applv xfs 1.2G 33M 1.2G 3% /data
總結:使用ssm存儲管理器擴容,不需要再針對檔案系統進行擴容
2.3.4 建立一個卷
要求:建立一個名為mail 的存儲池,并在其上建立一個名為mail-lv,大小為1G的lvm卷,格式化為xfs檔案系統,并将其挂載/mail-lv目錄下
硬碟準備:
1) 建立目錄
[root@xuegod72 ~]# mkdir /mail-lv
用的指令如下:
ssm create –s lv大小 –n lv名稱 --fstype lv檔案系統類型 -p 卷組名 裝置 挂載點
自動建立vg , lv ,格式化檔案系統, 自動挂載
[root@xuegod72 ~]# ssm create -s 1G -n mail-lv --fstype xfs -p mail /dev/sdb[6-7] /mail-lv
Not enough space (1024000.0 KB) in the pool 'mail' to create volume! Adjust (N/y/q) ? Y
File descriptor 7 (/dev/urandom) leaked on lvm invocation. Parent PID 23153: /usr/bin/python
Volume group "mail" successfully created
Logical volume "mail-lv" created.
meta-data=/dev/mail/mail-lv isize=256 agcount=4, agsize=63488 blks
data = bsize=4096 blocks=253952, imaxpct=25
2)檢視挂載狀況
[root@xuegod72 ~]# df -Th
檔案系統 類型 容量 已用 可用 已用% 挂載點
/dev/sda3 xfs 197G 2.9G 194G 2% /
devtmpfs devtmpfs 467M 0 467M 0% /dev
tmpfs tmpfs 481M 84K 481M 1% /dev/shm
tmpfs tmpfs 481M 7.1M 474M 2% /run
tmpfs tmpfs 481M 0 481M 0% /sys/fs/cgroup
/dev/sr0 iso9660 3.8G 3.8G 0 100% /media
/dev/sda1 xfs 297M 128M 169M 44% /boot
tmpfs tmpfs 97M 16K 97M 1% /run/user/42
tmpfs tmpfs 97M 0 97M 0% /run/user/0
/dev/mapper/datavg-applv xfs 1.2G 33M 1.2G 3% /data
/dev/mapper/mail-mail--lv xfs 989M 33M 957M 4% /mail-lv
[root@xuegod72 ~]# ssm list
--------------------------------------------------------------
Device Free Used Total Pool Mount point
/dev/fd0 4.00 KB
/dev/sda 200.00 GB PARTITIONED
/dev/sda1 300.00 MB /boot
/dev/sda2 2.93 GB SWAP
/dev/sda3 196.78 GB /
/dev/sdb 20.00 GB
/dev/sdb1 0.00 KB 496.00 MB 500.00 MB datavg
/dev/sdb2 0.00 KB 496.00 MB 500.00 MB datavg
/dev/sdb3 0.00 KB 496.00 MB 500.00 MB datavg
/dev/sdb4 1.00 KB
/dev/sdb5 84.00 MB 412.00 MB 500.00 MB datavg
/dev/sdb6 0.00 KB 496.00 MB 500.00 MB mail
/dev/sdb7 0.00 KB 496.00 MB 500.00 MB mail
-----------------------------------------------------
Pool Type Devices Free Used Total
datavg lvm 4 84.00 MB 1.86 GB 1.94 GB
mail lvm 2 0.00 KB 992.00 MB 992.00 MB
----------------------------------------------------------------------------------------
Volume Pool Volume size FS FS size Free Type Mount point
/dev/datavg/data_lv datavg 600.00 MB xfs 596.67 MB 586.54 MB linear
/dev/datavg/applv datavg 1.17 GB xfs 996.67 MB 996.54 MB linear /data
/dev/mail/mail-lv mail 992.00 MB xfs 988.67 MB 988.54 MB linear /mail-lv
/dev/sda1 300.00 MB xfs 296.67 MB 183.90 MB part /boot
/dev/sda3 196.78 GB xfs 196.68 GB 193.82 GB part /
---------------------------------------------------------------------
Snapshot Origin Pool Volume size Size Type
/dev/datavg/data_lv_sp data_lv datavg 100.00 MB 0.00 KB linear
2.3.5 建立快照
ssm snapshot快照 -s 大小 -n 名稱 建立快照的裝置
2.3.6 删除快照
[root@xuegod72 ~]# ssm remove /dev/mail/mail-lv-sp
Device '/dev/mail/mail-lv-sp' is mounted on '/mail-sp' Unmount (N/y/q) ? Y
File descriptor 7 (/dev/urandom) leaked on lvm invocation. Parent PID 23860: /usr/bin/python
Do you really want to remove active logical volume mail-lv-sp? [y/n]: y
Logical volume "mail-lv-sp" successfully removed
第3章 磁盤配額
q 磁盤配額:
利用磁盤配額這種技術,系統管理者可以限制某個使用者在某個硬碟分區可使用的大小,和可以建立檔案數量的多少;目前Linux系統和Windows系統都支援這種技術
q 磁盤配額使用條件:
磁盤配額實施的對象是硬碟分區
磁盤配額隻對一般身份使用者有效,對root權限使用者無效;
q 磁盤配額的限制類型
磁盤的容量:限制使用者使用Blocks大小,限制磁盤空間的大小 預設機關是KB
檔案的數量:限制使用者能夠擁有而檔案個數,根據i節點的數量實作對檔案數量的限制
q 磁盤配額的相關名詞解釋:
最低限制(軟限制,soft):最低限制容量(可以被超過,但會出現警告,超過的部分會儲存到寬限時間到期)
最高限制(硬限制,hard): 絕對禁止使用者超過硬限制,當超過時系統會給出警告資訊,并且禁止繼續寫入資料
寬限時間:當使用者使用的空間超過了最低限制但還沒到達最高限制時,在這個寬限時間到期前必須将超額的資料降低到最低限制以下(預設為7天),當寬限時間到期,系統将自動清除超出的資料
注意:硬限制的配額值應大于相應的軟限制值,否則軟限制将失效.
3.1 RHEL7磁盤配額
n 确認配額指令已經安裝
[root@xuegod72 ~]# dmesg|grep quota
[ 1.943815] VFS: Disk quotas dquot_6.5.2
[root@xuegod72 ~]# rpm -q quota
quota-4.01-11.el7.x86_64
[root@xuegod72 ~]# mount|grep quota
/dev/sda3 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/datavg-applv on /data type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
l 首先建立新的測試分區/data
n 檢視配額是否啟動
n 啟用配額
[root@xuegod72 ~]# umount /data
[root@xuegod72 ~]# mount -o uquota,gquota /dev/datavg/data_lv /data
[root@xuegod72 ~]# mount|grep datavg|grep quota
/dev/mapper/datavg-data_lv on /data type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
n 設定開機自動啟動配額
n 設定目錄權限,并建立配額使用者
3.2 實驗
3.2.1 檢視配額狀态
指令:xfs_quota
xfs_quota指令用于管理XFS檔案系統的quota硬碟配額,格式為:“quota [參數] 配額 檔案系統名稱”
參數:
-x 使用配額模式,隻有此模式才能設定配額
-c 啟用指令模式
report 顯示配額資訊
limit 設定配額
bsoft 軟限制 (硬碟)
bhard 硬配額
-u 使用者
-g 組
3.2.2 檢視使用者群組的配額資訊
3.2.3 設定配額
限制磁盤軟限制為10m、磁盤硬限制為50m、檔案軟限制為3個且檔案硬限制為6個
[root@xuegod72 ~]# xfs_quota -x -c 'limit bsoft=10M bhard=50M isoft=3 ihard=6 -u zhangsna' /data
[root@xuegod72 ~]# xfs_quota -x -c report /data
User quota on /data (/dev/mapper/datavg-data_lv)
Blocks
User ID Used Soft Hard Warn/Grace
---------- --------------------------------------------------
root 10248 0 0 00 [--------]
zhangsna 0 10240 51200 00 [--------]
Group quota on /data (/dev/mapper/datavg-data_lv)
Group ID Used Soft Hard Warn/Grace
root 10248 0 0 00 [--------]
3.2.4 驗證
3.2.5 修改磁盤配額
[root@xuegod72 ~]# edquota -u zhangsna
Disk quotas for user zhangsna (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/mapper/datavg-data_lv 20480 10240 51200 6 3 6
[zhangsna@xuegod72 data]$ ls
aa.txt bb.txt cc dd e f
[zhangsna@xuegod72 data]$ touch ee
[zhangsna@xuegod72 data]$ touch ff
[zhangsna@xuegod72 data]$ ls|wc -l
8
[zhangsna@xuegod72 data]$ touch gg
touch: 無法建立"gg": 超出磁盤限額
檢視所有使用者的配額資訊:
[root@panda ~]# repquota -a
*** Report for user quotas on device /dev/mapper/vg2-applv
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 0 0 0 3 0 0
user1 +- 15360 10240 51200 4days 1 3 7
user2 -+ 0 0 0 6 3 6 6days
檢視使用者自己的配額限制資訊:
[user2@panda lv1]$ quota
Disk quotas for user user2 (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/mapper/vg2-applv
0 0 0 6* 3 6 6days
用root使用者檢視單個普通使用者的配額資訊:
[root@panda ~]# quota user1
Disk quotas for user user1 (uid 1001):
15360* 10240 51200 4days 1 3 7
[root@panda ~]# quota user2