kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp

查看raid信息

https://www.bbsmax.com/A/n2d9y8r0dD/

wmic csproduct get name 查看服务器型号

wmic bios get serialnumber 查看序列号


https://blog.csdn.net/suankuang/article/details/106242025

https://www.51sjk.com/b19b157342/

https://blog.csdn.net/wojiuwangla/article/details/113940417

https://www.bbsmax.com/A/KE5QYRo45L/

https://it.cha138.com/shida/show-5212.html

linux 查看信息

软件raid,禁用

1
cat /proc/mdstat

硬件raid

查看硬件是否支持RAID

1
2
lspci | grep -i RAID
lspci | grep -i smart

查看系统是否配置RAID

1
2
dmesg | grep -i raid
dmesg | grep -i smart

如上所示,在系统日志中可以看到存在RAID设备,以及设备型号等信息。或者通过以下命令查看:

1
cat /proc/scsi/scsi

确认RAID卡型号

1
2
3
lspci -v -s $(lspci | grep -i raid | awk '{print $1}')

lspci | grep -i smart

从上述返回信息得到RAID卡型号:Subsystem: xxx

根据型号查看服务器RAID磁盘详情

HP

linux

ssacli-4.21-7.0.x86_64.rpm

https://support.hpe.com/connect/s/softwaredetails?language=zh_CN&softwareId=MTX_521fc533ba8f468f9ad9db20e4

1
2
3
4
rpm -ivh ssacli-4.21-7.0.x86_64.rpm

ssacli ctrl all show config
ssacli ctrl all show config detail

hpacucli-9.40-12.0.x86_64.rpm

https://mirror.nforce.com/pub/software/raidtools/

1
2
3
4
rpm -ivh hpacucli-9.40-12.0.x86_64.rpm

hpacucli ctrl all show config
hpacucli ctrl all show config detail

win

Smart Array P410i

https://support.hpe.com/connect/s/softwaredetails?language=zh_CN&softwareId=MTX_33fe6fcf4fcb4beab8fee4d2dc

HP ProLiant Array Configuration Utility CLI for Windows 64-bit 9.40.12.0.exe

1
C:\Documents and Settings>"c:\Program Files\Compaq\Hpacucli\Bin\hpacucli.exe" ctrl all show config

或者用图形界面 HP Array Configuration Utility 8.70.9.exe

Smart Array P830i

如果系统自带了 Smart Storage Administrator CLI 则:

1
C:\Windows\system32>"c:\Program Files\HP\hpssacli\bin\hpssacli.exe" ctrl all show config

不然只能用图形界面 Smart Storage Administrator

https://support.hpe.com/connect/s/softwaredetails?language=zh_CN&softwareId=MTX_f9eb4d247d3b4488b87976b33d

https://support.hpe.com/connect/s/softwaredetails?language=zh_CN&softwareId=MTX_891c6d6803044e5db3e0c2a5ab

HPE Smart Storage Administrator 2.40.13.0.exe

HPE Smart Storage Administrator 3.40.3.0.exe

HPE Smart Storage Administrator 4.21.7.0.exe

https://support.hpe.com/connect/s/softwaredetails?language=zh_CN&softwareId=MTX_1d00dad72f544c5db131a7a5e4

HPE Smart Storage Administrator CLI for Windows 64-bit 4.21.7.0.exe 装不上。。。

离线 HPE 智能存储管理员(HPE SSA)

www.ylys.net/post/946.html

https://support.hpe.com/connect/s/softwaredetails?language=zh_CN&softwareId=MTX_321a88714bff4279abf175b9bd

离线 HPE 智能存储管理员(Offline Array Configuration,HPE SSA)提供可以安装、刻录到 CD/DVD,或者使用面向 Windows 的 HP USB Key 实用程序存储到 USB 闪存盘或 SD 卡的 ISO 镜像。此可交付的内容允许用户在主机操作系统加载前启动到他们可以选择多种配置实用程序(HPE SSA、HPESSACLI 和 HPESSASCRIPTING)的环境。HPE 智能存储管理员(HPE SSA)可帮助您配置、管理、诊断和监控 HP ProLiant 智能阵列管理器,且现在还可支持其他存储设备,如 主机总线适配器(HBAs)、HP 存储控制器,未来还可支持 SCSI Express 驱动器以及 SAS 交换机设备。HPE SSA 更新了 HP 阵列配置实用程序或 ACU 的设计,并可在上线时为多种智能存储计划提供新的特性和功能。HPE SSA 可让您像以前一样配置和管理存储,但是现在配备了更多特性、功能和支持设备。现有 ACU 脚本只需进行较少的变更(如按照顺序调用相应二进制或可执行命令)便可维持兼容性。

Inspur 等 Broadcom / LSI MegaRAID SAS 9361-8i

megaraid-utils-1.8-2.el7.x86_64.rpm

https://repo.aerisnetwork.com/stable/centos/7/x86_64/megaraid-utils-1.8-2.el7.x86_64.rpm

ln -s /opt/megaraid/megacli /usr/bin/MegaCli

查看raid 状态

1
2
3
4
5
6
MegaCli64 -LdInfo -lAll -aALL

State               : Degraded(降级)
State               : Offline(离线)
State               : Optimal(正常)
Number Of Drives    : 2  RAID组包含2块磁盘。

查看硬盘所有信息

1
2
3
4
5
6
7
8
9
10
11
/opt/megaraid/megacli -PDList -aALL

Slot Number:              ---硬盘槽号
PD Type:                  -----磁盘接口类型
InquiryData:              -----硬盘的序列号、型号、固件版本
Raw Size:                 -----磁盘原始大小
NonCoerced Size:          -----磁盘标准大小
CoercedSize:              ------磁盘最大可用大小
Medai Error Count:        ------表示磁盘可能错误,可能是磁盘有坏道,这个值不为0值得注意,数值越大,危险系数越高。
Other Error Count:        ------表示磁盘可能存在松动,可能需要重新再插入。
Predictive Failure Count: -----预测故障计数

查看硬盘数量以及有无损坏

1
2
3
4
5
6
7
/opt/megaraid/megacli -PDList -aALL

Firmware state: Online, Spun Up 磁盘正常
Firmware state: Unconfigured(good), Spun Up 磁盘已安装,但未启用
Firmware state: Unconfigured(bad) 故障
Firmware state: Failed 故障
Firmware state: Rebuild 重建,一般在更换磁盘时显示

查看raid级别, 由哪些硬盘组成的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/opt/megaraid/megacli -LdPdInfo -aALL

raid级别:
	RAIDLevel : Primary-0, Secondary-0, RAID Level Qualifier-0     这就是raid0           
	0 0 0 是raid0    
	1 0 0 是raid1  
	5 0 3 是raid5  
	1 3 0 是raid10
	raid1 还需要结合Span Depth的值来判断
	Span Depth : 2 表示共2个RAID1盘组做成了RAID10,1表示1个RAID1盘组
	还有一种情况:Primary-1, Secondary-3, RAID LevelQualifier-0 也是表示 RAID-10;

也可以这么显示raid级别,输入就会返回,这种的基本准确

MegaCli64 -ShowSummary -aALL | grep "RAID Level"

win

https://www.intel.com/content/www/us/en/download/19041/intel-raid-web-console-3-rwc3-for-windows.html

storcli Intel_StorCLI_007.1907.0000.0000.zip

MegaCli Win_CliKL_8.04.07.zip

https://www.cnblogs.com/luxiaodai/p/9878747.html

https://www.dianjilingqu.com/187111.html

MegaCli 是LSI公司官方提供的SCSI卡管理工具,由于LSI被收购变成了现在的Broadcom,所以现在想下载MegaCli,需要去Broadcom官网查找Legacy产品支持,

现在官方有storcli,storcli已经基本代替了megacli,整合了LSI和3ware所有产品。

1
2
3
storcli64 show [all]  显示raid卡相关信息、raid卡高级软件信息

storcli64 /c0 show    显示控制器0的信息

Adaptec

https://storage.microsemi.com/en-us/support/raid/sas_raid/asr-8805/

https://www.cnblogs.com/my-show-time/p/14701882.html

linux Arcconf-3.07-23850.x86_64.rpm

window arcconf_v3_07_23850_win.zip

arcconf

1
2
3
4
5
6
7
8
9
10
11
12
13
arcconf LIST                #查询整列卡信息
arcconf GETCONFIG 1 AD      # 查询 Controller #1 的适配器信息
arcconf GETCONFIG 1 LD      # 查询 Controller #1 的逻辑设备信息
arcconf GETCONFIG 1 PD      # 查询 Controller #1 的物理设备信息
arcconf GETCONFIG 1 AR      # 查询 Controller #1 的阵列信息
arcconf GETCONFIG 1 AL      # 查询 Controller #1 的所有信息
arcconf GETCONFIG 1 LD|grep 'Logical Device number'     # 查询 Controller #1 的所有逻辑设备编号
arcconf GETCONFIG 1 LD|grep 'Logical Device name'       # 查询 Controller #1 的所有逻辑设备名称
arcconf GETCONFIG 1 PD|grep 'Device #'                  # 查询 Controller #1 的所有物理设备编号
arcconf GETCONFIG 1 LD|grep -E 'Logical Device number|Device:|Slot:'                # 查询 Controller #1 的所有逻辑设备对应的物理设备
arcconf GETCONFIG 1 LD|grep -E 'Logical Device number|Device:|Slot:'                # 查询 Controller #1 的所有逻辑设备对应的物理设备
arcconf GETCONFIG 1 LD|grep -E 'Logical Device number|RAID level|Device:|Slot:'     # 查询 Controller #1 的所有逻辑设备的RAID level以及物理设备
arcconf GETCONFIG 1 LD|grep -E 'Logical Device number|Logical Device name|RAID level|Device:|Slot:'     # 查询 Controller #1 的所有逻辑设备的关键信息

LSI的阵列卡2008/3008

https://docs.broadcom.com/docs/SAS3IRCU_P16.zip_p

linux,window SAS3IRCU_P16.zip

1
lspci | grep -i SAS
1
2
3
sas3ircu list   #查看所有控制器
sas3ircu 0 display  #查看控制器0下所有硬盘信息
sas3ircu 0 status  #查看控制器0的状态

LSI SAS2108/2208/3108阵列卡

storcli64

https://iknow.lenovo.com.cn/detail/dc_178452.html

lshw命令,查看系统信息

1
2
3
4
lshw -short

lshw -C system
lshw -C cpu

https://zhuanlan.zhihu.com/p/42403181


https://blog.csdn.net/phmatthaus/article/details/109443056

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
lshw 是一个能把我们出去硬件信息的小工具,它能为我们提供内存配置、固件版本、主板配置信息、CPU版本和速度、cache信息、总线速度等。它能运行在 DMI兼容的 x86、IA-64和一些 PowerPC的平台上。目前支持 DMI (x86 and IA-64 only), OpenFirmware device tree (PowerPC only), PCI/AGP, CPUID (x86), IDE/ATA/ATAPI, PCMCIA (only tested on x86), SCSI 和 USB。

参数:

-version       :显示 lshw的版本
-help          :显示帮助信息
-X             :启动图形界面
-html          :将设备信息以 html的格式输出
-xml           :将设备信息以 xml的格式输出
-json          :将设备信息以 json的格式输出
-short         :带有设置路径的简短输出(类似与 HP-UX的 ioscan输出形式)
-businfo       :输出详细的总线信息(包含 SCSI, USB, IDE and PCI地址)
-dump filename :将收集到的信息输出到一个SQLite数据库中
-class class   :仅仅显示指定类型的硬件,在使用 lshw -short or lshw -businfo时我们能见到这写 class,
                 常见的有这些:system、bus、memory、processor、bridge、display、communication、
                          multimedia、network、disk、volume、powoer
-C class       :等同与 -class class
-enable test   :启用测试,测试项能包含这些:
                 dmi (for DMI/SMBIOS extensions)
                 device-tree (for OpenFirmware device tree)
                 spd (for memory Serial Presence Detect)
                 memory (for memory-size guessing heuristics)
                 cpuinfo (for kernel-reported CPU  detection)
                 cpuid  (for  CPU  detection)
                 pci  (for  PCI/AGP access)
                 isapnp  (for ISA PnP extensions)
                 pcmcia (for PCMCIA/PCCARD)
                 ide (for IDE/ATAPI)
                 usb (for USB devices)
                 scsi (for SCSI)
                 network (for net‐work interfaces detection)
-disable test
-quiet         :不现实状态
-sanitize      :移除IP地址、序列号等敏感信息
-numeric       :显示 PCI和USB设备的数字 ID
它在运行的时候会都去下列文件:


/usr/local/share/pci.ids
/usr/share/pci.ids
/etc/pci.ids
/usr/share/hwdata/pci.ids  :A list of all known PCI ID's (vendors, devices, classes and subclasses).
/proc/bus/pci/*            :Used to access the configuration of installed PCI busses and devices.
/proc/ide/*                :Used to access the configuration of installed IDE busses and devices.
/proc/scsi/*, /dev/sg*     :Used to access the configuration of installed SCSI devices.
/dev/cpu/*/cpuid           :Used on x86 platforms to access CPU-specific configuration.
/proc/device-tree/*        :Used on PowerPC platforms to access OpenFirmware configuration.
/proc/bus/usb/*            :Used to access the configuration of installed USB busses and devices.
/sys/*                     :Used on 2.6 kernels to access hardware/driver configuration information.

MySQL报错 Can't find record in xxx

UNIQUE KEY 备份还原时报错?

Mysql ERROR 1032 (HY000): Can’t find record in xxx

先删除 UNIQUE KEY 还原后载加回来

1
alter table ipscan add UNIQUE KEY `ip` (`ldate`,`ip`,`proto`,`port`,`from`) USING HASH;

https://blog.csdn.net/yangshuainan/article/details/122037791

备份后,还原时出现 Mysql ERROR 1032 (HY000): Can’t find record in xxx,排查数据后并没有发现什么问题。

百度查到文章:MySQL: Can’t find record in tablename - Database Administrators Stack Exchange

执行:

1
REPAIR TABLE xxx USE_FRM

修复后问题解决。

修复前请记得备份要修复的表防止数据丢失,切记!!。


MySQL数据库中 .frm 和 .myi 和 .myd 和 .ibd 文件是什么文件?

存储引擎是myisam

在data目录下会看到3类文件:.frm、.myi、.myd

(1).frm–表定义,是描述表结构的文件。

(2).MYD–"D"数据信息文件,是表的数据文件。

(3).MYI–"I"索引信息文件,是表数据文件中任何索引的数据树

存储引擎是InnoDB

在data目录下会看到2类文件:.frm、.ibd

(1).frm–表结构的文件。

(2).ibd–表数据和索引的文件。该表的索引(B+树)的每个非叶子节点存储索引,叶子节点存储索引和索引对应的数据。

Base64编码知识详解

https://www.cnblogs.com/jimojianghu/p/15993027.html

在我们进行前端开发时,针对项目优化,常会提到一条:针对较小图片,合理使用Base64字符串替换内嵌,可以减少页面http请求。 并且还会特别强调下,必须是小图片,大小不要超过多少KB,等等。

那么,Base64又到底是什么呢?

初步认识

下面的这段字符串,应该是大家都很常见的。通过这种固定的格式,来表示一张图片,并被浏览器识别,可以完整的展示出图片:

1
data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0c......

这里展示的是一个svg格式的图片,当然我们还可以加载任何浏览器支持的格式的图片。

这段字符串就是基于Base64编码得来的,其中base64,后面那一长串的字符串,就是Base64编码字符串。

Base64是怎么诞生的

互联网发展早起,电子邮件是最有效的应用。

而电子邮件的SMTP传输协议在早期,只能用于传送7位的ASCII码,而ASCII码就是基于英语设计的,对于非英语国家的文字等资源就无法发送。

为了解决这个问题,后来有了通用互联网邮件扩充MIME,增加了邮件的主体结构,定义了非ASCII码的编码传输规则,这就是Base64。

关于字符编码的知识,请查看前端开发中需要搞懂的字符编码知识

基础定义

Base64是基于64个可打印字符来表示二进制数据的编解码方式。

正因为可编解码,所以它主要的作用不在于安全性,而在于让内容能在各个网关间无错的传输。

这64个可打印字符包括大写字母A-Z、小写字母a-z、数字0-9共62个字符,再加上另外2个 + 和 /。

Base64是一种索引编码,每个字符都对应一个索引,具体的关系图,如下:

这也是名称中64的由来。

编码方式

由于64等于2的6次方,所以一个Base64字符实际上代表着6个二进制位(bit)。

然而,二进制数据1个字节(byte)对应的是8比特(bit),因此,3字节(3 x 8 = 24比特)的字符串/二进制数据正好可以转换成4个Base64字符(4 x 6 = 24比特)。

为什么是3个字节一组呢? 因为6和8的最小公倍数是24,24比特正好是3个字节。

具体的编码方式:

1
2
3
4
5
将每3个字节作为一组,3个字节一共24个二进制位
将这24个二进制位分为4组,每个组有6个二进制位
在每组的6个二进制位前面补两个00,扩展成32个二进制位,即四个字节
每个字节对应的将是一个小于64的数字,即为字符编号
再根据字符索引关系表,每个字符编号对应一个字符,就得到了Base64编码字符

上图中的字符串 ‘you',经过转换后,得到的编码为: 'eW91'。

体积增大

我们可以看到,当3个字符进行Base64转换编码后,最后变成了4个字符。因为每个6比特位,都补了2个0,变成8比特位,对应1字节。

这里正好多了三分之一,所以正常情况下,Base64编码的数据体积通常比原数据的体积大三分之一。

这也是为什么我们在前面讲使用Base64编码优化图片时,需要强调是小图标,如果图片都使用该方式,则静态文件会增大很多,并不合适。

= 等号

3个英文字符,正好能转成4个Base64字符。那如果字符长度不是3的倍数,那应该使用什么样的规则呢?

其实也简单,我们在实际使用Base编码时,常会发现有第65个字符的存在,那就是 ‘=’ 符号,这个等于号就是针对这种特殊情况的一种处理方式。

对于不足3个字节的地方,实际都会在后面补0,直到有24个二进制位为止。

但要注意的是,在计算字节数时,会直接使用总长度除以3,如果余数为1则会直接在最后补一个=,如果余数为2则补两个=。

因此,转码后的字符串需要补的后缀等号,要么是1个,要么是2个,具体的可以见下图:

图中第二个,使用的是单独的字符 ’d',是为了区分索引字符表里的索引0,这个时候,得到编码中,会存在一个索引0对应的A字符,而'=‘是直接补上2个。

非ASCII码字符

由于 Base64 仅可对 ASCII 字符进行编码,如果是中文字符等非ASCII码,就需要先将中文字符转换为ASCII字符后,再进行编码才行。

编解码方法

btoa 和 atob

JavaScript提供了两个原生方法,用来处理Base64编码:btoa() 和 atob()。

btoa(): 将字符串或二进制值转换成Base64编码字符串。

注意:btoa方法只能直接处理ASCII码的字符,对于非ASCII码的字符,则会报错。

atob(): 对base64 编码的字符串进行解码。

注意:atob方法如果传入字符串参数不是有效的Base64编码(如非ASCII码字符),或者其长度不是4的倍数,会报错。

1
2
3
4
5
btoa('you')  // 'eW91'
atob('eW91') // 'you'

btoa('中') // Uncaught DOMException: The string to be encoded contains characters outside of the Latin1 range.
atob('y')  // Uncaught DOMException: The string to be decoded is not correctly encoded.

处理中文字符

由于btoa、atob 仅支持对ASCII字符编码,也就是单字节字符,而我们平时的中文都是 2-4 字节的字符。

因此,可以先将中文字符转为 utf-8 的编码,将utf-8编码当做字符,这样就可以对多个单字节字符进行编码。

对于中文可以使用这两个方法: encodeURIComponent() 和 decodeURIComponent()。

1
2
3
encodeURIComponent():将非ACSII码的字符进行utf-8编码

decodeURIComponent():解码使用

如下,编解码中文的方式:

1
2
3
4
5
window.btoa(encodeURIComponent('中国'))
// 'JUU0JUI4JUFEJUU1JTlCJUJE'

decodeURIComponent(window.atob('JUU0JUI4JUFEJUU1JTlCJUJE'))
// '中国'

第三方库

js-base64

前端常见应用

接下来,我们了解下前端开发中常见的对Base64编码的一些使用场景。

Base64在前端方面的应用,多数都是针对图片的处理,一般都是基于DataURL的方式来使用。

Data URL 由 data:前缀、MIME类型(表明数据类型)、base64标志位(如果是文本,则可选)以及 数据本身 四部分组成。

具体的格式:data:[<mime type>][;base64],<data>

这里的第四部分 <data> 数据本身,就是一个Base64字符串。

小图片转码

即开篇说的针对图片优化,使用Base64能减少请求数的,可以在img标签下,或者css中:

1
<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0c......Ii8+PC9nPjwvc3ZnPg==">
1
2
3
.icon {
	background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0c......Ii8+PC9nPjwvc3ZnPg==);
}

当我们使用vue或react框架时,也可以通过url-loader来配置,图标转Base64的大小:

1
2
3
4
5
.loader('url-loader')
.tap(options => {
	options.limit = 10240 // 10kb
	return options
})

文件读取

Web环境下,有提供 FileReader 的API,用来读取文件的数据,可以通过它的 readAsDataURL() 方法,将文件数据读取为Base64编码的字符串数据:

1
2
3
4
5
let reader = new FileReader()
reader.onload = () => {
	let base64Img = reader.result
};
reader.readAsDataURL(file)

该方法常用在图片上传中。

Canvas生成图片

Canvas本质上是一个位图图像,它有提供 toDataURL() 方法,将画布导出生成为一张图片,该图片将以Base64编码的格式进行保存。

1
2
const dataUrl = canvasEl.toDataURL()
// data:image/png;base64,PHN2ZyB4bWxucz0iaHR0c......

其他

处理图片展示外,还会在特殊数据传输、简单编码和加密、代码混淆、部分证书中,见到Base64编码字符串。

总结

最后再来总结一下Base64的特点:

将二进制数据转为字符串(ASCII码),方便数据传输。

浏览器能直接展示Base64编码图片,减少请求。

编码后数据会大至少三分之一,需要额外的方法处理编解码。

CentOS 多IP配置

https://www.cnblogs.com/dachenyi/p/15980164.html

https://www.cnblogs.com/jiftle/p/16692400.html

关闭 rp_filter 校验

在 /etc/sysctl.conf 或 /usr/lib/sysctl.d/50-default.conf 中关闭反向过滤

反向过滤指系统在接收到一个 IP 包后检查该 IP 是否符合要求,不合要求则被丢弃。

例如:用户在 A 网卡上收到一个 IP 包,发送 IP 为 B。而给 B 的 IP 发送时用的网卡不是 A,则会丢弃。由于默认路由走的是主网卡,所以开启反向过滤后,辅助网卡上的 IP 会 ping 不通。

net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.all.rp_filter = 0

cfg

cd /etc/sysconfig/network-scripts/

vim ifcfg-eth0

1
2
3
4
5
6
7
8
IPADDR0=172.27.0.10
IPADDR1=172.27.0.11
PREFIX=24
GATEWAY0=172.27.0.1
GATEWAY1=172.27.0.1

DEFROUTE=yes      # 双网卡都配网关
IPV4_ROUTE_METRIC=10  # 0-100 数字越小优先级越高,但是默认网关只能有一个,相当于主备网关, 只有当主网关断掉了,备用网关才会生效