主頁 >  其他 > linux入門系列13--磁盤管理之RAID、LVM技術

linux入門系列13--磁盤管理之RAID、LVM技術

2020-12-22 09:55:59 其他

前一篇文章學習了磁盤磁區、格式化、掛載等相關知識,本文將講解RAID和LVM技術,

磁盤管理操作主要是運維人員用的較多,如果只是單純的開發人員,可以先略過本文,但是在很多小公司里往往都是一人多用,運維、開發通常都是同一個人,因此對個人的技能要求更高,即便不是如此,多了解下相關概念也是有利而無害的,

本文將先講解RAID技術方案相關理論知識并通過案例演示RAID操作,然后演示LVM技術以解決存盤資源動態調整問題,

一、獨立冗余磁盤陣列(RAID)

RAID(Redundant Array of Independent Disk)技術把多個硬碟設備組合成一個容量更大、安全性更好的磁盤陣列,并把資料切割成多個區段后分別存放在各個不同的物理硬碟設備上,利用分散讀寫技術提升磁盤陣列整體的性能,同時把多個重要資料的副本同步到不同的物理硬碟設備上,從而起到了非常好的資料冗余備份效果,

簡單說就是通過RAID技術可以提升磁盤讀寫性能,同時可以冗余備份資料保證資料可靠性,但是性能和可靠性不可能同時滿足的非常好,因此在二者之間作出權衡就產生了不同的RAID方案,

1.1 RAID方案及特點

據說目前RAID磁盤陣列的方案至少有十幾種,然而萬變不離其宗,都是在讀寫性能和可靠性之間權衡,因此只介紹幾種比較有代表性的方案,

方案 特點
RAID0 磁盤讀寫性能高,但資料可靠性低
RAID1 磁盤設備利用率低,但資料可靠性高
RAID5 兼顧成本、讀寫性能和資料安全的折中方案
RAID10 相對于成本,更看重資料安全可靠
1.1.1 RAID0

把多塊物理硬碟設備通過硬體或軟體的方式串聯在一起,組成一個大的卷組,并將資料依次寫入到各個物理硬碟中,

最理想情況下,磁盤讀寫性能將提高數倍,但如果其中任意一塊磁盤損壞將導致整個系統資料被破壞,也就是說雖然RAID0有效提高磁盤資料的吞吐速度,但是不具備資料備份和錯誤修復能力,

其示意圖如下:

file

1.1.2 RAID1

如上所述,雖然RAID0提升了磁盤讀寫速度,但是由于它將資料依次寫入各個磁盤中,把資料分開存盤,如果其中一塊磁盤發生故障將會導致整個系統資料損壞,因此如果對資料要求性要求較高,但對磁盤讀寫速度沒有要求的話,這種方案就不合適,需要用到RAID1方案,

RAID1示意圖如下:

file

RAID1是把多塊硬碟系結,資料同時寫入多塊磁盤,這樣就會有多份資料副本,當其中某一塊硬碟發生故障后,立即自動以熱交換的方式來恢復資料的正常使用,

雖然通過副本的形式保證了資料的安全性,但是磁盤設備利用率不高,從示意圖可以看出,如果是2塊磁盤則利用率只有50%,因此增加了成本開銷,

1.1.3 RAID5

前面兩種方案分別偏向于磁盤速度和資料安全,而RAID5則是在讀寫性能、資料安全和成本之間的一個相互妥協方案,

示意圖如下:

file

RAID5技術是把硬碟設備的資料奇偶校驗資訊保存到其他硬碟設備中,這樣的好處是其中任何一設備損壞后不至于出現致命缺陷,圖中的parity部分存放的就是資料的奇偶校驗資訊,

簡單說就是RAID5方案實際上沒有備份硬碟中的真實資料資訊(資料只有一份),而是當硬碟設備出現問題后通過奇偶校驗資訊來嘗試重建損壞的資料,

這種方案兼顧了了硬碟設備的讀寫速度、資料安全性與存盤成本問題,

1.1.4 RAID10

雖然RAID5看起來在成本問題、磁盤讀寫以及資料安全性有了一個相互妥協的方案,但實際上很多企業,尤其是金融企業資料本身的價值遠比磁盤價格高,因此成本并不是第一考慮要素,在這種場景下,一般是采用RAID10技術,

RAID10方案實際就是把RAID0和RAID1兩種方案進行組合而來,示意圖如下:

file

如圖所示,需要至少4塊硬碟來組建RAID10,先兩兩組合制作為RAID1確保資料有副本來保證安全性,然后在將組合后的兩個RAID1采用RAID0進行組合,進一步提高設備的讀寫速度,

從理論上講,只要同一組中的硬碟不全壞掉,那么最多可以損壞50%的硬碟設備而不丟失資料,

由于RAID10方案繼承了RAID0的高讀寫速度和RAID1的資料安全性,在不考慮成本的情況下RAID10的性能都超過了RAID5,因此當前成 為廣泛使用的一種存盤技術,

說明:由于篇幅所限,其他的方案就不一一列出,需要說明的是應該按照實際需求去考慮成本、磁盤性能、資料安全性等因素,按需選擇最合適需求場景的方案,

1.2 mdadm命令

通過上一篇文章“linux入門系列12--磁盤管理之磁區、格式化與掛載”的講解,已經學會了磁盤設備管理之后,再來部署RAID就會非常簡單,因此如果還沒掌握的話,建議先回傳去看上一篇文章,

在正式操作RAID之前,我們先看一下在linux中RAID磁盤陣列的管理命令mdadm,

語法格式:

? mdadm [模式引數] RAID名稱 [選項] [成員磁盤串列]

引數選項:

引數 作用
-a 檢查設備名稱
-n 指定設備數量
-l level,指定 RAID 級別
-C 創建RAID
-v 顯示詳細程序
-f 模擬設備損壞
-r remove,移除設備
-D 查看詳細資訊

1.3 實體1-RAID10部署

1.3.1 環境準備

我們直接在虛擬機中模擬添加多塊磁盤來演示RAID的操作,生產環境中采用的命令和步驟都是一致的,

為了避免實驗之間的干擾,我們先克隆一臺新的Centos虛擬機進行演示

file

點擊“克隆”后,彈出虛擬機向導

file

點擊“下一步”

file

保存默認選擇“虛擬機中的當前狀態”,點擊“下一步”

file

選擇“創建完整的克隆”,點擊“下一步”

file

按需修改虛擬機名稱已經存放的位置,點擊“完成”按鈕

file

等待克隆完成(根據不同機器的性能,克隆時間不同)

file

這樣新的虛擬機就準備好了,

1.3.2 創建RAID10

如前所述,RAID10至少需要4塊磁盤,因此我們先添加4塊磁盤,

(1)添加磁盤

選擇剛才克隆的虛擬機,點擊“編輯虛擬機設定”

file

在彈出的“虛擬機設定”視窗中,點擊“添加”

file

在彈出的“添加硬體向導”中選擇“硬碟”,然后點擊“下一步”

file

磁盤型別保存默認“SCSI”,點擊“下一步”

file

磁盤型別保持默認的“創建新虛擬機磁盤”,點擊“下一步”

file

根據需要設定磁盤大小,此處設定為1G,點擊“下一步”

file

選擇磁盤檔案存放路徑,點擊“完成”按鈕

file

即可看到剛才添加的一塊磁盤已經成功,

file

在上邊界面中點擊“添加”按鈕,用相同的方法再添加3塊磁盤,總共新添加4塊磁盤,

file

(2)創建RAID10磁盤陣列

啟動剛才添加磁盤的虛擬機,并用之前講解的lsblk或fdisk查看磁盤設備

[root@origin ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  500M  0 part /boot
└─sda2            8:2    0 19.5G  0 part 
  ├─centos-swap 253:0    0    2G  0 lvm  [SWAP]
  └─centos-root 253:1    0 17.5G  0 lvm  /
sdb               8:16   0    1G  0 disk 
sdc               8:32   0    1G  0 disk 
sdd               8:48   0    1G  0 disk 
sde               8:64   0    1G  0 disk 
sr0              11:0    1  3.9G  0 rom  /run/media/root/CentOS 7 x86_64
[root@origin ~]# fdisk -l
Disk /dev/sde: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdd: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdc: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
...省略部分內容
[root@origin ~]# 

可以看到剛才添加的磁盤:sdb、sdc、sdd、sde,設備名稱名稱分別為:/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde

接下來用mdadm命令創建RAID10

[root@origin ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 1047552K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@origin ~]# 

C引數代表創建一個RAID陣列卡;-v引數顯示創建的程序,同時在后面追加一個設備名稱/dev/md0,這樣/dev/md0就是創建后的RAID 磁盤陣列的名稱;-a yes 引數代表自動創建設備檔案;-n 4引數代表使用4塊硬碟來部署這個RAID磁盤陣列;而-l 10引數則代表RAID10方案,

創建磁盤陣列成功之后,下一步就是格式化

1.3.3 格式化RAID

用mkfs命令格式化RAID磁盤陣列

[root@origin ~]# mkfs.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
131072 inodes, 523776 blocks
26188 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done 
[root@origin ~]# 
1.3.4 掛載磁盤陣列

創建目錄并掛載磁盤陣列

[root@origin ~]# mkdir /raid
[root@origin ~]# mount /dev/md0 /raid
[root@origin ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G  4.5G   14G  26% /
devtmpfs                 905M     0  905M   0% /dev
tmpfs                    914M  140K  914M   1% /dev/shm
tmpfs                    914M  9.0M  905M   1% /run
tmpfs                    914M     0  914M   0% /sys/fs/cgroup
/dev/sda1                497M  119M  379M  24% /boot
/dev/sr0                 3.9G  3.9G     0 100% /run/media/root/CentOS 7 x86_64
/dev/md0                 2.0G  6.0M  1.9G   1% /raid
[root@origin ~]# 

咦,細心的朋友可能就有疑問了,甚至開始懷疑是不是自己操作錯了,前面明明添加了4塊磁盤,每個磁盤為1G,總量應該為4G,但此處卻看到/dev/md0大小為2G?

是的,你沒看錯,根據前面講解的RAID10方案,容量會減少,此處可以看到4塊磁盤的情況下,可用容量會減少一半,

我們還需要把掛載資訊寫入到組態檔中,使其永久生效

[root@origin ~]# echo "/dev/md0 /raid ext4 defaults 0 0">>/etc/fstab
[root@origin ~]# cat /etc/fstab 
...省略部分內容
/dev/md0 /raid ext4 defaults 0 0
[root@origin ~]# 

這樣就把磁盤陣列掛載到了raid目錄,

1.3.5 查看磁盤陣列資訊

查看磁盤陣列資訊

[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部分內容
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       3       8       64        3      active sync   /dev/sde
[root@origin ~]#

可以看到4塊磁盤陣列中的4塊磁盤均已正常作業,

至此,RAID10方案部署完成,由此可見,整個操作流程給添加硬碟一致,都是需要創建、格式化、掛載等步驟,非常簡單,

1.4 實體2-修復RAID10中壞掉的磁盤

此實驗模擬剛才的磁盤陣列中某塊硬碟壞掉后的替換操作,因此在前邊的環境中繼續執行以下操作,

1.4.1 模擬設備損壞

使用mdadm命令的-f引數模擬設備損壞

[root@origin ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部分內容
    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       3       8       64        3      active sync   /dev/sde
       0       8       16        -      faulty   /dev/sdb
[root@origin ~]#

在確認有一塊物理硬碟設備出現損壞而不能繼續正常使用后,使用mdadm命令將其移除,然后查看RAID磁盤陣列的狀態,發現/dev/sdb磁盤的狀態已經改變,

在RAID10級別的磁盤陣列中,當RAID1磁盤陣列中存在一個故障盤時并不影響RAID10 磁盤陣列的使用,當購買了新的硬碟設備后再使用 mdadm 命令來予以替換即可,在此期間我們可以在/RAID目錄中正常地創建或洗掉檔案,

由于我們是在虛擬機中模擬的,為了更真實,先重啟系統,之后再繼續后邊的操作,

重啟之后發現損壞的盤已經不再磁盤陣列中了

[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部分內容
    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       3       8       64        3      active sync   /dev/sde
[root@origin ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE   MOUNTPOINT
sda               8:0    0   20G  0 disk   
├─sda1            8:1    0  500M  0 part   /boot
└─sda2            8:2    0 19.5G  0 part   
  ├─centos-swap 253:0    0    2G  0 lvm    [SWAP]
  └─centos-root 253:1    0 17.5G  0 lvm    /
sdb               8:16   0    1G  0 disk   
sdc               8:32   0    1G  0 disk   
└─md0             9:0    0    2G  0 raid10 /raid
sdd               8:48   0    1G  0 disk   
└─md0             9:0    0    2G  0 raid10 /raid
sde               8:64   0    1G  0 disk   
└─md0             9:0    0    2G  0 raid10 /raid
sr0              11:0    1  3.9G  0 rom  
1.4.2 取消磁盤陣列目錄掛載
[root@origin ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G  4.5G   14G  26% /
devtmpfs                 905M     0  905M   0% /dev
tmpfs                    914M   80K  914M   1% /dev/shm
tmpfs                    914M  8.9M  905M   1% /run
tmpfs                    914M     0  914M   0% /sys/fs/cgroup
/dev/md0                 2.0G  6.0M  1.9G   1% /raid
/dev/sda1                497M  134M  363M  27% /boot
[root@origin ~]# umount /raid/
[root@origin ~]# df -h        
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G  4.5G   14G  26% /
devtmpfs                 905M     0  905M   0% /dev
tmpfs                    914M   80K  914M   1% /dev/shm
tmpfs                    914M  8.9M  905M   1% /run
tmpfs                    914M     0  914M   0% /sys/fs/cgroup
/dev/sda1                497M  134M  363M  27% /boot
[root@origin ~]# 

添加磁盤,需要先取消掛載

1.4.3 添加磁盤并加入磁盤陣列

取消掛載之后,我們再用mdadm命令的-a引數添加磁盤

[root@origin ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部分內容
    Number   Major   Minor   RaidDevice State
       4       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       3       8       64        3      active sync   /dev/sde
[root@origin ~]# 

可以看到/dev/sdb設備加入磁盤陣列成功

1.4.4 重新掛載磁盤陣列
[root@origin ~]# mount -a
[root@origin ~]# df -h   
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G  4.5G   14G  26% /
devtmpfs                 905M     0  905M   0% /dev
tmpfs                    914M   80K  914M   1% /dev/shm
tmpfs                    914M  8.9M  905M   1% /run
tmpfs                    914M     0  914M   0% /sys/fs/cgroup
/dev/sda1                497M  119M  379M  24% /boot
/dev/md0                 2.0G  6.0M  1.9G   1% /raid

可以看到磁盤陣列/dev/md0又成功掛載到/raid目錄了,

由于之前/etc/fstab檔案以及添加了記錄,因此此處就無須再添加了,

至此就模擬出設備壞掉之后,重新用新磁盤修復的程序,

1.5 實體3-RAID5+備份盤方案

按上邊的RAID10部署方案,最多允許 50%的硬碟設備發生故障,同一組中的磁盤只要不全壞都可以正常作業,但是在極端情況下如果同一個RAID1中的磁盤設備全部損壞,也會導致資料丟失,這種情況我們采用采用多加一塊備份盤來解決,這塊硬碟平時處于閑置狀態,一旦RAID磁盤陣列中有硬碟出現故障后則會馬上自動頂替上去,

同樣為了避免干擾,重新克隆一個虛擬機,并采用RAID5方案來進行演示,

采用RAID5并沒有什么特別之處,目的只是為了演示下RAID5的用法,因為前面示例1和2都是用的RAID10,

由于RAID5至少需要3塊磁盤,另外此方案還需要一塊備份盤,因此在虛擬機中克隆新機器后,添加4塊硬碟,

1.5.1 創建RAID5

采用mdadm命令創建RAID5

[root@origin ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 1047552K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@origin ~]# 

引數-n 3代表創建這個RAID5磁盤陣列所需的硬碟數,引數-l 5代表RAID的級別,而引數-x 1則代表有一塊備份盤,

[root@origin ~]# mdadm -D /dev/md0 
/dev/md0:
...省略部分內容
    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      active sync   /dev/sdd
       3       8       64        -      spare   /dev/sde

查看/dev/md0磁盤陣列看到有一塊備份盤在等待中了(spare),

1.5.2 格式RAID5磁盤陣列

用mkfs命令將磁盤陣列格式化為ext4檔案格式

[root@origin ~]# mkfs.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
131072 inodes, 523776 blocks
26188 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done 
[root@origin ~]# 

1.5.3 掛載磁盤陣列到目錄
[root@origin ~]# echo "/dev/md0 /raid ext4 defaults 0 0" >> /etc/fstab
[root@origin ~]# mkdir /raid
[root@origin ~]# mount -a
[root@origin ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
...省略部分內容
/dev/md0                 2.0G  6.0M  1.9G   1% /raid
[root@origin ~]# 
1.5.4 模擬磁盤損壞

我們再次模擬把硬碟設備/dev/sdb 移出磁盤陣列

[root@origin ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@origin ~]# mdadm -D /dev/md0 
/dev/md0:
...省略部分內容
    Number   Major   Minor   RaidDevice State
       3       8       64        0      active sync   /dev/sde
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd
       0       8       16        -      faulty   /dev/sdb
[root@origin ~]# 

迅速查看/dev/md0 磁盤陣列的狀態,發現備份盤/dev/sde已經被自動頂替上去并開始了資料同步,

1.5.5 恢復損壞的磁盤

真實場景下,我們要保證隨時有一塊空閑的備份盤以防不測,因此需要替換或修復剛才壞掉的盤/dev/sdb,恢復后它又自動變為空閑的備份盤,一旦有設備壞掉又會自動頂上去,從而保證資料的安全性,

由于我們上邊一個步驟是模擬的/dev/sdb設備壞點,雖然壞了但是還是在占用中,因此重啟虛擬機(重啟后發現/dev/sdb就沒有了,不重啟會提示/dev/sdd設備繁忙無法成功執行以下步驟),然后執行以下操作:

[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部分內容
    Number   Major   Minor   RaidDevice State
       3       8       64        0      active sync   /dev/sde
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd
[root@origin ~]# umount /raid/
[root@origin ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@origin ~]# mount -a
[root@origin ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G  4.5G   14G  26% /
devtmpfs                 905M     0  905M   0% /dev
tmpfs                    914M   80K  914M   1% /dev/shm
tmpfs                    914M  8.9M  905M   1% /run
tmpfs                    914M     0  914M   0% /sys/fs/cgroup
/dev/sda1                497M  134M  363M  27% /boot
/dev/md0                 2.0G  6.0M  1.9G   1% /raid
[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部分內容
    Number   Major   Minor   RaidDevice State
       3       8       64        0      active sync   /dev/sde
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       5       8       16        -      spare   /dev/sdb
[root@origin ~]# 

可以看到,添加后/dev/sdb設備又自動變為備份盤了,這樣就保證了資料的安全,

二、邏輯卷管理器(LVM)

前面講解的用RAID磁盤陣列技術來管理磁盤設備,雖然能有效提供磁盤設備的讀寫性能以及資料的安全性,但是硬碟設備磁區或部署RAID磁盤陣列后,硬碟磁區大小就難以調整,而LVM(邏輯卷管理器)技術可以允許用戶對硬碟資源進行動態調整,

2.1 LVM概述

LVM(Logical Volume Manager)是Linux系統用于對硬碟磁區進行管理的一種機制,創建初衷是為了解決硬碟設備在創建磁區后不易修改磁區大小的缺陷,

盡管對傳統的硬碟磁區進 行強制擴容或縮容從理論上來講是可行的,但是卻可能造成資料的丟失,

LVM架構圖如下:

LVM技術是在硬碟磁區和檔案系統之間添加了一個邏輯層,它提供了一個抽象的卷組,可以把多塊硬碟進行卷組合并,這樣一來,用戶不必關心物理硬碟設備的底層架構和布局,就可以實作對硬碟磁區的動態調整,

物理卷處于LVM中的最底層,可以理解為物理硬碟、硬碟磁區或者RAID磁盤陣列,卷組建立在物理卷之上,一個卷組可以包含多個物理卷,而且在卷組創建之后也可以繼續向其中添加新的物理卷,邏輯卷是用卷組中空閑的資源建立的,并且邏輯卷在建立后可以動態地擴展或縮小空間,

在生產環境中無法精確地評估每個硬碟磁區在日后的使用情況,因此會導致 原先分配的硬碟磁區不夠用,隨著業務的增加磁盤不夠用了需要擴容,或者業務縮減我們需要對磁盤磁區進行精簡縮容等等,這些都可以通過LVM來解決,

部署LVM時,需要逐個配置物理卷、卷組和邏輯卷,常用命令如下:

功能 物理卷管理 卷組管理 邏輯卷管理
掃描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
顯示 pvdisplay vgdisplay lvdisplay
洗掉 pvremove vgremove lvremove
擴展 vgextend lvextend
縮小 vgreduce lvreduce

2.2 案例實操

為了避免干擾,重新克隆一個虛擬機,并添加2塊磁盤(添加2塊的目的是為了演示將磁盤添加到LVM的卷組中,實際情況可能會有更多的磁盤),

大概步驟為:先對這兩塊新硬碟進行創建物理卷的操作,然后對這兩塊硬碟進行卷組合并,接下來根據需求把合并后的卷組切割出一個約為 150MB 的邏輯卷設備,最后把這個邏輯卷設備格式化成 EXT4 檔案系統后掛載使用,

2.2.1 部署LVM

(1)讓磁盤設備支持LVM

[root@origin ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  500M  0 part /boot
└─sda2            8:2    0 19.5G  0 part 
  ├─centos-swap 253:0    0    2G  0 lvm  [SWAP]
  └─centos-root 253:1    0 17.5G  0 lvm  /
sdb               8:16   0    1G  0 disk 
sdc               8:32   0    1G  0 disk 
sr0              11:0    1  3.9G  0 rom  /run/media/root/CentOS 7 x86_64
[root@origin ~]# pvcreate /dev/sdb /dev/sdc
  Physical volume "/dev/sdb" successfully created
  Physical volume "/dev/sdc" successfully created
[root@origin ~]# pvscan
  PV /dev/sda2   VG centos          lvm2 [19.51 GiB / 0    free]
  PV /dev/sdc                       lvm2 [1.00 GiB]
  PV /dev/sdb                       lvm2 [1.00 GiB]
  Total: 3 [21.51 GiB] / in use: 1 [19.51 GiB] / in no VG: 2 [2.00 GiB]
[root@origin ~]#

查看剛才新家的2塊設備為:sdb、sdc,將其創建物理卷,并通過pvscan命令查看以創建物理卷,

(2)磁盤設備加入卷組

[root@origin ~]# vgcreate storage /dev/sdb /dev/sdc
  Volume group "storage" successfully created
[root@origin ~]# vgdisplay 
  --- Volume group ---
  VG Name               storage
  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               1.99 GiB
  PE Size               4.00 MiB
  Total PE              510
  Alloc PE / Size       0 / 0   
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               EKcctk-C1nM-Y2W8-s7pS-1bq8-W9ie-UTJM8Z
...省略部分內容
[root@origin ~]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "storage" using metadata type lvm2
  Found volume group "centos" using metadata type lvm2
[root@origin ~]# 

用vgcreate創建名稱為storage的卷組,并通過vgdisplay或vgscan可以查看,

(3)創建邏輯卷

切割出一個約為 150MB 的邏輯卷設備,這里需要注意切割單位的問題,在對邏輯卷進行切割時有兩種計量單位,第一種是以容 量為單位,所使用的引數為-L,例如,使用-L 150M生成一個大小為 150MB 的邏輯卷,另外一種是以基本單元的個數為單位,所使用的引數為-l,每個基本單元的大小默認為 4MB,例如,使用-l 37 可以生成一個大小為 37×4MB=148MB 的邏輯卷,

[root@origin ~]# lvcreate -n vo -l 37 storage
  Logical volume "vo" created
[root@origin ~]# lvscan 
  ACTIVE            '/dev/storage/vo' [148.00 MiB] inherit
  ACTIVE            '/dev/centos/root' [17.51 GiB] inherit
  ACTIVE            '/dev/centos/swap' [2.00 GiB] inherit
[root@origin ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/storage/vo
  LV Name                vo
  VG Name                storage
  LV UUID                qziHT9-1qTT-1CRa-TIoq-cosz-Hhn0-jX5CVm
  LV Write Access        read/write
  LV Creation host, time origin, 2020-01-01 22:14:18 +0800
  LV Status              available
  '#' open                 0
  LV Size                148.00 MiB
  Current LE             37
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
...省略部分內容
[root@origin ~]# 

通過lvcreate創建名稱為vo的邏輯卷后,通過lvdisplay可以查看/dev/storage/vo大小為剛設定的148M(LV Size 148.00 MiB),

(4)格式化邏輯卷并掛載

[root@origin ~]# mkfs.ext4 /dev/storage/vo
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
38000 inodes, 151552 blocks
7577 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33816576
19 block groups
8192 blocks per group, 8192 fragments per group
2000 inodes per group
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done 
[root@origin ~]# mkdir /lvm
[root@origin ~]# mount /dev/storage/vo /lvm
[root@origin ~]# echo "/dev/storage/vo /lvm ext4 defaults 0 0" >> /etc/fstab
[root@origin ~]#

格式化邏輯卷后掛載到lvm目錄,并把掛載資訊寫入fstab檔案使其開機自動生效,

(5)查看掛載狀態

[root@origin ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G  4.5G   14G  26% /
devtmpfs                 905M     0  905M   0% /dev
tmpfs                    914M  140K  914M   1% /dev/shm
tmpfs                    914M  9.0M  905M   1% /run
tmpfs                    914M     0  914M   0% /sys/fs/cgroup
/dev/sda1                497M  119M  379M  24% /boot
/dev/sr0                 3.9G  3.9G     0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/storage-vo   140M  1.6M  128M   2% /lvm
[root@origin ~]# echo "test">/lvm/test.txt
[root@origin ~]# ls /lvm/
lost+found  test.txt
[root@origin ~]# 

通過df命令就可以查看掛載成功,并可以成功寫入檔案到lvm目錄下,

2.2.2 LVM擴容

上一步創建的容量為148M,下面將演示將其擴展到300M

(1)卸載設備與掛載點的關聯

[root@origin ~]# umount /lvm
[root@origin ~]#

(2)擴展邏輯卷

把上一個實驗中的邏輯卷 vo 擴展至 300MB

[root@origin ~]# lvextend -L 300M /dev/storage/vo
  Extending logical volume vo to 300.00 MiB
  Logical volume vo successfully resized
[root@origin ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/storage/vo
  LV Name                vo
  VG Name                storage
  LV UUID                qziHT9-1qTT-1CRa-TIoq-cosz-Hhn0-jX5CVm
  LV Write Access        read/write
  LV Creation host, time origin, 2020-01-01 22:14:18 +0800
  LV Status              available
  '#' open                 0
  LV Size                300.00 MiB
 ...省略部分內容

可以看到擴展后/dev/storage/vo邏輯卷大小為300M,

(3)檢查硬碟完整性并重置硬碟容量

[root@origin ~]# e2fsck -f /dev/storage/vo
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/storage/vo: 12/38000 files (0.0% non-contiguous), 10455/151552 blocks
[root@origin ~]# resize2fs /dev/storage/vo
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/vo to 307200 (1k) blocks.
The filesystem on /dev/storage/vo is now 307200 blocks long.
[root@origin ~]# 

(4)重新掛載設備

[root@origin ~]# mount -a
[root@origin ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G  4.5G   14G  26% /
devtmpfs                 905M     0  905M   0% /dev
tmpfs                    914M  140K  914M   1% /dev/shm
tmpfs                    914M  9.0M  905M   1% /run
tmpfs                    914M     0  914M   0% /sys/fs/cgroup
/dev/sda1                497M  119M  379M  24% /boot
/dev/sr0                 3.9G  3.9G     0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/storage-vo   287M  2.1M  266M   1% /lvm
[root@origin ~]# 

可以看到擴容后,lvm目錄的大小為300M(上圖實際顯示為287M),

這樣就完成了邏輯卷的擴容,

2.2.3 LVM縮小容

相較于擴容邏輯卷,在對邏輯卷進行縮容操作時,其丟失資料的風險更大,所以在生產環境中一定要提前備份資料,

為了保證資料安全性,Linux系統規定,在對LVM邏輯卷進行縮容操作之前,要先檢查檔案系統的完整性,

上一步擴容后lvm容量為300M,本次演示將其縮容到100M,步驟如下:

(1)卸載檔案系統

[root@origin ~]# umount /lvm
[root@origin ~]# 

(2)檢查檔案系統完整性

[root@origin ~]#  e2fsck -f /dev/storage/vo
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/storage/vo: 12/76000 files (0.0% non-contiguous), 15761/307200 blocks
[root@origin ~]# 

(3)縮容邏輯卷

把邏輯卷 vo 的容量減小到 100MB

[root@origin ~]# resize2fs /dev/storage/vo 100M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/vo to 102400 (1k) blocks.
The filesystem on /dev/storage/vo is now 102400 blocks long.
[root@origin ~]# lvreduce -L 100M /dev/storage/vo
  WARNING: Reducing active logical volume to 100.00 MiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vo? [y/n]: y  
  Reducing logical volume vo to 100.00 MiB
  Logical volume vo successfully resized
[root@origin ~]# 

(4)重新掛載檔案系統

[root@origin ~]# mount -a
[root@origin ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G  4.5G   14G  26% /
devtmpfs                 905M     0  905M   0% /dev
tmpfs                    914M  140K  914M   1% /dev/shm
tmpfs                    914M  9.0M  905M   1% /run
tmpfs                    914M     0  914M   0% /sys/fs/cgroup
/dev/sda1                497M  119M  379M  24% /boot
/dev/sr0                 3.9G  3.9G     0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/storage-vo    93M  1.6M   85M   2% /lvm
[root@origin ~]# 

可以看到lvm目錄已經縮小到93M,這樣就完成了邏輯卷的縮容操作,

2.2.4 LVM快照功能

邏輯卷快照功能就類似于還原作業系統,可以將邏輯卷狀態還原到指定時間點,

LVM快照功能有2個特點:快照卷只能使用一次,一旦執行還原操作后立即自動洗掉;快照卷的容量必須等同于邏輯卷的容量防止資料丟失,

(1)查看當前卷組資訊

[root@origin ~]# vgdisplay 
  --- Volume group ---
  VG Name               storage
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.99 GiB
  PE Size               4.00 MiB
  Total PE              510
  Alloc PE / Size       25 / 100.00 MiB
  Free  PE / Size       485 / 1.89 GiB
  ...省略部分內容

可以看到卷組中已經使用了100M,空閑容量還有1.89G,(Alloc PE / Size 25 / 100.00 MiB, Free PE / Size 485 / 1.89 GiB)

(2)生成快照卷

[root@origin ~]# lvcreate -L 100M -s -n SNAP /dev/storage/vo
  Logical volume "SNAP" created
[root@origin ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/storage/vo
  LV Name                vo
  VG Name                storage
  LV UUID                qziHT9-1qTT-1CRa-TIoq-cosz-Hhn0-jX5CVm
  LV Write Access        read/write
  LV Creation host, time origin, 2020-01-01 22:14:18 +0800
  LV snapshot status     source of
                         SNAP [active]
  LV Status              available
  '#' open                 1
  LV Size                100.00 MiB
  Current LE             25
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
   
  --- Logical volume ---
  LV Path                /dev/storage/SNAP
  LV Name                SNAP
  VG Name                storage
  LV UUID                TVfDRL-LnYd-z76K-fOuS-AD3C-Sw49-7jPgPo
  LV Write Access        read/write
  LV Creation host, time origin, 2020-01-01 22:40:10 +0800
  LV snapshot status     active destination for vo
  LV Status              available
  '#' open                 0
  LV Size                100.00 MiB
  Current LE             25
  COW-table size         100.00 MiB
  COW-table LE           25
  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
 ...省略部分內容

通過lvcreate命令生成一個名為SNAP的快照邏輯卷,此時邏輯卷的存盤空間占用量為0.01%,(Allocated to snapshot 0.01%)

(3)邏輯卷中添加檔案,查看快照卷空間使用量

[root@origin ~]# dd if=/dev/zero of=/lvm/files count=1 bs=50M
1+0 records in
1+0 records out
52428800 bytes (52 MB) copied, 0.289668 s, 181 MB/s
[root@origin ~]# ls /lvm/
files  lost+found  test.txt
[root@origin ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
...省略部分內容
/dev/mapper/storage-vo    93M   52M   35M  61% /lvm
[root@origin ~]# lvdisplay 
...省略部分內容
  --- Logical volume ---
  LV Path                /dev/storage/SNAP
  LV Name                SNAP
  VG Name                storage
  LV UUID                TVfDRL-LnYd-z76K-fOuS-AD3C-Sw49-7jPgPo
  LV Write Access        read/write
  LV Creation host, time origin, 2020-01-01 22:40:10 +0800
  LV snapshot status     active destination for vo
  LV Status              available
  '#' open                 0
  LV Size                100.00 MiB
  Current LE             25
  COW-table size         100.00 MiB
  COW-table LE           25
  Allocated to snapshot  50.29%
  Snapshot chunk size    4.00 KiB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3
...省略部分內容

在邏輯卷所掛載的目錄中創建一個50MB 的垃圾檔案,然后再查看快照卷/dev/storage/SNAP和邏輯卷/dev/storage/vo的狀態,可以發現存盤空間的占用量都上升了,快照卷占用量為:Allocated to snapshot 50.29%,

(4)通過快照卷還原邏輯卷

通過剛才創建的/dev/storage/SNAP快照卷,還原邏輯卷/dev/storage/vo的狀態,

還原之前先取消目錄掛載

[root@origin ~]# umount /lvm/
[root@origin ~]# lvconvert --merge /dev/storage/SNAP 
  Merging of volume SNAP started.
  vo: Merged: 72.9%
  vo: Merged: 100.0%
  Merge of snapshot into logical volume vo has finished.
  Logical volume "SNAP" successfully removed
[root@origin ~]# 

可以看到還原邏輯卷后,快照卷自動洗掉了,通過lvdisplay命令查看也不會再有/dev/storage/SNAP ,

(5)重新掛載邏輯卷并查看檔案

[root@origin ~]# mount -a
[root@origin ~]# ls /lvm/
lost+found  test.txt
[root@origin ~]# 

可以看到,還原之后剛才創建files檔案不見了,這樣就把邏輯卷還原到了創建快照時的狀態,

2.2.5 洗掉邏輯卷

當生產環境中想要重新部署LVM或者不再需要使用 LVM 時,可以洗掉LVM,

需要提前備份好重要的資料資訊,然后依次洗掉邏輯卷、卷組、物理卷設備,順序不可顛倒,

(1)取消掛載

[root@origin ~]# umount /lvm/

取消邏輯卷與目錄的掛載關聯,洗掉組態檔中永久生效的設備引數,找到之前添加在/etc/fstab檔案中的一行“/dev/storage/vo /lvm ext4 defaults 0 0”并洗掉,

(2)洗掉邏輯卷

[root@origin ~]# lvremove /dev/storage/vo
Do you really want to remove active logical volume vo? [y/n]: y
  Logical volume "vo" successfully removed
[root@origin ~]#

(3)洗掉卷組

[root@origin ~]# vgremove storage
  Volume group "storage" successfully removed
[root@origin ~]# 

只寫卷組名稱即可,不需要設備的絕對路徑,

(4)洗掉物理卷

[root@origin ~]# pvremove /dev/sdb /dev/sdc
  Labels on physical volume "/dev/sdb" successfully wiped
  Labels on physical volume "/dev/sdc" successfully wiped
[root@origin ~]# 

在上述操作執行完畢之后,再執行 lvdisplay、vgdisplay、pvdisplay 命令來查看 LVM 的信 息時就不會再看到資訊了,說明洗掉成功,

通過上文和本文的演示,基本掌握了centos7下磁盤管理相關操作,如果非運維人員不一定要掌握的非常深刻,理解即可,

本文講了很多磁盤相關的命令,需要多敲幾篇自然就熟悉了,下一篇文章再補充講解下SSH服務相關的知識,然后就開始講解應用服務的部署和使用了(如apache、郵件系統、mysql、動態網站部署等),

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/238411.html

標籤:其他

上一篇:常見Linux命令學習

下一篇:淺談Linux與unix系統的來歷

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more