iSCSI 网络存储服务部署

一、介绍

iSCSI (Internet Small Computer System Interface),互联网小型计算机系统接口;iSCSI 是SCSI接口 与以太网技术相结合的新型存储技术,属于ip san的一种,可以用来在网络中传输 SCSI 接口的命令和数据。这样,不仅克服了传统 SCSI 接口设备的物理局限性,实现了跨区域的存储资源共享,还可以在不停机的状态下扩展存储容量。

iSCSI 存储技术非常便捷,在访问存储资源的形式上发生了很大变化,摆脱了物理环境的限制,同时还可以把存储资源分给多个服务器共同使用,但是,iSCSI 存储技术受到了网速的制约。以往,硬盘设备直接通过主板上的总线进行数据传输,现在则需要让互联网作为据传输的载体和通道,因此传输速率和稳定性是 iSCSI 技术的瓶颈。

既然要通过以太网来传输硬盘设备上的数据,那么数据是通过网卡传入到计算机中的
么?这就有必要向大家介绍 iSCSI-HBA 卡了。与一般的网卡不同(连接网络总线和内存,供计算机上网使用),iSCSI-HBA 卡连接的则是 SCSI 接口或 FC(光纤通道)总线和内存,专门用于在主机之间交换存储数据,其使用的协议也与一般网卡有本质的不同。运行Linux系统的服务器会基于iSCSI协议把硬盘设备命令与数据打包成标准的TCP/IP数据包,然后通过以太网传输到目标存储设备,而当目标存储设备接收到这些数据包后,还需要基于iSCSI 协议把 TCP/IP 数据包解压成硬盘设备命令与数据。

二、部署iSCSI

iSCSI 分为服务端(target)与客户端(initiator)。iSCSI 服务端即用于存放硬盘存储资源的服务器,能够为用户提供可用的存储资源。iSCSI 客户端则是用户使用的软件,用于访问远程服务端的存储源。

本次实验实验vmware虚机来完成实现,系统是Centos7.9

1. 使用两块磁盘做软件raid1,来充当iSCSI的存储资源(可选)

在这里插入图片描述

2. 配置raid,raid模式为raid1

2.1. 下载raid配置工具mdadm
# yum -y install mdadm
2.2. 查看需要配置raid的磁盘

采用sdb ,sdc 配置raid1

[root@192 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
└─sda2   8:2    0 19.8G  0 part /
sdb      8:16   0   20G  0 disk 
sdc      8:32   0   20G  0 disk 
sr0     11:0    1  4.4G  0 rom 
2.3. 配置raid

raid名称为md0

[root@192 ~]# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 --metadata=0.90 /dev/sd[bc]
mdadm: size set to 20971456K
mdadm: array /dev/md0 started.
[root@192 ~]# mdadm -Q /dev/md0
/dev/md0: 20.00GiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.
[root@192 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda      8:0    0   20G  0 disk  
├─sda1   8:1    0  200M  0 part  /boot
└─sda2   8:2    0 19.8G  0 part  /
sdb      8:16   0   20G  0 disk  
└─md0    9:0    0   20G  0 raid1 
sdc      8:32   0   20G  0 disk  
└─md0    9:0    0   20G  0 raid1 
sr0     11:0    1  4.4G  0 rom

3. 服务端安装配置

3.1. 安装服务端软件
# yum -y install targetd targetcli
  • targetd 守护进程
  • targetcli 配置工具
3.2. 启动targetd
# systemctl enable targetd --now
3.3. 配置iSCSI 服务端存储资源

targetcli 是用于管理 iSCSI 服务端存储资源的专用配置命令,是一个交互命令。/backstores/block 是iSCSI 服务端配置共享设备的位置。我们需要把刚刚创建的RAID 1虚拟 磁盘阵列 md0 文件加入到配置共享设备的“资源池”中,并将该文件重新命名为 disk0

# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'./> ls
o- / ......................................................................................................................... [...]o- backstores .............................................................................................................. [...]| o- block .................................................................................................. [Storage Objects: 0]| o- fileio ................................................................................................. [Storage Objects: 0]| o- pscsi .................................................................................................. [Storage Objects: 0]| o- ramdisk ................................................................................................ [Storage Objects: 0]o- iscsi ............................................................................................................ [Targets: 0]o- loopback ......................................................................................................... [Targets: 0]
/> 
3.3.1. 创建共享存储资源

/backstores/block 是iSCSI 服务端配置共享设备的位置

/> ls backstores/
o- backstores ................................................................................................................ [...]o- block .................................................................................................... [Storage Objects: 0]o- fileio ................................................................................................... [Storage Objects: 0]o- pscsi .................................................................................................... [Storage Objects: 0]o- ramdisk .................................................................................................. [Storage Objects: 0]
/> cd backstores/block 
/backstores/block> create disk0 /dev/md0
Created block storage object disk0 using /dev/md0.
/backstores/block> ls
o- block ...................................................................................................... [Storage Objects: 1]o- disk0 ............................................................................. [/dev/md0 (20.0GiB) write-thru deactivated]o- alua ....................................................................................................... [ALUA Groups: 1]o- default_tg_pt_gp ........................................................................... [ALUA state: Active/optimized]
3.3.2. 创建 iSCSI target 名称及配置共享资源

iSCSI target 名称是由系统自动生成的,这是一串用于描述共享资源的唯一字符串。稍后用户在扫描 iSCSI 服务端时即可看到这个字符串,因此我们不需要记住它。系统在生成这个 target 名称后,还会在/iscsi 参数目录中创建一个与其字符串同名的新“目录”用来存放共享资源。我们需要把前面加入到 iSCSI 共享资源池中的硬盘设备添加到这个新目录中,这样用户在登录 iSCSI 服务端后,即可默认使用这硬盘设备提供的共享存储资源了。

/> cd /iscsi 
/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> ls
o- iscsi .............................................................................................................. [Targets: 1]o- iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459 ............................................................... [TPGs: 1]o- tpg1 ................................................................................................. [no-gen-acls, no-auth]o- acls ............................................................................................................ [ACLs: 0]o- luns ............................................................................................................ [LUNs: 0]o- portals ...................................................................................................... [Portals: 1]o- 0.0.0.0:3260 ....................................................................................................... [OK]
/iscsi> cd iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459/
/iscsi/iqn.20....0aaeb17c0459> cd tpg1/luns 
/iscsi/iqn.20...459/tpg1/luns> create /backstores/block/disk0 
Created LUN 0.
/iscsi/iqn.20...459/tpg1/luns> ls
o- luns .................................................................................................................. [LUNs: 1]o- lun0 .............................................................................. [block/disk0 (/dev/md0) (default_tg_pt_gp)]
3.3.3. 设置访问控制列表

iSCSI 协议是通过客户端名称进行验证的,也就是说,用户在访问存储共享资源时不需要输入密码,只要 iSCSI 客户端的名称与服务端中设置的访问控制列表中某一名称条目一致即可,因此需要在 iSCSI 服务端的配置文件中写入一串能够验证用户信息的名称。acls 参数目录用于存放能够访问 iSCSI 服务端共享存储资源的客户端名称。
create iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459

/iscsi/iqn.20...b17c0459/tpg1> ls
o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]o- acls ................................................................................................................ [ACLs: 0]o- luns ................................................................................................................ [LUNs: 1]| o- lun0 ............................................................................ [block/disk0 (/dev/md0) (default_tg_pt_gp)]o- portals .......................................................................................................... [Portals: 1]o- 0.0.0.0:3260 ........................................................................................................... [OK]
/iscsi/iqn.20...b17c0459/tpg1> cd acls 
/iscsi/iqn.20...459/tpg1/acls> ls
o- acls .................................................................................................................. [ACLs: 0]
/iscsi/iqn.20...459/tpg1/acls> pwd
/iscsi/iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459/tpg1/acls
/iscsi/iqn.20...459/tpg1/acls> create iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459
Created Node ACL for iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459
Created mapped LUN 0.
/iscsi/iqn.20...459/tpg1/acls> ls
o- acls .................................................................................................................. [ACLs: 1]o- iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459 ........................................................ [Mapped LUNs: 1]o- mapped_lun0 ......................................................................................... [lun0 block/disk0 (rw)]
3.3.3. 指定ip作为将向外提供 iSCSI 共享存储资源

默认是绑定主机上的所有IP,我们需要指定ip(两张网卡的话可以配置bond)

/iscsi/iqn.20...b17c0459/tpg1> ls
o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]o- acls ................................................................................................................ [ACLs: 1]| o- iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459 ...................................................... [Mapped LUNs: 1]|   o- mapped_lun0 ....................................................................................... [lun0 block/disk0 (rw)]o- luns ................................................................................................................ [LUNs: 1]| o- lun0 ............................................................................ [block/disk0 (/dev/md0) (default_tg_pt_gp)]o- portals .......................................................................................................... [Portals: 1]o- 0.0.0.0:3260 ........................................................................................................... [OK]
/iscsi/iqn.20...b17c0459/tpg1> cd portals/
/iscsi/iqn.20.../tpg1/portals> ls
o- portals ............................................................................................................ [Portals: 1]o- 0.0.0.0:3260 ............................................................................................................. [OK]

将默认地址删掉,指定ip提供服务,iSCSI 使用3260/tcp作为访问端口,需要确保端口已经被开放

/iscsi/iqn.20.../tpg1/portals> ls
o- portals ............................................................................................................ [Portals: 1]o- 0.0.0.0:3260 ............................................................................................................. [OK]
/iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/iscsi/iqn.20.../tpg1/portals> create 192.168.92.148 
Using default IP port 3260
Created network portal 192.168.92.148:3260.
/iscsi/iqn.20.../tpg1/portals> ls
o- portals ............................................................................................................ [Portals: 1]o- 192.168.92.148:3260 ...................................................................................................... [OK]
3.3.4. 保存配置,并重启 targetd

在targetcli界面输入exit保存配置

/iscsi/iqn.20.../tpg1/portals> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
[root@192 ~]# systemctl restart targetd
[root@192 ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 192.168.92.148:3260     0.0.0.0:*               LISTEN      -                   

4. 配置客户端

4.1. 配置linux客户端(使用ubuntu作为客户端)

iSCSI 客户端服务程序 initiator,Centos7.9 下安装: # yum install iscsi-initiator-utils
ubuntu默认已安装

1) 修改客户端iSCSI 唯一标识
iSCSI 协议是通过客户端的名称来进行验证,而该名称也是 iSCSI 客户端的唯一标识,而且必须与服务端配置文件中访问控制列表中的信息一致,否则客户端在尝试访问存储共享设备时,系统会弹出验证失败的保存信息。

编辑 iSCSI 客户端中的 initiator 名称文件,把服务端的访问控制列表名称填写进
来,然后重启客户端 iscsid 服务程序并将其加入到开机启动项中:

root@openstack:~# cat /etc/iscsi/initiatorname.iscsi 
## DO NOT EDIT OR REMOVE THIS FILE!
## If you remove this file, the iSCSI daemon will not start.
## If you change the InitiatorName, existing access control lists
## may reject this initiator.  The InitiatorName must be unique
## for each iSCSI initiator.  Do NOT duplicate iSCSI InitiatorNames.
InitiatorName=iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459
root@openstack:~# systemctl enable  iscsid --now
Synchronizing state of iscsid.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable iscsid

2) 使用iSCSI服务端的存储资源

root@openstack:~# iscsiadm -m discovery -t st -p 192.168.92.148:3260
192.168.92.148:3260,1 iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459
  • -m discovery 扫描并发现可用的存储资源
  • -t st 指定 SCSI 目标发现
  • -p 192.168.92.148 指定 iSCSI 发现的网络地址

3 ) 登录 iSCSI 服务端

登录完,网络磁盘会自动以裸盘的方式挂载到服务器上

root@openstack:~# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459, portal: 192.168.92.148,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459, portal: 192.168.92.148,3260] successful.
  • -m node 参数为将客户端所在主机作为一台节点服务器,
  • -T iqn.2003-01.org.linux-iscsi.192.x8664:sn.0aaeb17c0459 参数为要使用的存储资源
  • -p 192.168.10.10 参数依然为对方 iSCSI 服务端的 IP 地址。
  • –login 或-l 参数进行登录验证

4 ) 查看是否添加了新盘
sdb就是新添加的磁盘

root@openstack:~# lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0   62M  1 loop /snap/core20/1611
loop1                       7:1    0 67.8M  1 loop /snap/lxd/22753
loop2                       7:2    0 38.8M  1 loop /snap/snapd/21759
sda                         8:0    0   60G  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0    2G  0 part /boot
└─sda3                      8:3    0   58G  0 part └─ubuntu--vg-ubuntu--lv 253:0    0   29G  0 lvm  /
sdb                         8:16   0   20G  0 disk 
sr0                        11:0    1  1.3G  0 rom 

5) 将新盘格式化并挂载

root@openstack:~# mkdir /data
root@openstack:~# mkfs.ext4 /dev/sdb 
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 5242864 4k blocks and 1310720 inodes
Filesystem UUID: c1dafed3-6196-4673-adb3-e2dde7d7fa75
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   root@openstack:~# mount /dev/sdb /data
root@openstack:~# df -hT /dev/sdb
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdb       ext4   20G   24K   19G   1% /data
root@openstack:~# touch  /data/text

6)永久挂载

/dev/sdb 是一块网络存储设备,而 iSCSI 协议是基于TCP/IP 网络传输数据的,因此必须在/etc/fstab 配置文件中添加上_netdev 参数,表示当系统联网后再进行挂载操作,以免系统开机时间过长或开机失败:

root@openstack:~# blkid /dev/sdb 
/dev/sdb: UUID="c1dafed3-6196-4673-adb3-e2dde7d7fa75" TYPE="ext4"
root@openstack:~# cat /etc/fstab 
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/ubuntu-vg/ubuntu-lv during curtin installation
/dev/disk/by-id/dm-uuid-LVM-G4zbpeVKQ2xZhG0haLE99zL2sMniWCmID1HEfn0D2UF0jweearkJII2cLLNKol63 / ext4 defaults 0 1
# /boot was on /dev/sda2 during curtin installation
/dev/disk/by-uuid/3944bf57-8043-4de8-b3e7-2a0b40a2d11f /boot ext4 defaults 0 1
/swap.img	none	swap	sw	0	0
UUID="c1dafed3-6196-4673-adb3-e2dde7d7fa75" /data ext4 defaults,_netdev  0 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/46971.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将一个Git仓库地址上传到多个远程仓库

大家好&#xff0c;我是邵奈一&#xff0c;一个不务正业的程序猿、正儿八经的斜杠青年。 1、世人称我为&#xff1a;被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员… 2、这几年&#xff0c;我整理了很多IT技术相关的教程给大家&#xff0…

逆向案例二十一——sm2加密,某信登录密码加密

网址&#xff1a;电信账号登录 这个登陆页面&#xff0c;会需要过滑块验证码&#xff0c;先不管他&#xff0c;直接找到登陆包&#xff0c;在登陆包之前&#xff0c;有一个这个包返回一串不知道啥作用的先记着。 找到登陆包&#xff0c;密码进行了加密 用xhr断点调试&#xff…

Jmeter常用组件及执行顺序

一 常用组件 1.线程组 Thread Group 线程组是一系列线程的集合&#xff0c;每一个线程代表着一个正在使用应用程序的用户。在 jmeter 中&#xff0c;每个线程意味着模拟一个真实用户向服务器发起请求。 在 jmeter 中&#xff0c;线程组组件运行用户设置线程数量、初始化方式等…

JuiceFS、Ceph 和 MinIO 结合使用

1. 流程图 将 JuiceFS、Ceph 和 MinIO 结合使用&#xff0c;可以充分利用 Ceph 的分布式存储能力、JuiceFS 的高性能文件系统特性&#xff0c;以及 MinIO 提供的对象存储接口。以下是一个方案&#xff0c;介绍如何配置和部署 JuiceFS 使用 Ceph 作为其底层存储&#xff0c;并通…

Linux进程——进程优先级与僵尸进程孤儿进程

文章目录 僵尸进程变成僵尸状态的过程 孤儿进程进程优先级如何修改进程优先级为什么优先级有范围 僵尸进程 僵尸状态进程本质上就是死亡状态 在进程死亡之后&#xff0c;不会直接对进程进行释放&#xff0c;而是先会处理一些后事 进程在结束退出的时候&#xff0c;也会有一些…

力扣第六题——Z字形变换

题目介绍 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时&#xff0c;排列如下&#xff1a; P A H N A P L S I I G Y I R 之后&#xff0c;你的输出需要从…

spring-cloud和spring-cloud-alibaba的关系

首先Spring Cloud 是什么&#xff1f; Spring Cloud是一系列框架的有序集合&#xff0c;它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发。Spring Cloud提供了微服务架构开发所需的多种组件和工具&#xff0c;如服务发现注册、配置中心、消息总线、负载均…

GA-Kmeans-Transformer-GRU时序聚类+状态识别组合模型,创新发文无忧!

GA-Kmeans-Transformer-GRU时序聚类状态识别组合模型&#xff0c;创新发文无忧&#xff01; 目录 GA-Kmeans-Transformer-GRU时序聚类状态识别组合模型&#xff0c;创新发文无忧&#xff01;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.GA-Kmeans-Transformer-GRU时…

代码随想录训练营第三十七天 完全背包问题 518零钱兑换问题II 377组合总和IV

什么是完全背包&#xff0c;就是在01背包的基础上每个物品可以放无数次&#xff0c;在代码中和01背包不一样的地方只有在遍历顺序上不一致&#xff0c;在遍历背包的顺序上 01背包是从后往前遍历&#xff0c;在完全背包中是从前往后遍历。 第一题&#xff1a; 原题链接&#x…

【Linux网络】poll{初识poll / poll接口 / poll vs select / poll开发多客户端echo服务器}

文章目录 1.初识pollpoll与select的主要联系与区别poll的原理poll的优点poll的缺点poll vs select 2.poll开发多客户端echo服务器封装套接字接口Makefile主函数日志服务聊天服务器 1.初识poll poll是Linux系统中的一个系统调用&#xff0c;它用于监控多个文件描述符&#xff08…

燃气管道老化,怎样能实时监测管网情况?

在能源管理与环境保护的交汇点上&#xff0c;一场前所未有的技术革命正在悄然兴起。随着全球对清洁能源需求的日益增长和对环境可持续性的高度重视&#xff0c;燃气作为清洁、高效、可靠的能源载体&#xff0c;其重要性不言而喻。然而&#xff0c;如何确保燃气的安全输送与使用…

新手教学系列——简单的服务配置项集中管理

前言 在开发和运维过程中,配置管理是一个非常重要但经常被忽视的环节。常用的配置文件格式包括env、ini和yaml等,它们非常适合模块级别的系统配置,尤其是一些敏感信息的配置,例如数据库连接字符串和密码等。但是,对于系统业务级别的配置,通常要求不需要重启服务即可更新…

易语言_判断循环首_循环判断首_计次循环首_变量循环首_区分-cnblog

判断循环首 如果判断条件为真&#xff0c;就进入循环条件 循环判断首 先执行一次&#xff0c;再判断循环条件 计次循环首 10为总循环次数&#xff0c;如果加i&#xff0c;i会记录当前是循环的第几次 变量循环首 变量循环首可以自定义每次循环增加的值

【Linux】文件管理常用命令【超详细】

文章目录 预防rm事故-血的教训&#x1f622;1. 使用别名&#xff1a;2. 启用回收站&#xff1a;3. 只读文件系统&#xff1a; 一、文件管理1.1 touch-文件创建1.2 rm-文件删除1.3 mkdir-目录创建1.4 rmdir-目录删除1.5 pwd-显示当前目录1.6 cd-切换当前目录1.7 ls-列出文件和目…

大模型日报 2024-07-15

大模型日报 2024-07-15 大模型资讯 Meta 开发 System 2 蒸馏技术&#xff0c;Llama 2 对话模型任务准确率接近 100% Meta 新研究提高推理任务性能。 美国启动「曼哈顿计划 2.0」&#xff0c;AI 进入奥本海默时刻&#xff1f;60 亿砸向无人机&#xff0c;已有 800 个 AI 项目 美…

【深度学习入门篇 ⑦】PyTorch池化层

【&#x1f34a;易编橙&#xff1a;一个帮助编程小伙伴少走弯路的终身成长社群&#x1f34a;】 大家好&#xff0c;我是小森( &#xfe61;ˆoˆ&#xfe61; ) &#xff01; 易编橙终身成长社群创始团队嘉宾&#xff0c;橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官…

Home Assistant在windows环境安装

Home Assistant是什么&#xff1f; Home Assistant 是一个开源的智能家居平台&#xff0c;旨在通过集成各种智能设备和服务&#xff0c;提供一个统一的、可自定义的家庭自动化解决方案。它可以允许用户监控、控制和自动化家中的各种设备&#xff0c;包括灯光、温度、安全系统、…

02-Redis未授权访问漏洞

免责声明 本文仅限于学习讨论与技术知识的分享&#xff0c;不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;本文作者不为此承担任何责任&#xff0c;一旦造成后果请自行承担&…

JAVA零基础小白自学日志——第十七天

文章目录 1.方法的覆写2.类的层次结构3.如何判定正确的继承顺序4.如何判断子类继承&#xff08;继承这个词我始终觉得很变扭&#xff09;了父类的什么5.继承关系的实质6.关键字&#xff1a;super 和 this[1].this关键字&#xff08;1&#xff09;this关键字调用本类属性&#x…

企业数字化转型对低代码开发平台的推动促进影响

随着企业数字化转型的浪潮日益高涨&#xff0c;低代码开发平台&#xff08;Low-Code Platform, LCP&#xff09;逐渐崭露头角&#xff0c;成为推动这一进程的重要力量。低代码开发平台以其高效、灵活和易于使用的特点&#xff0c;为企业提供了快速构建和迭代应用的能力&#xf…