LVN與其在Linux上的實現

来源:https://www.cnblogs.com/alongdidi/archive/2019/04/17/lvm_and_linux.html
-Advertisement-
Play Games

參考資料: LVM詳解-駿馬金龍-博客園 How to reduce the size of an LVM partition formatted with xfs filesystem on CentOS7? 駿馬兄的博文會相對深入一點,並且他是基於ext系列文件系統來演示擴容與縮容,而我使用的是 ...


參考資料:

LVM詳解-駿馬金龍-博客園

How to reduce the size of an LVM partition formatted with xfs filesystem on CentOS7?

駿馬兄的博文會相對深入一點,並且他是基於ext系列文件系統來演示擴容與縮容,而我使用的是xfs文件系統。

基本概念

傳統的磁碟分區,在分區完之後,分區的大小無法改變,無法動態增加或減小分區的大小。

為瞭解決這個問題,就誕生了LVM(Logical Volume Management)這種方法。

在Linux中的LVM實現是基於Linux內核的設備映射(device mapper,dm)框架來實現的,該框架同時也是軟RAID以及LVM快照的基礎。對應的軟體名稱也叫LVM(Logical Volume Manager)。

接下來介紹幾個關於LVM的術語:

  • PV:Physical Volume,物理捲。即我們所熟知的磁碟分區,與普通的分區的最大不同點在於,作為PV的磁碟分區的類型必須是ID為8e的Linux LVM分區。
  • VG:Volume Group,捲組。由多個PV組合而成,類似於多個分區組合起來的“虛擬磁碟”(自稱)。在創建VG的同時,也確定了該VG中的PE大小。
  • PE:Physical Extent,可以理解為物理存儲單元。類似於文件系統中的block、chunk或者簇的概念。一般來說,創建完VG確定了PE大小後,就無法再修改了。預設為4MB。
  • LV:Logical Volume,邏輯捲。VG相當於虛擬磁碟,而LV則是基於虛擬磁碟所劃分出的“虛擬分區”(自稱),在創建LV的時候,可基於分區大小或者VG中的PE個數。LV創建好之後就像傳統的分區那樣可以格式化並使用了。
  • LE:Logical Extent,可以理解為邏輯存儲單元。本質上是等同於PE的概念,當PV加入VG後,就被劃分成多個PE。從VG中劃分LV的過程,就是一個劃分PE的過程,LV創建好之後,PE就被稱之為LE了。PV中的PE和LV中的LE的映射關係,可通過“pvdisplay -m”來查看。

LV的路徑

LV創建完畢後,其塊設備路徑為/dev/dm-N(N為一個數字),有2個字元鏈接文件指向它。

/dev/mapper/VG_NAME-LV_NAME --> /dev/dm-N
/dev/VG_NAME/LV_NAME --> /dev/dm-N

圖示

圖片來自網路,侵權請聯繫。

 

 

實現

環境

CentOS 7.5

系統自帶lvm2程式包

 

初步使用LVM

首先為虛擬機添加一塊磁碟,大小為7GB。創建3個分區類型為LVM的分區,分別是3GB、2GB和1GB。

註意:磁碟的大小大於分區之和的大小,主要是擔心可能因為換算等問題導致磁碟劃分分區容量的時候出現不足的情況。

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     6293503     3145728   8e  Linux LVM
/dev/sdb2         6293504    10487807     2097152   8e  Linux LVM
/dev/sdb3        10487808    12584959     1048576   8e  Linux LVM

將/dev/sdb1和/dev/sdb2這兩個LVM格式創建為PV。/dev/sdb3保留,放在後面做擴容。

[root@C7 ~]# pvcreate /dev/sdb{1,2}
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.

可通過pvs命令查看系統上已有PV的簡要信息。

[root@C7 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <19.00g    0 
  /dev/sdb1         lvm2 ---    3.00g 3.00g
  /dev/sdb2         lvm2 ---    2.00g 2.00g

留意,/dev/sda2這個PV是CentOS 7系列系統預設安裝時候的創建的。

可通過pvdisplay命令查看系統上已有PV的詳細信息,預設顯示所有,可以基於PV名稱查看特定的PV。PV名稱就是分區的路徑名,例如“/dev/sdb1”這樣。

[root@C7 ~]# pvdisplay /dev/sdb{1,2}
  "/dev/sdb2" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name               # 由於我們還未將PV加入VG,因此該欄位為空。
  PV Size               2.00 GiB
  Allocatable           NO # 未加入VG,不可分配。
  PE Size               0 # PV中的PE的大小,是在加入VG之後決定的,並且在VG創建後該VG的PE大小就無法修改了。同理,未加入VG,因此PE為0。
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               OlFvnr-rarx-ebCa-pG3L-qJBe-V8d1-aYkXB2
   
  "/dev/sdb1" is a new physical volume of "3.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               3.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               o7uiiy-kXEr-eZee-e0aP-cFKQ-dyjf-oQRvB9

創建好PV之後,我們就可以創建VG,並將剛創建的兩個PV加入該VG。

[root@C7 ~]# vgcreate myvg /dev/sdb{1,2}
  Volume group "myvg" successfully created

查看VG的簡要和詳細信息。

[root@C7 ~]# vgs myvg
  VG   #PV #LV #SN Attr   VSize VFree
  myvg   2   0   0 wz--n- 4.99g 4.99g
[root@C7 ~]# vgdisplay myvg
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               4.99 GiB
  PE Size               4.00 MiB # 預設的PE大小為4MB。
  Total PE              1278 # VG中總PE的個數,在劃分LV的時候,可基於PE個數。
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1278 / 4.99 GiB
  VG UUID               XKP0mV-zWAx-nscs-jXiT-jLxm-5MgE-aDU8fU

當PV加入VG之後,再次查看PV的信息。

[root@C7 ~]# pvs /dev/sdb{1,2}
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdb1  myvg lvm2 a--  <3.00g <3.00g # PV加入VG後,應該會在PV中創建了一些元數據(metadata),因此這裡的size都加上了小於號。
  /dev/sdb2  myvg lvm2 a--  <2.00g <2.00g
[root@C7 ~]# pvdisplay /dev/sdb{1,2}
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               myvg
  PV Size               3.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB # PV加入VG後就有了PE的概念。
  Total PE              767
  Free PE               767
  Allocated PE          0
  PV UUID               o7uiiy-kXEr-eZee-e0aP-cFKQ-dyjf-oQRvB9
   
  --- Physical volume ---
  PV Name               /dev/sdb2
  VG Name               myvg
  PV Size               2.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              511
  Free PE               511
  Allocated PE          0
  PV UUID               OlFvnr-rarx-ebCa-pG3L-qJBe-V8d1-aYkXB2

將目前的VG的所有空間都創建為一個LV。

[root@C7 ~]# lvcreate -L 5GB -n mylv myvg
  Volume group "myvg" has insufficient free space (1278 extents): 1280 required.

基於size來創建LV失敗,因為創建5GB的容量需要1280個PE(預設4MB),這個計算方式是1024進率。

但是我們在創建分區時創建的這5GB,可能是按照1000進率的。這就像市面上銷售的硬碟或者U盤,幾乎都是按照1000進率來表示一樣。

在Linux的工具的使用中,當你使用5GB、5gb、5G和5g,它們可能有的表示1000進率,有的表示1024進率,這個就需要用戶具體去查看每個工具的man手冊了。

而且分區/文件系統一般都會保留一部分空間給元數據存放。因此一般情況下,容量差不多即可,不需要太過於糾結。

PS:網上也有說是“1024進位”,但是我覺得說“1024進率”可能更準確。

既然無法基於size來創建,那我們就基於VG中的PE個數來創建了,使用全部的PE去創建一個LV。

[root@C7 ~]# lvcreate -l 1278 -n mylv myvg
  Logical volume "mylv" created.

查看LV信息。註意:查看LV的信息的時候,lvs和lvdisplay的命令參數應該是LV的路徑(/dev/mapper/myvg-mylv或者/dev/myvg/mylv)或者VG的名稱,而不是LV名稱。

[root@C7 ~]# lvs myvg
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv myvg -wi-a----- 4.99g                                                    
[root@C7 ~]# lvdisplay myvg
  --- Logical volume ---
  LV Path                /dev/myvg/mylv
  LV Name                mylv
  VG Name                myvg
  LV UUID                43nlG8-EGra-1jfQ-2K2n-3kxA-s5SW-aR1R3I
  LV Write Access        read/write
  LV Creation host, time C7, 2019-04-10 17:25:26 +0800
  LV Status              available
  # open                 0
  LV Size                4.99 GiB
  Current LE             1278 # 原本在VG中的PE,在分配給LV之後,就換了個名字叫LE了。
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

LV創建完畢後,通過“pvdisplay -m”查看PV中的PE和LV中的LE之間的映射關係。

[root@C7 ~]# pvdisplay -m /dev/sdb{1,2}
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               myvg
  PV Size               3.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              767
  Free PE               0
  Allocated PE          767
  PV UUID               o7uiiy-kXEr-eZee-e0aP-cFKQ-dyjf-oQRvB9
   
  --- Physical Segments ---
  Physical extent 0 to 766:
    Logical volume    /dev/myvg/mylv
    Logical extents    0 to 766
   
  --- Physical volume ---
  PV Name               /dev/sdb2
  VG Name               myvg
  PV Size               2.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              511
  Free PE               0
  Allocated PE          511
  PV UUID               OlFvnr-rarx-ebCa-pG3L-qJBe-V8d1-aYkXB2
   
  --- Physical Segments ---
  Physical extent 0 to 510:
    Logical volume    /dev/myvg/mylv
    Logical extents    767 to 1277

LVM設備路徑查看。

[root@C7 ~]# ls -l /dev/mapper/myvg-mylv 
lrwxrwxrwx 1 root root 7 Apr 10 17:25 /dev/mapper/myvg-mylv -> ../dm-2
[root@C7 ~]# ls -l /dev/myvg/mylv 
lrwxrwxrwx 1 root root 7 Apr 10 17:25 /dev/myvg/mylv -> ../dm-2
[root@C7 ~]# ls -l /dev/dm-2 
brw-rw---- 1 root disk 253, 2 Apr 10 17:25 /dev/dm-2
[root@C7 ~]# file /dev/dm-2
/dev/dm-2: block special

接下來,就可以將其格式化、掛載並使用、加入開機掛載了。

[root@C7 ~]# mkfs -t xfs /dev/myvg/mylv
...
省略
...
[root@C7 ~]# mount /dev/myvg/mylv /lvm_mount_point/
[root@C7 ~]# cat /etc/fstab
...
/dev/mapper/myvg-mylv    /lvm_mount_point    xfs    defaults    0 0

 

使用LVM擴容

擴容是LVM中最常見的用法,也是為瞭解決傳統磁碟分區容量耗盡的問題。

擴容的原理是將VG中空閑的PE劃分給LV,或者通過增加PV的方式增加VG中的空閑PE而後劃分給LV。

將此前剩餘的分區/dev/sdb3創建為PV並加入VG。

[root@C7 ~]# pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created.
[root@C7 ~]# vgextend myvg /dev/sdb3
  Volume group "myvg" successfully extended

查看VG新增出的PE個數。

[root@C7 ~]# vgdisplay myvg
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <5.99 GiB
  PE Size               4.00 MiB
  Total PE              1533
  Alloc PE / Size       1278 / 4.99 GiB
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               XKP0mV-zWAx-nscs-jXiT-jLxm-5MgE-aDU8fU

將增加的PE全部擴展給此前創建的LV,即mylv。

[root@C7 ~]# lvextend -l +255 /dev/myvg/mylv
  Size of logical volume myvg/mylv changed from 4.99 GiB (1278 extents) to <5.99 GiB (1533 extents).
  Logical volume myvg/mylv successfully resized.

查看擴容後的LV。

[root@C7 ~]# lvdisplay /dev/myvg/mylv 
  --- Logical volume ---
  LV Path                /dev/myvg/mylv
  LV Name                mylv
  VG Name                myvg
  LV UUID                43nlG8-EGra-1jfQ-2K2n-3kxA-s5SW-aR1R3I
  LV Write Access        read/write
  LV Creation host, time C7, 2019-04-10 17:25:26 +0800
  LV Status              available
  # open                 1
  LV Size                <5.99 GiB
  Current LE             1533
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

雖然LV已經擴容成功,但其實文件系統並沒有擴容,即便是重新掛載。

[root@C7 ~]# df -hT | grep "mylv"
/dev/mapper/myvg-mylv   xfs       5.0G   33M  5.0G   1% /lvm_mount_point

原因在於文件系統還未擴容,ext系列文件系統使用resize2fs命令,此處使用xfs文件系統,因此使用xfs_growfs。

[root@C7 ~]# xfs_growfs /dev/mapper/myvg-mylv
...
省略
...
[root@C7 ~]# df -hT | grep "mylv"
/dev/mapper/myvg-mylv   xfs       6.0G   33M  6.0G   1% /lvm_mount_point

擴容除了可以使用原磁碟的剩餘空間,也可以使用新的磁碟。

後來我又創建了一塊1GB的虛擬磁碟,整盤創建一個LVM分區,創建PV,加入VG,而後擴展LV,也是可以的。

[root@C7 ~]# pvcreate /dev/sdc1
[root@C7 ~]# vgextend myvg /dev/sdc1
[root@C7 ~]# lvextend -l +255 /dev/myvg/mylv
[root@C7 ~]# xfs_growfs /dev/myvg/mylv
[root@C7 ~]# df -hT
...
/dev/mapper/myvg-mylv   xfs       7.0G   33M  7.0G   1% /lvm_mount_point
...

 

使用LVM縮容

首先查看縮容前的LV的大小,方便之後對比。

[root@C7 ~]# lvdisplay /dev/myvg/mylv 
  --- Logical volume ---
  LV Path                /dev/myvg/mylv
  LV Name                mylv
  VG Name                myvg
  LV UUID                43nlG8-EGra-1jfQ-2K2n-3kxA-s5SW-aR1R3I
  LV Write Access        read/write
  LV Creation host, time C7, 2019-04-10 17:25:26 +0800
  LV Status              available
  # open                 1
  LV Size                6.98 GiB
  Current LE             1788
  Segments               4
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

確認承載於LV上的需要的文件的大小。在實驗環境中只有一個521位元組的文件(不足一個PE),因此只要縮容後的LV只要還有1個PE,那麼文件就還是可用的。

[root@C7 ~]# ls -lh /lvm_mount_point/fstab
-rw-r--r-- 1 root root 521 Apr 10 17:35 /lvm_mount_point/fstab

假設我們要縮容的容量剛好是/dev/sdb3和/dev/sdc1,查看其PV的PE數。

[root@C7 ~]# pvdisplay /dev/sd{b3,c1} | grep -iE "pv name|pe"
  PV Name               /dev/sdb3
  PE Size               4.00 MiB
  Total PE              255
  Free PE               0
  Allocated PE          255
  PV Name               /dev/sdc1
  PE Size               4.00 MiB
  Total PE              255
  Free PE               0
  Allocated PE          255

縮容與擴容的過程正好是相反的,我們首先需要對文件系統進行縮容操作。

如果是ext系列的文件系統:

  1. 停止需要卸載的文件系統所提供的服務(例如nginx、MySQL等)。
  2. 使用umount命令卸載文件系統。
  3. 使用“e2fsck -f”強制檢測文件系統。
  4. 使用resize2fs命令調整文件系統的容量。
  5. 使用lvreduce命令縮容LV的容量。其實到這裡,LV的縮容就已經完成了,如果縮容的容量大於等於某個/某幾個PV的話,可以考慮將PV從VG中釋放出來。
  6. 使用pvdisplay命令查看PV中的PE是否完全為空閑狀態。若否則使用pvmove命令將非空閑PE移出。
  7. 使用vgreduce命令將全空閑的PV移出VG,並使用pvremove命令刪除其PV狀態。

本文所使用的文件系統是XFS。

xfs文件系統不支持縮容(XFS文件系統的缺點),想實現類似縮容的功能,可以通過備份(xfsdump)和還原(xfsrestore)的方式。

備份XFS文件系統。需要用戶輸入2個label,填寫test即可。

[root@C7 ~]# xfsdump -f /tmp/lvm_mount_point.xfsdump /lvm_mount_point
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control

 ============================= dump label dialog ==============================

please enter label for this dump session (timeout in 300 sec)
 -> test
session label entered: "test"

 --------------------------------- end dialog ---------------------------------

xfsdump: level 0 dump of C7:/lvm_mount_point
xfsdump: dump date: Wed Apr 17 14:19:47 2019
xfsdump: session id: e2cfa0fa-d73d-4e94-8f55-cb3f2c581c08
xfsdump: session label: "test"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 25216 bytes

 ============================= media label dialog =============================

please enter label for media in drive 0 (timeout in 300 sec)
 -> test
media label entered: "test"

 --------------------------------- end dialog ---------------------------------

xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 22384 bytes
xfsdump: dump size (non-dir files) : 1056 bytes
xfsdump: dump complete: 58 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /tmp/lvm_mount_point.xfsdump OK (success)
xfsdump: Dump Status: SUCCESS

在備份XFS文件系統的時候,必須保持掛載狀態,如果先卸載再備份,會報錯。

xfsdump: ERROR: /dev/{dm-2,mapper/myvg-mylv,myvg/mylv} does not identify a file system

如果備份的命令參數填寫的是掛載點,並且在掛載點末尾加上了斜線的話,也會報這個錯誤,即“/lvm_mount_point/”會報錯而“/lvm_mount_point”不會。

備份完成後,卸載文件系統。

[root@C7 ~]# umount /lvm_mount_point/

縮容LV。

[root@C7 ~]# lvreduce -l -510 /dev/myvg/mylv
  WARNING: Reducing active logical volume to 4.99 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/mylv? [y/n]: y
  Size of logical volume myvg/mylv changed from 6.98 GiB (1788 extents) to 4.99 GiB (1278 extents).
  Logical volume myvg/mylv successfully resized.

產生警告,意思就是說縮容可能會摧毀數據,由於縮容後的容量大於我們的數據容量,因此不會影響到我們的數據,這就是LVM縮容的優點。但是前提條件是文件系統有事先縮容,由於我們使用的是XFS文件系統,無法實現文件系統的縮容,所以其實這個操作,應該是破壞了數據了,後面也會看到。

縮容完畢後,再次查看LV大小。

[root@C7 ~]# lvdisplay /dev/myvg/mylv 
  --- Logical volume ---
  LV Path                /dev/myvg/mylv
  LV Name                mylv
  VG Name                myvg
  LV UUID                43nlG8-EGra-1jfQ-2K2n-3kxA-s5SW-aR1R3I
  LV Write Access        read/write
  LV Creation host, time C7, 2019-04-10 17:25:26 +0800
  LV Status              available
  # open                 0
  LV Size                4.99 GiB
  Current LE             1278
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

由於我們縮容的容量剛好為2個PV的PE數,並且這2個PV是最後兩個加入VG的。因此縮容的PE正好是我們想要移除的2個PV,大大降低了縮容的難度。

[root@C7 ~]# pvdisplay /dev/sd{b3,c1}
  --- Physical volume ---
  PV Name               /dev/sdb3
  VG Name               myvg
  PV Size               1.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              255
  Free PE               255
  Allocated PE          0
  PV UUID               yazajZ-jt1o-rqLY-L0RB-ASzf-gBxT-smDm4j
   
  --- Physical volume ---
  PV Name               /dev/sdc1
  VG Name               myvg
  PV Size               1023.00 MiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              255
  Free PE               255
  Allocated PE          0
  PV UUID               DURMQf-UVgh-Mjtz-MKqY-emaY-zWFl-QSWFKh

註意:PV中的PE是否處於空閑狀態,看的是PE是否被劃入LV中,而不是看PE是否存儲了數據。

如果不是剛好的話,就需要用戶使用pvmove命令將待移除的PV中的非空閑的PE移動到其他PV上去。

現在就可以將這2個不要的PV移出VG,並刪除PV。

[root@C7 ~]# vgreduce myvg /dev/sdb3 /dev/sdc1
  Removed "/dev/sdb3" from volume group "myvg"
  Removed "/dev/sdc1" from volume group "myvg"
[root@C7 ~]# pvremove /dev/sdb3 /dev/sdc1
  Labels on physical volume "/dev/sdb3" successfully wiped.
  Labels on physical volume "/dev/sdc1" successfully wiped.
[root@C7 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <19.00g    0 
  /dev/sdb1  myvg   lvm2 a--   <3.00g    0 
  /dev/sdb2  myvg   lvm2 a--   <2.00g    0

既然LV已經縮容成功,那麼就可以掛載使用了。

由於我們使用的是XFS文件系統,該文件系統無法縮容,因此在縮容LV的時候,該文件系統的元數據已經受到破壞。

[root@C7 ~]# mount /dev/myvg/mylv /lvm_mount_point/
mount: /dev/mapper/myvg-mylv: can't read superblock

不過上文也說了,我們是使用備份還原的機制來變相實現“縮容”。

我們只需要重新格式化LV為XFS文件系統,掛載並使用文件系統備份文件還原即可。

[root@C7 ~]# mkfs -t xfs /dev/myvg/mylv
mkfs.xfs: /dev/myvg/mylv appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
[root@C7 ~]# mkfs -t xfs -f /dev/myvg/mylv
...
省略
...
[root@C7 ~]# mount /dev/myvg/mylv /lvm_mount_point/
[root@C7 ~]# xfsrestore -f /tmp/lvm_mount_point.xfsdump /lvm_mount_point/
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description: 
xfsrestore: hostname: C7
xfsrestore: mount point: /lvm_mount_point
xfsrestore: volume: /dev/mapper/myvg-mylv
xfsrestore: session time: Wed Apr 17 14:19:47 2019
xfsrestore: level: 0
xfsrestore: session label: "test"
xfsrestore: media label: "test"
xfsrestore: file system id: b7c9c46e-0d54-4ee3-a3e0-e1964799f47d
xfsrestore: session id: e2cfa0fa-d73d-4e94-8f55-cb3f2c581c08
xfsrestore: media id: 57ba6b11-c688-486c-9a73-0e09a1ecd287
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 1 directories and 1 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore:   stream 0 /tmp/lvm_mount_point.xfsdump OK (success)
xfsrestore: Restore Status: SUCCESS
[root@C7 ~]# ls -l /lvm_mount_point/
total 4
-rw-r--r-- 1 root root 521 Apr 10 17:35 fstab
[root@C7 ~]# cat /lvm_mount_point/fstab 

#
# /etc/fstab
# Created by anaconda on Thu Sep 27 15:49:45 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=9d2e5bb3-799f-4056-a6bd-6ff2d7f55254 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/mapper/myvg-mylv    /lvm_mount_point    xfs    defaults    0 0

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 數組是對相同類型的一組數據的封裝。數組定義的時候,要說明是對哪一種類型的封裝,並且要指定長度。 運行結果如下: 數組是一種數據類型,並且二維數組在圖像處理中會應用。一維數組的起始下標是[0]。二維數組的起始下標是[0,0]。交錯也稱參差數組的起始下標是[0][0]。 數組一定是固定長度和類型確定並且 ...
  • 本示例演示DS開放式下拉列表控制項中加入一個RDP遠程桌面控制項。 先在VS工具箱中添加COM控制項Microsoft RDP Client Control,後面的Version版本可以適當高點。 然後將RDP控制項拖到窗體中,再拖出一個DS開放式下拉列表控制項。 編寫代碼: 運行後,點擊DS開放式下拉列表控 ...
  • 今天回到家,突然發現用了兩年的win7系統藍屏了,不想浪費時間在排查原因上,就直接拿出winpe重新安裝了一個win10企業版LTSC,安裝完驅動後傻眼了,這個時候我才發現,激活它是件很不容易的事。 前前後後用了好幾款激活工具,什麼暴風、小馬,還有其它一大堆亂七八糟的玩藝兒,根本不管用,最後才發現這 ...
  • 簡介 Schema.xml 作為 MyCat 中重要的配置文件之一,管理著 MyCat 的邏輯庫、表、分片規則、DataNode 以及 DataSource。弄懂這些配置,是正確使用 MyCat 的前提。這裡就一層層對該文件進行解析。 schema 標簽 schema 標簽用於定義 MyCat 實例 ...
  • 目錄 1. "前言" 1. "環境" 1. "安裝說明" 1. "安裝" "1、mycat" "2、mycat eye" 前言 介紹自己看。 mycat官網:http://www.mycat.io/ 環境 系統: SUSE12SP3 軟體| 版本|說明| | | java|jdk1.7.0_79|其 ...
  • 通過yum命令只下載rpm包不安裝 經常遇到伺服器沒有網路的情況下部署環境,或者創建自己的 yum 倉庫等。每次都是在網上搜搜搜,都是五花八門,自己整理了下自己用到的以下三種方式,這裡沒有太多廢話,只是如何安裝並示例經常用到的方式,如果還需要更多參數 ,可以通過 --help 查看手冊: 方法一:y ...
  • 此博文是CentOS 7 在最小化安裝之後進行安裝Apache服務的操作步驟,httpd版本為httpd-2.4.34。 一、基本服務環境搭建 安裝apache需要的基本環境:apr apr-util pcre gcc gcc-c++ expat-devel Yum install -y gcc g ...
  • GAWK:報告生成器,格式化文本輸出 awk [options] ‘program’ var=value file… awk [options] -f programfile var=value file… awk [options] 'BEGIN{ action;… } pattern{ acti ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...