Linux運維-磁碟存儲---3.LVM

来源:https://www.cnblogs.com/shiyw/archive/2020/02/27/12372543.html
-Advertisement-
Play Games

1. LVM的工作原理 LVM( Logical Volume Manager)邏輯捲管理,是在磁碟分區和文件系統之間添加的一個邏輯層,來為文件系統屏蔽下層磁碟分區佈局,提供一個抽象的盤捲,在盤捲上建立文件系統。管理員利用LVM可以在磁碟不用重新分區的情況下動態調整文件系統的大小,並且利用LVM管理 ...


  1. LVM的工作原理

     LVM( Logical Volume Manager)邏輯捲管理,是在磁碟分區和文件系統之間添加的一個邏輯層,來為文件系統屏蔽下層磁碟分區佈局,提供一個抽象的盤捲,在盤捲上建立文件系統。管理員利用LVM可以在磁碟不用重新分區的情況下動態調整文件系統的大小,並且利用LVM管理的文件系統可以跨越磁碟,當伺服器添加了新的磁碟後,管理員不必將原有的文件移動到新的磁碟上,而是通過LVM可以直接擴展文件系統跨越磁碟。

    它就是通過將底層的物理硬碟封裝起來,然後以邏輯捲的方式呈現給上層應用。在LVM中,其通過對底層的硬碟進行封裝,當我們對底層的物理硬碟進行操作時,其不再是針對於分區進行操作,而是通過一個叫做邏輯捲的東西來對其進行底層的磁碟管理操作。
    1.1 LVM常用的術語

物理存儲介質(The physical media):LVM存儲介質可以是磁碟分區,整個磁碟,RAID陣列或SAN磁碟,設備必須初始化為LVM物理捲,才能與LVM結合使用。

物理捲PV(physical volume) :物理捲就是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁碟等)比較,卻包含有與LVM相關的管理參數,創建物理捲它可以用硬碟分區,也可以用硬碟本身;

捲組VG(Volume Group) :一個LVM捲組由一個或多個物理捲組成 

邏輯捲LV(logical volume) :LV建立在VG之上,可以在LV之上建立文件系統

PE(physical extents) :PV物理捲中可以分配的最小存儲單元,PE的大小是可以指定的,預設為4MB

LE(logical extent) : LV邏輯捲中可以分配的最小存儲單元,在同一個捲組中,LE的大小和PE是相同的,並且一一對應

最小存儲單位總結:

名稱 最小存儲單位

硬碟 扇區(512位元組)

文件系統 block(1K或4K )# mkfs.ext4 -b 2048 /dev/sdb1 ,最大支持到4096

raid chunk (512K) #mdadm -C -v /dev/md5 -l 5 -n 3 -c 512 -x 1 /dev/sde{1,2,3,5}

LVM PE (4M) # vgcreate -s 4M vg1 /dev/sdb{1,2}

LVM主要元素構成:

總結:多個磁碟/分區/raid-》多個物理捲PV-》合成捲組VG-》從VG划出邏輯捲LV-》格式化LV掛載使用
1.2 LVM優點

使用捲組,使多個硬碟空間看起來像是一個大的硬碟

使用邏輯捲,可以跨多個硬碟空間的分區 sdb1 sdb2 sdc1 sdd2 sdf

在使用邏輯捲時,它可以在空間不足時動態調整它的大小

在調整邏輯捲大小時,不需要考慮邏輯捲在硬碟上的位置,不用擔心沒有可用的連續空間

可以線上對LV,VG 進行創建,刪除,調整大小等操作。LVM上的文件系統也需要重新調整大小。

允許創建快照,可以用來保存文件系統的備份。

RAID+LVM一起用:LVM是軟體的捲管理方式,而RAID是磁碟管理的方法。對於重要的數據,使用RAID來保護物理的磁碟不會因為故障而中斷業務,再用LVM用來實現對捲的良性的管理,更好的利用磁碟資源。
2 創建LVM的基本步驟

1) 物理磁碟被格式化為PV,(空間被劃分為一個個的PE) #PV包含PE

2) 不同的PV加入到同一個VG中,(不同PV的PE全部進入到了VG的PE池內) #VG包含PV

3) 在VG中創建LV邏輯捲,基於PE創建,(組成LV的PE可能來自不同的物理磁碟) #LV基於PE創建

4) LV直接可以格式化後掛載使用 #格式化掛載使用

5) LV的擴充縮減實際上就是增加或減少組成該LV的PE數量,其過程不會丟失原始數據
2.1 lvm常用的命令

功能

PV管理命令

VG管理命令

LV管理命令

scan 掃描

pvscan

vgscan

lvscan

create 創建

pvcreate

vgcreate

lvcreate

display顯示

pvdisplay

vgdisplay

lvdisplay

remove 移除

pvremove

vgremove

lvremove

extend 擴展

vgextend

lvextend

reduce減少

vgreduce

lvreduce

下麵的操作會用的一些查看命令:

查看捲名

簡單對應捲信息的查看

掃描相關的所有的對應捲

詳細對應捲信息的查看

物理捲

pvs

pvscan

pvdisplay

捲組

vgs

vgscan

vgdisplay

邏輯捲

lvs

lvscan

lvdisplay
2.2 創建並使用LVM邏輯捲
創建PV

添加一個sdb磁碟 
[root@xuegod63 ~]# fdisk /dev/sdb    #創建4個主分區,每個分區1G  
[root@xuegod63 ~]# ls /dev/sdb*
/dev/sdb  /dev/sdb1  /dev/sdb2  /dev/sdb3  /dev/sdb4
設定分區類型代碼:fdisk /dev/sdb ===> t ===> 選擇分區號 ====> 8e ====> w 
註:現在系統已經很智能了, 直接使用預設的 83  Linux分區,也可以創建pv的。
 
[root@xuegod63 ~]# pvcreate /dev/sdb{1,2,3,4}   #創建pv
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdb3" successfully created.
  Physical volume "/dev/sdb4" successfully created.
 
[root@xuegod63 ~]# pvdisplay /dev/sdb1    #查看物理捲信息
  "/dev/sdb1" is a new physical volume of "1.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               1.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               SHKFwf-WsLr-kkox-wlee-dAXc-5eL0-hyhaTV​

創建vg捲組:

語法:      vgcreate  vg名字  pv的名字   可以跟多個pv
[root@xuegod63 ~]#  vgcreate vg01 /dev/sdb1
  Volume group "vg01" successfully created 
[root@xuegod63 ~]#  vgs
  VG   #PV #LV #SN Attr   VSize    VFree   
  vg01   1   0   0 wz--n- 1020.00m 1020.00m
[root@xuegod63 ~]#  vgdisplay vg01
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               1020.00 MiB
  PE Size               4.00 MiB
  Total PE              255
  Alloc PE / Size       0 / 0  ​

創建LV

lvcreate -n 指定新邏輯捲的名稱  -L指定lv大小的SIZE(M,G) (-l:小l 指定LE的數量) vgname
[root@xuegod63 ~]#  lvcreate -n lv01 -L 16M vg01
  Logical volume "lv01" created.
[root@xuegod63 ~]#  lvcreate -n lv02 -l 4 vg01
  Logical volume "lv02" created.
[root@xuegod63 ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv01 vg01 -wi-a----- 16.00m                                                    
  lv02 vg01 -wi-a----- 16.00m                                          
 
[root@xuegod63 ~]# pvdisplay /dev/sdb1
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg01
  PV Size               1.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              255
  Free PE               247
  Allocated PE          8   # Allocated    ['æləkeɪtɪd]  分配  ,已經使用了8個PE
[root@xuegod63 ~]# vgdisplay vg01
 
  Alloc PE / Size       8 / 32.00 MiB   #已經使用8個PE,32MB
  Free  PE / Size       247 / 988.00 MiB​

2.3 文件系統格式與掛載

[root@xuegod63 ~]# mkdir /lv01
[root@xuegod63 ~]# ls  /dev/vg01/   #查看邏輯捲
lv01  lv02
[root@xuegod63 ~]# ll  /dev/vg01/lv01  #其實lv01是dm-0的軟鏈接
lrwxrwxrwx 1 root root 7 5月  18 19:02 /dev/vg01/lv01 -> ../dm-0
 
[root@xuegod63 ~]# mkfs.ext4 /dev/vg01/lv01
[root@xuegod63 ~]# mount /dev/vg01/lv01  /lv01
[root@xuegod63 ~]# df -Th /lv01
文件系統              類型  容量  已用  可用 已用% 掛載點
/dev/mapper/vg01-lv01 ext4   15M  268K   14M    2% /lv01 
[root@xuegod63 ~]#echo  "/dev/vg01/lv01 /lv01 ext4 defaults 0 0"  >> /etc/fstab​

2.3 指定PE大小用

指定PE大小用的參數: -s       ,如果存儲的數據都是大文件,那麼PE儘量調大,讀取速度快
[root@xuegod63 ~]#  vgcreate -s 16M vg02 /dev/sdb2
  Volume group "vg02" successfully created
PE的大小隻有為2的冪數,且最大為512M
[root@xuegod63 ~]#  vgdisplay vg02
  --- Volume group ---
  VG Name               vg02
  System ID             
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               1008.00 MiB
  PE Size               16.00 MiB    #已經是16MB​

2.4 LV擴容

首先,確定一下是否有可用的擴容空間,因為空間是從VG裡面創建的,並且LV不能跨VG擴容
 [root@xuegod63 ~]# vgs
  VG   #PV #LV #SN Attr   VSize    VFree   
  vg01   1   2   0 wz--n- 1020.00m  988.00m
  vg02   1   0   0 wz--n- 1008.00m 1008.00m
用的命令如下:
 
 
擴容邏輯捲
[root@xuegod63 ~]# lvextend -L +30m /dev/vg01/lv01    
說明:在指定大小的時候,擴容30m和擴容到30m是不一樣的寫法
擴容30m ====> -L +30M
擴容到30m =====> -L 30M
[root@xuegod63 ~]#  lvextend -L +30m /dev/vg01/lv01    
  Rounding size to boundary between physical extents: 32.00 MiB.
  Size of logical volume vg01/lv01 changed from 16.00 MiB (4 extents) to 48.00 MiB (12 extents).
  Logical volume vg01/lv01 successfully resized.
 
[root@xuegod63 ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv01 vg01 -wi-ao---- 48.00m    #LV已經擴容成功                                                
  lv02 vg01 -wi-a----- 16.00m   
 
[root@xuegod63 ~]#  df -Th /lv01
文件系統              類型  容量  已用  可用 已用% 掛載點
/dev/mapper/vg01-lv01 ext4   15M  268K   14M    2% /lv01​

註:可以看到LV雖然擴展了,但是文件系統大小還是原來的,下麵開始擴容文件系統

ext4文件系統擴容使用命令語法: resize2fs 邏輯捲名稱

xfs文件系統擴容使用命令語法: xfs_growfs 掛載點

resize2fs和xfs_growfs 兩者的區別是傳遞的參數不一樣的,xfs_growfs是採用的掛載點;resize2fs是邏輯捲名稱,而且resize2fs命令不能對xfs類型文件系統使用

[root@xuegod63 ~]#  resize2fs /dev/vg01/lv01
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg01/lv01 is mounted on /lv01; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg01/lv01 is now 49152 blocks long.
[root@xuegod63 ~]#  df -Th /lv01
文件系統              類型  容量  已用  可用 已用% 掛載點
/dev/mapper/vg01-lv01 ext4   46M  (擴容成功)522K   43M    2% /lv01
[root@xuegod63 ~]# lvextend -L 80M -r /dev/vg01/lv01  #直接擴容到80M空間,一步到位,不用再擴文件系統了
[root@xuegod63 ~]# df -T /lv01/
文件系統              類型 1K-塊  已用  可用 已用% 掛載點
/dev/mapper/vg01-lv01 ext4 78303   776 73761    2% /lv01
[root@xuegod63 ~]# df -Th /lv01/
文件系統              類型  容量  已用  可用 已用% 掛載點
/dev/mapper/vg01-lv01 ext4   77M  776K   73M    2% /lv01​

2.5 VG擴容

[root@xuegod63 ~]# vgs
  VG   #PV #LV #SN Attr   VSize    VFree   
  vg01   1   2   0 wz--n- 1020.00m  924.00m
  vg02   1   0   0 wz--n- 1008.00m 1008.00m 
vg擴容的場景:vg捲組中的空間不了夠,需要添加新的硬碟進來
[root@xuegod63 ~]# pvcreate /dev/sdb3  # 創建pv
[root@xuegod63 ~]#  vgextend vg01 /dev/sdb3  #擴容成功
  Volume group "vg01" successfully extended
[root@xuegod63 ~]# vgs
  VG   #PV #LV #SN Attr   VSize    VFree   
  vg01   2   2   0 wz--n-    1.99g   <1.90g
  vg02   1   0   0 wz--n- 1008.00m 1008.00m​

2.6 LVM縮小

LVM可以動態增加,可以動態縮小嗎?

答:LVM可以動態增加,也可以動態縮小,但是XFS不支持動態縮小,所以我們無法實現基於xfs的動態縮小。btrfs文件系統支持線上縮小。

 [root@xuegod63 ~]#  lvreduce -L -20m /dev/vg01/lv01
  WARNING: Reducing active and open logical volume to 60.00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg01/lv01? [y/n]: y
  Size of logical volume vg01/lv01 changed from 80.00 MiB (20 extents) to 60.00 MiB (15 extents).
  Logical volume vg01/lv01 successfully resized.   #縮小成功
但是文件系統沒有縮小成功:
[root@xuegod63 ~]# df -h /lv01/
文件系統                    容量  已用  可用 已用% 掛載點
/dev/mapper/vg01-lv01   77M  776K   73M    2% /lv01   #發現文件系統上空間沒有變
 
[root@xuegod63 ~]# lvextend -L 10M -r /dev/vg01/lv01  #這兩個命令也是不能執行成功的
[root@xuegod63 ~]#  resize2fs /dev/vg01/lv01   #這兩個命令也是不能執行成功的
 ​

備註:VG的縮減,要保證你的物理捲是否被使用,是因為它無法縮減一個正在使用的PV

[root@xuegod63 ~]#  vgs
  VG   #PV #LV #SN Attr   VSize    VFree   
  vg01   2   2   0 wz--n-    1.99g   <1.92g
  vg02   1   0   0 wz--n- 1008.00m 1008.00m 
[root@xuegod63 ~]# pvs
  PV         VG   Fmt  Attr PSize    PFree   
  /dev/sdb1  vg01 lvm2 a--  1020.00m  944.00m
  /dev/sdb2  vg02 lvm2 a--  1008.00m 1008.00m
  /dev/sdb3  vg01 lvm2 a--  1020.00m 1020.00m
  /dev/sdb4       lvm2 ---     1.00g    1.00g
[root@xuegod63 ~]# cp -r /boot/grub /lv01/   #複製一些測試數據
[root@xuegod63 ~]# vgreduce vg01 /dev/sdb1   #將sdb1移出失敗,因sdb1正在被使用
  Physical volume "/dev/sdb1" still in use​

擴展:如果sdb1是一個磁碟陣列,而這個磁碟陣列使用年代太久,我們必須移出怎麼辦?

移動數據:
[root@xuegod63 ~]# pvmove  /dev/sdb1  /dev/sdb3  #將sdb1上數據移到新增加sdb3 pv 上
  /dev/sdb1: Moved: 23.53%
  /dev/sdb1: Moved: 76.47%
  /dev/sdb1: Moved: 100.00%
[root@xuegod63 ~]#  vgreduce vg01 /dev/sdb1  #移完數據再移出
  Removed "/dev/sdb1" from volume group "vg01"
[root@xuegod63 ~]# pvs
  PV         VG   Fmt  Attr PSize    PFree   
  /dev/sdb1       lvm2 ---     1.00g    1.00g
  /dev/sdb2  vg02 lvm2 a--  1008.00m 1008.00m
  /dev/sdb3  vg01 lvm2 a--  1020.00m  952.00m  #vg01中只有sdb3了​

2.7 LVM刪除

創建LVM流程:

pvcreate創建pv -> vgcreate創建捲組 -> lvcreate創建邏輯捲 -> mkfs.xfs lv 格式化-> mount掛載

刪除LVM流程:

umount卸載 -> lvremove lv移出捲組中所有邏輯捲-> vgremove vg移出捲組-> pvremove 移出pv

[root@xuegod63 ~]# umount /lv01
[root@xuegod63 ~]#  lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
  Logical volume "lv01" successfully removed
[root@xuegod63 ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv02 vg01 -wi-a----- 16.00m        #已經看不到lv01                                           
[root@xuegod63 ~]#  vgremove vg01   #直接移出捲組
Do you really want to remove volume group "vg01" containing 1 logical volumes? [y/n]: y
Do you really want to remove active logical volume vg01/lv02? [y/n]: y  
#如果捲組中還有lv,移出時,會提示,是否也移出,咱們這裡直接移出
  Logical volume "lv02" successfully removed
  Volume group "vg01" successfully removed
[root@xuegod63 ~]# vgs
  VG   #PV #LV #SN Attr   VSize    VFree   
  vg02   1   0   0 wz--n- 1008.00m 1008.00m    #沒有vg01 
 
移出pv  sdb1
[root@xuegod63 ~]# pvs
  PV         VG   Fmt  Attr PSize    PFree   
  /dev/sdb1       lvm2 ---     1.00g    1.00g
  /dev/sdb2  vg02 lvm2 a--  1008.00m 1008.00m
  /dev/sdb3       lvm2 ---     1.00g    1.00g
  /dev/sdb4       lvm2 ---     1.00g    1.00g
[root@xuegod63 ~]# pvremove /dev/sdb1   #已經移出
  Labels on physical volume "/dev/sdb1" successfully wiped.
[root@xuegod63 ~]# pvs
  PV         VG   Fmt  Attr PSize    PFree   
  /dev/sdb2  vg02 lvm2 a--  1008.00m 1008.00m
  /dev/sdb3       lvm2 ---     1.00g    1.00g
  /dev/sdb4       lvm2 ---     1.00g    1.00g​

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

-Advertisement-
Play Games
更多相關文章
  • 該方式是直接對屏幕進行截圖操作UserControl chartContainPanel = new UserControl();Graphics graph = chartContainPanel.CreateGraphics();Size s = chartContainPanel.Size;B... ...
  • 3.github與git同步 3.1 配置公私鑰 3.2 github上建立個人倉庫 3.3 本地倉庫同步到github 往遠端推送叫做 push 從遠端拉取叫做 fetch 需要先git pull命令拉取下來 瞭解更多技術文章,歡迎關註我的個人公眾號 ...
  • Ceph理論 1. Ceph 簡介 Ceph 是一個開源項目,它提供軟體定義的、統一的存儲解決方案 。Ceph 是一個具有高性能、高度可伸縮性、可大規模擴展並且無單點故障的分散式存儲系統 。 Ceph 是軟體定義存儲解決方案 Ceph 是統一存儲解決方案 Ceph 是雲存儲解決方案 Ceph 官方文 ...
  • 1. 安裝mysql yum install http://dev.mysql.com/get/mysql57 community release el7 9.noarch.rpm yum remove mariadb libs yum install mysql community server ...
  • 一.導入文件內容 :r 解釋 示例 :! 解釋 示例 :r !命令 解釋 示例 二.定義快捷鍵 定義添加行首添加註釋 的快捷建ctrl+p 定義刪除行首首個字元的快捷鍵ctrl+b 定義插入郵箱的快捷鍵ctrl+h 三.連續行註釋 將n1到n2行全部註釋掉 將n1到n2行行首的註釋全部去掉 將n1行 ...
  • 三種模式 插入命令 命令 | 作用 | a | 在游標所在字元後插入 A | 在游標所在行尾插入 i | 在游標所在字元前插入 I | 在游標所在行首插入 o | 在游標下插入新行 O | 在游標上插入新行 設置行號 定位首行和末行的行首 跳到指定的行首 在某一行下,移動游標到行首或行尾 刪除命令 ...
  • 目錄 locate which whereis grep locate 解釋 語法 提示locate命令找不到 locate缺陷 示例 which 解釋 語法 示例 whereis 解釋 語法 示例 grep 解釋 語法 示例 ...
  • redis 3.2 鏡像製作及驗證 鏡像製作 1.安裝redis yum install redis yum install epl release yum install python pip git gcc pip2 install redis pip2 install hiredis vim ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...