使用RAID與LVM磁盤陣列技術

?前言:本博客僅作記錄學習使用,部分圖片出自網絡,如有侵犯您的權益,請聯系刪除?

目錄

一、RAID磁盤冗余陣列

1、部署磁盤整列

2、損壞磁盤陣列及修復

3、磁盤陣列+備份盤

4、刪除磁盤陣列

二、LVM邏輯卷管理器

致謝


一、RAID磁盤冗余陣列

硬盤設備是計算機中比較容易故障的元器件之一,加之由于其需要存儲數據的特殊性質,不能像CPU、內存、電源甚至主板故障后更換新的就好,所以生產環境中一定要未雨綢繆,提前做好數據的冗余及異地備份等工作

1988年,美國加利福尼亞大學伯克利分校首次提出并定義了Redundant Array of Independent Disks技術的概念,中文名稱是磁盤冗余陣列,簡稱RAID。RAID技術通過多個硬盤設備組合成一個容量更大、安全性更好的磁盤陣列,并把數據切割成多個區段后分別存放在各個不同的物理硬盤設備上,然后利分散讀寫技術來提升磁盤陣列整體的性能,同時把多個重要的數據的副本同步到不同的物理郵硬盤設備上,從而起到數據冗余備份效果

目前已有的RAID磁盤陣列的方案至少有十幾種,RAID 0,RAID 1,RAID 5與RAID 10這4種最常見的方案

RAID級別最少硬盤可用容量讀寫性能安全性特點
02nn追求最大容量和速度,任何一塊盤損壞,數據全部異常
12n/2n追求最大安全性,只要陣列組中有一塊硬盤可用,數據不受影響
53n-1n-1在控制成本的前提下,追求硬盤的最大容量、速度及安全性,允許有一塊硬盤異常,數據不受影響
104n/2n/2綜合RAID 1和RAID 0的優點,追求硬盤的速度和安全性,允許有一半硬盤異常(不可同組),數據不受影響

1、RAID 0

RAID 0技術把多塊物理設備(至少兩塊)通過硬件或軟件的方式串聯在一起,組成一個大的卷組,并將數據依此寫入到各個物理硬盤中。通俗來說,RAID 0技術能有效的提升硬盤數據的吞吐速度,但是不具備數據備份和錯誤修復能力。

數據被分別寫入到不同的硬盤設備中,即硬盤A和硬盤B設備分別保存數據資料,最終實現提升讀取、寫入速度的效果

2、RAID 1

RAID 1技術把兩塊以上的硬盤設備進行綁定,在寫入數據時,是將數據同時寫入到多塊硬盤設備上(可以將其視為數據的鏡像或備份)。當其中的一塊硬盤發生故障后,一般會立即自動以熱交換的方式來恢復數據的正常使用

因為在多塊硬盤設備中寫入了相同的數據,因此硬盤設備的利用率下降,理論上說硬盤空間真實利用率只有50%,由三塊硬盤設備組成的RAID 1磁盤陣列的可用率只有33%。無疑增大了系統計算功能的負載

3、RAID 5

RAID 5技術是把硬盤設備的數據奇偶校驗信息保存到其他硬盤設備中。RAID 5磁盤陣列中數據的奇偶校驗信息并不是單獨保存到某一塊硬盤設備中,而是存儲到除自身以外的其他每一塊硬盤設備上;圖中parity部分存放的就是數據的奇偶校驗信息,換句話說,就是RAID 5技術實際上沒有備份硬盤中的真實數據信息,而是當硬盤設備出現問題后通過奇偶校驗信息來嘗試重建損壞的數據

RAID 5最少由三塊硬盤組成,使用的是Disk Striping硬盤切割技術。比RAID 1級別好處在于保存的是奇偶校驗信息而不是一模一樣的內容,所以當重復寫入某個文件時,RAID 5級別磁盤陣列只需要對應一個奇偶校驗信息就可以,效率更高,存儲成本也降低。

4、RAID 10

鑒于RAID 5對各方面有了妥協,但是大部分企業更在乎的是數據本身的價值而非硬盤價格,因此生產環境中主要使用RAID 10技術

RAID 10就是RAID 1+RAID 0技術的一個“組合體”。RAID 10技術至少需要4塊硬盤來組建,其中分別兩兩制作成RAID 1磁盤陣列,以保證數據的安全性;然后再對兩個RAID 1磁盤陣列實施RAID 0技術,進一步提高硬盤設備的讀寫速度。

1、部署磁盤整列

首先在虛擬機中添加4塊硬盤設備來制作一個RAID 10磁盤陣列,SCSI或SATA接口類型

這些硬盤是模擬出來的,當前生產環境中用到的服務器一般都配備RAID陣列卡,我們學習階段沒必要單獨去購買一臺服務器,而是學會用mdadm命令在Linux系統中創建和管理軟件RAID磁盤陣列。

1.1、mdadm命令

mdadm命令用于創建、調整、監控和管理RAID設備,語法:"mdadm 參數 硬盤名稱"

參數作用
-a檢測設備名稱
-n指定設備數量
-l指定RAID級別
-C創建
-v顯示過程
-f模擬設備損壞
-r移除設備
-Q查看摘要信息
-D查看詳細信息
-S停止RAID磁盤陣列

接下來,使用mdadm命令創建RAID 10,名稱為"/dev/md0"

前面講過,udev是Linux系統內核中用來給硬件命名的服務,其命名規則也非常簡單。可以猜測到第二個SCSI存儲設備的名稱會是/dev/sdb,以此類推。mdadm命令中的參數-C代表創建一個RAID陣列卡-v參數顯示創建的過程,同時在后面追加一個設備名稱/dev/md0,這樣/dev/mdo就是創建后的RAID磁盤陣列的名稱;-n 4參數代表使用4塊硬盤來部署這個RAID磁盤陣列;而-l 10參數則代表RAID 10方案;最后再加上4塊硬盤設備的名稱就OK了

?[root@linuxprobe ~]# mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sdemdadm: layout defaults to n2mdadm: layout defaults to n2mdadm: chunk size defaults to 512Kmdadm: size set to 20954112Kmdadm: Defaulting to version 1.2 metadatamdadm: array /dev/md0 started.

初始化過程使用-D參數進行查看,也可以用-Q參數查看簡要信息

?[root@linuxprobe ~]# mdadm -Q /dev/md0/dev/md0: 39.97GiB radi10 4 devices, 0 spares. Use mdadm --detail for more detail.

四塊20G大小的硬盤組成的磁盤陣列可用空間只有39.97了,RAID 10技術通過兩兩一組硬盤組成的RAID 1保證了數據的可靠性,每一份數據都被保存兩次,50%的使用率

把制作好的RAID磁盤陣列格式化為ext4格式

?[root@linuxprobe ~]# mkfs.ext4 /dev/md0...

創建掛載點后把硬盤設備進行掛載操作:

?[root@linuxprobe ~]# mkdir /RAID[root@linuxprobe ~]# mount /dev/md0 /RAID[root@linuxprobe ~]# df -h.../dev/md0            40G     49M     38M     1%      /RAID

查看/dev/md0磁盤陣列組設備的詳細信息,確認下RAID級別(Raid Level)、大小(Array Size)和總硬盤數(Total Devices)是否正確;

?[root@linuxprobe ~]# mdadm -D /dev/md0/dev/md0:...

最后想讓創建好的RAID磁盤陣列能夠一直為我們服務,不會因每次的重啟操作而取消,記得將信息添加到/etc/fstab文件中:

?[root@linuxprobe ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab[root@linuxprobe ~]# cat /etc/fstab.../dev/md0                /RAID       ext4        defaults        0   0

2、損壞磁盤陣列及修復

首先確認有一塊物理硬盤設備出現損壞后不能再繼續正常使用后,使用mdadm命令來予以移除之后查看下RAID磁盤陣列組的狀態已經被改變

?[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdbmdadm: set /dev/sdb faulty in /dev/md0[root@linuxprobe ~]# mdadm -D /dev/md0/dev/md0:...0       8       16      -       faulty      /dev/sdb

使用-f參數是讓硬盤模擬損壞,為了能夠徹底的將故障盤移除,還要再一步操作:

?[root@linuxprobe ~]# mdadm /dev/md0 -r /dev/sdbmdadm: hot removed /dev/sdb from /dev/md0

當RAID 1磁盤陣列中存在一個故障盤時并不影響RAID 10磁盤陣列的使用。更換硬盤后使用-a參數進行添加操作,默認會自動開始數據的同步工作,使用-D參數即可看到整個過程和百分比進度:

?[root@linuxprobe ~]# mdadm /dev/md0 -a /dev/sdbmdadm: added /dev/sdb[root@linuxprobe ~]# mdadm -D /dev/md0/dev/md0:...

3、磁盤陣列+備份盤

RAID 10磁盤陣列中最多允許50%的硬盤設備發生故障,但存在一個極端情況,即同一RAID 1磁盤陣列中的硬盤設備若全部損壞,也會導致數據丟失。怎么辦呢,可以使用RAID備份盤技術來預防。該技術的核心理念就是準備一塊足夠大的硬盤,這塊硬盤平時處于閑置狀態一旦RAID磁盤陣列中有硬盤出現故障后則會馬上頂替上去

示例:恢復虛擬機初始狀態,現在看一下RAID 5的部署效果。部署RAID 5磁盤陣列時,至少需要用到3塊硬盤,還需再加一塊備份硬盤(也叫熱備盤),所以總計需要在虛擬機中模擬4塊硬盤設備:

現在創建一個RAID 5磁盤陣列+備份盤。

?# 參數-n 3代表創建這個RAID 5磁盤陣列所需的硬盤數# 參數-l 5代表RAID的級別# 參數-x 1則代表有一塊備份盤[root@linuxprobe ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sdemdadm: layout defaults to left-symmetricmdadm: layout defaults to left-symmetric...[root@linuxprobe ~]# mdadm -D /dev/md0...3   8   64  -   spare   /dev/sde

現將部署好的RAID 5磁盤陣列格式化為ext4文件格式,然后掛載到目錄上,之后就使用了:

?[root@linuxprobe ~]# mkfs.ext4 /dev/md0...[root@linuxprobe ~]# mkdir /RAID[root@linuxprobe ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab  

由三塊硬盤組成的RAID 5級別磁盤陣列,它對應的可用空間是n-1,也就是40G。熱備盤的空間是不算入內的,平時完全就是在“睡覺”中,只有意外出現時才開始工作

?[root@linuxprobe ~]# mount -a[root@linuxprobe ~]# df -h.../dev/md0        40G     49M     38G     1%  /RAID

實驗:我們把硬盤設備/dev/sdb溢出磁盤陣列,然后迅速查看/dev/md0磁盤陣列的狀態,就會發現備份盤已經自動頂替上去并開始了數據同步。RAID中這種備份盤技術非常實用,可以在保證RAID磁盤陣列數據安全性的基礎上進一步提高數據可靠性;

?[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdbmdadm: set /dev/sdb faulty in /dev/md0[root@linuxprobe ~]# mdadm -D /dev/md0/dev/md0:...0       8       16      -       faulty      /dev/sdb

4、刪除磁盤陣列

生產環境中,RAID磁盤陣列組部署后一般不會輕易被停用了,萬一趕上了,還是需要知道怎么刪除的。上面這種RAID 5+熱備盤損壞的情況是比較復雜的,就以這種情況講解:

首先需要將所有的磁盤都設置成停用狀態:

?[root@linuxprobe ~]# umount /RAID[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdcmdadm: set /dev/sdc faulty in /dev/md0[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sddmdadm: set /dev/sdd faulty in /dev/md0[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdemdadm: set /dev/sde faulty in /dev/md0

然后再逐一的移除出去:

[root@linuxprobe ~]# mdadm /dev/md0 -r /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0
[root@linuxprobe ~]# mdadm /dev/md0 -r /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md0
[root@linuxprobe ~]# mdadm /dev/md0 -r /dev/sdd
mdadm: hot removed /dev/sdd from /dev/md0
[root@linuxprobe ~]# mdadm /dev/md0 -r /dev/sde
mdadm: hot removed /dev/sde from /dev/md0

著急的同學也可以用"mdadm /dev/md0 -f /dev/sdb -r /dev/sdb" 一條命令搞定。但由于這個命令在早期版本不能一起使用,保險還是一步一步執行。移除后查看磁盤陣列狀態:

[root@linuxprobe ~]# mdadm -D /dev/md0
/dev/md0:...-		0 		0		0		removed-		0 		0		1		removed-		0 		0		2		removed

繼續再停用整個RAID磁盤組:

[root@linuxprobe ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@linuxprobe ~]# ls /dev/md0
ls: cannot access '/dev/md0': No Such file or directory

二、LVM邏輯卷管理器

前面的硬盤管理技術雖然能夠有效地提高硬盤設備的讀寫速度以及數據的安全性,但是在硬盤分區好或者部署為RAID磁盤陣列后,再想修改硬盤分區大小就不容易了。這時需要另外一項非常普及的硬盤設備資源管理技術了—Ligical Volume Manager(邏輯卷管理器,簡稱LVM)。LVM允許用戶對硬盤資源進行動態調整

邏輯卷管理器是Linux系統用于對硬盤分區進行管理的一種機制,理論性較強。LVM技術是在硬盤分區和文件系統之間添加了一個邏輯層,它提供了一個抽象的卷組,可以把多塊硬盤進行卷組合并。這樣一來,用戶不必關心物理硬盤設備的底層架構和布局,就可以實現對硬盤分區的動態調整。LVM技術架構如下:

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

1、部署邏輯卷

原先分配的硬盤分區不夠用。通過部署LVM來解決。部署時需要逐個配置物理卷、卷組和邏輯卷,常用的部署命令如下:

功能/命令物理卷管理卷組管理邏輯卷管理
掃描pvscanvgscanlvscan
建立pvcreatevgcreatelvcreate
顯示pvdisplayvgdisplaylvdisplay
刪除pvremovevgremovelvremove
擴展vgextendlvextend
縮小vgreducelvreduce

示例:還原虛擬機,并重新添加兩塊新硬盤設備(更好的演示LVM理念中用戶無需關心底層物理硬盤設備的特性)

第1步:讓新添加的兩塊硬盤設備支持LVM技術:

?[root@linuxprobe ~]# pvcreate /dev/sdb /dev/sdcPhysical volume "dev/sdb" successfully created.Physical volume "dev/sdc" successfully created.

第2步:把兩塊硬盤設備加入到storage卷組中,然后查看卷組的狀態:

?[root@linuxprobe ~]# vgcreate storage /dev/sdb /dev/sdcVolume group "storage" successfully created.[root@linuxprobe ~]# vgdisplay--- Volume group ---...Free PE / Size ?10238 / 39.99 GiB

第3步:再切割出一個約為150MB的邏輯卷設備。

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

?[root@linuxprobe ~]# lvcreate -n vo -l 37 storageLogical volume "vo" created.[root@linuxprobe ~]# lvdisplay--- Logical volume ---...LV Size             148.00 MiB

第4步,把生成好的邏輯卷進行格式化,然后掛載使用:

Linux系統會把LVM中的邏輯卷設備存放在/dev設備目錄中,實際上就是個快捷方式,同時會以卷名的名稱來建立一個目錄,其中保存了邏輯卷的設備映射文件,即/dev/卷組名稱/邏輯卷名稱

?[root@linuxprobe ~]# mkfs.ext4 /dev/storage/vomke2fs 1.44.3 (10-July-2018)...[root@linuxprobe ~]# mkdir  /linuxprobe[root@linuxprobe ~]# mount /dev/storage/vo /linuxprobe

第5步:查看掛載狀態,并寫入到配置文件,使其永久生效

?[root@linuxprobe ~]# df -h.../dev/mapper/storage-vo      140M 1.6M 128M 2% /linuxprobe[root@linuxprobe ~]# echo "/dev/storage/vo /linuxprobe ext4 defaults 0 0" >> /etc/fstab[root@linuxprobe ~]# cat /etc/fstab.../dev/storage/vo /linuxprobe ext4 defaults 0 0

2、擴容邏輯卷

前面實驗中,卷組是由兩塊硬盤設備共同組成的,用戶在使用存儲設備時感知不到設備底層的架構和布局,只要卷中有足夠的資源,就可以一直為邏輯卷擴容。擴展前請一定要記得卸載設備和掛載點的關聯

[root@linuxprobe ~]# umount /linuxprobe

第1步:把上一個實驗中的邏輯卷vo擴展至290M

[root@linuxprobe ~]# lvextend -L 290M /dev/storage/vo
Rounding size to boundary between physical extents: 290.00 MiB
...

第2步:檢查硬盤的完整性,確認目錄結構、內容和文件內容沒有丟失,沒有報錯均為正常

[root@linuxprobe ~]# e2fsck -f /dev/storage/vo
e2fsck 1.44.3 (10-July-2018)
...
/dev/storage/vo: 11/38000 files (0.0% non-contiguous),

第3步:重置設備在系統中的容量,剛剛是對LV邏輯卷設備進行了擴容操作,但系統內核還沒有同步到這部分新修改的信息,手動同步:

[root@linuxprobe ~]# resize2fs /dev/storage/vo

第4步:重新掛載硬盤設備并查看掛載狀態

[root@linuxprobe ~]# mount -a
[root@linuxprobe ~]# df -h
...
/dev/mapper/storage-vo  279M 2.1M 259M 1% /linuxprobe

3、縮小邏輯卷

相比較與擴容,縮容風險更大,所以在執行前一定要提前備份好數據。另外Linux系統規定,在對LVM邏輯卷進行縮容操作前,要先檢查文件系統的完整性。在執行縮容操作前記得把文件系統卸載掉:

[root@linuxprobe ~]# umount /linuxprobe

第1步:檢查文件系統的完整性

?[root@linuxprobe ~]# e2fsck -f /dev/storage/vo

第2步:通知系統內核將邏輯卷vo的容量減小到120M

?[root@linuxprobe ~]# resize2fs /dev/storage/vo 120M

第3步:將LV邏輯卷的容量修改為120M

?[root@linuxprobe ~]# lvreduce -L 120M /dev/storage/vo

發現,步驟與擴容相反

第4步:重新掛載文件系統并查看系統狀態

?[root@linuxprobe ~]# mount -1[root@linuxprobe ~]# df -h.../dev/mapper/storage-vo 113M 1.6M 103M   2% /Linuxprobe

4、邏輯卷快照

LVM還具有"快照卷"功能,該功能類似于虛擬機軟件的還原時間點功能。特點:

  • 快照卷的容量必須等同于邏輯卷的容量
  • 快照卷僅一次有效,一旦執行還原操作后則會被立即自動刪除

在操作前,先看看VG卷組中的容量是否夠用:

?[root@linuxprobe ~]# vgdisplay...Free PE / Size      10208 / <39.88 GiB

通過卷組的輸出信息可以看到,卷組中已經使用了120MB的容量,空閑容量還有39.88GB。接下來用重定向邏輯卷設備所掛載的目錄中寫入一個文件:

?[root@linuxprobe ~]# echo "Welcome to Linuxprobe.com" > /linuxprobe/readme.txt[root@linuxprobe ~]# ls -l /linuxprobe

第1步:使用-s參數生成一個快照卷,使用-L參數指定切割的大小,需要與要做快照的設備容量保持一致。另外還需要在命令后面寫上是針對哪個邏輯卷執行的快照操作,稍后數據也會還原到這個對應的設備上:

[root@linuxprobe ~]# lvcreate -L 120M -s -n SNAP /dev/storage/vo
Logical volume "SNAP" created
[root@linuxprobe ~]# lvdisplay
...
LV Path						/dev/storage/SNAP
LV snapshot status          active destination for vo
LV Size						120.00 MiB

第2步:在邏輯卷所掛載的目錄中創建一個100MB的垃圾文件,然后再查看快照卷的狀態。發現存儲空間占的用量上升了

[root@linuxprobe ~]# dd if =/dev/zero of=/linuxprobe/files  count=1 bs=100M
1+0 records in
...
[root@linuxprobe ~]# lvdisplay
...
Allocated to snapshot				83.71%

第3步:為了檢驗SNAP快照卷的效果,需要對邏輯卷進行快照還原操作。在此之前記得先卸載掉邏輯卷設備與目錄的掛載

lvconvert命令用于管理邏輯卷的快照,語法:“lvconvert [參數] 快照卷名稱”

使用lvconvert能夠將邏輯卷的快照進行自動恢復,使用 “--merge”參數進行操作,系統會自動分辨設備的類型:

?[root@linuxprobe ~]# umount /linuxprobe[root@linuxprobe ~]# lvconvert --merge /dev/storgae/SNAP

第4步:快照卷會被自動刪除掉,并且剛剛在邏輯卷設備唄執行快照操作后再創建出來的100MB的垃圾文件也被清除了

?[root@linuxprobe ~]# mount -a[root@linuxprobe ~]# cd /linuxprobe[root@linuxprobe linuxprobe]# lslost+found readme.txt[root@linuxprobe linuxprobe]# cat readme.txtWelcome to Linuxprobe.com

5、刪除邏輯卷

當生產環境中想要重新部署LVM或者不再需要使用時,則需要執行LVM的刪除操作;為此,需要提前備份好重要的數據信息,然后依次刪除邏輯卷、卷組、物理卷設備,這個順序不可顛倒!!

第1步:取消邏輯卷與目錄的掛載關聯,刪除配置文件中永久生效的設備參數:

?[root@linuxprobe ~]# umount /linuxprobe[root@linuxprobe ~]# vim /etc/fstab.../dev/storage/vo             /linuxprobe     ext4    defaults    0 0(刪除掉這行)

第2步:刪除邏輯卷設備,需要輸入y來確認操作:

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

第3步:刪除卷組,此處只寫卷組名即可,不需要設備的絕對路徑。

?[root@linuxprobe ~]# vgremove storgaeVolume group "storage" successfully removed

第4步:刪除物理卷設備:

?[root@linuxprobe ~]# pvremove /dev/sdb /dev/sdcLabels on Physical volume "/dev/sdb" successfully wiped.Labels on Physical volume "/dev/sdc" successfully wiped.

上述操作執行完畢后,再執行display、vgdisplay、pvdisplay命令來查看LVM的信息時就不會再看到信息了。

致謝

在此,我要對所有為知識共享做出貢獻的個人和機構表示最深切的感謝。同時也感謝每一位花時間閱讀這篇文章的讀者,如果文章中有任何錯誤,歡迎留言指正。?

學習永無止境,讓我們共同進步!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42249.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42249.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42249.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用 PCA 可視化數據的分類能力

使用 PCA 探索數據分類的效果&#xff08;使用 Python 代碼&#xff09; 「AI秘籍」系列課程&#xff1a; 人工智能應用數學基礎人工智能Python基礎人工智能基礎核心知識人工智能BI核心知識人工智能CV核心知識 主成分分析 (PCA) 是數據科學家使用的絕佳工具。它可用于降低特征…

【QT】容器類控件

目錄 概述 Group Box 核心屬性 Tab Widget 核心屬性 核心信號 核心方法 使用示例&#xff1a; 布局管理器 垂直布局 核心屬性 使用示例&#xff1a; 水平布局 核?屬性 (和 QVBoxLayout 屬性是?致的) 網格布局 核心屬性 使用示例&#xff1a; 示例&#x…

2024亞太杯中文賽數學建模B題word+PDF+代碼

2024年第十四屆亞太地區大學生數學建模競賽&#xff08;中文賽項&#xff09;B題洪水災害的數據分析與預測&#xff1a;建立指標相關性與多重共線性分析模型、洪水風險分層與預警評價模型、洪水發生概率的非線性預測優化模型&#xff0c;以及大規模樣本預測與分布特征分析模型 …

UI設計中瀑布流布局方式的特定和例子

在UI設計中&#xff0c;瀑布流布局方式&#xff08;Waterfall Layout&#xff09;是一種非常流行且有效的內容展示方式&#xff0c;其特定和例子可以歸納如下&#xff1a; 瀑布流布局的特定 視覺表現&#xff1a; 瀑布流布局呈現為參差不齊的多欄布局&#xff0c;隨著頁面滾…

數據集介紹與使用 M2DGR、KITTI、EuRoc,評測

SLAM 數據集匯總主頁&#xff1a;https://github.com/qxiaofan/awesome-slam-datasets SLAM 數據 集綜述論文&#xff1a;Simultaneous Localization and Mapping Related Datasets: A Comprehensive Survey 論文地址&#xff1a;https://arxiv.org/abs/2102.04036 M2DGR 簡…

JAVA學習-練習試用Java實現“拼接最大數”

問題&#xff1a; 給定長度分別為 m 和 n 的兩個數組&#xff0c;其元素由 0-9 構成&#xff0c;表示兩個自然數各位上的數字。現在從這兩個數組中選出 k (k < m n) 個數字拼接成一個新的數&#xff0c;要求從同一個數組中取出的數字保持其在原數組中的相對順序。 求滿足該…

iview中checkbox多選框帶實際值和顯示值的寫法

<CheckboxGroup v-model"selectHotworkMeasures"><Checkboxv-for"item in hotworkMeasuresList":key"item.key">{{ item.name }}</Checkbox></CheckboxGroup>selectHotworkMeasures: [],

python操作SQLite3數據庫進行增刪改查

python操作SQLite3數據庫進行增刪改查 1、創建SQLite3數據庫 可以通過Navicat圖形化軟件來創建: 2、創建表 利用Navicat圖形化軟件來創建: 存儲在 SQLite 數據庫中的每個值(或是由數據庫引擎所操作的值)都有一個以下的存儲類型: NULL. 值是空值。 INTEGER. 值是有符…

Python 算法交易實驗76 QTV200日常推進

說明 最近實在太忙&#xff0c; 沒太有空推進這個項目&#xff0c;我想還是盡量抽一點點時間推進具體的工程&#xff0c;然后更多的還是用碎片化的時間從整體上對qtv200進行設計完善。有些結構的問題其實是需要理清的&#xff0c;例如&#xff1a; 1 要先基于原始數據進行描述…

浪潮信息元腦服務器支持英特爾?至強?6能效核處理器 展現強勁性能

如今&#xff0c;服務器作為數字經濟的核心基礎設施&#xff0c;正面臨著前所未有的挑戰和機遇。作為服務器領域的領軍企業&#xff0c;浪潮信息始終站在行業前沿&#xff0c;不斷推陳出新&#xff0c;以滿足客戶日益增長的需求。近日&#xff0c;浪潮信息再次展現技術實力&…

基于GWO-CNN-BiLSTM數據回歸預測(多輸入單輸出)-灰狼優化算法優化CNN-BiLSTM

基于GWO-CNN-BiLSTM數據回歸預測(多輸入單輸出)-灰狼優化算法優化CNN-BiLSTM 1.數據均為Excel數據&#xff0c;直接替換數據就可以運行程序。 2.所有程序都經過驗證&#xff0c;保證程序可以運行。 3.具有良好的編程習慣&#xff0c;程序均包含簡要注釋。 獲取方式 https:/…

Pandas 基礎 —— 探索數據分析的第一步

引言 在數據科學的世界中&#xff0c;Pandas 以其強大的數據處理能力而成為分析工作的核心工具。本文將引導你走進 Pandas 的大門&#xff0c;從基礎概念到數據清洗的實用技巧&#xff0c;為你的數據分析之路打下堅實的基礎。 Pandas 簡介 Pandas 是一個開源的 Python 數據分…

篩選Github上的一些優質項目

每個項目旁都有標簽說明其特點&#xff0c;如今日熱捧、多模態、收入生成、機器人、大型語言模型等。 項目涵蓋了不同的編程語言和領域&#xff0c;包括人工智能、語言模型、網頁數據采集、聊天機器人、語音合成、AI 代理工具集、語音轉錄、大型語言模型、DevOps、本地文件共享…

p2p、分布式,區塊鏈筆記:libp2p通過libp2p_demo::network實現文件傳遞功能

代碼 代碼來自github開源項目file-sharing.rs。主要依賴clap庫進行命令行參數解析&#xff0c;使用async_std進行并行操作&#xff0c;使用libp2p_demo::network中的相關方法進行網絡建立與文件傳輸&#xff0c;但是代碼量卻減少了很多&#xff0c;這是由于libp2p_demo::netwo…

Matplotlib 學習

知識點 1.plot()&#xff1a;用于繪制線圖和 散點圖scatter() 函數&#xff1a;plot() 函數可以接受許多可選參數&#xff0c;用于控制圖形的外觀&#xff0c;例如&#xff1a;顏色: colorblue 控制線條的顏色。線型: linestyle-- 控制線條的樣式&#xff0c;例如虛線。標記…

YoloV8改進策略:Block改進|輕量實時的重參數結構|最新改進|即插即用(全網首發)

摘要 本文使用重參數的Block替換YoloV8中的Bottleneck&#xff0c;GFLOPs從165降到了116&#xff0c;降低了三分之一&#xff1b;同時&#xff0c;map50-95從0.937漲到了0.947。 改進方法簡單&#xff0c;只做簡單的替換就行&#xff0c;即插即用&#xff0c;非常推薦&#xf…

C++_STL---list

list的相關介紹 list是可以在常數范圍內在任意位置進行插入和刪除的序列式容器&#xff0c;并且該容器可以前后雙向迭代。 list的底層是帶頭雙向循環鏈表結構&#xff0c;鏈表中每個元素存儲在互不相關的獨立節點中&#xff0c;在節點中通過指針指向其前一個元素和后一個元素。…

IDEA與通義靈碼的智能編程之旅

1 概述 本文主要介紹在IDEA中如何安裝和使用通義靈碼來助力軟件編程,從而提高編程效率,創造更大的個人同企業價值。 2 安裝通義靈碼 2.1 打開IDEA插件市場 點擊IDEA的設置按鈕,下拉選擇Plugins,如下: 2.2 搜索通義靈碼 在搜索框中輸入“通義靈碼”,如下: 2.3 安…

C語言 二分法求方程根

用二分法求下面方程在&#xff08;-10&#xff0c;10&#xff09;的根。 2x^3-4x^23x-60 這個程序使用二分法求方程 2x^3 - 4x^2 3x - 6 0 在區間 (-10, 10) 內的根。 #include <stdio.h> #include <math.h>// 方程 f(x) double f(double x) {return 2 * pow(x…

使用ifconfig命令獲取當前服務器的內網IP地址

如何使用ifconfig命令獲取當前服務器的內網IP地址呢&#xff1f; ifconfig eth0 | grep inet | awk {print $2}