xfs文件系統備份與恢復;lvm與動態擴容、縮容、快照


一 修復服務器⽂件系統

在Linux系統中,為了增加系統性能,通常系統會將⼀些數據寫先放在內存中,並不會直接將數據寫⼊硬 盤,這是因為內存速度要⽐硬盤快若⼲倍。但是有個問題,萬⼀公司服務器突然斷電或者其他未知原 因,再次啟動后,會造成⽂件系統錯誤:“emergency mode”

執⾏任何命令都會有以下(或相似)錯誤

Error getting authority: Error initializing authority: Could not connect: Nosuch file or directory (g-io-error-quark, 1)

查看運⾏⽇志,可以提示出損壞的⽂件系統

journalctl -xb

修復⽅式:

# 0、如果進⼊不了操作系統,可以進⼊單⽤戶模式下操作
# 1、⾸先嘗試mount和umount⽂件系統,以便重放⽇志,修復⽂件系統,如果不⾏,再進⾏如下操作。
# 2、執⾏xfs_repair -n,只檢查不修復:檢查⽂件系統是否損壞,如何損壞會列出將要執⾏的操作[root@localhost ~]# xfs_repair -n /dev/sdb2
如果是⽇志和數據不⼀致了,xfs 默認會在掛載的時候修復這種不⼀致,操作系統給出的建議是以讀寫的⽅式掛載並⾃動修復,可以嘗試以只讀不修復⽅式掛載⽂件系統。
[root@localhost ~]# mount -o ro,norecovery /dev/sdb2 /opt
# 3、如果上述掛載不成功,可以執⾏xfs_repair修復⽂件系統
[root@localhost ~]# xfs_repair /dev/sdb2
# 4、如果還不⾏,那最后⽅法只能采⽤"損失部分數據的修復⽅法"根據打印消息,修復失敗時:
先執⾏xfs_repair -L /dev/sdb2(清空⽇志,會丟失⽂件)
再執⾏xfs_repair /dev/sdb2
說明:-L是修復xfs⽂件系統的最后⼿段,慎重選擇,它會清空⽇志,會丟失⽤戶數據和⽂件。
備注:在執⾏xfs_repair操作前,最好使⽤xfs_metadump⼯具保存元數據,⼀旦修復失敗,最起碼可以恢復到修復之前的狀態。
# 5、修復完成以后,嘗試能不能正常掛載 ,如能,取消掛載,再啟動就正常了

模擬⽂件系統損壞之 dd 命令

dd if=/dev/zero of=/dev/sdb bs=500M count=1 
 解釋:
if : 從哪里讀文件
of : 寫入到哪里
bs : 寫入500M
count : 寫一塊

示例:模擬文件系統出問題,再修復

1、准備⼀個1G的⽂件系統與數據
[root@localhost ~]# mount /dev/sdb1 /opt/
[root@localhost ~]# echo big_egon > /opt/1.txt 

2、模擬⽂件系統損壞
[root@localhost ~]# dd if=/dev/zero of=/dev/sdb bs=500M count=1 
 				  # 直接⼲/dev/sdb⽽不是sdb1  (直接向硬盤中寫數據,不能測試向分區寫數據)
[root@localhost ~]# # 此時看似⼀切都正常
[root@localhost ~]# cat /opt/1.txt
big_egon
[root@localhost ~]# echo egon_nb > /opt/2.txt
[root@localhost ~]# cat /opt/2.txt
egon_nb
[root@localhost ~]# # 但是重新掛載就會失效,即斷電后系統重啟,重新掛載不成功
[root@localhost ~]# umount /opt
[root@localhost ~]# mount /dev/sdb1 /opt
mount: /dev/sdb1 寫保護,將以只讀⽅式掛載
mount: 未知的⽂件系統類型“(null)” 	

3、對文件系統進行修復
[root@localhost ~]# xfs_repair /dev/sdb1

xfs_repair [磁盤或分區路徑]
注: xfs_repair修改硬盤之后,硬盤數據丟失,所以對重要的數據要進行數據備份

xfs⽂件系統備份與恢復

備份:另外在保存一份
全量備份和增量備份
全量備份:將需要備份的文件全部復制一份
增量備份:在原來備份基礎上,把新增數據重新備份一份
命令:xfsdump 

xfsdump的備份級別有以下兩種,默認為0(即完全備份)

0 完全備份
1 <= level <= 9 增量備份
# ps:增量備份是和第⼀次的備份(level 0)進⾏⽐較,僅備份有差異的⽂件(level 1)

xfsdump常⽤參數

-L :記錄每次備份的地方
-M :此次備份的注釋,這⾥可以填寫此媒體的簡易說明。
-l :指定備份的等級,有0~9共10個等級,默認為0,即完整備份
-f :備份的文件名稱,例如/dev/st0設備⽂件名或其他⼀般⽂件⽂件名
-I :查看備份信息,列出⽬前備份的信息狀態。

xfsdump使⽤限制

1.必須⽤root權限
2.只能備份已掛載的⽂件系統
3.只能備份XFS⽂件系統
4.只能⽤xfsrestore解釋
5.透過⽂件系統的UUID來分辨備份檔,因此不能備份相同UUID的⽂件系統

安裝備份命令

[root@localhost ~]# yum install xfsdump -y

備份的命令格式

xfsdump [參數] 備份路徑
例:xfsdump -L sdb1_bak -M "sbd1_from_xxx" -l 0 -f sdb1_from_bak_1 /root/oldboy

查看⼀下備份⽂件⼤⼩
[root@localhost ~]# du -sh /root/
恢復:將以前保存的數據進行還原
命令:xfsrestore 
參數:
	-f  指定備份的文件路徑
恢復的格式
xfsrestore [參數] 恢復的路徑
[root@localhost oldboy]# xfsrestore -f /root/sdb1_from_bak_3 /root/oldboy/

三 LVM

什么是LVM

邏輯卷管理LVM是硬盤的⼀個文件系統管理⼯具。⽆論在Linux或者其他類似的系統,都是⾮常的好⽤。傳統分區 使⽤固定⼤⼩分區,重新調整⼤⼩⼗分麻煩。但是,LVM可以創建和管理“邏輯”卷,⽽不是直接使⽤物 理硬盤。可以讓管理員彈性的管理邏輯卷的擴⼤縮⼩,操作簡單,⽽不損壞已存儲的數據。可以隨意將 新的硬盤添加到LVM,以直接擴展已經存在的邏輯卷。LVM並不需要重啟就可以讓內核知道分區的存 在。

通過 LVM 技術,可以屏蔽掉磁盤分區的底層差異,在邏輯上給⽂件系統提供了⼀個卷的概念,然后在這 些卷上建⽴相應的⽂件系統

lvm優缺點

優點:
1、可以在系統運⾏的狀態下動態的擴展⽂件系統的⼤⼩。
2、⽂件系統可以跨多個磁盤,因此⽂件系統⼤⼩不會受物理磁盤的限制。
3、可以增加新的磁盤到LVM的存儲池中。
4、可以以鏡像的⽅式冗余重要的數據到多個物理磁盤。
5、可以⽅便的導出整個卷組到另外⼀台機器。
缺點:
1、因為加⼊了額外的操作,存取性能受到影響。
2、當卷組中的⼀個磁盤損壞時,整個卷組都會受到影響。
解釋:LVM如果有⼀個磁盤損壞,整個lvm都壞了,lvm只有動態擴展作⽤,
⽅案:底層⽤RAID + 上層LVM = 既有冗余⼜有動態擴展

1、lvm的基本使⽤

1、安裝lvm軟件包
[root@localhost ~]#	yum install lvm2 -y

2、制作pv:可以對分區做、也可以對整塊盤做
[root@localhost ~]# pvcreate /dev/sdb3 # 對分區做
[root@localhost ~]# pvcreate /dev/sdc # 對整塊盤做

3、查看pv
[root@localhost ~]#	pvs
[root@localhost ~]#	pvscan

4、創建vg:將pv划⼊vg中
[root@localhost ~]#	vgcreate [vg名稱] [pv路徑]
[root@localhost ~]# vgcreate vg1 /dev/sdb1 /dev/sdc # 包含/dev/sdb1與/dev/sdc兩個pv

5、查看vg
[root@localhost ~]# vgs

6、創建lvm邏輯卷(lv)
lvcreate [參數] 邏輯卷名稱
	-L : 創建邏輯卷的大小
	-n : 邏輯卷的名字
		lvcreate [參數] 邏輯卷名稱
[root@localhost ~]# lvcreate -L 100M -n lv1_from_vg1 vg1	
[root@localhost ~]# lvs     # 查看

7、制作文件系統
[root@localhost ~]#	mkfs.xfs /dev/vg1/xxx
	
8、掛載文件系統
[root@localhost ~]#	 # mount [lv的路徑] [掛載點的路徑]
[root@localhost ~]#  mount /dev/vg1/lv1_from_vg2 /test1/

2、在線動態擴容

在線擴容的意思為:在不⽤卸載的情況下完成擴容

lvextend -L [+]MGT /dev/VG_NAME/VL_NAME
# 注意:-L 100M 與 -L +100M不是⼀個意思,或者代表在原有的基礎上擴容

步驟示例

1、增加一塊硬盤或者⼀個分區
[root@localhost ~]# fdisk /dev/sdb

2、創建pv
[root@localhost ~]# pvcreate  /dev/sdd

3、直接擴容給VG
[root@localhost ~]# vgextend [vg的名稱] [pv]
[root@localhost ~]# vgextend vg1 /dev/sdd

4、擴容給LV
[root@localhost ~]# lvextend -L [+100G] [lv路徑]
[root@localhost ~]# lvextend -L +100G /dev/vg1/lv1_from_vg1

5、刷新[root@localhost ~]# xfs_growfs /dev/vg1/lv1_from_vg1   # 擴展邏輯卷后需要更新fs⽂件系統

3、在線動態縮容與刪除

不要縮容!!!並且xfs⼲脆不⽀持縮容

lvreduce -L [-]MGT /dev/VG_NAME/LV_NAME 縮減邏輯卷
刪除
1、刪除lv之前需要先卸載掛載點
[root@localhost ~]# umount /root/vg02

2、刪除lv
[root@localhost ~]# lvremove /dev/vg1/vg1_test01 
Do you really want to remove active logical volume vg1/vg1_test01? [y/n]: y
  Logical volume "vg1_test01" successfully removed
  
3、刪除vg
[root@localhost ~]# vgremove vg1
  Volume group "vg1" successfully removed

4、刪除PV:只能刪掉那些不屬於任何vg的pv
[root@localhost ~]# pvremove /dev/sdb1 
  Labels on physical volume "/dev/sdb1" successfully wiped.
[root@localhost ~]# pvremove /dev/sdc 
  Labels on physical volume "/dev/sdc" successfully wiped.
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize    PFree   
  /dev/sda2  centos lvm2 a--   <19.00g       0 
  /dev/sdb2  vg2    lvm2 a--   <40.00g  <40.00g
  /dev/sdd   vg2    lvm2 a--  <100.00g <100.00g

3、快照

LVM 機制提供了對 LV 做快照的功能,也就是說可以給⽂件系統做⼀個備份

快照的本質就是⼀個特殊的lv,創建快照后,如果源數據卷中的⽂件被更新了,會將⽼數據賦給快照的空間,這就要求快照的空間也是夠⽤的

步驟

1、掛載硬盤

2、創建PV

3、創建VG

4、創建LV

5、格式化文件系統

6、掛載

7、造數據
[root@www ~]# echo 111 >> /vg/1.txt

8、拍攝快照
[root@www ~]# lvcreate -L +1G -s -n vg_from_vg100_bak /dev/vg100/vg_from_vg100 
  Logical volume "vg_from_vg100_bak" created.

lvcreate -L [快照大小] -s(創建快照) -n [快照的名字] [拍攝快照的目標]
lvcreate -L 1G -s -n lv1_from_vg1_snap /dev/vg1/lv1_from_vg1

9、查看快照
[root@www ~]# lvs
  LV                VG     Attr       LSize   Pool Origin        Data%  Meta%  Move Log Cpy%Sync Conver    
  vg_from_vg100     vg100  owi-aos---   1.00t                                                           
  vg_from_vg100_bak vg100  swi-a-s---   1.00g      vg_from_vg100 0.01  
  
10、恢復數據
[root@www ~]# mount -o nouuid /dev/vg100/vg_from_vg100_bak /vg_bak
# 備注:同一個UUID只能掛載一次,如果需要掛載多次,則需要使用(-o nouuid)

快照恢復相當於重新掛載,優點是占用空間小。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM