【鸟叔的Linux私房菜】2-主机规划与磁盘分区

news2024/12/24 2:24:14

文章目录

  • 2.1 Linux与硬件的搭配
    • 各硬件设备在Linux的文件名
    • 使用虚拟机学习
  • 2.2 磁盘分区
    • 磁盘连接方式和设备文件名的关系
    • MBR(MS-DOS)与GPT磁盘分区表
      • MBR(MS-DOS)
      • GPT磁盘分区表
    • 启动流程的BIOS与UEFI启动检测程序
      • BIOS搭配MBR/GPT的启动流程
      • UEFI BIOS搭配 GPT启动的流程
    • Linux安装模式下,磁盘的选择
      • 目录树结构
      • 文件系统与目录树的关系,挂载
      • 发行版发行时,挂载和磁盘分区的规划
  • 2.3 安装Linux前的规划

2.1 Linux与硬件的搭配

各个组件和设备在Linux下都是一个文件。

  • 磁盘:如果是一般小型的服务器,重点在容量,大于20G就够用了。如果是服务器,就要考虑使用高级的磁盘阵列RAID模式。

各硬件设备在Linux的文件名

  • 几乎所有的硬件设备文件都在/dev文件夹中
  • SATA接口的硬件文件名为/dev/sd[a-d],即有sda sdb sdc sdd四个文件
  • []形式的表示法会使用的很频繁

/usr:Linux可执行程序及相关的文件存放的目录

常见设备及其在Linux系统中对应文件名:

设备类型文件名示例
SCSI、SATA、USB硬盘驱动器/dev/sd[a-p] (例如:/dev/sda, /dev/sdb
U盘同上,也使用 /dev/sd[a-p]
Virtio接口硬盘(虚拟机环境)/dev/vd[a-p]
用于虚拟机内
软盘驱动器/dev/fd[0-7]
IDE硬盘/dev/hd[a-d](较旧系统中,现代系统较少见)
由于IDE接口的磁盘驱动器几乎已经被淘汰,现在文件名也用/dev/sd[a-p]
打印机(并口)/dev/lp[0-2] (25针打印机)
/dev/usb/lp[0-15](USB接口)
鼠标/dev/input/mouse[0-15] (通用)
/dev/psaux(PS/2鼠标)
/dev/mouse (当前使用的鼠标)
CD-ROM/DVD-ROM/dev/scd[0-1] (通用)
/dev/sr[0-1] (通用,CentOS常见)
/dev/cdrom(当前CD-ROM)
磁带机/dev/ht0(IDE接口)
/dev/st0 (SATA/SCSI接口)
/dev/tape(当前磁带)
USB字符设备(如鼠标、键盘)/dev/usb/hiddev0, /dev/usb/hiddev1
USB块设备(如U盘)/dev/sdb/dev/uba, /dev/ubb
模拟器如果机器是跟互联网服务提供商ISP申请的云端机器,这时得到的可能是虚拟机,为了加速,虚拟机内的磁盘是使用模拟器产生的,模拟器的磁盘文件名可能是/dev/vd[a-p]

使用虚拟机学习

windows系统:推荐VirtualBox
linux系统:大多使用KVM虚拟化软件

2.2 磁盘分区

磁盘通常有多个磁片,所有磁片的同一磁道称为柱面,通常是文件系统的最小单位,也就是分区的最小单位。GPT可以使用扇区号码来作为分区单位。

硬盘中一般会有多个盘片组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。盘片的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片就编号为2面和3面。 如下图:
在这里插入图片描述
下图显示的是一个盘面,盘面中一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(图践绿色部分)。
在这里插入图片描述
每个盘面都被划分为数目相等的磁道,并从**外缘的“0”**开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。磁盘的柱面数与一个盘面上的磁道数是相等的。由于每个盘面都有自己的磁头,因此,盘面数等于总的磁头数。 如下图
在这里插入图片描述

磁盘连接方式和设备文件名的关系

设备文件名根据Linux内核检测到的磁盘顺序来命名。

磁盘的第一个扇区存放磁盘的重要信息。
早期磁盘第一个扇区里存放的磁盘的重要信息,称为MBR格式(master boot record)。
但是由于磁盘的容量不断扩大,造成读写的困难。
后来出现新的磁盘分区格式,称为GPT(GUID partition table)。

必须对硬盘进行分区,才可以使用。

MBR(MS-DOS)与GPT磁盘分区表

MBR(MS-DOS)

早期的Linux系统为了兼容Windows磁盘,使用支持Windows的MBR主引导记录的方式来处理启动引导程序与分区表。启动引导程序与分区表放在磁盘的第一个扇区。这个扇区通常是512字节的大小。

第一个扇区的512字节主要包含这两部分:

  • 主引导记录(Master Boot Record,MBR):可以安装自引导程序的地方,有446字节;
  • 分区表(partition table):记录完整分区表的状态,有64个字节;

由于分区表所在区块仅有64字节容量,因此最多只能有四组记录,每组记录了该区段起始与结束的柱面号码。若将硬盘以长条形来看,则会将柱面以柱形图看,那么那64字节的记录就会如下图所示:

在这里插入图片描述

假设硬盘文件设备名称为/dev/sda时,这四个分区在Linux系统中的设备文件名如下所示:重点在于文件名后面还会再加一个数字,这个数字与分区所在的位置有关。

  • P1:/dev/sda1
  • P2:/dev/sda2
  • P3:/dev/sda3
  • P4:/dev/sda4

上图中我们假设硬盘只有400个柱面,共划分为四个分区。第四个分区所在的柱面号码为301~400号 柱面的范围。
当你的操作系统为Windows时,那么第一到第四分区的代表符号就是C、D、E、F。
当你有数据要写入F分区时,你的数据会被写入整个硬盘的301~400号柱面之间的意思。

由于分区表就只有64 字节而已,最多只能容纳四组分区记录,这四个分区的记录被称为(Primary)或扩展(Extended)分区。
根据上面的图与说明,我们可以得到几个重要的信息:

  • 所谓的分区只是针对那个64 字节的分区表进行设置而已。

  • 硬盘默认的分区表只能记入四组分区信息。

  • 这四组划分信息我们称为主要(Primary)或扩展(Extended)分区。

  • 分区的最小单位通常为柱面(Cylinder)。

  • 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据处理。

你会不会突然想到,为啥要分区?基本上你可以这样思考分区的意义:

  1. 数据的安全性
    因为每个分区的数据是分开的。所以,当你需要将某个分区的数据重新整理时,例如你要计算计算机 Windows 的 C 盘重新安装一次系统时,可以将其他重要数据移动到其分区,例如将程序、桌面、邮件 数据移动到 D 盘,那么 C 盘重新安装系统并不会影响到 D 盘。所以善用分区,可以让你的数据更安全。

  2. 系统的性能考虑
    由于分区将数据集中在某个柱面区间中,例如图2.2.2 中当第一个分区位于柱面号码1~100号, 如此一来当数据读取到该分区时,硬盘只要查寻前面1~100的柱面范围,由于数据集中,将有助于 数据读取的速度与性能,所以说,分区是很重要的。

既然分区表只记得四组数组的信息,那我是不是代表一块硬盘最多只能划分出四个分区呢?当然 不是。有经验的朋友都知道,你可以将一块硬盘划分成十个以上的分区。那又是如何做到的?

在Windows与Linux系统中,我们可以通过刚刚谈到的扩展分区(Extended)的方式来处理。 扩展分区的意思是:既然第一个扇区所在的分区表只能记录四组分区,那我可否利用额外的扇区来记录更多的分区信息?实际上示意图有点像下面这样:
在这里插入图片描述

实际上扩展分区并不是只有一个区域,而是会分布在每个分区的最前面几个扇区来记录分区信息,鸟哥在上图就将其简化了。有兴趣的读者可以到下面的实际扩展分区的记录方式:
https://en.wikipedia.org/wiki/extended_boot_record

在上图中,我们知道硬盘的四个分区记录仅使用到两个,P1为主分区,而P2则为扩展分区。请注意,扩展分区的目的 是使用额外的扇区来记录分区信息,扩展分区本身并不能被拿来格式化

右下角那个区块继续划分出五个分区,这五个由扩展分区继续切出来的分区,就被称 为逻辑分区(logical partition)。同时注意一下,由于逻辑分区是由扩展分区继续划分出来的,所以它 可以使用的柱面范围就是扩展分区所设定的范围,也就是图中的 101 - 400。

同样,在上述的分区在Linux系统中的设备文件名分别如下:

P1:/dev/sda1
P2:/dev/sda2
L1:/dev/sda5
L2:/dev/sda6
L3:/dev/sda7
L4:/dev/sda8
L5:/dev/sda9

仔细看看,怎么设备文件名没有/dev/sda3与/dev/sda4? 因为前面四个号码都是保留给主要分区 或扩展分区用的,所以逻辑分区的设备名称号码就从5号开始。这在 MBR 方式的分区表中是个很重要的 特性,不能忘记。

MBR 主要分区、扩展分区与逻辑分区的特性我们做个简单的定义。

  • 主要分区与扩展分区最多可以有 4 个(硬盘的限制);
  • 扩展分区最多只能有 1 个(操作系统的限制);
  • 逻辑分区是由扩展分区持续划分出来的分区
  • 能够被格式化后作为数据存取的分区是主要分区与逻辑分区,扩展分区无法格式化;
  • 逻辑分区的数量依赖于操作系统的不同。在Linux系统中,SATA硬盘已经突破63个以上的分区限制。
    分区是一个非常复杂的东西,因为它是以柱面为单位的连续磁道空间,且扩展分区又属于特殊的分区类型。所以在分区的时候要注意,特别是对于扩展分区的情况。

在Windows操作系统中,如果你想要将D盘与E盘合并成为一个新的分区,如果有两种情况的话,请问这两种方式是否都可以将D盘与E盘合并成为新的分区?
在这里插入图片描述

答案是这样的:

上图可以整合:因为上图的D与E同属于扩展分区内的逻辑分区,因此只需将这两个分区割除,然后再重新建立一个新的分区,就可以在不影响其他分区的情况下,将两个分区的容量整合成为一个。

下图不可整合:因为D与E分属主要分区与逻辑分区,两者不能够整合在一起。如果扩展分区破坏,所有逻辑分区将会被删除,因为整张硬盘的信息都记录在扩展分区里面

由于第一个角度所记录的分区表与MBR是这么的重要,几乎只要读取硬盘都会先由这个角度先读取。因此,如果整个硬盘的第一个分区损坏,那么整个硬盘就没有用了。因为系统如果找不到分区表,怎么知道如何去读取柱面区间?

如果我想把一块大硬盘暂时划分为四个分区,同时还有其他的剩余容量可以让我在未来的时候进行规划,我能不能划分出四个主分区呢? 若不行,那么你建议我该如何划分?
可以用四个分区的三个主要和一个扩展分区,剩余容量在逻辑分区。

MBR分区除了上述的主要分区、扩展分区、逻辑分区分需要注意之外,由于每组分区表仅有16字节而已,因此记录的信息真的是相当有限。所以,在过去MBR分区表的限制中经常可以发现如下的问题:

  • 操作系统无法使用2.2TB以上的磁盘容量;
  • MBR仅有一个区块,若被破坏后,经常无法或很难恢复;
  • MBR内的存放启动引导程序的区块仅446字节,无法存储较多的程序代码。

这个2.2TB限制的现象在早期并不会很严重。但是,近年来硬盘厂商推出的磁盘容量动不动就高达好几个TB。目前(2015年)单一磁盘最高容量甚至高达8TB。如果使用磁盘阵列的系统,用了24块4TB磁盘搭建出磁盘阵列,那在Linux下面就会看到有一块70TB左右的磁盘。如果使用MBR的话,那要2TB/2TB地划分下去,虽然Linux kernel现在已经可以通过某些机制使磁盘分区高过63以上,但是这样就要划分出将近四十个分区,真要命,为了解决这个问题,以后就有了GPT这个磁盘分区的格式出现。

GPT磁盘分区表

因为过去一个扇区大小就是 512 字节而已,不过目前已经有了 4K 的扇区设计出现。为了兼容所有的磁盘,因此在扇区的定义上面,大多会使用所谓的逻辑区块地址(Logical Block Address, LBA)来处理。GPT 将磁盘所有区块以此 LBA(默认 512 字节)来规划,而第一个 LBA 称为 LBA0(从 0 开始编号)。

与 MBR 仅使用第一个 512 字节区块来记录不同,GPT 使用了 34 个 LBA 区块来记录分区信息。同时与过去的 MBR 仅有一个区块,被干掉就死光的情况不同,GPT 除了前面 34 个 LBA 之外整个磁盘的最后 34 个 LBA 也拿来做为另一个备份。这样或许会比较安全些吧!详细的结构有点像右图的模样。

在这里插入图片描述

  • LBA0 (MBR 兼容区块)

与 MBR 模式相似,这个兼容区块也分为两个部分,一个是跟之前 446 字节相似的区块,存储了第一阶段的启动引导程序。而在原本的分区表的记录区内,这个兼容模式仅放入一个特殊符号,用来表示此磁盘为 GPT 格式之意。而不懂 GPT 分区表的磁盘管理程序,就不会认识这块磁盘,除非用户有特别要求要处理这块磁盘,否则该管理软件不能修改此分区信息,进一步保护了磁盘。

  • LBA1 (GPT 表头记录)

这个部分记录了分区表本身的位置与大小,同时记录了备份用的 GPT 分区(就是前面谈到的在最后 34 个 LBA 区块)放置的位置,同时放置了分区表的校验码(CRC32),操作系统可以根据这个校验码来判断 GPT 是否正确。若有错误,还可以通过这个记录区来获取备份的 GPT (磁盘最后的那个备份区块)来恢复 GPT 的正常运行。

  • LBA2-33 (实际记录分区信息处)

从 LBA2 区块开始,每个 LBA 都可以记录 4 组分区记录,所以在默认的情况下,总共可以有 4×32=128 组分区记录。因为每个 LBA 有 512 字节,因此每组记录用到 128 字节的空间,除了每组记录所需要的标识符与相关的记录之外,GPT 在每组记录中分别提供了 64 位来记载开始/结束的扇区号码,因此,GPT 分区表对于单一分区来说,它的最大容量限制就在【2^64 × 512 字节 = 2^63 × 1K 字节 = 2^33 × TB = 8 ZB】,要注意 1ZB = 2^30 TB,你说够不够大?

现在 GPT 分区默认可以提供多达 128 组记录,而在 Linux 内核本身的设备记录中,针对单一磁盘来说,虽然过去最多只能到达 15 个分区,不过由于 Linux 内核通过 udev 方式的处理,现在 Linux 已经没有这个限制了。此外,GPT 分区已经没有所谓的主要、扩展、逻辑分区的概念,既然每组记录都可以独立存在,当然每一个都可以视为是主要分区,每一个分区都可以拿来格式化使用。

虽然新版的 Linux 大多支持 GPT 分区表,没办法,我们的服务器常常需要比较高容量的磁盘。不过,在磁盘管理工具上,fdisk这个老牌软件不支持GPT, 要使用 GPT 的话,就得要运行类似 gdisk 或者 parted 命令才行。
另外,启动引导程序方面,grub 不要使用 GPT 的话,就得要运行类似 gdisk 或者 parted 命令才行,启动引导程序方面,grub 第一版并不支持 GPT。得要 grub2 以后版本才会支持。
并不是所有的硬件都可以读取到 GPT 的磁盘分区格式。同时,并不是所有的操作系统都可以读取到 GPT 的磁盘分区格式。
是否能够读写 GPT 格式又与启动的检测程序有关。那启动的检测程序又分成什么呢?就是 BIOS 与 UEFI

启动流程的BIOS与UEFI启动检测程序

我们在“计算机概论”一章里面谈到了,没有运行软件的硬件是没有用的,除了会电人之外。而 为了计算机硬件系统的资源合理分配,因此有了操作系统这个系统软件的产生。由于操作系统会控制 进一步地读取所有的硬件并且提供内核功能,因此我们的计算机就能够识别硬盘内的文件系统,并且执行硬盘内的软件与运行该软件来完成各项软件的运行目的。

问题是你有没有发现,既然操作系统也是软件,那么我的计算机又是如何认识这个操作系统软件并执行它的呢?明明启动时我的计算机还没有任何软件系统,它又要如何读取硬盘内的操作系统文件?嘿嘿,这就得牵涉到计算机的启动程序了。下面我们就来谈谈这个启动程序吧!

基本上,目前的主机系统在加载硬件驱动方面的程序,主要有早期的BIOS与新的UEFI两种机制,我们分别来谈谈。

BIOS搭配MBR/GPT的启动流程

在“计算机理论”里我们提到那个可爱的BIOS和CMOS这两个东西,CMOS是用来记录各种硬件参数并嵌入主板上的存储器BIOS是一个写入到主板上的一种固件(再次说明,固件就是在硬件上写入的一个软件程序)。这个BIOS就是在启动的时候,计算机系统会主动执行的第一个程序。

接下来BIOS会去分析计算机里面有哪一些存储设备,我们以硬盘为例,BIOS会依据用户的设置去取得能够启动的硬盘,并且到该硬盘里面去读取第一个扇区的MBR位置。MBR这个仅有446字节的硬盘容量里面会放置最基本的启动引导程序,此时BIOS就功成圆满,接下来就是MBR内的启动引导程序的工作了。

这个启动引导程序的目的在于加载内核文件,由于启动引导程序是操作系统在安装的时候所提供的,所以它会认识硬盘内的文件系统格式,因此就能够读取内核文件,然后接下来就是内核文件的工作,启动引导程序与BIOS也就功成圆满,将之后的工作交给大家所知道的操作系统。

简单地说,整个启动流程到操作系统之前的步骤应该是这样的:

1. BIOS:启动自动执行的固件,会认识第一个可启动的设备;
2. MBR:第一个可启动设备的第一个扇区内的主引导记录块,包含启动引导代码;
3. 启动引导程序(boot loader):一个可读取内核文件来执行的软件;
4. 内核文件:开始启动操作系统。

注意,如果你的分区表为GPT格式的话,那么BIOS也能够从LBA0的MBR兼容区块读一阶段的启动引导程序代码,如果你的启动引导程序能够支持GPT的话,那么使用BIOS同样可以读取到正确的内核系统。如果你的启动引导程序不能够支持GPT的话,那么使用BIOS就无法读取到正确的内核系统,无法启动操作系统。

LBA0 只提供第一阶段的启动引导程序代码,因此如果你使用类似 GRUB 的启动引导程序的话,那就得额外划分出一个“BIOS boot”的分区,这个分区才能够放置其他开机过程所需的程序,在 CentOS 当中,这个分区通常占用 2MB 左右而已。

由上面的说明我们知道,BIOS 与 MBR 都是硬件本身会支持的功能,至于 Boot Loader 则是操作系统安装在 MBR 上面的一个软件。由于 MBR 仅有 446 节点而已,因此这个启动引导程序是非常小而高效的。这个 Boot Loader 的主要任务有下面这些:

  • 提供选项:用户可以选择不同的启动选项,这也是多重引导的重要功能;
  • 加载内核文件:直接指向可用的程序区域来启动操作系统;
  • 转交给其他启动引导程序:将启动管理功能转交给其他启动引导程序负责。

上面前两点还容易理解,但是第三点很有意思。这表示你的计算机系统里面可能具有两个以上的启动引导程序。每个硬盘只有一个MBR,但是启动引导程序除可以安装在 MBR 之外,还可以安装在每个分区的启动扇区(boot sector)。什么?分区还有各自的启动扇区?没错,这个特性才能造就“多重引导”的功能。
在这里插入图片描述
我们举一个例子来说,假设你的个人计算机只有一个硬盘,里面分成四个分区,其中第一、二分区分别安装了Windows及Linux,你要如何在开机的时候选择用Windows还是Linux启动?假设MBR内安装的是可同时认识Windows与Linux操作系统的启动引导程序,那么整个流程如上图所示。

在图中我们可以发现,MBR的启动引导程序提供两个选项,选项一(M1)可以直接加载Windows的内核文件来开机;选项二(M2)则是将开机管理工作交给第二个分区的启动扇区(boot sector)。当用户在开机的时候选择选项二时,那么整个开机管理工作就会交给第二分区的启动引导程序。当第二个启动引导程序启动后,该启动引导程序内(图2.2.8中)仅有一个启动选项,因此就能够使用Linux的内核文件来启动。
这就是多重引导的工作情况。

我们将上图做个总结:

  • 每个分区都有自己的启动扇区(boot sector);
  • 图中的系统分区为第一及第二分区;
  • 实际可启动的内核文件是放置到各分区中的
  • 启动引导程序只会认识自己的系统分区内可启动的内核文件,以及其他启动引导程序而已;
  • 启动引导程序可直接指向或是间接将管理权转交给另一个管理程序。

为什么人们常说“如果要安装多重引导,最好先安装 Windows 再安装 Linux”:

  • Linux 在安装的时候,可以选择将启动引导程序安装在 MBR 或各分区的启动扇区,并且 Linux 的启动引导程序可以手动设置选项(即图 2.2.8 中的 M1、M2),因此可以在 Linux 的启动引导程序里面加入 Windows 启动的选项;
  • Windows 在安装时,其安装程序会主动覆盖 MBR 以及自己所在分区的启动扇区,没有选择的机会,并且它没有让我们自己选择选项的功能。

因此,如果先安装 Linux 再安装 Windows,那么 MBR 的启动引导程序就只有 Windows 的选项,而不会有 Linux 的选项(因为原本在 MBR 内的 Linux 的启动引导程序会被覆盖掉)。这需要重新安装 Linux 一次吗?当然不需要,只需要用尽各种方法来处理 MBR 的内容即可。例如利用 Linux 的恢复模式来修复 MBR。

UEFI BIOS搭配 GPT启动的流程

我们现在已经知道 GPT可以提供64位的寻址,然后也能够使用较大的区块来处理,而且BIOS不懂GPT。还得要通过GPT提供的兼容模式才能够读写这个磁盘设备,BIOS仅是16位的程序,在与新的操作系统的接轨有点弱。为了解决这个问题,有了UEFI(United extensible Firmware Interface)。

UEFI主要是想要取代BIOS这个固件接口,因此我们也称UEFI为UEFI BIOS。UEFI使用C程序语言编写,比起使用汇编语言的传统BIOS要更容易开发。也因为使用C语言来编写,因此如果开发者够厉害,甚至可以在UEFI启动阶段就让该系统了解TCP/IP而直接上网,根本不需要进入操作系统,这让小型系统的开发充满各式各样的可能性。

总的来说,传统BIOS与UEFI之间的差异可以用《T客帮》杂志整理的表格来说明:
在这里插入图片描述

Linux安装模式下,磁盘的选择

目录树结构

目录树结构是以根目录为主,向下呈现分支状的目录结构的文件架构。
根目录表示方法是“/”
在这里插入图片描述

那么如何结合目录树结构核磁盘数据吗?就是挂载

文件系统与目录树的关系,挂载

挂载就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,就是说进入该目录就是读取该分区。
这个操作称为挂载,那个进入点的目录称为挂载点
根目录一定挂载在某个分区,其他的目录根据用户的需求挂载在不同的分区。
在这里插入图片描述
Windows也是用挂载的概念。鸟哥上课经常谈到的范例就是,当你拿U盘连接到你的Windows时,系统会检测到一个F盘,那你要读取U盘的数据,要去哪里?当然就去F盘。同样的这个U盘,当你拿到学校的Windows时,却显示的是H盘好了,那你要读取U盘的数据还是去F盘吗?当然不是,你会去H盘。这个“设备与磁盘分区对应的关系,就是 Windows概念下的挂载”。

发行版发行时,挂载和磁盘分区的规划

建议自定义安装。
建议以一个最大的分区/安装系统。
初次安装可以仅划分两个分区:/ 和 交换分区。

2.3 安装Linux前的规划

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

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

相关文章

解决SSH客户端远程连接CentOS7虚拟机时加载过慢问题

1、编辑 /etc/ssh/sshd_config 文件,将 useDNS 中的 yes 改为 no ,关闭UseDNS加速: vi /etc/ssh/sshd_config2、重启ssh服务: systemctl restart sshd

构建php环境、安装、依赖、nginx配置、ab压力测试命令、添加php-fpm为系统服务

目录 php简介 官网php安装包 选择下载稳定版本 (建议使用此版本,文章以此版本为例) 安装php解析环境 准备工作 安装依赖 zlib-devel 和 libxml2-devel包。 安装扩展工具库 安装 libmcrypt 安装 mhash 安装mcrypt 安装php 选项含…

【Linux】22. 线程控制

Linux线程控制 POSIX线程库 与线程有关的函数构成了一个完整的系列&#xff0c;绝大多数函数的名字都是以“pthread_”打头的 要使用这些函数库&#xff0c;要通过引入头文<pthread.h> 链接这些线程函数库时要使用编译器命令的“-lpthread”选项 线程创建 pthread_cr…

成都爱尔眼科蔡裕主任解说什么是近视性黄斑病变

近视性黄斑病变&#xff0c;属于黄斑病变的其中一种。 黄斑是眼内一个部位&#xff0c;它位于眼底的后极部&#xff0c;视网膜的中心部&#xff0c;管理着光、形、色。黄斑变性是指由于年龄、遗传、不良环境、慢性光损伤等各种因素的影响&#xff0c;使眼部视网膜处的黄斑发生…

kafka-主题创建(主题操作的命令)

文章目录 1、topic主题操作的命令1.1、创建一个3分区1副本的主题1.1.1、获取 kafka-topics.sh 的帮助信息1.1.2、副本因子设置不能超过集群中broker的数量1.1.3、创建一个3分区1副本的主题1.1.4、查看所有主题1.1.5、查看主题详细描述 1、topic主题操作的命令 kafka发送消息会存…

彩光赋能中国智造 极简光3.X助力“数智”转型

蒸汽时代、电气时代、信息时代三大工业革命后 互联网和智能制造主导的工业4.0时代来临 大数据、云计算、人工智能等新兴技术 对企业园区的网络架构、负载能力等 提出了新要求,也使得光纤较于传统铜缆 在距离、性能、延时上的优势日益凸显 基于此 围绕未来园区网建设的企…

【NumPy】深入了解NumPy的multiply函数:高效矩阵和数组乘法指南

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

positivessl泛域名证书500元13个月

随着创建网站的门槛变低&#xff0c;不论是个人用户还是企事业单位用户创建的域名网站也越来越多&#xff0c;怎么维护网络环境的安全成为了各个用户需要解决的问题。为了保护网站的数据安全&#xff0c;防止恶意攻击和数据泄露&#xff0c;大多数用户选择为域名网站安装数字证…

基于51单片机的直流电机调速设计

一.硬件方案 本系统采用STC89C51控制输出数据&#xff0c;由单片机IO口产生PWM信号&#xff0c;送到直流电机&#xff0c;直流电机通过测速电路将实时转速送回单片机&#xff0c;进行转速显示&#xff0c;从而实现对电机速度和转向的控制&#xff0c;达到直流电机调速的目的。…

excel 点击单元格的内容 跳转到其他sheet设置

如图点击1处跳转到2 按照如下图步骤操作即可

【机器学习聚类算法实战-5】机器学习聚类算法之DBSCAN聚类、K均值聚类算法、分层聚类和不同度量的聚集聚类实例分析

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

补环境——A股市场

补环境 吐环境 1.Proxy对象 Proxy对象由两个部分组成&#xff1a;target、handler target:目标对象 handler&#xff1a;是一个对象&#xff0c;声明了代理target的指定行为&#xff0c;支持的拦截操作&#xff0c;一共13种&#xff1a; get(target,propKey,receiver)&…

DataGrip使用ssh连接数据库的操作流程

1 选择数据源种类 2 配置ssh 3 填写host、port和认证方式 我选择的密码方式&#xff0c;也可选择其他方式连接&#xff1a; 本文由博客一文多发平台 OpenWrite 发布&#xff01;

内网安全--隧道技术-MSF上线本地

免责声明:本文仅做技术交流与学习... 不得不说,小白最近也是用上了viper,这里要特别感谢一下my bro 北岭敲键盘的荒漠猫 MSF--viper: --生成马子-->上线 --进入meterpreter. 1-查看路由,添加路由. 查看路由信息 : run autoroute -p run post/multi/manage/autoroute 添加…

PostgreSQL发展史

PostgreSQL是一个开源的对象-关系型数据库管理系统&#xff08;ORDBMS&#xff09;&#xff0c;其历史可以追溯到上世纪80年代。以下是对PostgreSQL发展史的深入解析&#xff1a; 1980年代&#xff1a;起源 1.Ingres 项目 1977年&#xff0c;Michael Stonebraker 和他的团队…

数字信号处理实验三:IIR数字滤波器设计及软件实现

一、实验目的 1. 掌握MATLAB中进行IIR模拟滤波器的设计的相关函数的应用&#xff1b; 2. 掌握MATLAB的工具箱中提供的常用IIR数字滤波器的设计函数的应用&#xff1b; 3.掌握MATLAB的工具箱中提供的模拟滤波器转数字滤波器的相关的设计函数的应用。 二、实验内容 本实验为…

INDICATOR 再c嵌入sql环境中的作用

在C语言嵌入SQL&#xff08;Embedded SQL&#xff09;的环境中&#xff0c;INDICATOR关键字用于处理数据库中的NULL值&#xff0c;以及管理与之相关联的宿主变量&#xff08;host variables&#xff09;。具体来说&#xff0c;它的作用主要体现在以下几个方面&#xff1a; NUL…

海外仓ERP系统:赋能海外仓,实现标准化管理

随着业务规模的不断发展和业务类型的复杂度逐渐提升&#xff0c;传统的海外仓管理模式已经很难适应现在的情况了。对海外仓企业来说&#xff0c;一套合适的海外仓管理erp系统可以起到很大的辅助作用。 不过很多小型海外仓企业会纠结于是同时选择企业erp系统和海外仓管理系统&a…

java的方法重写

重写的概述 重写是基于继承来说的&#xff0c;因为父类的方法需求不满足于子类&#xff0c;所以就要在进行方法重写&#xff0c;如果不知道继承是啥可以看我上一篇笔记 在这里用代码举个栗子 例如&#xff1a;我们定义了一个动物类代码如下&#xff1a; public class Animal…

地下停车场FM信号覆盖系统技术原理用与应用

随着我国城市化水平的快速推进与房地产的快速发展&#xff0c;城市停车场称为每栋建筑物的硬性配套建筑&#xff0c;尤其是商业综合体、医院、政府机关、机场、高铁站等场所出现了超大规模停车场&#xff0c;停放车辆可达数千辆&#xff0c;停车场的智能化与信息化水平也越来越…