<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>时雨小栈</title><description>Beautiful World, Beautiful Boy</description><link>https://blog.tokiame.cn/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>6.8.9</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>2026年3月31日 09:36:15</lastBuildDate><item><title>blog复活中</title><link>https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/blog%E5%A4%8D%E6%B4%BB%E4%B8%AD/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/blog%E5%A4%8D%E6%B4%BB%E4%B8%AD/</guid><pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;上一次更新Blog还是在上次。&lt;/p&gt;&lt;p&gt;我原有的博客部署在腾讯云COS上，框架采用的是Hexo，主题采用的是Butterfly。Butterfly在Hexo界算是一个家喻户晓的主题了，很多博主都在使用，并在其基础上进行魔改。本人非常喜欢Hexo+Butterfly这套组合，但奈何本人coding能力有限，加上博客年久失修，博客的运行速度逾发缓慢，最明显的感知是文章构建速度、页面访问速度的下降。即便我给图床和博客都套上了CDN，每次通过公网访问，页面都是龟速加载，折腾的兴致就这么一次次地被浇灭。&lt;/p&gt;&lt;p&gt;某一天，我随机点开了博客中的友链，走过好几个失联的站点后，偶然看到了一位曾经关注的博主使用Astro重新构建了自己的博客。经过一番搜罗，我决定：给自己的博客系统来一次换血！&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;更新过程&lt;a href=&quot;#更新过程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;第一步：换框架&lt;a href=&quot;#第一步换框架&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;环境准备&lt;a href=&quot;#环境准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;首先要准备好Node.js环境。Node.js的安装和源的配置这里就不多说了，网上的教程非常丰富。注意，根据官方文档介绍，Node.js必须使用 &lt;code&gt;v18.20.8&lt;/code&gt; 或 &lt;code&gt;v20.3.0&lt;/code&gt; 、 &lt;code&gt;v22.0.0&lt;/code&gt; 或更高版本,不支持 &lt;code&gt;v19&lt;/code&gt; 和 &lt;code&gt;v21&lt;/code&gt; 。&lt;/li&gt;
&lt;li&gt;使用npm安装pnpm。pnpm是一个优秀的包管理器，关于它的介绍可以 &lt;a href=&quot;https://pnpm.io/zh/&quot; target=&quot;_blank&quot;&gt;看这里&lt;/a&gt; 。
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pnpm&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;使用pnpm启动Astro安装向导
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pnpm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;create&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;astro@latest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
看到成功提示后，进入项目目录，就可以开始博客的开发了。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;选择主题&lt;a href=&quot;#选择主题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;和众多博客框架一样，Astro博客也有各式各样的主题。经过一番搜罗，我最终采用了 &lt;a href=&quot;https://docs-firefly.cuteleaf.cn/zh/&quot; target=&quot;_blank&quot;&gt;Firefly&lt;/a&gt; 这款主题（赞美流萤！）:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://github.com/CuteLeaf/Firefly/blob/master/docs/images/1.webp?raw=true&quot; alt=&quot;Firefly&quot; /&gt;&lt;figcaption&gt;Firefly&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Firefly主题的使用教程可以 &lt;a href=&quot;https://docs-firefly.cuteleaf.cn/zh/&quot; target=&quot;_blank&quot;&gt;看这里&lt;/a&gt;。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第二步：迁资源&lt;a href=&quot;#第二步迁资源&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;迁移文章和设定&lt;a href=&quot;#迁移文章和设定&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;原有的博客框架也是用Markdown作为文档的原始格式，加上文章数量较少，迁移起来还算简单。比较麻烦的是原博客系统的一些设定，例如博客名称、头像链接、友情链接等信息。手动进行迁移的话也不是不行，最多就是找配置文件的设置项比较费时间。但在如今AI横行的时代，为何不去体验一把AI Agent的魅力呢？&lt;/p&gt;&lt;p&gt;所以我出手了。（Powered by Codex）&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn//2026-03-30-11-51-28.png&quot; alt=&quot;2026-03-30-11-51-28&quot; /&gt;&lt;figcaption&gt;2026-03-30-11-51-28&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn//2026-03-30-11-52-13.png&quot; alt=&quot;2026-03-30-11-52-13&quot; /&gt;&lt;figcaption&gt;2026-03-30-11-52-13&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;整个过程用了大概5分钟，也就出门买杯奶茶的工夫吧。迁移完成后，新博客平台完美运行，没有任何报错，加载如丝般顺滑，漂亮得很呐：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;迁移前：&lt;/strong&gt;
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn//2026-03-30-12-00-45.png&quot; alt=&quot;2026-03-30-12-00-45&quot; /&gt;&lt;figcaption&gt;2026-03-30-12-00-45&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;迁移后：&lt;/strong&gt;
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn//2026-03-30-11-58-19.png&quot; alt=&quot;2026-03-30-11-58-19&quot; /&gt;&lt;figcaption&gt;2026-03-30-11-58-19&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;迁移存储桶&lt;a href=&quot;#迁移存储桶&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;原有存储桶是以博客名称来命名的，且子目录名称带有hexo字样。虽然说不影响博客使用，但既然已经迁移到Astro框架了，多多少少还是会有些奇怪。所以也一起换了。这里用的迁移方法比较简单粗暴，直接创建了一个新的桶，然后使用S3 Browser将旧桶的文件全部下载，然后上传到新的桶。&lt;/p&gt;&lt;p&gt;需要注意的是，由于2024年1月份腾讯云新增了存储桶域名访问的安全限制，因此无法再使用 path-style 域名访问存储桶：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn//2026-03-30-15-22-59.png&quot; alt=&quot;2026-03-30-15-22-59&quot; /&gt;&lt;figcaption&gt;2026-03-30-15-22-59&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;如果S3 Browser不进行任何设置，直接访问新建的存储桶将会出现以下错误：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn//2026-03-30-15-28-09.png&quot; alt=&quot;2026-03-30-15-28-09&quot; /&gt;&lt;figcaption&gt;2026-03-30-15-28-09&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;因此，使用S3 Browser访问存储桶时，需要将地址模式修改为 &lt;code&gt;virtual-hosted style&lt;/code&gt;：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn//2026-03-30-15-26-23.png&quot; alt=&quot;2026-03-30-15-26-23&quot; /&gt;&lt;figcaption&gt;2026-03-30-15-26-23&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;存储桶迁移完成后，套上CDN域名，设置好防盗链，就可以正常使用啦。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;更新图片链接&lt;a href=&quot;#更新图片链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;由于我做了存储桶迁移，加上CDN域名也进行了修改，因此所有涉及CDN的图片链接都需要进行更换。因为图片名称是不变的，所以这一步我直接使用sed命令对图片URL的前半段进行替换就OK了。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;写在最后&lt;a href=&quot;#写在最后&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;到这里博客已经迁移得七七八八了，还有一些细节后面继续慢慢调整。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>在ArchLinux中安装和使用PostgreSQL 17</title><link>https://blog.tokiame.cn/posts/%E6%9C%8D%E5%8A%A1%E5%99%A8/%E5%9C%A8archlinux%E4%B8%AD%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8postgresql17/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E6%9C%8D%E5%8A%A1%E5%99%A8/%E5%9C%A8archlinux%E4%B8%AD%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8postgresql17/</guid><pubDate>Thu, 16 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;输入以下命令查看软件源中是否包含postgresql：&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pacman&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-Si&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;postgresql&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2026-03-16-01-17-58.png&quot; alt=&quot;2026-03-16-01-17-58&quot; /&gt;&lt;figcaption&gt;2026-03-16-01-17-58&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;有！那就使用命令安装：&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pacman&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-S&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;postgresql&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;（习惯性-Syu）
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2026-03-16-01-18-28.png&quot; alt=&quot;2026-03-16-01-18-28&quot; /&gt;&lt;figcaption&gt;2026-03-16-01-18-28&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;设置postgresql服务开机自启：&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;enable&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;postgresql&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2026-03-16-01-31-33.png&quot; alt=&quot;2026-03-16-01-31-33&quot; /&gt;&lt;figcaption&gt;2026-03-16-01-31-33&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;初次启动postgresql服务需要先进行初始化。使用以下命令:&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;su&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;postgres&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-c&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;initdb --locale en_US.UTF-8 -E UTF8 -D &apos;/opt/database&apos;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;命令分解说明:&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;su - postgres：&lt;/strong&gt; 切换到 &lt;code&gt;postgres&lt;/code&gt; 系统用户（- 表示使用登录shell环境）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;-c “initdb …”：&lt;/strong&gt; 以 &lt;code&gt;postgres&lt;/code&gt; 用户身份执行引号内的命令。其中initdb为数据库的初始化命令，其参数含义如下：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;—locale en_US.UTF-8：&lt;/strong&gt; 设置数据库的本地化规则为美式英语，使用 &lt;code&gt;UTF-8&lt;/code&gt; 编码&lt;/p&gt;&lt;p&gt;&lt;strong&gt;-E UTF8：&lt;/strong&gt; 设置数据库的默认编码为 &lt;code&gt;UTF-8&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;-D ‘/opt/database’：&lt;/strong&gt; 指定数据库集群的存储目录为 &lt;code&gt;/opt/database&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;p&gt;当看到以下输出时，说明初始化已经完成了：&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2026-03-16-01-20-27.png&quot; alt=&quot;2026-03-16-01-20-27&quot; /&gt;&lt;figcaption&gt;2026-03-16-01-20-27&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;现在可以使用以下命令管理PostgreSQL服务了：&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;start&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;postgresql&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;status&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;postgresql&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2026-03-16-01-31-47.png&quot; alt=&quot;2026-03-16-01-31-47&quot; /&gt;&lt;figcaption&gt;2026-03-16-01-31-47&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;</content:encoded></item><item><title>Java基础1：基础语法</title><link>https://blog.tokiame.cn/posts/java%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%801%E5%9F%BA%E7%A1%80%E8%AF%AD%E6%B3%95/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/java%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%801%E5%9F%BA%E7%A1%80%E8%AF%AD%E6%B3%95/</guid><pubDate>Tue, 18 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;第一个Java程序&lt;a href=&quot;#第一个java程序&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;使用编辑器新建一个文件&lt;code&gt;Test.java&lt;/code&gt;；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在文件内编写以下代码，完成后保存：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Test&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt;[] &lt;/span&gt;&lt;span&gt;args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Hello World!&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在命令行输入&lt;code&gt;javac Test.java&lt;/code&gt;后回车，即可对代码进行编译。不出意外的话，编译完成后会在相同目录下生成一个文件：&lt;code&gt;Test.class&lt;/code&gt;；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在命令行输入&lt;code&gt;java Test&lt;/code&gt;后回车，即可运行程序。它将会正常输出结果：&lt;code&gt;Hello World!&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;基本概念和约定&lt;a href=&quot;#基本概念和约定&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;一个 Java 程序可以认为是一系列对象的集合，而这些对象通过调用彼此的方法来协同工作。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;基本概念：&lt;a href=&quot;#基本概念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;对象&lt;/strong&gt;：对象是类的一个实例，有状态和行为（例如：职工是一个对象，他有工号、岗位、姓名、性别等状态，有工作、吃饭、睡觉等行为）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类&lt;/strong&gt;：类是一个模板，它描述一类对象的行为和状态。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法&lt;/strong&gt;：方法就是行为，一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实例变量&lt;/strong&gt;：每个对象都有独特的实例变量，对象的状态由这些实例变量的值决定。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;约定&lt;a href=&quot;#约定&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;大小写敏感&lt;/strong&gt;：Java 是大小写敏感的，这就意味着标识符 Hello 与 hello 是不同的。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类名&lt;/strong&gt;：对于所有的类来说，类名的首字母应该大写。如果类名由若干单词组成，那么每个单词的首字母应该大写，例如 MyFirstJavaClass 。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法名&lt;/strong&gt;：所有的方法名都应该以小写字母开头。如果方法名含有若干单词，则后面的每个单词首字母大写。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;源文件名&lt;/strong&gt;：源文件名必须和类名相同。例如：源文件中&lt;code&gt;public&lt;/code&gt;类的类名是&lt;code&gt;Employee&lt;/code&gt;，那么源文件应该命名为&lt;code&gt;Employee.java&lt;/code&gt;（命名也同样遵循大小写敏感原则）；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主方法入口&lt;/strong&gt;：所有的 Java 程序都由&lt;code&gt;public static void main(String[] args)&lt;/code&gt;方法开始执行。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Java基础2：类与对象</title><link>https://blog.tokiame.cn/posts/java%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%802%E7%B1%BB%E4%B8%8E%E5%AF%B9%E8%B1%A1/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/java%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%802%E7%B1%BB%E4%B8%8E%E5%AF%B9%E8%B1%A1/</guid><pubDate>Tue, 18 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;内容回顾&lt;a href=&quot;#内容回顾&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;上一篇已经介绍过Java的基础语法和一些概念：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;对象&lt;/strong&gt;：对象是类的一个实例，有状态和行为（例如：职工是一个对象，他有工号、岗位、姓名、性别等状态，有工作、吃饭、睡觉等行为）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类&lt;/strong&gt;：类是一个模板，它描述一类对象的行为和状态。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;类&lt;a href=&quot;#类&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;我们来举个例子。有一位职工，它具有工号，岗位，姓名，年龄的属性（状态），以及工作、吃饭、睡觉等行为。这段描述，我们可以用代码表示为：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;* 职工类&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; jobNo&lt;/span&gt;&lt;span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;//工号&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt; job&lt;/span&gt;&lt;span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;//岗位&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt; name&lt;/span&gt;&lt;span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;//姓名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; age&lt;/span&gt;&lt;span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;//年龄&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* 工作行为&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;work&lt;/span&gt;&lt;span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* 吃行为&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;eat&lt;/span&gt;&lt;span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* 睡觉行为&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sleep&lt;/span&gt;&lt;span&gt;(){&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;构造方法&lt;a href=&quot;#构造方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;每个类都有构造方法。如果没有显式地为类定义构造方法，Java 编译器将会为该类提供一个默认构造方法。在创建一个对象的时候，至少要调用一个构造方法。构造方法的名称必须与类同名，一个类可以有多个构造方法。&lt;/p&gt;&lt;p&gt;下面是一个构造方法示例：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt;(){&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;// 这个构造器仅有一个参数：name&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;对象&lt;a href=&quot;#对象&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;对象是根据类来创建的。可以理解成，类是创建对象所需的模板。
在Java中，使用关键字 &lt;code&gt;new&lt;/code&gt; 来创建一个新的对象。创建对象需要以下三步：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;声明&lt;/strong&gt;：声明一个对象，包括对象名称和对象类型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实例化&lt;/strong&gt;：使用关键字 new 来创建一个对象。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;初始化&lt;/strong&gt;：使用 new 创建对象时，会调用构造方法初始化对象。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;我们使用一段代码来举例：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;//这个构造器仅有一个参数：name&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;* 职工姓名 : &quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; name &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;。&quot;&lt;/span&gt;&lt;span&gt; );&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt;[] &lt;/span&gt;&lt;span&gt;args&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;// 创建一个Employee对象&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;// 类名 对象名 = new 对象();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;newEmployee&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt;( &lt;/span&gt;&lt;span&gt;&quot;Asurin&quot;&lt;/span&gt;&lt;span&gt; );&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;编译运行将会得到以下结果：
&lt;code&gt;* 职工姓名：Asurin。&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;访问实例中的变量和方法&lt;a href=&quot;#访问实例中的变量和方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;我们可以通过已创建的对象，来访问成员变量和成员方法。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; jobNo&lt;/span&gt;&lt;span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;//工号&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt; job&lt;/span&gt;&lt;span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;//岗位&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; age&lt;/span&gt;&lt;span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;//年龄&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* Employee类的构造方法&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* &lt;/span&gt;&lt;span&gt;@param&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt; 姓名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;* 职工姓名为：&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; name);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* 方法：设置工号，以下同理&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* &lt;/span&gt;&lt;span&gt;@param&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;jobNo&lt;/span&gt;&lt;span&gt; 工号&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;setJobNo&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;jobNo&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;jobNo&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; jobNo;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;setJob&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;job&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;job&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; job;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;setAge&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;age&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;age&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; age;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;getInfo&lt;/span&gt;&lt;span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;* 工号：&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; jobNo &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;，岗位：&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; job &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;，年龄：&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;岁。&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt;[] &lt;/span&gt;&lt;span&gt;args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;newEmployee&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Asurin&quot;&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;//使用Employee类实例化一个对象newEmployee&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;newEmployee&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setJobNo&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;20200411&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;//调用成员方法setJobNo，设置工号，以下同理&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;newEmployee&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setAge&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;newEmployee&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setJob&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;运维工程师&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;newEmployee&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getInfo&lt;/span&gt;&lt;span&gt;(); &lt;/span&gt;&lt;span&gt;//调用成员方法getInfo，输出员工信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;编译运行后将会得到以下结果：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;* 职工姓名为：Asurin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;* 工号：20200411，岗位：运维工程师，年龄：24岁。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;Java包与import&lt;a href=&quot;#java包与import&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;开发 Java 程序时，可能需要大量的类，为了解决这个问题，Java 引入了包（package）机制，提供了类的多层命名空间，用于解决类的命名冲突、类文件管理等问题。
而为了让 Java 编译器能够使用某一个包内的成员，我们需要在 Java 程序中明确导入该包。使用 &lt;code&gt;import&lt;/code&gt; 语句可完成此功能。&lt;/p&gt;&lt;p&gt;使用包和import时需要注意：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;如果一个类定义在某个包中，那么 package 语句应该在源文件的最开头；&lt;/li&gt;
&lt;li&gt;如果源文件包含 import 语句，那么应该放在 package 语句和类定义之间。如果没有 package 语句，那么 import 语句应该在源文件的最开头。&lt;/li&gt;
&lt;li&gt;import 语句和 package 语句对源文件中定义的所有类都有效。在同一源文件中，不能给不同的类不同的包声明。&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;同样地，我们使用上面的代码来进行举例。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;在项目&lt;code&gt;src&lt;/code&gt;目录下中新建一个包，命名为&lt;code&gt;test&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;在项目&lt;code&gt;src&lt;/code&gt;目录下中新建一个类，命名为&lt;code&gt;run&lt;/code&gt;，并在文件开头指定要导入的类；&lt;/li&gt;
&lt;li&gt;将Employee类中的&lt;code&gt;main&lt;/code&gt;方法移入&lt;code&gt;run&lt;/code&gt;类中；&lt;/li&gt;
&lt;li&gt;将修改后的&lt;code&gt;Employee&lt;/code&gt;类移入test包内，并在文件开头声明所属的包名。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;修改后的目录结构如下：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-19-14-34-17.png&quot; alt=&quot;2022-10-19-14-34-17&quot; /&gt;&lt;figcaption&gt;2022-10-19-14-34-17&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Employee类：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;//声明所属包名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;package&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; jobNo&lt;/span&gt;&lt;span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;//工号&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt; job&lt;/span&gt;&lt;span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;//岗位&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; age&lt;/span&gt;&lt;span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;//年龄&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* Employee类的构造方法&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* &lt;/span&gt;&lt;span&gt;@param&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt; 姓名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;* 职工姓名为：&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; name);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* 设置工号&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* &lt;/span&gt;&lt;span&gt;@param&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;jobNo&lt;/span&gt;&lt;span&gt; 工号&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;setJobNo&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;jobNo&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;jobNo&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; jobNo;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;setJob&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;job&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;job&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; job;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;setAge&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;age&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;age&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; age;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;getInfo&lt;/span&gt;&lt;span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;* 工号：&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; jobNo &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;，岗位：&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; job &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;，年龄：&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; age &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;岁。&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;run类：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;//导入test包中的Employee类&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test.Employee&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt;[] &lt;/span&gt;&lt;span&gt;args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;newEmployee&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Asurin&quot;&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;//实例化一个对象newEmployee&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;newEmployee&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setJobNo&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;20200411&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;//调用成员方法setJobNo，设置工号，以下同理&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;newEmployee&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setAge&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;newEmployee&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setJob&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;运维工程师&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;newEmployee&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getInfo&lt;/span&gt;&lt;span&gt;(); &lt;/span&gt;&lt;span&gt;//调用成员方法getInfo，输出员工信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;修改后的&lt;code&gt;main&lt;/code&gt;方法位于&lt;code&gt;run&lt;/code&gt;类中，所以&lt;code&gt;run&lt;/code&gt;类自然成了主类，程序必须从&lt;code&gt;run&lt;/code&gt;类开始执行。编译运行后将会得到以下结果：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;* 职工姓名为：Asurin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;* 工号：20200411，岗位：运维工程师，年龄：24岁。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;可见，运行结果是一样的。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Java基础3：数据类型</title><link>https://blog.tokiame.cn/posts/java%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%803%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/java%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%803%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/</guid><pubDate>Tue, 18 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;什么是变量&lt;a href=&quot;#什么是变量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;变量就是内存中存储数据（值）的一小块空间。也就是说，当创建变量的时候，需要在内存中申请空间。
Java属于强类型语言，内存管理系统根据变量的类型来为变量分配存储空间，分配的空间只能用来储存相应类型的数据。&lt;/p&gt;&lt;p&gt;而在Java中，数据类型又分为两大类:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;内置数据类型&lt;/li&gt;
&lt;li&gt;引用数据类型&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;内置数据类型&lt;a href=&quot;#内置数据类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;byte&lt;a href=&quot;#byte&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;8位、有符号的，以二进制补码表示的整数；&lt;/li&gt;
&lt;li&gt;最小值是&lt;code&gt;-128&lt;/code&gt;（-2^7），最大值是&lt;code&gt;127&lt;/code&gt;（2^7-1）；&lt;/li&gt;
&lt;li&gt;默认值是&lt;code&gt;0&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;byte 类型用在大型数组中节约空间，主要代替整数，因为 byte 变量占用的空间只有 int 类型的四分之一；
例：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;byte&lt;/span&gt;&lt;span&gt; b &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;short&lt;a href=&quot;#short&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;16 位、有符号的以二进制补码表示的整数；&lt;/li&gt;
&lt;li&gt;最小值是&lt;code&gt;-32768&lt;/code&gt;（-2^15），最大值是&lt;code&gt;32767&lt;/code&gt;（2^15 - 1）；&lt;/li&gt;
&lt;li&gt;Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一；&lt;/li&gt;
&lt;li&gt;默认值是 0；
例：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;short&lt;/span&gt;&lt;span&gt; s &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;1000&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;short&lt;/span&gt;&lt;span&gt; r &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;/span&gt;&lt;span&gt;20000&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;int&lt;a href=&quot;#int&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;32位、有符号的以二进制补码表示的整数；&lt;/li&gt;
&lt;li&gt;最小值是&lt;code&gt;-2,147,483,648&lt;/code&gt;（-2^31），最大值是&lt;code&gt;2,147,483,647&lt;/code&gt;（2^31 - 1）；&lt;/li&gt;
&lt;li&gt;一般地整型变量默认为 int 类型；&lt;/li&gt;
&lt;li&gt;默认值是&lt;code&gt;0&lt;/code&gt;；
例：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;100000&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; b &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;/span&gt;&lt;span&gt;200000&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;long&lt;a href=&quot;#long&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;64 位、有符号的以二进制补码表示的整数；&lt;/li&gt;
&lt;li&gt;最小值是&lt;code&gt;-9,223,372,036,854,775,808&lt;/code&gt;（-2^63），最大值是&lt;code&gt;9,223,372,036,854,775,807&lt;/code&gt;（2^63 -1）；&lt;/li&gt;
&lt;li&gt;这种类型主要使用在需要比较大整数的系统上；&lt;/li&gt;
&lt;li&gt;默认值是&lt;code&gt;0L&lt;/code&gt;；
例：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;100000L&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt; b &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;/span&gt;&lt;span&gt;200000L&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;“L”理论上不分大小写，但是若写成”l”容易与数字”1”混淆，不容易分辩。所以最好大写。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;float&lt;a href=&quot;#float&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;单精度、32位、符合IEEE 754标准的浮点数；&lt;/li&gt;
&lt;li&gt;float 在储存大型浮点数组的时候可节省内存空间；&lt;/li&gt;
&lt;li&gt;默认值是 0.0f；&lt;/li&gt;
&lt;li&gt;浮点数不能用来表示精确的值，如货币；
例：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;float&lt;/span&gt;&lt;span&gt; f1 &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;234.5f&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;double&lt;a href=&quot;#double&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;双精度、64 位、符合 IEEE 754 标准的浮点数；&lt;/li&gt;
&lt;li&gt;浮点数的默认类型为 double 类型；&lt;/li&gt;
&lt;li&gt;double类型同样不能表示精确的值，如货币；&lt;/li&gt;
&lt;li&gt;默认值是 &lt;code&gt;0.0d&lt;/code&gt;；
例：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; d1 &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;7D&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; d2 &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;7.&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; d3 &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;8.0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; d4 &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;8.D&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; d5 &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;12.9867&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;7是一个int字面量，而7D，7.和8.0 是double字面量。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;boolean&lt;a href=&quot;#boolean&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;表示一位的信息；&lt;/li&gt;
&lt;li&gt;只有两个取值：&lt;code&gt;true&lt;/code&gt;和&lt;code&gt;false&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;这种类型只作为一种标志来记录 true/false 情况；&lt;/li&gt;
&lt;li&gt;默认值是&lt;code&gt;false&lt;/code&gt;；
例：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;boolean&lt;/span&gt;&lt;span&gt; one &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;char&lt;a href=&quot;#char&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;单一的 16 位 Unicode 字符；&lt;/li&gt;
&lt;li&gt;最小值是&lt;code&gt;\u0000&lt;/code&gt;（十进制等效值为 0），最大值是&lt;code&gt;\uffff&lt;/code&gt;（即 65535）；&lt;/li&gt;
&lt;li&gt;char数据类型可以储存任何字符；
例：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; letter &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&apos;A&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;引用类型&lt;a href=&quot;#引用类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;在Java中，引用类型指向一个对象，指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型，比如Employee。变量一旦声明后，类型就不能被改变了。
对象、数组都是引用数据类型，所有引用类型的默认值都是null，一个引用变量可以用来引用任何与之兼容的类型。
例：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt; newEmployee &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Employee&lt;/span&gt;&lt;span&gt;( &lt;/span&gt;&lt;span&gt;&quot;Asurin&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; )&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;常量&lt;a href=&quot;#常量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;常量在程序运行时是不能被修改的，再Java中，使用&lt;code&gt;final&lt;/code&gt;关键字来修饰常量，例：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;final&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt; NAME &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;Asurin&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;而为了提升常量的辨识度，一般建议使用大写字母表示常量。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;转义字符&lt;a href=&quot;#转义字符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;符号&lt;/th&gt;&lt;th&gt;字符含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;\n&lt;/td&gt;&lt;td&gt;换行 (0x0a)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\r&lt;/td&gt;&lt;td&gt;回车 (0x0d)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\f&lt;/td&gt;&lt;td&gt;换页符(0x0c)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\b&lt;/td&gt;&lt;td&gt;退格 (0x08)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\0&lt;/td&gt;&lt;td&gt;空字符 (0x0)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\s&lt;/td&gt;&lt;td&gt;空格 (0x20)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\t&lt;/td&gt;&lt;td&gt;制表符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;”&lt;/td&gt;&lt;td&gt;双引号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;’&lt;/td&gt;&lt;td&gt;单引号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\\&lt;/td&gt;&lt;td&gt;反斜杠&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\ddd&lt;/td&gt;&lt;td&gt;八进制字符 (ddd)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\uxxxx&lt;/td&gt;&lt;td&gt;16进制Unicode字符 (xxxx)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;</content:encoded></item><item><title>Twikoo私有化部署第二弹：进阶篇</title><link>https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/twikoo%E7%A7%81%E6%9C%89%E5%8C%96%E9%83%A8%E7%BD%B2%E7%AC%AC%E4%BA%8C%E5%BC%B9%E8%BF%9B%E9%98%B6%E7%AF%87/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/twikoo%E7%A7%81%E6%9C%89%E5%8C%96%E9%83%A8%E7%BD%B2%E7%AC%AC%E4%BA%8C%E5%BC%B9%E8%BF%9B%E9%98%B6%E7%AF%87/</guid><pubDate>Fri, 07 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;上一篇已经介绍过，我的Twikoo评论系统已经采用了私有化部署方式。但是存在一个问题，如果日后博客的访问量上升，评论内容增多，每次加载评论都需要从源站请求资源，会造成源站压力增大的问题，容易出现单点故障。&lt;/p&gt;&lt;p&gt;So，CDN派上用场了。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;操作步骤&lt;a href=&quot;#操作步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;CDN&lt;a href=&quot;#cdn&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;打开腾讯云CDN控制台，添加域名，加速域名为后续要使用的域名，加速类型为CDN网页小文件，开启IPv6访问（可选），源站类型为自有源、回源协议为http，源站地址为Twikoo后端所在的服务器地址（即服务器的域名。需要在DNS控制台添加一条A记录，指向服务器IP地址），端口为Twikoo后端服务使用的端口（默认是8080，可自行修改）：
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-07-11-29-46.png&quot; alt=&quot;2022-10-07-11-29-46&quot; /&gt;&lt;figcaption&gt;2022-10-07-11-29-46&lt;/figcaption&gt;&lt;/figure&gt;&lt;/li&gt;
&lt;li&gt;检查无误后点击确认添加，然后提交配置（推荐配置保持默认即可，后续有需要再慢慢细调）：
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-07-11-30-22.png&quot; alt=&quot;2022-10-07-11-30-22&quot; /&gt;&lt;figcaption&gt;2022-10-07-11-30-22&lt;/figcaption&gt;&lt;/figure&gt;&lt;/li&gt;
&lt;li&gt;最后一步是配置CNAME，点击一键配置，确定。
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-07-11-31-06.png&quot; alt=&quot;2022-10-07-11-31-06&quot; /&gt;&lt;figcaption&gt;2022-10-07-11-31-06&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-07-11-31-38.png&quot; alt=&quot;2022-10-07-11-31-38&quot; /&gt;&lt;figcaption&gt;2022-10-07-11-31-38&lt;/figcaption&gt;&lt;/figure&gt;
点击验证CNAME状态，显示已生效后，点击完成即可。
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-07-11-33-29.png&quot; alt=&quot;2022-10-07-11-33-29&quot; /&gt;&lt;figcaption&gt;2022-10-07-11-33-29&lt;/figcaption&gt;&lt;/figure&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;博客&lt;a href=&quot;#博客&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;修改&lt;code&gt;_config.butterfly.yml&lt;/code&gt;中的相关配置项即可：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;twikoo&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;envId&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;http://加速域名/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;region&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;#留空&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;visitor&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;option&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;#留空&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;修改完成后重新构建、推送。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;Debug&lt;a href=&quot;#debug&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;出现的问题&lt;a href=&quot;#出现的问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;后续使用中发现，评论区几乎不能正常使用，无法登录后台，无法发表评论。
so，来看看是啥问题。&lt;/p&gt;&lt;p&gt;F12打开浏览器控制台，点击网络，刷新博客页面，观察右侧标红的内容，点开他。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-07-10-55-56.jpg&quot; alt=&quot;2022-10-07-10-55-56&quot; /&gt;&lt;figcaption&gt;2022-10-07-10-55-56&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;博客使用的是https，但是Twikoo后端使用的是http。
恍然大悟，原来是跨域问题。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;解决方法&lt;a href=&quot;#解决方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在CDN控制台，点击你的Twikoo加速域名→HTTPS配置。配置好SSL证书，将HTTP2.0配置的开关打开，再打开强制跳转（可选）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-07-12-21-03.png&quot; alt=&quot;2022-10-07-12-21-03&quot; /&gt;&lt;figcaption&gt;2022-10-07-12-21-03&lt;/figcaption&gt;&lt;/figure&gt;
修改&lt;code&gt;_config.butterfly.yml&lt;/code&gt;中的相关配置项，把http改为https：&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;twikoo&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;envId&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;https://加速域名/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;region&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;#留空&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;visitor&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;option&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;#留空&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;修改完成后重新构建，稍等片刻等CDN生效后再推送，大功告成！
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-07-22-41-54.png&quot; alt=&quot;2022-10-07-22-41-54&quot; /&gt;&lt;figcaption&gt;2022-10-07-22-41-54&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Twikoo私有化部署第一弹：基础篇</title><link>https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/twikoo%E7%A7%81%E6%9C%89%E5%8C%96%E9%83%A8%E7%BD%B2%E7%AC%AC%E4%B8%80%E5%BC%B9%E5%9F%BA%E7%A1%80%E7%AF%87/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/twikoo%E7%A7%81%E6%9C%89%E5%8C%96%E9%83%A8%E7%BD%B2%E7%AC%AC%E4%B8%80%E5%BC%B9%E5%9F%BA%E7%A1%80%E7%AF%87/</guid><pubDate>Tue, 04 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;Twikoo不是支持云开发吗&lt;a href=&quot;#twikoo不是支持云开发吗&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;我肯定知道啊。
再看看云开发目前的收费方式：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-04-12-49-37.png&quot; alt=&quot;2022-10-04-12-49-37&quot; /&gt;&lt;figcaption&gt;2022-10-04-12-49-37&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;发生了什么事情呢？看这位博主就知道了（我不想说话）：&lt;a href=&quot;https://blog.zhheo.com/p/99d020fe.html&quot; target=&quot;_blank&quot;&gt;https://blog.zhheo.com/p/99d020fe.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;前段时间我忙不过来，然后腾讯直接把我的环境给干掉了。。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-04-20-06-37.png&quot; alt=&quot;2022-10-04-20-06-37&quot; /&gt;&lt;figcaption&gt;2022-10-04-20-06-37&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;虽说能恢复数据，但我觉得一个小小的评论区，评论条目也不多，还得花10几块钱月费才能继续恢复，真的没有必要了。&lt;/p&gt;&lt;p&gt;腾讯云，我劝你善良。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;另起炉灶&lt;a href=&quot;#另起炉灶&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;上有政策，下有对策。
Twikoo是支持多种方式部署的，刚好我有一台闲置的云主机，直接部署在上面就得了。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;环境介绍&lt;a href=&quot;#环境介绍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;操作系统：Windows Server 2012 R2&lt;/li&gt;
&lt;li&gt;软件：Node.js 16.17.1&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;后端部署&lt;a href=&quot;#后端部署&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;首先，从&lt;a href=&quot;https://nodejs.org/en/&quot; target=&quot;_blank&quot;&gt;官网&lt;/a&gt;下载好Node.js，安装（步骤过于简单，所以不写了）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-04-12-49-10.png&quot; alt=&quot;2022-10-04-12-49-10&quot; /&gt;&lt;figcaption&gt;2022-10-04-12-49-10&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开cmd，输入&lt;code&gt;npm i -g tkserver&lt;/code&gt;，安装Twikoo后端服务：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-04-12-49-03.png&quot; alt=&quot;2022-10-04-12-49-03&quot; /&gt;&lt;figcaption&gt;2022-10-04-12-49-03&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;输入&lt;code&gt;tkserver&lt;/code&gt;，启动Twikoo后端服务。浏览器输入&lt;code&gt;http://服务器IP地址:8080&lt;/code&gt;，如果出现这个提示，说明Twikoo已经正常运行：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-04-12-48-45.png&quot; alt=&quot;2022-10-04-12-48-45&quot; /&gt;&lt;figcaption&gt;2022-10-04-12-48-45&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-04-12-48-54.png&quot; alt=&quot;2022-10-04-12-48-54&quot; /&gt;&lt;figcaption&gt;2022-10-04-12-48-54&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;前端配置&lt;a href=&quot;#前端配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;我的博客是基于Hexo+Butterfly主题构建的。对于Butterfly主题，只需要修改&lt;code&gt;_config.butterfly.yml&lt;/code&gt;中的相关配置项即可：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;comments&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;use&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;Twikoo&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;twikoo&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;envId&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;http://你的服务器地址:8080/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;region&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;#留空&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;visitor&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;option&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;#留空&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;修改完成后重新构建，推送到COS即可。
对于其他主题，&lt;a href=&quot;https://twikoo.js.org/quick-start.html#%E5%9C%A8-hexo-%E4%B8%AD%E4%BD%BF%E7%94%A8&quot; target=&quot;_blank&quot;&gt;Twikoo官方文档&lt;/a&gt;也给出了相应的配置方法，自行了解即可。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;初始化设置&lt;a href=&quot;#初始化设置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;没啥好讲的其实。
在你的博客目录下打开命令行，输入&lt;code&gt;hexo server&lt;/code&gt;启动本地服务，浏览器访问&lt;code&gt;localhost:4000&lt;/code&gt;，不出意外的话评论区已经可以使用了，只需做一些初始配置即可。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-10-04-12-47-56.png&quot; alt=&quot;2022-10-04-12-47-56&quot; /&gt;&lt;figcaption&gt;2022-10-04-12-47-56&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>搬家：从云开发到COS</title><link>https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/%E6%90%AC%E5%AE%B6%E4%BB%8E%E4%BA%91%E5%BC%80%E5%8F%91%E5%88%B0cos/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/%E6%90%AC%E5%AE%B6%E4%BB%8E%E4%BA%91%E5%BC%80%E5%8F%91%E5%88%B0cos/</guid><pubDate>Tue, 04 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;时间久远已无法填坑（&lt;a href=&quot;#时间久远已无法填坑&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;/section&gt;</content:encoded></item><item><title>年度水文：解决了访问博客出现的403问题</title><link>https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/%E5%B9%B4%E5%BA%A6%E6%B0%B4%E6%96%87%E8%A7%A3%E5%86%B3%E4%BA%86%E8%AE%BF%E9%97%AE%E5%8D%9A%E5%AE%A2%E5%87%BA%E7%8E%B0%E7%9A%84403%E9%97%AE%E9%A2%98/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/%E5%B9%B4%E5%BA%A6%E6%B0%B4%E6%96%87%E8%A7%A3%E5%86%B3%E4%BA%86%E8%AE%BF%E9%97%AE%E5%8D%9A%E5%AE%A2%E5%87%BA%E7%8E%B0%E7%9A%84403%E9%97%AE%E9%A2%98/</guid><pubDate>Sun, 03 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;Long time no see
伙计们，我回来了&lt;/p&gt;&lt;/blockquote&gt;
&lt;section&gt;&lt;h1&gt;发现问题&lt;a href=&quot;#发现问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;去年Coding Pages下线后，我把博客托管在了云开发CloudBase上（有一说一，还挺方便的，连CDN配置都省了）。&lt;/p&gt;&lt;p&gt;部署完成后，发现部分博客文章打不开了，报403错误：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-07-02-17-41-03.png&quot; alt=&quot;2022-07-02-17-41-03&quot; /&gt;&lt;figcaption&gt;2022-07-02-17-41-03&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-07-02-17-42-20.png&quot; alt=&quot;2022-07-02-17-42-20&quot; /&gt;&lt;figcaption&gt;2022-07-02-17-42-20&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;然鹅很奇怪的是，早前博客部署在Github Pages、Coding Pages的时候，是没有这个问题的。在本地测试，也能正常打开：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-07-02-17-48-36.png&quot; alt=&quot;2022-07-02-17-48-36&quot; /&gt;&lt;figcaption&gt;2022-07-02-17-48-36&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;解决思路&lt;a href=&quot;#解决思路&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;只能怀疑是环境的问题了，毕竟在本地都能正常打开。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;检查问题文章中的图片链接，复制到浏览器后能正常打开，排除了图床的访问权限问题&lt;/li&gt;
&lt;li&gt;将问题文章和其他正常文章对比后发现，问题文章的源文件名、文章标题中都包含有“+”符号，会不会是这个造成的呢？&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;先从源文件名下手，将源文件重命名了一下，把“+”替换为“、”：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;更改前：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-07-02-18-00-20.png&quot; alt=&quot;2022-07-02-18-00-20&quot; /&gt;&lt;figcaption&gt;2022-07-02-18-00-20&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;更改后：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-07-02-18-01-33.png&quot; alt=&quot;2022-07-02-18-01-33&quot; /&gt;&lt;figcaption&gt;2022-07-02-18-01-33&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;随后将博客部署到CloudBase，小等1分钟后刷新，再次访问这篇文章，发现可以正常访问了：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2022-07-02-18-09-12.png&quot; alt=&quot;2022-07-02-18-09-12&quot; /&gt;&lt;figcaption&gt;2022-07-02-18-09-12&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;另一篇文章也采用相同方法进行操作。最后，问题全部解决。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>域名变更</title><link>https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/%E5%9F%9F%E5%90%8D%E5%8F%98%E6%9B%B4/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/%E5%9F%9F%E5%90%8D%E5%8F%98%E6%9B%B4/</guid><pubDate>Fri, 09 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;没错，域名又双叕换了！&lt;a href=&quot;#没错域名又双叕换了&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本blog正式用上新域名辣~&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://tokiame.cn&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;契机&lt;a href=&quot;#契机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;自从博客名改名时雨小栈以后，思来想去总感觉不对劲啊，unlinus.cn这域名和标题不符！于是就有了换域名的想法。&lt;/p&gt;&lt;p&gt;光是域名就想了大半天，后来决定使用“时雨”二字的日语罗马音——tokiame作为域名。上万网找了下，发现tokiame.com已经被人注册过了。虽说不打算将.com作为自己的一级域名，但是总感觉二级域tokiame和别人重名了，不爽（就是这么任性）。于是，我在tokiame后面加上了自己英文名的前三位asu，再综合自己的钱包情况（穷），注册了tokiame-asu.top（首年7块钱）。为什么一级域名是.top呢？因为真的不想被人whois查到我的信息（cn域名在阿里云那边搞不了whois隐藏，不知道是不是我的问题）&lt;/p&gt;&lt;p&gt;今年年初开始，我的博客一直托管在Github Page上，通过阿里云的CDN和OSS图床给博客加速，效果很不错。然而现在想换域名，问题来了，国内CDN都需要域名备案，而我已经接近大半年没用过阿里云的ECS了。因为备案域名需要绑定ECS、云存储网关之类的产品，或者绑定备案授权码（国内云服务商大多数都是这么操作）。直接跑去买ECS或者云产品来备案也不现实，因为云产品需要购买满三个月以上才能进行备案，三个月产生的费用对我来说未免太过昂贵。没办法，只能暂时放弃备案这个想法了。后来我找到一个伙计，白嫖了一台美国主机，把博客放在了上面。因为是国外主机，域名可以直接解析到国外主机的IP而不需要备案。blog.tokiame-asu.top就这样暂时在别处安家了。&lt;/p&gt;&lt;p&gt;更换域名后，我立马在友链主页上更新了自己的博客信息，并给友链上的伙伴发了更换域名申请。虽说网站域名换好了，但是网站的图床仍在使用unlinus.cn域名。思考片刻，还是决定搞个备案。因为阿里云的产品最近没什么优惠（我也不是新用户了），实在砸不了钱，而且tokiame-asu.top这域名，在阿里云注册未满60天又不能转出，在阿里云备案是行不通了。于是转战腾讯云，找到了云+校园（n年前买过云+校园，但是买了3次，每次都没及时续费，资格已经无了o(╥﹏╥)o）。新版套餐是25岁以下免学生认证，三个月27块钱，一年也才108，果断买（然后就只买了3个月，我是不是傻子）。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/202109082136194.png&quot; alt=&quot;image-20210908213653119&quot; /&gt;&lt;figcaption&gt;image-20210908213653119&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;云主机有了，但是域名还在阿里云，还要等一个多月才能转出域名（心急呗，老毛病了）。于是又买买买，注册了tokiame.cn域名（这次连-asu都不要了，重名就重名，大不了来跟我抢注tokiame二级域名呗，诶就是玩~）。为什么一级域名又换.cn呢？因为看上了腾讯云的隐私保护，可以隐藏Whois。&lt;/p&gt;&lt;p&gt;像以往一样，我提交了备案申请，看起来一切顺利。隔天，腾讯云打电话过来，要求之前备案的域名需要能访问，或者完全注销，才能提交新备案。然后我选了后者，一顿骚操作把unlinus.cn的备案给扬了（注销了网站，但没注销网站主体）。在工信部备案系统还能查到我的域名备案号，但是因为空壳主体的原因，需要提交主体注销申请或等工信部备案系统把我的主体信息删掉，才能进行新备案。又查了下网站主体注销申请的流程，要打印、填表、还要邮寄到省管局…我直接好家伙…&lt;/p&gt;&lt;p&gt;过了一天多，我在工信部备案系统又查了下原域名的备案号，发现已经查无此人（这么快，这不比申请注销主体更得劲么…）&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-09-08-21-33-52.png&quot; alt=&quot;2021-09-08-21-33-52&quot; /&gt;&lt;figcaption&gt;2021-09-08-21-33-52&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;结束语&lt;a href=&quot;#结束语&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;今天工信部发消息告知，备案申请申请已经通过，接下来又是漫长的迁移过程（幸亏已经提前准备好迁移了）…&lt;/p&gt;&lt;p&gt;这篇文章也算是个踩坑记录吧，希望能帮到大家。&lt;/p&gt;&lt;p&gt;最后给大伙道个歉！换了好多次域名，网站还挂了好一段时间，I’m so sorry ~&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>欢迎新成员——红米AX5使用感受</title><link>https://blog.tokiame.cn/posts/%E4%B8%8A%E6%89%8B%E4%BD%93%E9%AA%8C/%E6%AC%A2%E8%BF%8E%E6%96%B0%E6%88%90%E5%91%98%E7%BA%A2%E7%B1%B3ax5%E4%BD%BF%E7%94%A8%E6%84%9F%E5%8F%97/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E4%B8%8A%E6%89%8B%E4%BD%93%E9%AA%8C/%E6%AC%A2%E8%BF%8E%E6%96%B0%E6%88%90%E5%91%98%E7%BA%A2%E7%B1%B3ax5%E4%BD%BF%E7%94%A8%E6%84%9F%E5%8F%97/</guid><pubDate>Thu, 08 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;家里的无线路由器是TP-Link的WDR6500千兆版，2018年初升级电信宽带买的（当时还是小白，在电信营业厅200多买的，巨坑！网上随便100多就能搞到 = =），到目前为止服役了3年多。最近实在是受不了了，要么信号不稳定，要么隔一堵墙就从5GHz掉到2.4GHz。还有相当麻烦的一点就是，距离WiFi太远时不能切换到2.4GHz，或者离WiFi近时不能自动切换回5Ghz。我也尝试过改变路由器的摆放位置，也设置过定时重启，无果。那么办法只有一个了——买买买！&lt;/p&gt;
&lt;section&gt;&lt;h1&gt;采购！&lt;a href=&quot;#采购&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;在买之前，首先考虑一下需求。由于家里宽带是电信的200M下行，百兆接口的产品显然会成为瓶颈，考虑到将来带宽升级的空间，千兆速率肯定是首选。另外一个要考虑的是无线的速率，早些年的Wifi5无线路由器，主流速率多数是2.4GHz 300M+5GHz 867M。其实这个速率放在我家的话，使用设备不多，重度使用的情况相对比较少，其实也基本够用。&lt;/p&gt;&lt;p&gt;讲真，无线信号的稳定性才是需要考虑的重点。因为对于对于家里的房屋构造来说，普通的路由器显然有点力不从心了：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-21-55-49.png&quot; alt=&quot;2021-07-07-21-55-49&quot; /&gt;&lt;figcaption&gt;2021-07-07-21-55-49&lt;/figcaption&gt;&lt;/figure&gt;
（内心OS：0.3米厚的墙，大量的柱子，辣鸡路由器，糟糕的摆放位置，简直绝配= =）&lt;p&gt;&lt;/p&gt;&lt;p&gt;去B站看了一圈&lt;a href=&quot;https://www.bilibili.com/video/BV1aA411v7jL?from=search&amp;amp;seid=8961385878318621997&quot; target=&quot;_blank&quot;&gt;大米评测&lt;/a&gt;，又去科普了一番，考虑家里的WiFi使用情况和我的钱包（哭了），决定搞2台红米AX5，采用Mesh组网。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;开箱！&lt;a href=&quot;#开箱&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;一口气买了两台：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-12-48.jpg&quot; alt=&quot;2021-07-07-22-12-48&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-12-48&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;包装还是挺不错的：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-13-57.jpg&quot; alt=&quot;2021-07-07-22-13-57&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-13-57&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;机身是白色的，顶面只有系统和网络指示灯。路由器上下两面全部镂空，散热简单粗暴。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-26-56.jpg&quot; alt=&quot;2021-07-07-22-26-56&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-26-56&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-23-36.png&quot; alt=&quot;2021-07-07-22-23-36&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-23-36&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;背面是1个电源插口、4个千兆网口（1个WAN+3个LAN）和1个重置按钮，平平无奇。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-25-47.jpg&quot; alt=&quot;2021-07-07-22-25-47&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-25-47&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;实测！&lt;a href=&quot;#实测&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;基本设置&lt;a href=&quot;#基本设置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;将两台AX5放在一起，将其中一台AX5（右边那台）的WAN口和旧路由器的LAN口连接，进行联网：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-34-00.jpg&quot; alt=&quot;2021-07-07-22-34-00&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-34-00&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;稍等片刻以后，用手机连接已经联网的AX5：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-37-52.png&quot; alt=&quot;2021-07-07-22-37-52&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-37-52&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;手机打开MiWifi，绑定路由器 进行设置：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-38-17.png&quot; alt=&quot;2021-07-07-22-38-17&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-38-17&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;点下一步。因为开头已经将AX5和旧的路由器连接好了，这里设置有限中继模式即可（该模式将路由器的WAN口作为LAN口使用）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-42-52.png&quot; alt=&quot;2021-07-07-22-42-52&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-42-52&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;设置WiFi的SSID，然后重新连接WiFi：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-43-40.png&quot; alt=&quot;2021-07-07-22-43-40&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-43-40&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Mesh组网（无线回程方式）&lt;a href=&quot;#mesh组网无线回程方式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在MiWifi中点“设备”→“Mesh网络设备”→“添加”，将另一台AX5作为子Mesh节点加入组网：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-46-14.png&quot; alt=&quot;2021-07-07-22-46-14&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-46-14&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-47-00.png&quot; alt=&quot;2021-07-07-22-47-00&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-47-00&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;扩展Mesh网络大概需要1-2分钟。扩展完成以后，两台AX5将会使用相同的SSID。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-49-24.png&quot; alt=&quot;2021-07-07-22-49-24&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-49-24&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Mesh组网完成以后，将两台AX5分别放置在客厅和厨房，准备进行测试。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;简单测试&lt;a href=&quot;#简单测试&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;附上房屋平面图：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-58-13.png&quot; alt=&quot;2021-07-07-22-58-13&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-58-13&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;手机端测试软件用的是WiFi魔盒。先来看看2.4Ghz和5Ghz的信道情况：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-55-46.png&quot; alt=&quot;2021-07-07-22-55-46&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-55-46&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-22-55-59.png&quot; alt=&quot;2021-07-07-22-55-59&quot; /&gt;&lt;figcaption&gt;2021-07-07-22-55-59&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;拿着手机在各个房间区域走动，进行简单的漫游测试。其中，在从卧室到厨房走动的过程中，WiFi魔盒并未感知到WiFi漫游，但是从传输速率和延迟的变化，基本可以判定走动过程中确实发生了一次漫游：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-23-06-50.png&quot; alt=&quot;2021-07-07-23-06-50&quot; /&gt;&lt;figcaption&gt;2021-07-07-23-06-50&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-23-07-42.png&quot; alt=&quot;2021-07-07-23-07-42&quot; /&gt;&lt;figcaption&gt;2021-07-07-23-07-42&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;最后在全屋各个区域测试一下网速：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-07-07-23-09-25.png&quot; alt=&quot;2021-07-07-23-09-25&quot; /&gt;&lt;figcaption&gt;2021-07-07-23-09-25&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;小结&lt;a href=&quot;#小结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;测试结果还是挺不错的，WiFi漫游过程中基本能实现用户无感知。此外，虽然是采用无限回程的Mesh组网方式，但是终端的网速几乎不受影响，而且终端能够全程保持5GHz连接。后来又进行了一次测试，取消厨房的子Mesh节点，意外地发现网速依然能够保持在下行200M上行30M的水平，5GHz信号强度也比较高，估计得益于自带的独立信号放大器。这样看来，一个AX5也足够全屋5GHz覆盖了。从性价比角度来考虑的话，我觉得红米AX5是一个不错的选择。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;番外：Mesh组网和传统WDS无线桥接的区别？&lt;a href=&quot;#番外mesh组网和传统wds无线桥接的区别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;先说说漫游的概念。“在无线网络覆盖的范围里，用户有可能在移动中。但由于单个AP（无线访问接入点）设备的信号覆盖范围都是有限的，用户在移动过程中，往往会出现从一个AP覆盖范围跨越到另一个AP覆盖范围的情况。为了避免移动用户在不同的AP之间切换时，造成网络通讯中断的情况，这里就用到了无线漫游的技术。——摘自&lt;a href=&quot;https://baike.baidu.com/item/%E6%97%A0%E7%BA%BF%E6%BC%AB%E6%B8%B8/981630?fr=aladdin&quot; target=&quot;_blank&quot;&gt;百度百科&lt;/a&gt;”&lt;/p&gt;&lt;p&gt;传统路由器的WDS无线桥接使用一台或多台无线路由器和主路由进行桥接，对主路由的无线网络进行拓展（即中继），提升无线的覆盖范围。然而，手机、笔记本等无线终端并不能根据自身的无线质量来决定连接哪一个接入点。&lt;/p&gt;&lt;p&gt;Mesh组网与WDS无线桥接类似，但是它支持802.11 k/v/r协议。k用于收集终端的网络质量等信息，决定终端是否进行漫游，v用于请求终端进行无线漫游，r用于缩短无线漫游时间。有了802.11k/v/r，终端就能在不同的接入点之间，切换到网络质量更佳的接入点，而且全程不需要手动操作，提升用户体验。&lt;/p&gt;&lt;p&gt;举个栗子，假设AB两台路由器采用WDS无线桥接的话，张三手机连上了A路由，但是当张三离A路由越来越远、离B路由越来越近的时候，他的手机仍然连着A路由，但WiFi已经只有1格信号了，手机死活不肯连接B路由。他只能重新打开Wifi，才能连上B路由（就算两台路由器使用相同SSID也无济于事）。而AB两台路由器使用Mesh组网的话，张三手机连上了A路由，当张三离A路由越来越远、离B路由越来越近的时候，通过802.11k/v/r协议，张三手机将会快速从A路由切换到B路由，无需手动操作。&lt;/p&gt;&lt;p&gt;为了让平民百姓也能看得懂，这里使用了比较口语化的方式来进行说明，勿抬杠谢谢~&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>使用Diskpart优雅地管理你的磁盘分区</title><link>https://blog.tokiame.cn/posts/%E6%9C%8D%E5%8A%A1%E5%99%A8/%E4%BD%BF%E7%94%A8diskpart%E4%BC%98%E9%9B%85%E5%9C%B0%E7%AE%A1%E7%90%86%E4%BD%A0%E7%9A%84%E7%A3%81%E7%9B%98%E5%88%86%E5%8C%BA/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E6%9C%8D%E5%8A%A1%E5%99%A8/%E4%BD%BF%E7%94%A8diskpart%E4%BC%98%E9%9B%85%E5%9C%B0%E7%AE%A1%E7%90%86%E4%BD%A0%E7%9A%84%E7%A3%81%E7%9B%98%E5%88%86%E5%8C%BA/</guid><pubDate>Fri, 28 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;强迫症（OCD）属于焦虑障碍的一种类型，是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病，其特点为有意识的强迫和反强迫并存，一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。患者虽体验到这些想法或冲动是来源于自身，极力抵抗，但始终无法控制，二者强烈的冲突使其感到巨大的焦虑和痛苦，影响学习工作、人际交往甚至生活起居。
我们每次在虚拟机上安装Windows，设置Windows安装位置的时候，都会提示“Windows可能要为系统文件创建额外的分区”。这样安装的话会默认创建EFI（存放EFI引导文件）、MSR（保留分区）和主分区，强迫症表示非常不爽。撇开强迫症不说，如果需要扩展磁盘空间，有个MSR分区卡在中间的话，根本没法进行在线扩容，需要进入Windows PE利用分区软件来进行扩容，带来极大的不便。我们可以利用Windows安装镜像自带的Diskpart工具，亲手进行磁盘分区。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;操作过程&lt;a href=&quot;#操作过程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;环境介绍&lt;a href=&quot;#环境介绍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;系统镜像文件：Windows Server 2019镜像文件&lt;/li&gt;
&lt;li&gt;虚拟化平台：VMware vSphere 7.0u2&lt;/li&gt;
&lt;li&gt;一台能上网的破笔记本&lt;/li&gt;
&lt;li&gt;一位懂电脑并且会用vSphere的靓仔or靓女/滑稽&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;安装伊始&lt;a href=&quot;#安装伊始&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;照常创建虚拟机，挂载Windows安装镜像，一路来到Windows安装界面：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-05-27-18-16-22.png&quot; alt=&quot;2021-05-27-18-16-22&quot; /&gt;&lt;figcaption&gt;2021-05-27-18-16-22&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;点击下一步→修复计算机：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-05-27-19-00-45.png&quot; alt=&quot;2021-05-27-19-00-45&quot; /&gt;&lt;figcaption&gt;2021-05-27-19-00-45&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;依次点击疑难解答→命令提示符，进入命令行界面。没错，就是喜闻乐见的cmd：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-05-27-19-01-49.png&quot; alt=&quot;2021-05-27-19-01-49&quot; /&gt;&lt;figcaption&gt;2021-05-27-19-01-49&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-05-27-19-01-59.png&quot; alt=&quot;2021-05-27-19-01-59&quot; /&gt;&lt;figcaption&gt;2021-05-27-19-01-59&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;输入diskpart运行磁盘管理工具。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-05-27-19-04-10.png&quot; alt=&quot;2021-05-27-19-04-10&quot; /&gt;&lt;figcaption&gt;2021-05-27-19-04-10&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;diskpart提供了比较丰富的磁盘管理功能，可以实现磁盘的初始化、分区新建、格式化、删除等功能。如果不熟悉diskpart，可以输入&lt;code&gt;help&lt;/code&gt;显示帮助信息。&lt;/p&gt;&lt;p&gt;如图，使用&lt;code&gt;list disk&lt;/code&gt;列出所有磁盘，然后根据返回的信息，输入&lt;code&gt;select disk 0&lt;/code&gt;选中需要操作的磁盘:
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-05-27-19-08-31.png&quot; alt=&quot;2021-05-27-19-08-31&quot; /&gt;&lt;figcaption&gt;2021-05-27-19-08-31&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;由于采用UEFI引导方式，故需要将磁盘初始化为GPT格式&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DISKPART&amp;gt;convert gpt&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DiskPart 已将所选磁盘成功地转换为 GPT 格式。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;创建一个大小为512MB的EFI分区：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DISKPART&amp;gt;create partition efi size=512&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DiskPart 成功地创建了指定分区。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;再创建一个主分区，用于安装操作系统（如果不指定分区大小，将会使用所有剩余空间来创建分区）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DISKPART&amp;gt;create partition primary&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DiskPart 成功地创建了指定分区。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;输入&lt;code&gt;list partition&lt;/code&gt;，列出所有分区，确保无误：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-05-27-19-18-41.png&quot; alt=&quot;2021-05-27-19-18-41&quot; /&gt;&lt;figcaption&gt;2021-05-27-19-18-41&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;输入&lt;code&gt;exit&lt;/code&gt;退出Diskpart，然后输入&lt;code&gt;setup.exe&lt;/code&gt;，重新进入安装程序。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;后续步骤&lt;a href=&quot;#后续步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;像往常一样正常安装Windows即可。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-05-27-19-22-18.png&quot; alt=&quot;2021-05-27-19-22-18&quot; /&gt;&lt;figcaption&gt;2021-05-27-19-22-18&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;参考文章&lt;a href=&quot;#参考文章&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;a href=&quot;https://baike.baidu.com/item/diskpart/2340530?fr=aladdin#6&quot; target=&quot;_blank&quot;&gt;https://baike.baidu.com/item/diskpart/2340530?fr=aladdin#6&lt;/a&gt;
&lt;a href=&quot;https://www.jianshu.com/p/8d63abf6a2b1&quot; target=&quot;_blank&quot;&gt;https://www.jianshu.com/p/8d63abf6a2b1&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>P0-我的Linux之路</title><link>https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/p0-%E6%88%91%E7%9A%84linux%E4%B9%8B%E8%B7%AF/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/p0-%E6%88%91%E7%9A%84linux%E4%B9%8B%E8%B7%AF/</guid><pubDate>Fri, 26 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;掐指一算，接触Linux差不多有3年时间了，说不上精通，但也不能说对它感到陌生。回过头来细想了一下，似乎还没有针对Linux进行过系统化的学习。
So，这是我第一篇正经的Linux笔记。（水文章の警告/滑稽）&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;先闻其名&lt;a href=&quot;#先闻其名&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;第一次听说Linux这五个字母，是在我读初一的时候。
我姐大学毕业以后，寄回了一箱子的书。有一天我在收拾房间的时候，看到了这破箱子。我寻思，这箱子里会不会找到一些有意思的东西？然后便开始疯狂搜刮（老毛病了哈哈），找到了这本东西：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-03-26-15-08-51.jpg&quot; alt=&quot;2021-03-26-15-08-51&quot; /&gt;&lt;figcaption&gt;2021-03-26-15-08-51&lt;/figcaption&gt;&lt;/figure&gt;
（这书几乎改变了我未来的发展方向。从我读初中开始，到高中毕业，都会时不时拿出来翻）
某天在看着书的时候，偶然翻到了Linux部分。这部分对Linux的叙述，用了2页左右的文字，和几张平平无奇的黑白配图。后来专门去百度搜了一下Linux，除了知道Linux的作者是Linus、Linux是开源的以外，其他的感觉没什么吸引力，就没再继续研究。&lt;p&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;小试牛刀&lt;a href=&quot;#小试牛刀&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;读初二的时候，我认识了同桌，就叫他小威吧。他当时给我的印象是：啥都懂，经常聊到计算机这些东西（他说的什么黑苹果，IOS，我当时都不知道是什么玩意/尴尬），而且他还是个重度游戏玩家。有一次在跟他聊的时候，他提到了Linux——没错，就是如今大名鼎鼎的Linux发行版Ubuntu。不同的是，他所描述的Linux，有着比Windows更炫酷的图形界面，跟我书上看到的Linux截然不同。于是，我决定拿家里的破电脑试试。当时，家里电脑配置还是老掉牙的奔腾4+512MB内存，硬盘空间也只有可怜的80G（还是IDE接口的），安装Ubuntu可是一个不小的挑战。加上我当时还不太会重装系统，所以搁了很长时间都没去弄。&lt;/p&gt;&lt;p&gt;终于有一天，恰逢周末，又没什么作业，总算可以开搞了。我去Ubuntu官网下了一个wubi程序（Ubuntu在Windows下的一个辅助安装工具），然后花了半天时间一边百度，一边给硬盘分区，总算腾出了20G左右的空间来安装Ubuntu。设置好分区和用户名密码后，开始安装，然后安装又花了大半天时间，中途还失败了好多次。安装完重启后，终于如愿以偿看到了Linux的真容。这界面着实令我眼前一亮（当时没截图，随便在网上找了个同款的）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-03-26-16-48-44.png&quot; alt=&quot;2021-03-26-16-48-44&quot; /&gt;&lt;figcaption&gt;2021-03-26-16-48-44&lt;/figcaption&gt;&lt;/figure&gt;
然而好看归好看，后面操作的时候我懵了，怎么没网？还有，为啥这么卡！我点文件管理器，鼠标一直转圈圈。我点关机，然后系统硬是愣了半天。&lt;p&gt;&lt;/p&gt;&lt;p&gt;好吧我决定放弃了，然而接下来的事情才是最可怕的（搞不好等会又得招来一顿臭骂）。重启以后，系统默认进入了Ubuntu，Windows XP哪去了？后来又重启了一次，发现有个GRUB系统选单，Windows XP排在了最底下。我想，这菜单应该是可以改的，把Windows移到第一位不就好了？于是又去百度找修改方法，还把命令写了下来…于是就有了这张图：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-03-26-17-09-58.jpg&quot; alt=&quot;2021-03-26-17-09-58&quot; /&gt;&lt;figcaption&gt;2021-03-26-17-09-58&lt;/figcaption&gt;&lt;/figure&gt;
一顿操作猛如虎，到最后还是没能修改成功。无奈之下，只好把Ubuntu删掉了（步骤不太记得了，反正删也是删了老半天）。后来，我和小威聊的时候，他聊到了另一款Linux发行版Elementary OS（Ubuntu衍生版）。我又去试了一遍，然后再次以相同的结果告终，还差点把原系统给干掉。从那以后，我再也不想碰Linux了。&lt;p&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;四年后&lt;a href=&quot;#四年后&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;时间来到2017年，我读大一，选的专业是计算机网络。一次上课的时候，老师提到了Linux在服务器领域的应用，这让我想起了n年前的Linux经历。当时想了一下嗯，或许后面需要用到。于是，中午下课回到宿舍以后，我找了一个师兄分享的Linux镜像，拿到虚拟机上去装。安装过程都比较顺利，没过多久就安装成功了。然而我当看到黑屏白字的界面以后，心里犯嘀咕了：这他喵是Linux么，图形界面呢？后来去百度查了一下，原来是安装时勾选了最小化安装，默认不包含GUI组件，得手动安装。于是又开始百度百度，总算找到了安装GUI的命令。当时虚拟机还不是很会用，而且因为校园网的原因，虚拟网卡不能直接用桥接，所以虚拟网卡也折腾了很久。终于可以开始安装GUI了，我在虚拟机控制台上，一字一句地输入了这条命令（猜我用的是哪个Linux发行版/滑稽）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;yum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;groupinstall&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-y&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;GNOME Desktop&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;然而网速似乎不给力，下载过程非常慢。考虑到下午还得上课，于是我决定让电脑开着，然后爬上床睡觉去了。一觉醒来，发现安装并没有成功。又白忙活了…后来因为没时间，索性把虚拟机删了。就这样，Linux又一次被我抛弃了。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;再度拥抱&lt;a href=&quot;#再度拥抱&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;2018年，也就是大一下学期，我加入了本专业的工作室，从此打开了新世界的大门。一段时间以后，我发现自己对服务器部署、维护方面比较擅长，便决意往服务器领域去发展。我当时拿来练手的服务器是PowerEdge 2900——工作室最老、最吵、且唯一的一台服务器。奈何噪音实在太难顶（散热风扇可以比得上一台小型的涡轮发动机了），没玩多久就被我扔一边了。后来在师兄和值班老师的帮助下，我拿到了两台相对比较安静的服务器（没错又是PowerEdge 2900），终于可以大展身手了。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-03-26-21-58-57.jpg&quot; alt=&quot;2021-03-26-21-58-57&quot; /&gt;&lt;figcaption&gt;2021-03-26-21-58-57&lt;/figcaption&gt;&lt;/figure&gt;
机子刚到手的时候，我还是老样子，给他们装的Windows Server系统。有一天，我在网上看到了VMware ESXi，感觉这东西有点意思，就把服务器换成了ESXi。朋友告诉我，这玩意好像是做云计算用的。本来还想继续研究一番，临近暑假，工作室得断电，只好暂时跟服务器们道别了。一天，我在整理工作室资料的时候，看到了几份神秘的文件。我好奇地打开看了一下，原来是工作室私有云平台的部署文档。同时，还有一张配图，在我当时看起来相当的震撼：
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2021-03-26-22-56-00.jpg&quot; alt=&quot;2021-03-26-22-56-00&quot; /&gt;&lt;figcaption&gt;2021-03-26-22-56-00&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;我想把这个平台重新维护起来，于是我联系上了大师兄。然而答复比较令人失望，平台在工作室分家的时候已经全部拆解了。我决定从零开始部署这套平台。然而痛苦才刚刚开始。当时学习的是CentOS+OpenStack，本来看视频已经学得糊里糊涂了，加上没有Linux基础，学起来相当难受，简直就是摸滚带爬。过了大概两周多的时间，总算熬过了最艰难的阶段，Linux开始逐步上手。&lt;/p&gt;&lt;p&gt;从那时开始，每当需要部署什么服务的时候，我的首选操作系统不再是Windows Server，而是Linux。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;写在最后&lt;a href=&quot;#写在最后&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;服务器不需要漂亮的图形界面，不需要花里胡哨的功能，只需要具备最基本的功能、更低的系统资源消耗、更高的效率和稳定性。这些要求，Linux都完美地做到了。如今，Linux在云计算、大数据、嵌入式开发等领域得到了广泛应用。看到这里，你觉得还有不学习Linux的理由吗？&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>P5-存储虚拟化</title><link>https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/p5-%E5%AD%98%E5%82%A8%E8%99%9A%E6%8B%9F%E5%8C%96/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/p5-%E5%AD%98%E5%82%A8%E8%99%9A%E6%8B%9F%E5%8C%96/</guid><pubDate>Tue, 18 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;说到存储，可能大多数人首先想到的是硬盘、U盘，然而这些都只是冰山一角。在虚拟化领域，存储是以什么样的形式存在的呢？&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;存储介质：硬盘&lt;a href=&quot;#存储介质硬盘&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;存储介质种类繁多。在虚拟化领域，硬盘的使用非常广泛，下面会重点介绍硬盘的分类。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;根据接口进行划分&lt;a href=&quot;#根据接口进行划分&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;**IDE硬盘：**也称为并口硬盘、ATA硬盘，采用并行传输模式。然而线缆数量过多，难以实现高速率。理论上，提高工作频率可以使传输速率更高，但由于线缆数量多，提高工作频率会导致线路间产生串扰，传输距离变短。目前，这种硬盘已经不再生产，面临淘汰。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-23-21-06-00.png&quot; alt=&quot;2020-08-23-21-06-00&quot; /&gt;&lt;figcaption&gt;2020-08-23-21-06-00&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;**SATA硬盘：**也称为串口硬盘，采用串行传输方式，线缆数量少，容易达到较高的传输速率，且传输距离长。SATA硬盘采用了嵌入式时钟信号，能够同时对数据、传输指令进行检查，纠错能力强，可靠性高。SATA硬盘还支持热插拔，维护较为方便。目前，在消费级硬盘领域，SATA硬盘的使用非常广泛。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-23-21-06-20.png&quot; alt=&quot;2020-08-23-21-06-20&quot; /&gt;&lt;figcaption&gt;2020-08-23-21-06-20&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;**SAS硬盘：**即串行SCSI硬盘，采用SAS接口。SAS接口是向下兼容SATA接口的，但是和SATA接口不一样的是，它支持串行SCSI协议（SSP）、SCSI管理协议（SSP），且额外提供了冗余传输端口（位于供电接口和数据接口之间的补平部分），可以连接到备用的SAS控制器上，可靠性更高。目前还有一种采用SAS接口、SATA盘体的NL-SAS硬盘，转速较低，但价格比SAS硬盘稍低。SAS硬盘被广泛应用于高可靠性要求的领域，例如服务器。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-23-21-07-48.png&quot; alt=&quot;2020-08-23-21-07-48&quot; /&gt;&lt;figcaption&gt;2020-08-23-21-07-48&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;根据存储构造进行划分&lt;a href=&quot;#根据存储构造进行划分&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;**HDD：**Hard Disk Driver，即硬盘驱动器，存储单元采用的是机械结构（磁头+磁盘），通过电磁流改变磁盘极性，将数据写到磁盘上，读取数据时采用相反方式。自1973年IBM发明了硬盘以来，机械硬盘的核心结构部分始终没有脱离“温彻斯特”模式：在密封、固定并高速旋转的镀磁盘片的每个盘片上，磁头通过沿盘片径向移动进行数据读写操作。这种磁盘容易实现大容量，且价格较为低廉。缺点是读写速率较低，容易受到外力损坏，且功耗较大。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-23-20-54-30.png&quot; alt=&quot;2020-08-23-20-54-30&quot; /&gt;&lt;figcaption&gt;2020-08-23-20-54-30&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;**SSD：**Solid State Drive，即固态驱动器，存储单元采用的是电子结构（NAND Flash芯片），通过在芯片内部进行电子的充电、感应、擦除实现数据读写。SSD在持续写入、随机读写方面性能非常优秀。这种磁盘质量较轻，且功耗低、发热量小，几乎不存在物理损坏，且读写速率高。缺点是使用寿命有限，相对于机械硬盘，SSD价格更高。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-23-20-22-03.png&quot; alt=&quot;2020-08-23-20-22-03&quot; /&gt;&lt;figcaption&gt;2020-08-23-20-22-03&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;常见的三大存储类型&lt;a href=&quot;#常见的三大存储类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;NAS&lt;a href=&quot;#nas&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;NAS&lt;/strong&gt;即Network Attached Storage，网络附加存储，通过网络实现存储空间共享，以文件系统的形式将存储提供给主机使用。NAS为实现共享而生，部署方式简单，扩展性强，且传输距离长。然而其存储性能依赖于存储设备、网络带宽，性能相对较低；
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-23-21-01-45.png&quot; alt=&quot;2020-08-23-21-01-45&quot; /&gt;&lt;figcaption&gt;2020-08-23-21-01-45&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;DAS&lt;a href=&quot;#das&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;DAS&lt;/strong&gt;即Direct-attached Storage，直连式存储，与主机总线直连，如硬盘、U盘。这种存储的实现方式最简单，性能比NAS更优。缺点是对主机资源消耗较高，扩展性差（取决于主机存储接口数量），且传输距离有限，不利于共享；
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-23-21-04-51.png&quot; alt=&quot;2020-08-23-21-04-51&quot; /&gt;&lt;figcaption&gt;2020-08-23-21-04-51&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;SAN&lt;a href=&quot;#san&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;SAN&lt;/strong&gt;即Storage Area Network，存储区域网络。主机通过交换机和存储设备连接，建立存储网络，以块的形式将存储提供给主机使用。共享，支持距离长，性能高。缺点是构造比较复杂，造价昂贵，通常部署在企业、单位等对存储要求较高的环境。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-23-21-03-15.png&quot; alt=&quot;2020-08-23-21-03-15&quot; /&gt;&lt;figcaption&gt;2020-08-23-21-03-15&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;根据传输介质和传输协议的不同，SAN又分为IP SAN和FC SAN，下图是它们两者之间的区别：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-22-22-10-04.png&quot; alt=&quot;2020-08-22-22-10-04&quot; /&gt;&lt;figcaption&gt;2020-08-22-22-10-04&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;虚拟化存储基础&lt;a href=&quot;#虚拟化存储基础&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;磁盘基本概念&lt;a href=&quot;#磁盘基本概念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;**Pool：**存储池，可以看作一个容器，承载的是存储空间；
**Volume：**卷，是存储系统的内部管理对象，是对存储系统本身而言的；
**LUN：**逻辑单元号，可以直接映射给主机使用，是Volume对象的对外体现；&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;虚拟磁盘置备模式&lt;a href=&quot;#虚拟磁盘置备模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;**1. 普通延迟置零：**创建虚拟磁盘后分配空间但不置零，在VM需要对磁盘进行I/O操作时，对虚拟磁盘进行置零，即边写入边置零。这种磁盘性能适中，空间利用率较高，创建时间比较短，适用于一般业务的虚拟机；
**2. 普通：**创建虚拟磁盘后分配空间并进行置零。这种虚拟磁盘性能最佳，但创建时间也更长，适用于业务繁重、对磁盘I/O要求较高的虚拟机；
**3. 精简：**在创建虚拟磁盘后，不分配空间也不置零，在VM需要对磁盘进行I/O操作时对虚拟磁盘分配空间、写入数据并置零，即边分配空间边写入边置零。这种磁盘创建时间最短，空间利用率也高，但在虚拟机I/O操作频繁时性能较差，适用于对I/O要求较低的业务虚拟机。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;虚拟磁盘模式&lt;a href=&quot;#虚拟磁盘模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;**1. 从属：**快照中包含该从属磁盘。
**2. 独立-持久：**对数据的更改将立即永久写入磁盘。虚拟机创建快照时，不会对该磁盘的数据进行快照，因而不受快照影响。使用快照还原虚拟机时，也不会对该磁盘的数据进行还原。
**3. 独立-非持久：**虚拟机关闭电源或恢复快照后，对磁盘的更改将被丢弃。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;华为虚拟化中的存储模型&lt;a href=&quot;#华为虚拟化中的存储模型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;**存储资源：**指的是物理存储设备，表示存储的位置。例如SAN、NAS、FusionStorage、Advanced SAN；&lt;/li&gt;
&lt;li&gt;**存储设备：**指的是存储资源中管理单元，表示存储空间。例如LUN、共享目录、存储池、本地磁盘等；&lt;/li&gt;
&lt;li&gt;**数据存储：**一个可管理、可操作的逻辑管理单元，处于存储设备之上，与存储设备相对应，用于承载虚拟机业务。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>P4-揭秘FusionCompute的核心技术——Xen与KVM</title><link>https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/p4-%E6%8F%AD%E7%A7%98fusioncompute%E7%9A%84%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AFxen%E4%B8%8Ekvm/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/p4-%E6%8F%AD%E7%A7%98fusioncompute%E7%9A%84%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AFxen%E4%B8%8Ekvm/</guid><pubDate>Wed, 12 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Xen和KVM都是开源的虚拟化软件，同时它们也是FusionCompute所采用的底层架构。为了方便我们后续对FusionCompute的学习，有必要对Xen和KVM进行初步理解。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;Xen vs KVM&lt;a href=&quot;#xen-vs-kvm&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;Xen&lt;a href=&quot;#xen&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Xen的虚拟化架构如下：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-12-15-51-55.png&quot; alt=&quot;2020-08-12-15-51-55&quot; /&gt;&lt;figcaption&gt;2020-08-12-15-51-55&lt;/figcaption&gt;&lt;/figure&gt;
在Xen架构中，有两类虚拟机：Domain 0和Domain U。
**Domain 0：**属于控制域，是一台启动优先级最高、处于特权级别的虚拟机，用于对Domain U进行管理。全虚拟化场景下，Xen负责DomainU的CPU虚拟化和内存虚拟化，而Domain 0的后端驱动会主动捕获Domain U的I/O操作，通过硬件驱动去实现I/O虚拟化。而在半虚拟化场景下，Domain U的前端驱动可以主动将I/O请求发送给Domain 0的后端驱动，Domain 0通过硬件驱动直接访问硬件资源，实现I/O虚拟化。可以这么说，Domain 0全权负责Domian U的I/O虚拟化。
**Domain U：**普通的用户虚拟机&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;KVM&lt;a href=&quot;#kvm&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;KVM，全称Kernel-based Virtual Machine，意为“基于内核的虚拟机”。KVM的虚拟化架构如下：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-12-16-24-43.png&quot; alt=&quot;2020-08-12-16-24-43&quot; /&gt;&lt;figcaption&gt;2020-08-12-16-24-43&lt;/figcaption&gt;&lt;/figure&gt;
如今，QEMU-KVM一般都会统称为KVM，因为作者已经把QEMU集成到KVM模块中了。其中，QEMU是一个开源的纯虚拟化软件，运行在用户态，主要负责I/O虚拟化。而KVM是一个内核驱动模块，运行在内核态，负责虚拟机的CPU虚拟化和内存虚拟化。&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;KVM体系架构&lt;a href=&quot;#kvm体系架构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;下图是一个基本的KVM体系架构：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-12-16-53-27.png&quot; alt=&quot;2020-08-12-16-53-27&quot; /&gt;&lt;figcaption&gt;2020-08-12-16-53-27&lt;/figcaption&gt;&lt;/figure&gt;
其中，Libvirt是一个开源的API库，支持C、Python、Go、Java等编程语言。另外，它几乎支持所有主流的虚拟化环境，如VMware ESXi、KVM、Hyper-v、Xen等，在云计算解决方案中使用最为广泛。在KVM中，上层的管理工具都会通过Libvirt，对KVM虚拟化环境进行统一调度、分配。运行时，Libvirt作为一个守护进程驻留在系统后台。&lt;p&gt;&lt;/p&gt;&lt;section&gt;&lt;h2&gt;KVM的IO操作流程&lt;a href=&quot;#kvm的io操作流程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;全虚拟化（默认）&lt;a href=&quot;#全虚拟化默认&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-12-18-02-15.png&quot; alt=&quot;2020-08-12-18-02-15&quot; /&gt;&lt;figcaption&gt;2020-08-12-18-02-15&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;1-2：KVM主动捕获GuestOS的IO请求；&lt;/li&gt;
&lt;li&gt;3：KVM模块将GuestOS的IO请求发送到IO共享页，并通知QEMU到IO共享页读取；&lt;/li&gt;
&lt;li&gt;4：QEMU收到通知，并从IO共享页读取GuestOS的IO请求；&lt;/li&gt;
&lt;li&gt;5-6：QEMU通过设备驱动，将IO请求交由硬件进行模拟执行；&lt;/li&gt;
&lt;li&gt;7：执行完毕后，QEMU将IO执行结果返回到到IO共享页，并通知KVM模块到IO共享页进行读取；&lt;/li&gt;
&lt;li&gt;8：KVM模块收到通知，并从IO共享页读取GuestOS的IO操作结果；&lt;/li&gt;
&lt;li&gt;9-10：KVM模块将IO操作结果返回给GuestOS。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;缺点：采用同步机制，GuestOS需要主动等待KVM模块将IO共享页中的IO操作结果返回以后，才能继续发送下一条IO操作（即阻塞），性能差。&lt;/strong&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;半虚拟化（使用virtio驱动）&lt;a href=&quot;#半虚拟化使用virtio驱动&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-12-18-02-32.png&quot; alt=&quot;2020-08-12-18-02-32&quot; /&gt;&lt;figcaption&gt;2020-08-12-18-02-32&lt;/figcaption&gt;&lt;/figure&gt;
&lt;strong&gt;特点：前端驱动部署在GuestOS上，后端驱动部署在QEMU上。&lt;/strong&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;1-2：GuestOS主动将IO请求通过virtio前端驱动发送到virtio-ring（virtio的IO共享环），并通知QEMU到virtio-ring进行捕获；&lt;/li&gt;
&lt;li&gt;3：QEMU收到通知，并通过virtio后端驱动从virtio-ring读取GuestOS的IO请求；&lt;/li&gt;
&lt;li&gt;4-5：QEMU通过设备驱动，将IO请求交由硬件进行模拟执行；&lt;/li&gt;
&lt;li&gt;6：执行完毕后，QEMU将IO执行结果返回到virtio-ring，并通知KVM模块到virtio-ring进行读取；&lt;/li&gt;
&lt;li&gt;7：KVM模块收到通知，并从virtio-ring读取GuestOS的IO操作结果；&lt;/li&gt;
&lt;li&gt;8：KVM模块将IO操作结果返回给GuestOS。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;特点：采用异步机制，GuestOS将IO请求批量发送到virtio-ring而无需等待，供QEMU的virtio后端驱动批量读取执行，而GuestOS无需等待执行可以批量从virtio-ring中读取IO操作结果（非阻塞），大幅提升了性能。&lt;/strong&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>P3-计算虚拟化</title><link>https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/p3-%E8%AE%A1%E7%AE%97%E8%99%9A%E6%8B%9F%E5%8C%96/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/p3-%E8%AE%A1%E7%AE%97%E8%99%9A%E6%8B%9F%E5%8C%96/</guid><pubDate>Thu, 06 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本文将会在P2的基础上，对云计算中的重要组成部分——计算虚拟化，进行介绍。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;计算虚拟化概述&lt;a href=&quot;#计算虚拟化概述&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;定义：计算虚拟化通过虚拟化软件层（即Hypervisor或VMM），将物理服务器的硬件资源与上层应用进行解耦，形成统一的资源池，将资源弹性分配给逻辑隔离的虚拟机共享使用。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;CPU虚拟化&lt;a href=&quot;#cpu虚拟化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;CPU特权级别&lt;a href=&quot;#cpu特权级别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在我们的计算机系统中，CPU被划分为几个特权级别，每个级别我们称之为Ring。通过划分Ring级别，可以对CPU进行访问控制。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-11-16-35-25.png&quot; alt=&quot;2020-08-11-16-35-25&quot; /&gt;&lt;figcaption&gt;2020-08-11-16-35-25&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;**Ring0：**OS内核，处于特权指令级别，安全等级最高，一般只有操作系统才能执行，是内核态；&lt;/li&gt;
&lt;li&gt;**Ring1/2：**一般驱动程序，处于非特权指令级别；&lt;/li&gt;
&lt;li&gt;**Ring3：**应用程序，处于非特权指令级别，是用户态；&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;CPU指令&lt;a href=&quot;#cpu指令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;说到特权级别，不得不提的一点是CPU指令。CPU指令即指挥机器工作的指示和命令，程序就是一系列按一定顺序排列的指令，执行程序的过程就是计算机的工作过程，而指令集就是CPU中用来计算和控制计算机系统的一套指令的集合。目前，CPU指令集分为两大阵营：&lt;a href=&quot;https://baike.baidu.com/item/%E7%B2%BE%E7%AE%80%E6%8C%87%E4%BB%A4%E9%9B%86%E8%AE%A1%E7%AE%97%E6%9C%BA/661859?fromtitle=risc&amp;amp;fromid=62696&amp;amp;fr=aladdin&quot; target=&quot;_blank&quot;&gt;RISC指令集&lt;/a&gt;和&lt;a href=&quot;https://baike.baidu.com/item/%E5%A4%8D%E6%9D%82%E6%8C%87%E4%BB%A4%E9%9B%86%E8%AE%A1%E7%AE%97%E6%9C%BA/10307148?fromtitle=CISC&amp;amp;fromid=1189443&amp;amp;fr=aladdin&quot; target=&quot;_blank&quot;&gt;CISC指令集&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;根据权限划分的不同，CPU指令又分为以下几种：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-11-16-36-18.png&quot; alt=&quot;2020-08-11-16-36-18&quot; /&gt;&lt;figcaption&gt;2020-08-11-16-36-18&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;**特权指令：**可以对操作系统产生直接影响的指令，一般不直接提供给给用户使用，例如对系统资源进行管理与分配等；&lt;/li&gt;
&lt;li&gt;**非特权指令：**一般的用户指令，不会对操作系统产生直接影响；&lt;/li&gt;
&lt;li&gt;**敏感指令：**指的是操作特权资源的指令，如读写时钟、控制中断、修改内存页表、访问地址重定位系统，以及所有IO指令。个人觉得比较有意思的一点是，在RISC架构的主机中，所有敏感指令都属于特权指令，而在CISC架构中，敏感指令一部分属于特权指令，另一部分属于非特权指令。这将直接影响到虚拟化架构的划分。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;CPU虚拟化实现方式&lt;a href=&quot;#cpu虚拟化实现方式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;CPU虚拟化历史、架构&lt;a href=&quot;#cpu虚拟化历史架构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;20世纪60年代中期，IBM在自家的大型机上实现了虚拟化技术，主要针对的是自家采用RISC架构的Power系列处理器。虚拟化后，GuestOS会运行在Ring1级别，我们称之为特权解除。此时，GuestOS并不知道自己运行于Hypervisor上，他认为自己是运行在真实硬件上的。所以GuestOS和HostOS一样，是可以在不经过Hypervisor的情况下，将非特权指令直接交由CPU执行的。那么特权指令呢？对于特权指令，Hypervisor会对它进行Trap→模拟后，再交由CPU执行。举个栗子，GuestOS执行了一条特权指令——关机，这条特权指令是敏感指令。Hypervisor捕获到了这条特权敏感指令以后，采取中断→Trap→模拟动作，实际上GuestOS关闭的是它虚拟机本身，而不会是物理主机，这样就保证了物理主机的安全性。&lt;/p&gt;&lt;p&gt;而对于CISC架构的主机来说，RISC的虚拟化方式可能会带来一场灾难，为什么呢？我们知道，在CISC架构里面，敏感指令有一部分是特权指令，另一部分是非特权指令。也就是说，CISC的非特权指令里面，包含有敏感指令。再举个栗子，某天GuestOS执行了一条非特权指令——kill掉一个进程，这条指令是敏感指令，将会直接交给CPU执行。如果这条指令kill掉的是Hypervisor的关键进程，Hypervisor因此宕掉，就会影响到上层的虚拟机。想象一下，生产环境中的Hypervisor出现问题，导致Hypervisor上的所有的业务虚拟机受到牵连，导致业务中断，岂不是会造成重大的损失？&lt;/p&gt;&lt;p&gt;针对以上问题，1999年，VMware推出了针对x86架构主机的虚拟化技术，即全虚拟化方案。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;全虚拟化&lt;a href=&quot;#全虚拟化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;全虚拟化场景下，Hypervisor会主动扫描、捕获、翻译来自GuestOS的所有二进制代码，这个过程我们称之为二进制翻译（BT，Binary Translation）。当发现敏感指令和特权指令时，对指令进行二进制翻译后再交由CPU安全执行。然而，这种频繁的动作会加重Hypervisor的工作负担，消耗大量资源，导致性能下降，这是全虚拟化的一大短板。全虚拟化的代表性产品是VMware ESXi、KVM。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;半虚拟化（准虚拟化）&lt;a href=&quot;#半虚拟化准虚拟化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;半虚拟化场景下，通过修改GuestOS，令GuestOS得知自己正处于Hypervisor之上。修改后的GuestOS会主动将非特权指令中的敏感指令进行替换,使敏感指令只能够作用于其虚拟机本身，从而防止对HostOS造成影响。此外，GuestOS还会通过Hypercall接口，主动将特权指令发送给Hypervisor，让Hypervisor对来自GuestOS的特权指令进行Trap→模拟后，交由CPU执行。半虚拟化大大减轻了Hypervisor的压力，相比于全虚拟化，半虚拟化性能更高。修改GuestOS的方法通常是在GuestOS中安装半虚拟化驱动。例如，VMware ESXi在GuestOS中部署VMtools、Citrix Xen在GuestOS中部署PV Drivers、QEMU-KVM通过安装virtio驱动，实现半虚拟化。QEMU-KVM半虚拟化会在后续的文章重点介绍。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-11-18-50-17.png&quot; alt=&quot;2020-08-11-18-50-17&quot; /&gt;&lt;figcaption&gt;2020-08-11-18-50-17&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;硬件辅助虚拟化&lt;a href=&quot;#硬件辅助虚拟化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;目前，硬件辅助虚拟化分为两大阵营：Intel VT-x和AMD-v（SVM），均受到主流的虚拟化产品的支持。
以Intel VT-x为例，在硬件辅助虚拟化中，CPU被划分为root（根）模式和none root（非根）模式。虚拟化后，Ring0~3处于none root模式，而Hypervisor处于root模式。也就是说，GuestOS会运行在Ring0级别，这意味着GuestOS执行特权指令时，无需再经过Hypervisor的Hypercall接口进行Trap→模拟。而此时，由于采用了硬件辅助虚拟化技术，CPU能够明确区分来自GuestOS的特权指令和非特权指令，当CPU捕获到来自GuestOS的特权指令和敏感指令时，通过VMCALL调用Hypervisor，Hypervisor令GuestOS自动挂起并切换到Root模式，通过CPU执行特权指令和敏感指令，该过程叫VM Exit。为了让GuestOS执行非特权指令（不包含敏感指令），Hypervisor可以调用VMLaunch或VMResume指令切换到Non-root模式，将GuestOS的指令交由CPU执行，该过程叫VM Entry。AMD-v（SVM）提供的硬件辅助虚拟化功能与Intel VT-x大多相似，但是名称上可能有所出入，此处不作过多介绍。
硬件辅助虚拟化既解决了全虚拟化的系统开销与性能损耗，也避免了半虚拟化下修改GuestOS的兼容性问题，进一步解放了GuestOS。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-11-18-49-47.png&quot; alt=&quot;2020-08-11-18-49-47&quot; /&gt;&lt;figcaption&gt;2020-08-11-18-49-47&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;内存虚拟化&lt;a href=&quot;#内存虚拟化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;术语和概念&lt;a href=&quot;#术语和概念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;**HPA（Host Physical Address）:**主机物理地址&lt;/li&gt;
&lt;li&gt;**HVA（Host Virtual Address）:**主机虚拟地址&lt;/li&gt;
&lt;li&gt;**GPA（Guest Physical Address）:**虚拟机物理地址&lt;/li&gt;
&lt;li&gt;**GVA（Guest Virtual Address）:**虚拟机虚拟地址&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;内存使用原则&lt;a href=&quot;#内存使用原则&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;内存使用时，必须遵循以下原则：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;使用内存的地址必定从0开始&lt;/li&gt;
&lt;li&gt;使用内存的地址必定是连续的&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;OS内核使用内存是从0开始的。一个应用进程使用内存时，也必须是从0开始的。但是多个应用进程需要使用内存时，而内存却只有一个地址0，怎么办呢？&lt;/p&gt;&lt;p&gt;其实，在一个OS里面，每个应用进程都有自己的一小段内存空间，即&lt;strong&gt;虚拟地址空间&lt;/strong&gt;，由OS内核维持。而应用进程所使用的内存地址，我们称之为&lt;strong&gt;HVA&lt;/strong&gt;。其与&lt;strong&gt;HPA&lt;/strong&gt;保持着映射关系，保证每个应用进程都能正常使用内存，如图：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-12-13-43-39.png&quot; alt=&quot;2020-08-12-13-43-39&quot; /&gt;&lt;figcaption&gt;2020-08-12-13-43-39&lt;/figcaption&gt;&lt;/figure&gt;
通过以上内容我们可以得出结论：一个OS需要使用内存，必须经过物理地址和虚拟地址。&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;内存虚拟化实现方式&lt;a href=&quot;#内存虚拟化实现方式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;和物理主机的OS一样，虚拟机的GuestOS需要使用内存，也必须经过物理地址和虚拟地址。而虚拟机的本质是HostOS上的一个进程，在虚拟化环境下，如何解决虚拟机的内存使用问题呢？&lt;/p&gt;&lt;p&gt;这个时候就需要Hypervisor的介入了。Hypervisor在虚拟机和主机之间引入了一层新的地址——&lt;strong&gt;GPA&lt;/strong&gt;。Hypervisor将主机非连续的地址映射成了连续的虚拟机物理地址，供虚拟机使用，从而满足了虚拟机使用内存的条件，如图：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-12-14-14-11.png&quot; alt=&quot;2020-08-12-14-14-11&quot; /&gt;&lt;figcaption&gt;2020-08-12-14-14-11&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;I/O虚拟化&lt;a href=&quot;#io虚拟化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;I/O指的是输入/输出设备，相信大家都知道吧！一般来说，我们的硬盘、网卡等设备都属于I/O设备。I/O虚拟化将会在下一篇文章重点介绍。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;IO模拟(IO全虚拟化)&lt;a href=&quot;#io模拟io全虚拟化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;完全使用Hypervisor来模拟虚拟机的I/O请求，由Hypervisor主动捕获虚拟机的IO操作，然后将捕获的IO操作转发给硬件。这种虚拟化方式不需要对OS和驱动程序进行修改，因此这种方式对于多种虚拟化技术的可移植性和兼容性比较好，但是需要在GuestOS和Hypervisor之间频繁进行交互，性能很差（例如模拟键盘鼠标等常用硬件，通过焦点捕获，焦点被哪个主机捕获就被哪个主机使用）；&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;IO半虚拟化&lt;a href=&quot;#io半虚拟化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在GuestOS中部署一个前端驱动（也就是上文所讲的半虚拟化驱动），通过前端驱动，将GuestOS的IO请求主动发送给Hypervisor的后端驱动，适用于硬盘和网卡,性能高；&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;IO-through&lt;a href=&quot;#io-through&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;IO设备直通，也就是裸设备映射，直接将物理设备（如硬盘、网卡等）分配给虚拟机，但是需要硬件支持（在Xen下由Dom0分配，但是访问使用直接使用,不经过Dom0，需要硬件支持）。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>P2-虚拟化技术概览</title><link>https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/p2-%E8%99%9A%E6%8B%9F%E5%8C%96%E6%8A%80%E6%9C%AF%E6%A6%82%E8%A7%88/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/p2-%E8%99%9A%E6%8B%9F%E5%8C%96%E6%8A%80%E6%9C%AF%E6%A6%82%E8%A7%88/</guid><pubDate>Wed, 05 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;上一篇文章已经介绍了云计算的一些基础概念，让我们对云计算有了一定的了解。那么，云计算中强大的功能从何而来？它又是如何实现的呢？&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;虚拟化技术&lt;a href=&quot;#虚拟化技术&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;最初印象&lt;a href=&quot;#最初印象&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在日常生活中，我们可能已经听说过，或者说已经在使用虚拟化技术了，下图是我们日常使用非常广泛的一个虚拟机软件：VMware Workstation：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-04-16-11-10.png&quot; alt=&quot;2020-08-04-16-11-10&quot; /&gt;&lt;figcaption&gt;2020-08-04-16-11-10&lt;/figcaption&gt;&lt;/figure&gt;
通俗的讲法就是，虚拟机可以在一台具备操作系统的物理机上，运行一台或多台和物理机一样具有操作系统的虚拟主机。这可能是我们最早对虚拟机的一个理解了。&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;虚拟化概念&lt;a href=&quot;#虚拟化概念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在虚拟化中，我们需要了解一些重要的概念以及专业术语：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-11-15-43-52.png&quot; alt=&quot;2020-08-11-15-43-52&quot; /&gt;&lt;figcaption&gt;2020-08-11-15-43-52&lt;/figcaption&gt;&lt;/figure&gt;
**OS：**操作系统
**Guest OS：**虚拟机操作系统
**Virtual Machine(VM)：**虚拟机
**Hypervisor：**虚拟化软件层/虚拟机监视器（也称VMM，Virtual Machine Monitor）
**Host OS：**运行在物理机之上的OS
&lt;strong&gt;Host Machine：&lt;/strong&gt;（主机）物理机&lt;p&gt;&lt;/p&gt;&lt;p&gt;在虚拟化中，OS必不可少。OS是Operating System的缩写，即操作系统。OS具有以下作用：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;接管硬件；&lt;/li&gt;
&lt;li&gt;调度和分配软硬件资源；&lt;/li&gt;
&lt;li&gt;为OS软件进行升级、补丁更新；&lt;/li&gt;
&lt;li&gt;对主机的生命周期进行管理；&lt;/li&gt;
&lt;li&gt;提供人机交互界面；&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;虚拟化特点&lt;a href=&quot;#虚拟化特点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-11-15-30-43.png&quot; alt=&quot;2020-08-11-15-30-43&quot; /&gt;&lt;figcaption&gt;2020-08-11-15-30-43&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;**分区：**通过虚拟化技术，对主机资源（计算、存储、网络）进行逻辑划分；&lt;/li&gt;
&lt;li&gt;**隔离：**虚拟化技术可以保证虚拟机跟虚拟机、虚拟机跟主机进行隔离。例如，某一台虚拟机宕机了或者进程未响应，并不会影响到主机或其他虚拟机的运行；&lt;/li&gt;
&lt;li&gt;**封装：**虚拟机可以封装为文件，以文件的形式存在，便于虚拟机在不同的主机之间迁移；&lt;/li&gt;
&lt;li&gt;**独立：**每个虚拟机都是独立个体；&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;虚拟化类型&lt;a href=&quot;#虚拟化类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;根据硬件和虚拟化层的层级关系，虚拟化类型分为以下几种。这里我们来简单介绍一下：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-08-11-15-17-51.png&quot; alt=&quot;2020-08-11-15-17-51&quot; /&gt;&lt;figcaption&gt;2020-08-11-15-17-51&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;I型&lt;/strong&gt;：裸金属型虚拟化，直接在硬件上部署Hypervisor，在Hypervisor上运行虚拟机。典型代表有VMware ESXi、Citrix Xen、Hyper-v、KVM、FusionCompute（基于KVM）。I型虚拟化尽可能地使用所有的硬件资源，减少不必要的性能损耗，运行较为稳定。缺点是实现方式较为复杂，需要针对硬件和系统内核进行开发。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;II型&lt;/strong&gt;：宿主型虚拟化（也可称为寄居虚拟化），在硬件上部署HostOS，在HostOS上部署相关的应用软件实现虚拟化，可以理解为将Hypervisor寄生于HostOS上而实现的虚拟化技术。典型代表有VMware Workstation、VirtualBox。II型虚拟化也是我们日常在Windows平台上使用最广泛的虚拟化类型之一。通常，II型虚拟化是针对OS进行开发的，缺点是额外性能开销大。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;操作系统虚拟化（应用级虚拟化）&lt;/strong&gt;：一般指的是容器技术，流行的代表有LXC、Docker等；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;混合虚拟化&lt;/strong&gt;：通过嵌入到系统内核的虚拟化驱动模块，来实现虚拟化，典型代表是KVM。华为FusionCompute就是一套底层基于KVM的虚拟化软件；&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;新手可能会觉得这篇文章非常枯燥无味，这个很正常，本人也是这么熬过来的。毕竟理论是实践的基础，在搞懂了虚拟化的概念后，后续学习将会变得更加顺利。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>P1-初识云计算</title><link>https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/p1-%E5%88%9D%E8%AF%86%E4%BA%91%E8%AE%A1%E7%AE%97/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/p1-%E5%88%9D%E8%AF%86%E4%BA%91%E8%AE%A1%E7%AE%97/</guid><pubDate>Fri, 10 Jul 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;云计算作为近几年发展非常迅速的技术，已经成为各大应用的一个基础。那什么是云计算呢？&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;初识云计算&lt;a href=&quot;#初识云计算&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;何为云计算？&lt;a href=&quot;#何为云计算&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;美国国家标准与技术研究院（NIST）对云计算作出了定义：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;云计算是一个模型，这个模型可以方便地按需访问一个可配置的计算资源（例如，网络、服务器、存储设备、应用程序以及服务）的公共集。这些资源可以被迅速供应并释放，使得管理资源的工作量、与服务提供商的交互量减小到最低限度。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;通俗来讲，“云”指的是提供资源的网络，而“计算”则指的是一台或多台性能强大的计算机提供的计算服务（包括各种功能、资源等）。云计算通过网络，将大量的计算资源聚合起来，使用软件进行智能化管理，形成计算资源池，并向广大用户提供计算服务。云计算并非是一种全新的技术，而是一种以互联网为中心的全新的网络应用概念。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;云计算的部署模式&lt;a href=&quot;#云计算的部署模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;云计算常见的部署模式分为三种，分别是公有云、私有云、混合云。公有云由第三方服务提供商建设，供用户使用；私有云由用户自行建设，即资源建设者=资源使用者；混合云则为私有云和公有云的混合体。而根据层级关系，云计算又分为多种服务模式，如下图：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-09-19-04-46.png&quot; alt=&quot;2020-07-09-19-04-46&quot; /&gt;&lt;figcaption&gt;2020-07-09-19-04-46&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;IaaS（Infrastructure as a Service，基础设施即服务）&lt;/strong&gt;，把IT基础设施作为服务提供给用户使用，典型代表为云服务器；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PaaS（Platform as a Service，平台即服务）&lt;/strong&gt;，把IT基础设施上的平台作为服务提供给用户使用,如阿里云的RDS云数据库等；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SaaS（Software as a Service，软件即服务）&lt;/strong&gt;，在IT基础设施的平台上部署应用软件，并将这些应用软件提供给用户使用。常见的SaaS产品有钉钉、企业微信、Office 365等。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;为何需要云计算？&lt;a href=&quot;#为何需要云计算&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;云计算具有以下几个明显优势：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;按需自助服务。&lt;/strong&gt; 用户可以按需调配计算资源，例如云服务器使用时长、存储空间大小、网络带宽等性能配置，无需人为与服务提供商进行交互；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;广泛的网络接入。&lt;/strong&gt; 用户可以通过智能手机、个人电脑等标准的客户端平台，通过网络访问并使用云计算资源。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;资源池化。&lt;/strong&gt; 云计算使用多租户模型，划分为众多的云资源池，并将资源池分布到多个地域。用户无需知晓资源的具体位置，即可使用云计算资源；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;快速弹性伸缩。&lt;/strong&gt; 根据用户需求，云计算资源能够被快速、灵活地分配、下发、动态调整、回收；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;服务可计量。&lt;/strong&gt; 云计算能够根据算法，自动调整、优化云资源（例如CPU、内存、磁盘、带宽等）的使用，并对云资源进行实时监控、记录，为服务提供商和用户提供透明的服务使用状况。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>使用Kickstart+PXE批量部署Linux操作系统.md</title><link>https://blog.tokiame.cn/posts/%E6%9C%8D%E5%8A%A1%E5%99%A8/%E4%BD%BF%E7%94%A8kickstartpxe%E6%89%B9%E9%87%8F%E9%83%A8%E7%BD%B2linux%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E6%9C%8D%E5%8A%A1%E5%99%A8/%E4%BD%BF%E7%94%A8kickstartpxe%E6%89%B9%E9%87%8F%E9%83%A8%E7%BD%B2linux%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/</guid><pubDate>Mon, 06 Jul 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;相信大家都知道该怎么去安装Linux操作系统了，无非是通过U盘、光驱来安装，家里有矿的伙计已经开始用服务器BMC的远程控制台来安装操作系统了。但是！如果在一个生产环境里面，有成百上千台服务器正等着你去部署操作系统，如果仍然采用以上的方法来部署操作系统，大量重复、繁琐且毫无技术可言的操作将会使你身心疲惫，甚至逐步起了杀心（别问我怎么知道的）。&lt;/p&gt;&lt;p&gt;都0202年了，你们还会用传统方法给生产环境来部署操作系统吗？&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;关于无人值守安装&lt;a href=&quot;#关于无人值守安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;无人值守安装(Unattended Setup)是指软件安装时无需任何用户干预，直接按默认或通过应答文件设置安装，这对于无特殊需求的用户或企业大批量部署安装操作系统及软件时非常方便。
——引自&lt;a href=&quot;https://baike.baidu.com/item/%E6%97%A0%E4%BA%BA%E5%80%BC%E5%AE%88%E5%AE%89%E8%A3%85/4253153?fr=aladdin&quot; target=&quot;_blank&quot;&gt;百度百科&lt;/a&gt;。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;以前用过Ghost版系统的童鞋应该会知道，在安装Windows时，几乎不需要我们去设置安装系统的各种参数，这其实也算是无人值守安装的一种了。而本文给大家介绍的无人值守安装，是针对一个拥有成百上千台服务器的生产环境而言的，具体介绍请继续往下看。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;所需技术&lt;a href=&quot;#所需技术&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;1. PXE&lt;/strong&gt;
PXE不是一种安装方式，而是一种引导的方式。计算机可以通过PXE，从网络进行操作系统引导。PXE需要配合TFTP和DHCP使用。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. DHCP&lt;/strong&gt;
DHCP相信大家都不陌生，它的作用是为网络上的每台主机动态分配可用的IP地址。在一个局域网内，两台计算机要实现文件传输，IP地址是必不可少的。这也就不难理解，为何在PXE安装中需要用到DHCP服务了。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. TFTP&lt;/strong&gt;
同样是文件传输协议，和FTP不一样的是，TFTP免去了用户认证等功能，基于UDP进行文件传输，且不支持交互。在PXE安装时，会自动加载PXE ROM中的TFTP客户端，从远程服务器获取所需的驱动和引导文件。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;开始部署&lt;a href=&quot;#开始部署&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;实验环境：&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;两台主机，一台作为Server，安装CentOS7；另一台作为Client，不安装操作系统；&lt;/li&gt;
&lt;li&gt;CentOS 7安装镜像；&lt;/li&gt;
&lt;li&gt;确保两台主机在同一网段，且&lt;strong&gt;必须保证该网段内没有其他DHCP服务器的干扰&lt;/strong&gt;！&lt;/li&gt;
&lt;/ol&gt;&lt;section&gt;&lt;h2&gt;安装配置DHCP服务&lt;a href=&quot;#安装配置dhcp服务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;安装DHCP服务：&lt;code&gt;yum install dhcp -y&lt;/code&gt;
编辑DHCP配置文件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;vim&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/dhcp/dhcpd.conf&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;allow&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;booting&lt;/span&gt;&lt;span&gt;;  &lt;/span&gt;&lt;span&gt;/*允许引导*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;allow&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bootp&lt;/span&gt;&lt;span&gt;;    &lt;/span&gt;&lt;span&gt;/*允许BOOTP协议，使局域网内没有操作系统的主机也能获取IP地址*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ddns-update-style&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;interim&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ignore&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;client-updates&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;subnet&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.100.0&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;netmask&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;255.255.255.0&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;声明一个子网网段&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;option&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;subnet-mask&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;255.255.255.0&lt;/span&gt;&lt;span&gt;;  &lt;/span&gt;&lt;span&gt;/*子网掩码*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;range&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;dynamic-bootp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.100.101&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;192.168.100.200&lt;/span&gt;&lt;span&gt;;    &lt;/span&gt;&lt;span&gt;/*IP地址分配范围*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;default-lease-time&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;21600&lt;/span&gt;&lt;span&gt;;      &lt;/span&gt;&lt;span&gt;/*默认地址租期*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;max-lease-time&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;43200&lt;/span&gt;&lt;span&gt;;      &lt;/span&gt;&lt;span&gt;/*最大地址租期*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;next-server&lt;/span&gt;&lt;span&gt;             &lt;/span&gt;&lt;span&gt;192.168.100.100&lt;/span&gt;&lt;span&gt;;    &lt;/span&gt;&lt;span&gt;/*指定一台PXE引导服务器*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;filename&lt;/span&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;&quot;pxelinux.0&quot;&lt;/span&gt;&lt;span&gt;;   &lt;/span&gt;&lt;span&gt;/*加载引导驱动文件pxelinux.0*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;PS：如果需要跨多个子网分配IP地址，则还需要为网卡添加相应的子网IP，否则DHCP服务器将无法启动！&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;安装FTP服务&lt;a href=&quot;#安装ftp服务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;文章将使用HTTP作为Linux操作系统的安装源。安装Apache：&lt;code&gt;yum install vsftpd -y&lt;/code&gt;&lt;/p&gt;&lt;p&gt;挂载CentOS7安装镜像到&lt;code&gt;/var/ftp/CentOS_7.2.1511&lt;/code&gt;目录下:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mkdir&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/ftp/CentOS_7.2.1511&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mount&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/dev/sr0&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/ftp/CentOS_7.2.1511&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;启动FTP服务,并设置为开机自启：&lt;code&gt;systemctl enable --now vsftpd&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;安装配置TFTP服务&lt;a href=&quot;#安装配置tftp服务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;安装DHCP服务：&lt;code&gt;yum install tftp-server xinetd -y&lt;/code&gt;
编辑TFTP配置文件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;vim&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/xinetd.d/tftp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;service&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tftp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;socket_type&lt;/span&gt;&lt;span&gt;             &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;dgram&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;protocol&lt;/span&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;udp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;wait&lt;/span&gt;&lt;span&gt;                    &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;yes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;user&lt;/span&gt;&lt;span&gt;                    &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;server&lt;/span&gt;&lt;span&gt;                  &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/usr/sbin/in.tftpd&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;server_args&lt;/span&gt;&lt;span&gt;             &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-s&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/lib/tftpboot&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;disable&lt;/span&gt;&lt;span&gt;                 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;no&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;默认为yes，此处改为no&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;per_source&lt;/span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;cps&lt;/span&gt;&lt;span&gt;                     &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;flags&lt;/span&gt;&lt;span&gt;                   &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;IPv4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;准备好引导所需文件&lt;a href=&quot;#准备好引导所需文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;SYSLinux&lt;a href=&quot;#syslinux&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;SYSLinux是一个用于提供引导加载的服务程序，此处我们只需用到它里面的引导文件。安装SYSLinux软件包：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;yum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;syslinux&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-y&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;将一些必备的引导文件复制到&lt;code&gt;/var/lib/tftpboot/&lt;/code&gt;目录下：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/ftp/CentOS_7.2.1511/syslinux/pxelinux.0&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/lib/tftpboot/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/ftp/CentOS_7.2.1511/images/pxeboot/{vmlinuz,initrd.img}&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/lib/tftpboot/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/ftp/CentOS_7.2.1511/isolinux/{vesamenu.c32,boot.msg}&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/lib/tftpboot/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Kickstart自动应答文件&lt;a href=&quot;#kickstart自动应答文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;自动应答文件可以在PXE安装操作系统时，帮助我们自动设置系统安装参数（包括网络配置、磁盘、密码等），减少人机交互。在Linux完成安装后，会在home目录下自动生成一个应答文件anaconda-ks.cfg，我们现在可以将这个应答文件利用起来。将anaconda-ks.cfg复制到&lt;code&gt;/var/ftp/Kickstart/&lt;/code&gt;目录下，并重命名为CentOS.cfg：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mkdir&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/ftp/kickstart&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/anaconda-ks.cfg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/ftp/Kickstart/CentOS.cfg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;chmod&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/ftp/Kickstart/CentOS.cfg&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;赋予执行权限&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;按需修改应答文件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;vim&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/ftp/Kickstart/CentOS.cfg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;......&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;url&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--url=ftp://192.168.100.100/CentOS_7.2.1511&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;默认为CDROM，此处改为FTP安装源路径&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;{% note info %}
&lt;strong&gt;提示！&lt;/strong&gt;
如果有图形界面，还可以安装system-config-kickstart，来进一步定制Kickstart！
{% endnote %}&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;引导菜单文件&lt;a href=&quot;#引导菜单文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在tftpboot下新建一个目录pxelinux.cfg（是目录不是文件！）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mkdir&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/lib/tftpboot/pxelinux.cfg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;将启动菜单配置文件复制到pxelinux.cfg目录下，并重命名为default：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/ftp/CentOS_7.2.1511/isolinux/isolinux.cfg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/lib/tftpboot/pxelinux.cfg/default&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;修改启动菜单，将linux作为默认引导项，系统安装形式改为http协议：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;vim&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var/lib/tftpboot/pxelinux.cfg/default&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;default&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;linux&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;默认为vesamenu.c32，此处改为linux&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;......&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;linux&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;menu&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;label&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;^Install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;CentOS&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;kernel&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;vmlinuz&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;append&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;initrd=initrd.img&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;inst.stage2=ftp://192.168.100.100/CentOS_7.2.1511/&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ks=ftp://192.168.100.100/Kickstart/CentOS.cfg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;/*默认安装源为本地光盘路径。本文安装源使用的是ftp，此处改为安装源的URL*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;......&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;最后阶段&lt;a href=&quot;#最后阶段&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;启动所有服务：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;enable&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--now&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;dhcpd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;xinetd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;vsftpd&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;配置防火墙，放行TFTP、FTP所需端口：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;firewall-cmd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--permanent&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--add-port=69/udp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;firewall-cmd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--permanent&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--add-service=ftp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;firewall-cmd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--reload&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;设置SELinux为宽松模式：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;setenforce&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sed&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-i&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;s/enforcing/permissive/g&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/selinux/config&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;客户机测试&lt;a href=&quot;#客户机测试&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;打开虚拟机电源。由于未安装操作系统，虚拟机将会自动从网络进行引导：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-06-15-47-57.png&quot; alt=&quot;2020-07-06-15-47-57&quot; /&gt;&lt;figcaption&gt;2020-07-06-15-47-57&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-06-15-48-38.png&quot; alt=&quot;2020-07-06-15-48-38&quot; /&gt;&lt;figcaption&gt;2020-07-06-15-48-38&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;当出现下图所示界面以后，说明无人值守安装的基本配置已经成功，此时像往常一样进行系统安装操作即可：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-06-16-03-02.png&quot; alt=&quot;2020-07-06-16-03-02&quot; /&gt;&lt;figcaption&gt;2020-07-06-16-03-02&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本文实现的无人值守安装只能算是半自动化部署方式，因为在安装过程中，还需要对安装的主机进行一些参数设置。在实际生产环境下，还需要根据服务器的硬件配置（例如磁盘容量等），来定制应答文件。总之，通过Kickstart+PXE批量部署操作系统，不仅能够将运维人员从重复性的工作中解放出来，还能极大地提升系统安装效率。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>定制属于你的ESXi——为ESXi6.7添加驱动</title><link>https://blog.tokiame.cn/posts/esxi/%E5%AE%9A%E5%88%B6%E5%B1%9E%E4%BA%8E%E4%BD%A0%E7%9A%84esxi%E4%B8%BAesxi67%E6%B7%BB%E5%8A%A0%E9%A9%B1%E5%8A%A8/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/esxi/%E5%AE%9A%E5%88%B6%E5%B1%9E%E4%BA%8E%E4%BD%A0%E7%9A%84esxi%E4%B8%BAesxi67%E6%B7%BB%E5%8A%A0%E9%A9%B1%E5%8A%A8/</guid><pubDate>Sat, 04 Jul 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;ESXi是目前企业采用的主流虚拟化方案之一，同时也深受广大极客和发烧友的钟爱。ESXi能够兼容大部分的服务器设备，无需额外安装驱动即可安装运行。但是，某些厂商设备采用了第三方或者自有的配件，而原生ESXi往往没有这些配件的驱动程序，这就会导致ESXi无法识别硬件、安装失败。&lt;/p&gt;&lt;p&gt;早期版本的ESXi（6.5以及更早版本）是可以通过ESXi Customizer来添加第三方驱动程序的，而ESXi6.7已经不再支持用旧版的ESXi Customizer来添加驱动了。So，笔者参照了一下这位大神&lt;a href=&quot;https://www.vediotalk.com/archives/2356&quot; target=&quot;_blank&quot;&gt;Vedio Talk&lt;/a&gt;的做法，给大家介绍如何为6.7和更高版本的ESXi添加第三方驱动程序。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;进入主题&lt;a href=&quot;#进入主题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;准备工作&lt;a href=&quot;#准备工作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;本文使用到的软件如下：&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;ESXi 6.7 u3b离线安装包&lt;/li&gt;
&lt;li&gt;ESXi Customizer PS→&lt;a href=&quot;http://vibsdepot.v-front.de/tools/ESXi-Customizer-PS-v2.6.0.ps1&quot; target=&quot;_blank&quot;&gt;点击此处下载&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PowerShell（Windows 10自带的命令行环境）&lt;/li&gt;
&lt;li&gt;硬件的ESXi驱动（本文以H3C服务器的阵列卡驱动为例）&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;步骤&lt;a href=&quot;#步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;安装Vmware PowerCLI模块&lt;a href=&quot;#安装vmware-powercli模块&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;打开Windows PowerShell，输入&lt;code&gt;Install-Module -Name VMware.PowerCLI&lt;/code&gt;,在线安装VMware命令行模块（由于是从国外代码库进行下载，此处请自备一杯酸酸乳，不然半年都下不完…）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-04-13-25-37.png&quot; alt=&quot;2020-07-04-13-25-37&quot; /&gt;&lt;figcaption&gt;2020-07-04-13-25-37&lt;/figcaption&gt;&lt;/figure&gt;
ps：输入A全部选是&lt;p&gt;&lt;/p&gt;&lt;p&gt;输入&lt;code&gt;set-ExecutionPolicy Bypass&lt;/code&gt;，调整PowerShell执行策略，允许运行脚本：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-04-13-26-02.png&quot; alt=&quot;2020-07-04-13-26-02&quot; /&gt;&lt;figcaption&gt;2020-07-04-13-26-02&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;为ESXi添加驱动&lt;a href=&quot;#为esxi添加驱动&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://vibsdepot.v-front.de/tools/&quot; target=&quot;_blank&quot;&gt;下载ESXi Customizer PS&lt;/a&gt;。将ESXi离线包、驱动程序、ESXi Customizer放到同一个目录，方便操作：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-04-14-37-10.png&quot; alt=&quot;2020-07-04-14-37-10&quot; /&gt;&lt;figcaption&gt;2020-07-04-14-37-10&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;在该目录下，按住Shift键+鼠标右键，在该目录下打开PowerShell：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-04-14-38-31.png&quot; alt=&quot;2020-07-04-14-38-31&quot; /&gt;&lt;figcaption&gt;2020-07-04-14-38-31&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;使用命令，为ESXi包添加驱动。命令格式如下：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.\ESXi-Customizer-PS-v2.6.0.ps1 -izip &amp;lt;ESXi离线包路径&amp;gt; -pkgDir &amp;lt;驱动文件路径&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-04-13-30-33.png&quot; alt=&quot;2020-07-04-13-30-33&quot; /&gt;&lt;figcaption&gt;2020-07-04-13-30-33&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;命令执行完成以后，会在相同目录下生成一个包含驱动的ISO镜像文件。这时我们就可以用这个ISO镜像来安装ESXi了：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-04-16-00-08.png&quot; alt=&quot;2020-07-04-16-00-08&quot; /&gt;&lt;figcaption&gt;2020-07-04-16-00-08&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;另请参阅…&lt;a href=&quot;#另请参阅&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;ESXi驱动包下载：&lt;a href=&quot;https://vibsdepot.v-front.de/wiki/index.php/List_of_currently_available_ESXi_packages&quot; target=&quot;_blank&quot;&gt;https://vibsdepot.v-front.de/wiki/index.php/List_of_currently_available_ESXi_packages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;VMware官方网站：&lt;a href=&quot;https://www.vmware.com/&quot; target=&quot;_blank&quot;&gt;https://www.vmware.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>华三服务器·UIS RAID2000 M2（PM8060）阵列卡基本配置</title><link>https://blog.tokiame.cn/posts/%E6%9C%8D%E5%8A%A1%E5%99%A8/%E5%8D%8E%E4%B8%89%E6%9C%8D%E5%8A%A1%E5%99%A8uis-raid2000-m2pm8060%E9%98%B5%E5%88%97%E5%8D%A1%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E6%9C%8D%E5%8A%A1%E5%99%A8/%E5%8D%8E%E4%B8%89%E6%9C%8D%E5%8A%A1%E5%99%A8uis-raid2000-m2pm8060%E9%98%B5%E5%88%97%E5%8D%A1%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE/</guid><pubDate>Thu, 02 Jul 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;磁盘阵列&lt;/strong&gt;（Redundant Arrays of Independent Disks，RAID）是如今大多数服务器的一个基本组成部分，它是由多块独立磁盘组合而成的磁盘组，用于提升整个磁盘系统效能，以及数据的安全性。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;目前实现阵列有两种形式，分为软阵列和硬阵列。软阵列需要通过软件来实现阵列功能，如Windows的RAID5卷、Linux的mdadm工具等。而硬阵列则需要通过硬件来实现，如阵列卡。本文以华三服务器为例的UIS RAID2000 M2（PM8060）阵列卡为例，介绍如何配置一个简单的磁盘阵列。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;操作过程&lt;a href=&quot;#操作过程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;实验环境&lt;a href=&quot;#实验环境&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;服务器：H3C R4900 G2&lt;/li&gt;
&lt;li&gt;服务器包含一块UIS RAID2000 M2（PM8060）阵列卡，和3个600GB的SAS磁盘&lt;/li&gt;
&lt;li&gt;服务器已启用HDM（华三服务器的BMC）&lt;/li&gt;
&lt;li&gt;一台电脑，用于远程操作&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;正文&lt;a href=&quot;#正文&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;使用电脑登录到服务器的BMC，点击远程控制台，下载控制台程序并运行（需要安装JRE）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-01-18-10-03.png&quot; alt=&quot;2020-07-01-18-10-03&quot; /&gt;&lt;figcaption&gt;2020-07-01-18-10-03&lt;/figcaption&gt;&lt;/figure&gt;
点击控制台左上角的电源，点击开机。如果服务器处于开机状态，则点击重启。等待系统自检通过后（大概需要一分钟），按屏幕提示，按下Esc键或Del键进入BIOS。如下图操作：&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-01-18-33-03.png&quot; alt=&quot;2020-07-01-18-33-03&quot; /&gt;&lt;figcaption&gt;2020-07-01-18-33-03&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;选中高级→PMC maxView Storage Manager，一路回车，进入RAID配置界面：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-01-18-13-10.png&quot; alt=&quot;2020-07-01-18-13-10&quot; /&gt;&lt;figcaption&gt;2020-07-01-18-13-10&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-01-18-16-04.png&quot; alt=&quot;2020-07-01-18-16-04&quot; /&gt;&lt;figcaption&gt;2020-07-01-18-16-04&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;选中Logical Device Configuration→Create Array，创建一个新的逻辑磁盘组。这里以创建一个RAID1阵列为例：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-01-18-19-18.png&quot; alt=&quot;2020-07-01-18-19-18&quot; /&gt;&lt;figcaption&gt;2020-07-01-18-19-18&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-01-18-19-43.png&quot; alt=&quot;2020-07-01-18-19-43&quot; /&gt;&lt;figcaption&gt;2020-07-01-18-19-43&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-01-18-21-13.png&quot; alt=&quot;2020-07-01-18-21-13&quot; /&gt;&lt;figcaption&gt;2020-07-01-18-21-13&lt;/figcaption&gt;&lt;/figure&gt;
ps：由于是实验，这里使用Quick Init（快速部署）即可。&lt;p&gt;&lt;/p&gt;&lt;p&gt;查看配置结果：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-07-01-18-46-38.png&quot; alt=&quot;2020-07-01-18-46-38&quot; /&gt;&lt;figcaption&gt;2020-07-01-18-46-38&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>更高的运维格调：Grafana对接Zabbix</title><link>https://blog.tokiame.cn/posts/%E6%9C%8D%E5%8A%A1%E5%99%A8/%E6%9B%B4%E9%AB%98%E7%9A%84%E8%BF%90%E7%BB%B4%E6%A0%BC%E8%B0%83grafana%E5%AF%B9%E6%8E%A5zabbix/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E6%9C%8D%E5%8A%A1%E5%99%A8/%E6%9B%B4%E9%AB%98%E7%9A%84%E8%BF%90%E7%BB%B4%E6%A0%BC%E8%B0%83grafana%E5%AF%B9%E6%8E%A5zabbix/</guid><pubDate>Sat, 06 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;Grafana——开源、高逼格可视化监控平台！&lt;a href=&quot;#grafana开源高逼格可视化监控平台&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;搞过运维的应该都听说过Grafana吧！以下这张图就是Grafana的：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-06-11-49-01.png&quot; alt=&quot;2020-06-06-11-49-01&quot; /&gt;&lt;figcaption&gt;2020-06-06-11-49-01&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;再来看看Zabbix&lt;a href=&quot;#再来看看zabbix&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;有人可能问了，Zabbix不是有自带图表吗，为啥还需要Grafana？其实怎么说呢，Zabbix还是偏后端的监控系统，主要面向运维人员。而且，Zabbix图表类型不够丰富，对于一般人来说不太友好。So，我们可以将Grafana与Zabbix对接，作为Zabbix的Dashboard（仪表板），接收来自Zabbix的数据，并通过各种形式的图表展示出来。&lt;/p&gt;&lt;p&gt;废话不多说，开始我的表演。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;进入正题&lt;a href=&quot;#进入正题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;Grafana安装部署&lt;a href=&quot;#grafana安装部署&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;{% note info %}
&lt;strong&gt;注意：&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;本文使用的Linux发行版是CentOS 8.1.1911;&lt;/li&gt;
&lt;li&gt;本文使用的Zabbix版本为5.0.1;&lt;/li&gt;
&lt;li&gt;本文使用的Grafana版本为7.0.3;
{% endnote %}
首先，通过dnf安装Grafana：&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dnf install https://dl.grafana.com/oss/release/grafana-7.0.3-1.x86_64.rpm -y&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;启动Grafana，并设置为开机自启：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl enable --now grafana-server&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;打开浏览器，通过&lt;code&gt;http://&amp;lt;Host IP&amp;gt;:3000&lt;/code&gt;访问Grafana。Grafana的默认用户名和密码都是admin。初次登录的话，需要修改默认的管理员密码：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-06-12-27-06.png&quot; alt=&quot;2020-06-06-12-27-06&quot; /&gt;&lt;figcaption&gt;2020-06-06-12-27-06&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-06-12-28-29.png&quot; alt=&quot;2020-06-06-12-28-29&quot; /&gt;&lt;figcaption&gt;2020-06-06-12-28-29&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-06-12-28-51.png&quot; alt=&quot;2020-06-06-12-28-51&quot; /&gt;&lt;figcaption&gt;2020-06-06-12-28-51&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;开始对接Zabbix&lt;a href=&quot;#开始对接zabbix&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Grafana的插件种类比较丰富，通过Grafana-CLI就能安装各种类型的插件，安装过程比较简单。下面来安装Zabbix插件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;grafana-cli plugins install alexanderzobnin-zabbix-app&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;使用&lt;code&gt;systemctl restart grafana-server&lt;/code&gt;重新启动Grafana服务。登录Grafana，点击右侧栏设置图标→插件，启用Zabbix插件：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-07-10-43-26.png&quot; alt=&quot;2020-06-07-10-43-26&quot; /&gt;&lt;figcaption&gt;2020-06-07-10-43-26&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-07-10-44-11.png&quot; alt=&quot;2020-06-07-10-44-11&quot; /&gt;&lt;figcaption&gt;2020-06-07-10-44-11&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;回到首页，添加数据源：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-06-15-06-09.png&quot; alt=&quot;2020-06-06-15-06-09&quot; /&gt;&lt;figcaption&gt;2020-06-06-15-06-09&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;选择刚刚安装的Zabbix插件，进行配置：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-06-15-06-53.png&quot; alt=&quot;2020-06-06-15-06-53&quot; /&gt;&lt;figcaption&gt;2020-06-06-15-06-53&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;配置数据源名称、Zabbix的API URL、Zabbix用户名和密码，随后点击Save&amp;amp;Test保存配置并进行对接测试：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-06-15-18-23.png&quot; alt=&quot;2020-06-06-15-18-23&quot; /&gt;&lt;figcaption&gt;2020-06-06-15-18-23&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;对接成功：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-06-15-30-35.png&quot; alt=&quot;2020-06-06-15-30-35&quot; /&gt;&lt;figcaption&gt;2020-06-06-15-30-35&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;{% note danger %}
&lt;strong&gt;踩坑：&lt;/strong&gt;
如果Zabbix的版本是5.x以前的，则API URL应该写成这种形式：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;http://&amp;lt;Zabbix IP&amp;gt;/zabbix/api_jsonrpc.php&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;{% endnote %}&lt;/p&gt;&lt;p&gt;{% note warning %}
&lt;strong&gt;注意：&lt;/strong&gt;
如果你的Zabbix采用Nginx作为Server，则API URL内的地址需与Nginx配置文件中的server_name一致，否则会造成对接失败：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-06-15-29-12.png&quot; alt=&quot;2020-06-06-15-29-12&quot; /&gt;&lt;figcaption&gt;2020-06-06-15-29-12&lt;/figcaption&gt;&lt;/figure&gt;
{% endnote %}&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;创建仪表板并使用Zabbix数据源&lt;a href=&quot;#创建仪表板并使用zabbix数据源&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;回到Grafana首页，创建一个仪表板：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-06-15-40-43.png&quot; alt=&quot;2020-06-06-15-40-43&quot; /&gt;&lt;figcaption&gt;2020-06-06-15-40-43&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;为仪表板添加一个面板：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-06-15-41-46.png&quot; alt=&quot;2020-06-06-15-41-46&quot; /&gt;&lt;figcaption&gt;2020-06-06-15-41-46&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;设置图表的各项参数，比如数据源、图表类型、图表数据等，设置比较简单且多样化，根据自己需要进行设置就好了：
（我的Zabbix已经事先添加了监控主机，所以这里可以直接获取到数据）
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-06-15-45-40.png&quot; alt=&quot;2020-06-06-15-45-40&quot; /&gt;&lt;figcaption&gt;2020-06-06-15-45-40&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;点击Apply应用设置，就能看到新建的面板了。点击仪表板右上角的保存图标，保存仪表板：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-06-06-15-55-15.png&quot; alt=&quot;2020-06-06-15-55-15&quot; /&gt;&lt;figcaption&gt;2020-06-06-15-55-15&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;后记&lt;a href=&quot;#后记&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;利用Grafana，可以做出各种漂亮的面板、图表，方便我们对数据的解读（最重要的还是逼格高啊/滑稽）。Grafana的可玩性还是比较高的，还有更多的功能需要我们自己去探索。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;参考文章：&lt;a href=&quot;#参考文章&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;利用Grafana为Zabbix做Dashboard：&lt;a href=&quot;https://www.jianshu.com/p/44498cc11a95&quot; target=&quot;_blank&quot;&gt;https://www.jianshu.com/p/44498cc11a95&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;提升运维格调？Grafana整合Zabbix：&lt;a href=&quot;https://mp.weixin.qq.com/s/6GGxZ1vKw9nLiSdWYqtjug&quot; target=&quot;_blank&quot;&gt;https://mp.weixin.qq.com/s/6GGxZ1vKw9nLiSdWYqtjug&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>拯救这场灾难——如何解决因误操作导致的VCSA连接丢失</title><link>https://blog.tokiame.cn/posts/esxi/%E6%8B%AF%E6%95%91%E8%BF%99%E5%9C%BA%E7%81%BE%E9%9A%BE%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%E5%9B%A0%E8%AF%AF%E6%93%8D%E4%BD%9C%E5%AF%BC%E8%87%B4%E7%9A%84vcsa%E8%BF%9E%E6%8E%A5%E4%B8%A2%E5%A4%B1/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/esxi/%E6%8B%AF%E6%95%91%E8%BF%99%E5%9C%BA%E7%81%BE%E9%9A%BE%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%E5%9B%A0%E8%AF%AF%E6%93%8D%E4%BD%9C%E5%AF%BC%E8%87%B4%E7%9A%84vcsa%E8%BF%9E%E6%8E%A5%E4%B8%A2%E5%A4%B1/</guid><pubDate>Sat, 30 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;开始唠嗑…&lt;a href=&quot;#开始唠嗑&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;因强迫症埋下祸根…&lt;a href=&quot;#因强迫症埋下祸根&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;昨天给部门的vSphere集群配置了分布式交换机（Distribute Switch），把所有虚拟机迁移到分布式端口组上了。好不容易把所有ESXi标准交换机（以下称vswitch0）的端口组删干净了，猛然发现：咋还有残留的端口组捏？！
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-17-43-51.png&quot; alt=&quot;2020-05-30-17-43-51&quot; /&gt;&lt;figcaption&gt;2020-05-30-17-43-51&lt;/figcaption&gt;&lt;/figure&gt;
明明没有关联虚拟机，删又删不掉，看着又碍眼，干脆另起一个数据数据中心和群集，然后把所有ESXi节点重新转移过去！&lt;p&gt;&lt;/p&gt;&lt;p&gt;然而事实证明这个决定是错误的。当我想把其中一个ESXi节点迁移到新的数据中心和集群时，频繁出现“不支持此操作”“端口20正在使用中”之类的提示。这时才想起，ESXi节点上都运行着Distribute Switch，而且虚拟机都占用着Distribute Switch上的分布式端口组：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-17-44-59.png&quot; alt=&quot;2020-05-30-17-44-59&quot; /&gt;&lt;figcaption&gt;2020-05-30-17-44-59&lt;/figcaption&gt;&lt;/figure&gt;
重新在vswitch0上创建标准端口组，然后把虚拟机迁移到vswitch0标准端口组，一场灾难从此拉开序幕…&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;灾难伊始&lt;a href=&quot;#灾难伊始&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;一番操作以后，发现VCSA跟所有ESXi节点失去连接了。突然才想起，vswitch0的上行链路不是分配给Distribute Switch了吗？也就是说，此时新建的标准端口组根本就没有上行链路，而VCSA虚拟机恰好在这个ESXi节点上运行…
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-16-05-11.png&quot; alt=&quot;2020-05-30-16-05-11&quot; /&gt;&lt;figcaption&gt;2020-05-30-16-05-11&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;拯救任务开始&lt;a href=&quot;#拯救任务开始&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;A计划：急速还原&lt;a href=&quot;#a计划急速还原&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;我还是太年轻了。
兴冲冲地登录了ESXi节点，找到VCSA虚拟机，然后编辑设置，把网络调回Distribute Switch的对应端口组，然后发现事情并不简单：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-16-11-05.png&quot; alt=&quot;2020-05-30-16-11-05&quot; /&gt;&lt;figcaption&gt;2020-05-30-16-11-05&lt;/figcaption&gt;&lt;/figure&gt;
好吧，A计划宣告失败。
{% note danger %}
&lt;strong&gt;Tips：&lt;/strong&gt;
分布式交换机及其下属端口组只能由VCSA、vCenter进行配置！
{% endnote %}&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;B计划：将计就计&lt;a href=&quot;#b计划将计就计&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果两台虚拟机处于同一个端口组、同一个网段，这两台虚拟机不久可以互访了吗？
So，我把ESXi上的一台空闲虚拟机网络适配器分配到和VCSA相同的标准端口组，配好IP，在虚拟机里面打开浏览器，输入VCSA的IP地址：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-16-18-39.png&quot; alt=&quot;2020-05-30-16-18-39&quot; /&gt;&lt;figcaption&gt;2020-05-30-16-18-39&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;emm…再访问底层管理页面（https://&amp;lt;VCSA的IP地址&amp;gt;:5480）看看：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-17-42-34.png&quot; alt=&quot;2020-05-30-17-42-34&quot; /&gt;&lt;figcaption&gt;2020-05-30-17-42-34&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;我很好，只是有点小自闭而已~
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-16-21-06.png&quot; alt=&quot;2020-05-30-16-21-06&quot; /&gt;&lt;figcaption&gt;2020-05-30-16-21-06&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;C计划：重启大法&lt;a href=&quot;#c计划重启大法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;软的不行，就来硬的！
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-16-26-28.png&quot; alt=&quot;2020-05-30-16-26-28&quot; /&gt;&lt;figcaption&gt;2020-05-30-16-26-28&lt;/figcaption&gt;&lt;/figure&gt;
经过漫长的等待（大约过了三四分钟的亚子= =），终于重启完了。考虑到VCSA刚启动不久，可能有一些服务有警告或者根本没启动（汲取上一次事件的经验：戳这儿），于是我先登录到底层管理页面（https://&amp;lt;VCSA的IP地址&amp;gt;:5480）查看VCSA各方面的状态。无奈，还是老样子，登不进去…&lt;p&gt;&lt;/p&gt;&lt;p&gt;So，C计划宣布破产。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-16-34-21.png&quot; alt=&quot;2020-05-30-16-34-21&quot; /&gt;&lt;figcaption&gt;2020-05-30-16-34-21&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;D计划：另辟蹊径&lt;a href=&quot;#d计划另辟蹊径&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;我认为VCSA还是得设法连接到外网。
突然想起服务器有4个网口，2个被Distribute Switch占用了，剩下两个网口分别连接到两台IPSAN存储，并且有各自的虚拟交换机（vswitch1和vswitch2），其中第4个网口目前没在使用。那我把网口对端的交换机端口调到外网，在vswitch2上新建一个端口组分配给VCSA虚拟机网络适配器，不就可以实现外网访问了吗？&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;配置对应的交换机端口为Trunk模式&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[*CX110-Slot-2X]interface GE 3/1/2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[*CX110-Slot-2X-GE3/1/2]port link-type trunk&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[*CX110-Slot-2X-GE3/1/2]port trunk allow-pass vlan all    /*临时配置，日常使用不建议允许所有VLAN通过*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[*CX110-Slot-2X-GE3/1/2]quit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[*CX110-Slot-2X]commit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[~CX110-Slot-2X]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在vswitch2上新建一个端口组:
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-16-57-02.png&quot; alt=&quot;2020-05-30-16-57-02&quot; /&gt;&lt;figcaption&gt;2020-05-30-16-57-02&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将VCSA的网络划分到该端口组：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-16-58-03.png&quot; alt=&quot;2020-05-30-16-58-03&quot; /&gt;&lt;figcaption&gt;2020-05-30-16-58-03&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;经过以上的轮番骚操作以后，我终于可以放弃跑路的念头了：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-17-01-47.png&quot; alt=&quot;2020-05-30-17-01-47&quot; /&gt;&lt;figcaption&gt;2020-05-30-17-01-47&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;将VCSA虚拟机的网络适配器分配到分布式端口组：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-17-32-08.png&quot; alt=&quot;2020-05-30-17-32-08&quot; /&gt;&lt;figcaption&gt;2020-05-30-17-32-08&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;后记&lt;a href=&quot;#后记&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;教训&lt;a href=&quot;#教训&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这其实算得上是一次失败的网络割接了。割接前一定要做好万全的准备，包括各种任务计划、风险评估、应急预案等等，而不是说要等到割接过程中出现问题了，才去现场发挥，手忙脚乱，不知所措。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;科普&lt;a href=&quot;#科普&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;vSphere标准交换机和分布式交换机的区别：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;标准交换机：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-17-36-14.png&quot; alt=&quot;2020-05-30-17-36-14&quot; /&gt;&lt;figcaption&gt;2020-05-30-17-36-14&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;分布式交换机：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-30-17-36-30.png&quot; alt=&quot;2020-05-30-17-36-30&quot; /&gt;&lt;figcaption&gt;2020-05-30-17-36-30&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;参考链接：&lt;a href=&quot;https://blog.51cto.com/13556019/2062018&quot; target=&quot;_blank&quot;&gt;https://blog.51cto.com/13556019/2062018&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>FusionAccess系列（一）：最小化部署FusionAccess实验环境</title><link>https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/fusionaccess%E7%B3%BB%E5%88%97%E4%B8%80%E6%9C%80%E5%B0%8F%E5%8C%96%E9%83%A8%E7%BD%B2fusionaccess%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/fusionaccess%E7%B3%BB%E5%88%97%E4%B8%80%E6%9C%80%E5%B0%8F%E5%8C%96%E9%83%A8%E7%BD%B2fusionaccess%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83/</guid><pubDate>Mon, 18 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;最近在备考云ip的内容，恰好需要部署一套环境来满足学习需要。下面将介绍FusionAccess桌面云实验环境的搭建过程。
在开始之前，先简单介绍下华为的FusionAccess（卖了个广告）。“华为云™FusionAccess桌面云解决方案是基于华为FusionSphere的一种虚拟桌面应用，通过在云平台上部署软、硬件，使终端用户通过瘦客户端或者其他任何与网络相连的设备来访问跨平台的应用程序，以及整个客户桌面。”&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;准备工作&lt;a href=&quot;#准备工作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;{% note warning %}
&lt;strong&gt;注意&lt;/strong&gt;：
本文的实验是基于上一篇文章中的FusionCompute基础环境&lt;a href=&quot;https://www.unlinus.cn/2020/05/13/%E4%BD%BF%E7%94%A8CentOS%208%20Cockpit+KVM%E6%90%AD%E5%BB%BAFusionCompute%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83/&quot; target=&quot;_blank&quot;&gt;[传送门]&lt;/a&gt;来进行的。由于篇幅有限，故不再过多介绍FusionCompute的搭建步骤。
{% endnote %}&lt;/p&gt;&lt;section&gt;&lt;h2&gt;软件准备&lt;a href=&quot;#软件准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;文件名称&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;FusionAccess_Manager_Installer_6.5.0.iso&lt;/td&gt;&lt;td&gt;FusionAccess基础架构节点安装镜像&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;FusionAccess_WindowsDesktop_Installer_6.5.0.iso&lt;/td&gt;&lt;td&gt;Windows配套软件包镜像&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;节点、网络规划&lt;a href=&quot;#节点网络规划&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;所有节点均部署在同一个局域网内（局域网内必须关闭DHCP！）。硬件设备和上一期文章一样，都是一台破笔记本+老台式机。考虑到FusionAccess疯狂吃内存的特（兽）性（行），特地给台式机加多了一条4G内存（内存还是从我姐电脑上抠下来的= =）。&lt;/p&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;节点名称&lt;/th&gt;&lt;th&gt;节点类型&lt;/th&gt;&lt;th&gt;IP地址&lt;/th&gt;&lt;th&gt;默认网关&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;CNA&lt;/td&gt;&lt;td&gt;计算节点代理&lt;/td&gt;&lt;td&gt;10.6.0.50/24&lt;/td&gt;&lt;td&gt;10.6.0.254&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;VRM&lt;/td&gt;&lt;td&gt;虚拟化资源管理&lt;/td&gt;&lt;td&gt;10.6.0.60/24&lt;/td&gt;&lt;td&gt;10.6.0.254&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ITA-HDC-WI&lt;/td&gt;&lt;td&gt;桌面云基础架构节点&lt;/td&gt;&lt;td&gt;10.6.0.70/24&lt;/td&gt;&lt;td&gt;10.6.0.254&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;AD&amp;amp;DNS&amp;amp;DHCP&lt;/td&gt;&lt;td&gt;AD&amp;amp;DNS&amp;amp;DHCP&lt;/td&gt;&lt;td&gt;10.6.0.80/24&lt;/td&gt;&lt;td&gt;10.6.0.254&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;部署AD、DNS、DHCP服务器：&lt;a href=&quot;#部署addnsdhcp服务器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;使用VMware Workstation创建一台虚拟机，并安装好&lt;strong&gt;Windows Server 2012 R2 DataCenter&lt;/strong&gt;操作系统。配置好网络、主机名，然后将系统重启：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-18-52-26.png&quot; alt=&quot;2020-05-18-18-52-26&quot; /&gt;&lt;figcaption&gt;2020-05-18-18-52-26&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-18-48-55.png&quot; alt=&quot;2020-05-18-18-48-55&quot; /&gt;&lt;figcaption&gt;2020-05-18-18-48-55&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;打开服务器管理器，添加角色和服务，选择Active Directory域服务、DNS服务器、DHCP服务器这三个角色：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-19-22-15.png&quot; alt=&quot;2020-05-18-19-22-15&quot; /&gt;&lt;figcaption&gt;2020-05-18-19-22-15&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;一直点击下一步，直至开始安装（勾选自动重新启动目标服务器）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-19-23-54.png&quot; alt=&quot;2020-05-18-19-23-54&quot; /&gt;&lt;figcaption&gt;2020-05-18-19-23-54&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;section&gt;&lt;h2&gt;配置域服务、域用户等信息&lt;a href=&quot;#配置域服务域用户等信息&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;域控制器安装&lt;a href=&quot;#域控制器安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;安装完成后，开始配置域。点击“将此服务器提升为域控制器”：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-19-41-47.png&quot; alt=&quot;2020-05-18-19-41-47&quot; /&gt;&lt;figcaption&gt;2020-05-18-19-41-47&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;添加新林，域名称自定义（需符合域名格式）。分别配置DSRM密码、NetBIOS域名、文件保存位置等参数（基本上保持默认、点击下一步即可）
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-19-43-13.png&quot; alt=&quot;2020-05-18-19-43-13&quot; /&gt;&lt;figcaption&gt;2020-05-18-19-43-13&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-19-44-39.png&quot; alt=&quot;2020-05-18-19-44-39&quot; /&gt;&lt;figcaption&gt;2020-05-18-19-44-39&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-19-46-59.png&quot; alt=&quot;2020-05-18-19-46-59&quot; /&gt;&lt;figcaption&gt;2020-05-18-19-46-59&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-19-47-27.png&quot; alt=&quot;2020-05-18-19-47-27&quot; /&gt;&lt;figcaption&gt;2020-05-18-19-47-27&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-19-48-40.png&quot; alt=&quot;2020-05-18-19-48-40&quot; /&gt;&lt;figcaption&gt;2020-05-18-19-48-40&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;检查配置是否正确，确认无误后开始安装域控制器。安装完成后会自动重启：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-19-50-18.png&quot; alt=&quot;2020-05-18-19-50-18&quot; /&gt;&lt;figcaption&gt;2020-05-18-19-50-18&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-19-50-42.png&quot; alt=&quot;2020-05-18-19-50-42&quot; /&gt;&lt;figcaption&gt;2020-05-18-19-50-42&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;域管理员账户配置&lt;a href=&quot;#域管理员账户配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;打开Active Directory用户和计算机，新建组织单位（OU）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-20-15-35.png&quot; alt=&quot;2020-05-18-20-15-35&quot; /&gt;&lt;figcaption&gt;2020-05-18-20-15-35&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-20-16-09.png&quot; alt=&quot;2020-05-18-20-16-09&quot; /&gt;&lt;figcaption&gt;2020-05-18-20-16-09&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;右键单击该OU，新建用户vdsadmin，用于后期与FusionAccess进行对接：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-20-18-10.png&quot; alt=&quot;2020-05-18-20-18-10&quot; /&gt;&lt;figcaption&gt;2020-05-18-20-18-10&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-20-19-01.png&quot; alt=&quot;2020-05-18-20-19-01&quot; /&gt;&lt;figcaption&gt;2020-05-18-20-19-01&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;将vdsadmin用户设为委派控制用户，如下图操作：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-20-25-42.png&quot; alt=&quot;2020-05-18-20-25-42&quot; /&gt;&lt;figcaption&gt;2020-05-18-20-25-42&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-20-26-58.png&quot; alt=&quot;2020-05-18-20-26-58&quot; /&gt;&lt;figcaption&gt;2020-05-18-20-26-58&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-20-27-51.png&quot; alt=&quot;2020-05-18-20-27-51&quot; /&gt;&lt;figcaption&gt;2020-05-18-20-27-51&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;设置该委派控制用户的任务，选中“创建自定义任务去委派”，单击“下一步”：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-20-29-13.png&quot; alt=&quot;2020-05-18-20-29-13&quot; /&gt;&lt;figcaption&gt;2020-05-18-20-29-13&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;选中“这个文件夹，这个文件夹中的对象，以及创建在这个文件夹中的新对象”，单击“下一步”：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-20-29-43.png&quot; alt=&quot;2020-05-18-20-29-43&quot; /&gt;&lt;figcaption&gt;2020-05-18-20-29-43&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;选中“特定子对象的创建/删除”，在“权限”区域，选择“创建 计算机 对象”和“删除 计算机 对象”，单击“下一步”：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-20-33-03.png&quot; alt=&quot;2020-05-18-20-33-03&quot; /&gt;&lt;figcaption&gt;2020-05-18-20-33-03&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;配置备份路径和远程协助：&lt;a href=&quot;#配置备份路径和远程协助&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;将Windows配套软件包镜像&lt;code&gt;FusionAccess_WindowsDesktop_Installer_6.5.0.iso&lt;/code&gt;挂载给该虚拟机。虚拟机内打开光驱，运行run.bat，点击扩展部署，安装Windwos备份工具：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-20-43-56.png&quot; alt=&quot;2020-05-18-20-43-56&quot; /&gt;&lt;figcaption&gt;2020-05-18-20-43-56&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-20-44-49.png&quot; alt=&quot;2020-05-18-20-44-49&quot; /&gt;&lt;figcaption&gt;2020-05-18-20-44-49&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;配置备份文件路径（不能设置在系统盘所在目录），保存并退出即可：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-21-02-24.png&quot; alt=&quot;2020-05-18-21-02-24&quot; /&gt;&lt;figcaption&gt;2020-05-18-21-02-24&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;配置DNS服务&lt;a href=&quot;#配置dns服务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;配置反向解析&lt;a href=&quot;#配置反向解析&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;打开DNS管理器，右键单击反向查找区域，新建一个反向查找区域：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-22-25-18.png&quot; alt=&quot;2020-05-18-22-25-18&quot; /&gt;&lt;figcaption&gt;2020-05-18-22-25-18&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;保持默认配置，一直点击下一步到此处，配置网络ID（网络地址）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-22-27-11.png&quot; alt=&quot;2020-05-18-22-27-11&quot; /&gt;&lt;figcaption&gt;2020-05-18-22-27-11&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;配置正向解析&lt;a href=&quot;#配置正向解析&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;展开正向查找区域，右键单击域名，添加一个主机记录（用于解析HDC）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-22-31-31.png&quot; alt=&quot;2020-05-18-22-31-31&quot; /&gt;&lt;figcaption&gt;2020-05-18-22-31-31&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;配置二级域名及其对应的IP地址（FusionAccess节点IP），&lt;strong&gt;并创建相关的指针记录&lt;/strong&gt;：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-22-33-53.png&quot; alt=&quot;2020-05-18-22-33-53&quot; /&gt;&lt;figcaption&gt;2020-05-18-22-33-53&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;查看添加的记录：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-22-41-51.png&quot; alt=&quot;2020-05-18-22-41-51&quot; /&gt;&lt;figcaption&gt;2020-05-18-22-41-51&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;配置DNS服务器属性&lt;a href=&quot;#配置dns服务器属性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;仅侦听本机IP地址：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-22-47-45.png&quot; alt=&quot;2020-05-18-22-47-45&quot; /&gt;&lt;figcaption&gt;2020-05-18-22-47-45&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;配置转发器（用于迭代查询，云主机需要访问外网时必须设置）
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-29-51.png&quot; alt=&quot;2020-05-18-23-29-51&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-29-51&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;配置服务器选项（选配，如果云主机无需访问外网，需要禁用递归）
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-02-29.png&quot; alt=&quot;2020-05-18-23-02-29&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-02-29&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;删除所有根域：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-03-33.png&quot; alt=&quot;2020-05-18-23-03-33&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-03-33&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;右键单击主机名，配置DNS老化和清理功能：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-05-25.png&quot; alt=&quot;2020-05-18-23-05-25&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-05-25&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-05-57.png&quot; alt=&quot;2020-05-18-23-05-57&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-05-57&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-06-20.png&quot; alt=&quot;2020-05-18-23-06-20&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-06-20&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;关闭IPv6协议：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-10-49.png&quot; alt=&quot;2020-05-18-23-10-49&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-10-49&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;在CMD输入以下命令，关闭隧道适配器：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;netsh interface teredo set state disabled&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;netsh interface 6to4 set state disabled&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;netsh interface isatap set state disabled&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;配置DHCP服务&lt;a href=&quot;#配置dhcp服务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;打开DHCP服务管理器，右键单击主机名，添加授权：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-20-48.png&quot; alt=&quot;2020-05-18-23-20-48&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-20-48&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;新建一个作用域，输入作用域名称、起始和结束IP地址、
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-19-37.png&quot; alt=&quot;2020-05-18-23-19-37&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-19-37&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-22-10.png&quot; alt=&quot;2020-05-18-23-22-10&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-22-10&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-22-33.png&quot; alt=&quot;2020-05-18-23-22-33&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-22-33&lt;/figcaption&gt;&lt;/figure&gt;
（DHCP排除、租期等选项可以不用设置）&lt;p&gt;&lt;/p&gt;&lt;p&gt;配置路由、DNS等选项（其余配置保持默认即可），激活作用域：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-24-05.png&quot; alt=&quot;2020-05-18-23-24-05&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-24-05&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-24-40.png&quot; alt=&quot;2020-05-18-23-24-40&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-24-40&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-23-26-14.png&quot; alt=&quot;2020-05-18-23-26-14&quot; /&gt;&lt;figcaption&gt;2020-05-18-23-26-14&lt;/figcaption&gt;&lt;/figure&gt;
（注：首选分配的DNS必须是域服务器的IP地址！）&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;部署FusionAccess基础架构节点：&lt;a href=&quot;#部署fusionaccess基础架构节点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;{% note warning %}
&lt;strong&gt;注意&lt;/strong&gt;:
FusionAccess基础架构虚拟机，要求vCPU至少4个，内存至少12GB，磁盘至少40GB！
{% endnote %}&lt;/p&gt;&lt;p&gt;使用VMware Workstation创建一台虚拟机，并挂载基础架构服务器安装镜像，作为FusionAccess基础架构服务器。打开虚拟机电源进行安装：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-17-51-10.png&quot; alt=&quot;2020-05-18-17-51-10&quot; /&gt;&lt;figcaption&gt;2020-05-18-17-51-10&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;配置节点网络、主机名、root密码等参数（和VRM的安装部署步骤基本一致），开始安装：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-17-54-27.png&quot; alt=&quot;2020-05-18-17-54-27&quot; /&gt;&lt;figcaption&gt;2020-05-18-17-54-27&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-17-56-00.png&quot; alt=&quot;2020-05-18-17-56-00&quot; /&gt;&lt;figcaption&gt;2020-05-18-17-56-00&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-17-55-47.png&quot; alt=&quot;2020-05-18-17-55-47&quot; /&gt;&lt;figcaption&gt;2020-05-18-17-55-47&lt;/figcaption&gt;&lt;/figure&gt;
安装完成后将自动重启。&lt;p&gt;&lt;/p&gt;&lt;section&gt;&lt;h2&gt;初始化ITA、GaussDB、HDC、WI、License等基础组件&lt;a href=&quot;#初始化itagaussdbhdcwilicense等基础组件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;{% note info %}
&lt;strong&gt;提示：&lt;/strong&gt;
本教程中，FusionAccess的基础组件如ITA、WI、HDC、GaussDB等，均部署在该节点内（All in one）.
{% endnote %}
在命令行界面，使用root账号密码登录到ITA，开始部署FusionAccess基础组件（如果未出现FusionAccess界面，输入startTools运行即可）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-20-57-44.png&quot; alt=&quot;2020-05-18-20-57-44&quot; /&gt;&lt;figcaption&gt;2020-05-18-20-57-44&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;按照下图依次选择（图示为All in one安装步骤）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-21-05-32.png&quot; alt=&quot;2020-05-18-21-05-32&quot; /&gt;&lt;figcaption&gt;2020-05-18-21-05-32&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-21-09-06.png&quot; alt=&quot;2020-05-18-21-09-06&quot; /&gt;&lt;figcaption&gt;2020-05-18-21-09-06&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;输入本节点的IP地址，确认无误后回车，开始初始化组件：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-21-09-29.png&quot; alt=&quot;2020-05-18-21-09-29&quot; /&gt;&lt;figcaption&gt;2020-05-18-21-09-29&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-21-10-29.png&quot; alt=&quot;2020-05-18-21-10-29&quot; /&gt;&lt;figcaption&gt;2020-05-18-21-10-29&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;初步配置ITA&lt;a href=&quot;#初步配置ita&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;初始化完成后，使用浏览器访问&lt;code&gt;https://&amp;lt;ITA节点IP&amp;gt;:8448&lt;/code&gt;登录FusionAccess管理后台:（默认用户名为&lt;em&gt;admin&lt;/em&gt;，密码为&lt;em&gt;Cloud2#$&lt;/em&gt;）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-21-22-19.png&quot; alt=&quot;2020-05-18-21-22-19&quot; /&gt;&lt;figcaption&gt;2020-05-18-21-22-19&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;初次登录需要修改默认密码：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-21-23-53.png&quot; alt=&quot;2020-05-18-21-23-53&quot; /&gt;&lt;figcaption&gt;2020-05-18-21-23-53&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;对接FusionCompute平台，输入VRM节点的IP地址，以及用于对接FusionAccess的用户名和密码，点击下一步（默认用户为&lt;em&gt;vdisysman&lt;/em&gt;，密码为&lt;em&gt;VdiEnginE@234&lt;/em&gt;）：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-21-31-40.png&quot; alt=&quot;2020-05-18-21-31-40&quot; /&gt;&lt;figcaption&gt;2020-05-18-21-31-40&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;对接域服务器，输入域名称、域管理员账号、域服务器IP等信息，点击下一步：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-21-37-37.png&quot; alt=&quot;2020-05-18-21-37-37&quot; /&gt;&lt;figcaption&gt;2020-05-18-21-37-37&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;{% note danger %}
&lt;strong&gt;小坑：&lt;/strong&gt;
一定要保证所有节点之间的时间同步（或时间跳变不超过3min）！否则会影响服务运行，如图：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-21-55-40.png&quot; alt=&quot;2020-05-18-21-55-40&quot; /&gt;&lt;figcaption&gt;2020-05-18-21-55-40&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;使用命令修改系统日期，并将日期写入BIOS(注意格式)：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;date -s &quot;2020-05-18 22:05:00&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;hwclock -w&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;{% endnote %}&lt;/p&gt;&lt;p&gt;其余配置保持默认即可，一直点击下一步：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-22-10-22.png&quot; alt=&quot;2020-05-18-22-10-22&quot; /&gt;&lt;figcaption&gt;2020-05-18-22-10-22&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-22-10-39.png&quot; alt=&quot;2020-05-18-22-10-39&quot; /&gt;&lt;figcaption&gt;2020-05-18-22-10-39&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;检查配置无误后，点击提交：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-22-12-01.png&quot; alt=&quot;2020-05-18-22-12-01&quot; /&gt;&lt;figcaption&gt;2020-05-18-22-12-01&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;配置完成：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-18-22-39-12.png&quot; alt=&quot;2020-05-18-22-39-12&quot; /&gt;&lt;figcaption&gt;2020-05-18-22-39-12&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;未完待续…&lt;a href=&quot;#未完待续&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;以上内容只介绍了一个最基本、最小化的FusionAccess环境搭建过程。后续我会继续补充桌面云管理平台的使用教程。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>使用CentOS 8 Cockpit+KVM搭建FusionCompute实验环境</title><link>https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/%E4%BD%BF%E7%94%A8centos-8-cockpitkvm%E6%90%AD%E5%BB%BAfusioncompute%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/%E4%BD%BF%E7%94%A8centos-8-cockpitkvm%E6%90%AD%E5%BB%BAfusioncompute%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83/</guid><pubDate>Wed, 13 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;前面已经介绍过如何用闲置台式机来部署FusionCompute了。但是讲真，哪有那么多空闲的机子做这种实验呢？而且我相信大多数人都不会愿意，为了做个实验，把自己的电脑硬掰成一台服务器来用（除了笔者这位傻蛋）。
So！笔者以华为官方发布的FusionCompute实验环境搭建方案为参考，在其基础上进行了一些改进，现在决定把这个方案分享给大家。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;前期准备&lt;a href=&quot;#前期准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本文标题或许可以改成《没钱没服务器也能玩转FusionCompute系列》，但是FusionCompute毕竟还是你的大爷，电脑配置不好点的话还是搞不动滴！&lt;/p&gt;&lt;section&gt;&lt;h2&gt;硬件准备&lt;a href=&quot;#硬件准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;{% note warning %}
&lt;strong&gt;注意&lt;/strong&gt;
FusionCompute要求CPU核心数量（或线程数量）至少要2个以上，内存容量至少8G，磁盘空间至少80GB，这些都是硬性要求。加上本机操作系统和虚拟机的性能损耗，想要把FusionCompute玩起来的话，机子配置至少也得有4核以上的CPU+16G内存，磁盘可用空间大于120GB！
{% endnote %}&lt;/p&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;设备&lt;/th&gt;&lt;th&gt;处理器&lt;/th&gt;&lt;th&gt;内存&lt;/th&gt;&lt;th&gt;磁盘&lt;/th&gt;&lt;th&gt;网络&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;台式机&lt;/td&gt;&lt;td&gt;AMD-FX8300&lt;/td&gt;&lt;td&gt;杂牌DDR3 1600，8GB+4GB+4GB&lt;/td&gt;&lt;td&gt;杂牌120GB固态，希捷1TB机械盘&lt;/td&gt;&lt;td&gt;1GE网口&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;笔记本&lt;/td&gt;&lt;td&gt;Intel i5-8250u&lt;/td&gt;&lt;td&gt;渣士顿DDR4 2400，8GB×2&lt;/td&gt;&lt;td&gt;渣士顿120GB固态，西数500GB机械盘+日立500GB机械盘组RAID 0&lt;/td&gt;&lt;td&gt;1GE网口&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;软件准备&lt;a href=&quot;#软件准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;必备:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;VMware Workstation 15.5&lt;/li&gt;
&lt;li&gt;CentOS 8.1.1911系统镜像&lt;/li&gt;
&lt;li&gt;XShell 6（虚拟终端软件，用来SSH远程虚拟机）&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;华为FusionCompute软件包:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;文件名称&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;FusionCompute_Installer-6.5.1.zip&lt;/td&gt;&lt;td&gt;FusionCompute安装程序（用于远程部署）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;FusionCompute_6.5.1_CNA.iso&lt;/td&gt;&lt;td&gt;CNA节点安装镜像&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;FusionCompute_6.5.1_VRM.iso&lt;/td&gt;&lt;td&gt;VRM节点安装镜像&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;网络规划&lt;a href=&quot;#网络规划&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;如图（虚拟化层层嵌套，问你怕未！）
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-17-14-53.png&quot; alt=&quot;2020-05-13-17-14-53&quot; /&gt;&lt;figcaption&gt;2020-05-13-17-14-53&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;简化以后其实拓扑就长这样而已：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-17-28-26.png&quot; alt=&quot;2020-05-13-17-28-26&quot; /&gt;&lt;figcaption&gt;2020-05-13-17-28-26&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;思路:&lt;/strong&gt; 笔记本用VMware Workstation开一台CentOS 8虚拟机，然后在CentOS 8内安装KVM，在KVM上部署CNA节点。然后，台式机用VMware Workstation开一台虚拟机，专门部署VRM节点。为了保证同网段互通，虚拟机全部采用&lt;strong&gt;桥接模式&lt;/strong&gt;。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;安装&amp;amp;配置底层操作系统（CentOS 8.1）&lt;a href=&quot;#安装配置底层操作系统centos-81&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;{% note warning %}
&lt;strong&gt;注意！&lt;/strong&gt;
物理机必须在BIOS内打开处理器虚拟化功能！如果不知道如何操作，请自行百度！
{% endnote %}&lt;/p&gt;&lt;p&gt;使用VMware Workstation新建一台虚拟机，配置如下：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-14-03-11-04.png&quot; alt=&quot;2020-05-14-03-11-04&quot; /&gt;&lt;figcaption&gt;2020-05-14-03-11-04&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;打开虚拟机电源，安装好CentOS 8.1，这个大家应该都会的，不用多说吧！
{% note warning %}
&lt;strong&gt;注意！&lt;/strong&gt;
为了减少不必要的性能损耗，不需要装GUI！不需要装GUI！不需要装GUI！
{% endnote %}
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-17-35-38.jpg&quot; alt=&quot;2020-05-13-17-35-38&quot; /&gt;&lt;figcaption&gt;2020-05-13-17-35-38&lt;/figcaption&gt;&lt;/figure&gt;
安装完成后，使用XShell登录到CentOS 8.1，就可以开始进入以下步骤了。&lt;p&gt;&lt;/p&gt;&lt;section&gt;&lt;h2&gt;配置虚拟化环境&lt;a href=&quot;#配置虚拟化环境&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;{% note warning %}
&lt;strong&gt;注意！&lt;/strong&gt;
一定要把VMware Workstation虚拟机的嵌套虚拟化功能打开！如下图：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-17-58-44.png&quot; alt=&quot;2020-05-13-17-58-44&quot; /&gt;&lt;figcaption&gt;2020-05-13-17-58-44&lt;/figcaption&gt;&lt;/figure&gt;
虚拟机开机后，输入以下命令，根据输出的数值检查系统是否支持虚拟化：&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;egrep -c &apos;(vmx|svm)&apos; /proc/cpuinfo&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果返回数值＞0（返回数值=VMware Workstation为虚拟机分配的vCPU数量），说明系统已经支持虚拟化。
{% endnote %}&lt;/p&gt;&lt;p&gt;安装虚拟化环境组（里面包含了libvirt、QEMU-KVM等虚拟化必备组件）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dnf groupinstall &quot;Virtualization Host&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;启动libvirt服务(亲测无需enable，安装完成后已经自动设置为开机启动了)&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl start libvirtd&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;输入以下命令，根据输出的数值判断嵌套虚拟化是否已激活：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cat /sys/module/kvm_intel/parameters/nested&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;可见输出结果为0，因为嵌套虚拟化默认情况下是不开启的。我们在&lt;code&gt;/etc/modprobe.d/&lt;/code&gt;下新增一个配置文件&lt;code&gt;kvm_intel.conf&lt;/code&gt;，加入以下内容，保存并退出：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;options kvm-intel nested=1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;options kvm-intel enable_shadow_vmcs=1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;options kvm-intel enable_apicv=1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;options kvm-intel ept=1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;卸载、重新激活kvm_intel模块：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;modprobe -r kvm_intel&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;modprobe -a kvm_intel&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;再次检查嵌套虚拟化是否已激活：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-18-17-00.png&quot; alt=&quot;2020-05-13-18-17-00&quot; /&gt;&lt;figcaption&gt;2020-05-13-18-17-00&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;配置网络&lt;a href=&quot;#配置网络&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;{% note warning %}
&lt;strong&gt;注意！&lt;/strong&gt;
Linux网卡名称不是所有人都一样的，别一股脑儿复制粘贴！
{% endnote %}
为了保证虚拟机能够正常与外部通信，这里需要配置一个网桥并桥接到外网网卡。网桥可以看成是一台二层交换机，绑定了一个或多个物理网卡（或虚拟网卡），和二层交换机一样具有MAC地址学习、报文转发的功能。网桥配置完成后，主机及连接到该网桥的虚拟机需要与外网通信时，首先会经过该网桥，这就相当于多台电脑连接到一台交换机，通过交换机连接外网进行通信。（如果你熟悉VMware Workstation的桥接网卡，应该也就不难理解了）&lt;/p&gt;&lt;p&gt;首先将原网卡配置文件复制一份并重命名为br0，作为桥接网卡配置文件，然后进行修改：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd /etc/sysconfig/network-scripts&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cp ifcfg-ens32 ifcfg-br0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;vim ifcfg-br0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;TYPE=Bridge         #将类型Ethernet修改为Bridge，即桥模式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;BOOTPROTO=static&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DEVICE=br0          #将设备名更改为br0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ONBOOT=yes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;IPADDR=10.6.0.46&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;NETMASK=255.255.255.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GATEWAY=10.6.0.254&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DNS1=223.5.5.5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DNS2=119.29.29.29&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;修改Linux网卡配置文件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;vim /etc/sysconfig/network-scripts/ifcfg-ens32&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;TYPE=Ethernet&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;BOOTPROTO=none&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DEVICE=ens32&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ONBOOT=yes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;BRIDGE=br0           #指定网桥，连接到本网卡&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;修改完成后，保存并退出，然后重新启动网卡：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nmcli c reload ens32&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;使用&lt;code&gt;ip ad&lt;/code&gt;查看网络配置信息：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-19-52-22.png&quot; alt=&quot;2020-05-13-19-52-22&quot; /&gt;&lt;figcaption&gt;2020-05-13-19-52-22&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;初次使用Cockpit&lt;a href=&quot;#初次使用cockpit&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;{% note info %}
&lt;strong&gt;Tips：&lt;/strong&gt;
从CentOS 8开始，系统已经默认内置了Cockpit。Cockpit是一个Web控制台，为用户提供了图形化管理界面，可以实现系统资源监控、添加或删除帐户、电源管理等功能。
{% endnote %}
Cockpit默认是处于关闭状态的，我们现在启用Cockpit，并设置为开机自启：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl enable --now cockpit.socket&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;关闭防火墙和SELinux（生产环境下不建议这么做）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl disable --now firewalld&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sed -i &quot;s/enforcing/disabled/g&quot; /etc/selinux/config&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;setenforce 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;打开浏览器，输入&lt;code&gt;https://&amp;lt;Linux IP地址&amp;gt;:9090&lt;/code&gt;访问Cockpit，使用系统root账号密码进行登录：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-18-39-44.png&quot; alt=&quot;2020-05-13-18-39-44&quot; /&gt;&lt;figcaption&gt;2020-05-13-18-39-44&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-18-40-42.png&quot; alt=&quot;2020-05-13-18-40-42&quot; /&gt;&lt;figcaption&gt;2020-05-13-18-40-42&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;通过Linux Cockpit部署虚拟机&lt;a href=&quot;#通过linux-cockpit部署虚拟机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;安装虚拟机组件cockpit-machines&lt;a href=&quot;#安装虚拟机组件cockpit-machines&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;接下来会使用Cockpit来管理KVM虚拟机。安装Cockpit虚拟机组件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dnf install cockpit-machines -y&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;重启libvirtd服务：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl restart libvirtd&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;创建虚拟机&lt;a href=&quot;#创建虚拟机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;登录Cockpit，点击左侧栏“虚拟机”，右侧窗口点击“创建虚拟机”：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-20-36-08.png&quot; alt=&quot;2020-05-13-20-36-08&quot; /&gt;&lt;figcaption&gt;2020-05-13-20-36-08&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;设置虚拟机参数（我已经事先把CNA的安装镜像上传到/opt目录下了）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-22-12-52.png&quot; alt=&quot;2020-05-13-22-12-52&quot; /&gt;&lt;figcaption&gt;2020-05-13-22-12-52&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;可以看到虚拟机已经成功创建。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;配置虚拟机CPU、内存、网络、磁盘等参数&lt;a href=&quot;#配置虚拟机cpu内存网络磁盘等参数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;接下来设置虚拟机CPU参数：
{% note warning %}
&lt;strong&gt;提示：&lt;/strong&gt;
vCPU数量不要超过6个！FusionCompute基础版免费授权的CPU数量为6个，超过这个限度就等着过期吧！
{% endnote %}
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-20-42-51.png&quot; alt=&quot;2020-05-13-20-42-51&quot; /&gt;&lt;figcaption&gt;2020-05-13-20-42-51&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-14-13-21-35.png&quot; alt=&quot;2020-05-14-13-21-35&quot; /&gt;&lt;figcaption&gt;2020-05-14-13-21-35&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;接下来，将VMware Workstation分配给CentOS的256G的虚拟磁盘直通给CNA使用。为什么要用到磁盘直通呢？我们可以看到，部署CNA这台KVM虚拟机经过了2层虚拟化（第一层是VMware Workstation，第二层是QEMU-KVM）。下图表示的是在CentOS内将这块256G磁盘进行格式化，然后在该磁盘上创建一块QCOW2虚拟磁盘供KVM虚拟机使用：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-21-42-28.png&quot; alt=&quot;2020-05-13-21-42-28&quot; /&gt;&lt;figcaption&gt;2020-05-13-21-42-28&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;这样会带来什么问题呢？虽然KVM虚拟机能够正常使用，但是虚拟磁盘经过多层嵌套后，磁盘性能会大打折扣。解决办法就是让KVM虚拟机不经过CentOS的文件系统，直接对这块256GB的磁盘进行读写，也就是磁盘直通，如图：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-21-55-02.png&quot; alt=&quot;2020-05-13-21-55-02&quot; /&gt;&lt;figcaption&gt;2020-05-13-21-55-02&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;配置方法也比较简单，只需要在该虚拟机的配置文件进行修改即可。默认情况下，KVM虚拟机的配置文件保存在&lt;code&gt;/etc/libvirt/qemu/&lt;/code&gt;目录下，文件后缀名为.xml。编辑虚拟机配置文件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;vim /etc/libvirt/qemu/CNA.xml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;{% note warning %}
&lt;strong&gt;注意！&lt;/strong&gt;
根据虚拟机的实际情况进行配置。另外，编辑配置文件的时候一定要注意代码缩进。
{% endnote %}&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;disk type=&apos;block&apos; device=&apos;disk&apos;&amp;gt;     &amp;lt;!--磁盘类型为块，设备为磁盘--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;driver name=&apos;qemu&apos; type=&apos;raw&apos;/&amp;gt;  &amp;lt;!--驱动器名为qemu，驱动器类型为raw--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;source dev=&apos;/dev/sdb&apos;/&amp;gt;          &amp;lt;!--源设备，即需要直通的磁盘设备路径--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;target dev=&apos;sdb&apos; bus=&apos;scsi&apos;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;!--目标设备，即需要直通的磁盘设备，总线类型根据VMware Workstation创建的磁盘总线类型设置，我的是scsi--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/disk&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;编辑完成后保存并退出，然后使用&lt;code&gt;systemctl restart libvirtd&lt;/code&gt;重新启动libvirt服务。回到Cockpit的虚拟机管理界面，我们会发现多了一块磁盘，也就是上述配置的直通磁盘：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-22-29-14.png&quot; alt=&quot;2020-05-13-22-29-14&quot; /&gt;&lt;figcaption&gt;2020-05-13-22-29-14&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;启动虚拟机&lt;a href=&quot;#启动虚拟机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在虚拟机页面处，点击Install开始部署虚拟机，稍等片刻后部署完成，虚拟机会自动打开电源：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-22-51-20.png&quot; alt=&quot;2020-05-13-22-51-20&quot; /&gt;&lt;figcaption&gt;2020-05-13-22-51-20&lt;/figcaption&gt;&lt;/figure&gt;
看到这个界面，是不是觉得似曾相识？接下来就按照平常安装CNA节点的步骤进行操作就OK了！&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;开始部署FusionCompute&lt;a href=&quot;#开始部署fusioncompute&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;安装CNA节点&lt;a href=&quot;#安装cna节点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;设置CNA的网络、主机名、root密码等参数：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-22-56-37.png&quot; alt=&quot;2020-05-13-22-56-37&quot; /&gt;&lt;figcaption&gt;2020-05-13-22-56-37&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-22-57-00.png&quot; alt=&quot;2020-05-13-22-57-00&quot; /&gt;&lt;figcaption&gt;2020-05-13-22-57-00&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-22-57-37.png&quot; alt=&quot;2020-05-13-22-57-37&quot; /&gt;&lt;figcaption&gt;2020-05-13-22-57-37&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-22-58-10.png&quot; alt=&quot;2020-05-13-22-58-10&quot; /&gt;&lt;figcaption&gt;2020-05-13-22-58-10&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-22-58-48.png&quot; alt=&quot;2020-05-13-22-58-48&quot; /&gt;&lt;figcaption&gt;2020-05-13-22-58-48&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;VRM节点配置（踩坑）&lt;a href=&quot;#vrm节点配置踩坑&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;回顾：&lt;a href=&quot;https://www.unlinus.cn/2020/05/10/%E5%88%A9%E7%94%A8%E9%97%B2%E7%BD%AE%E4%B8%BB%E6%9C%BA%E6%90%AD%E5%BB%BAFusionCompute%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83/&quot; target=&quot;_blank&quot;&gt;利用闲置台式机搭建FusionCompute实验环境&lt;/a&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;无法添加主机&lt;a href=&quot;#无法添加主机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在VRM部署完成以后，创建了集群，但是无法添加主机，出现以下报错：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-23-43-30.png&quot; alt=&quot;2020-05-13-23-43-30&quot; /&gt;&lt;figcaption&gt;2020-05-13-23-43-30&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;解决方法是将CNA节点关机，将虚拟网卡型号改为e1000后重启CNA节点，问题解决！
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-13-23-57-02.png&quot; alt=&quot;2020-05-13-23-57-02&quot; /&gt;&lt;figcaption&gt;2020-05-13-23-57-02&lt;/figcaption&gt;&lt;/figure&gt;
&lt;strong&gt;PS：千万千万不要手贱去改网卡型号！&lt;/strong&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;虚拟机打开电源失败&lt;a href=&quot;#虚拟机打开电源失败&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;当主机添加完成后，成功创建一台虚拟机，但虚拟机打开电源失败，日志出现以下报错：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-14-02-57-07.png&quot; alt=&quot;2020-05-14-02-57-07&quot; /&gt;&lt;figcaption&gt;2020-05-14-02-57-07&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;多次修改vCPU核心数、线程数、重新安装CNA，仍然无效。最终解决办法是：关闭CNA节点，修改虚拟机的xml配置文件，修改CPU工作模式，将&lt;code&gt;&amp;lt;cpu mode=&apos;host-model&apos; check=&apos;partical&apos;&amp;gt;&lt;/code&gt;修改为&lt;code&gt;&amp;lt;cpu mode=&apos;host-passthrough&apos; check=&apos;none&apos;&amp;gt;&lt;/code&gt;，保存退出，重新启动CNA节点后，问题解决：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-14-03-33-24.png&quot; alt=&quot;2020-05-14-03-33-24&quot; /&gt;&lt;figcaption&gt;2020-05-14-03-33-24&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;后期经过查阅资料得知，&lt;strong&gt;使用host-model模式，Libvirt会根据物理CPU的型号，从规定的CPU中选择一种最接近的CPU型号，而使用host-passthrough模式直接看到的就是物理CPU的型号&lt;/strong&gt;。 参考自&lt;a href=&quot;https://www.cnblogs.com/uglyliu/p/6066569.html&quot; target=&quot;_blank&quot;&gt;梦轻尘的博客&lt;/a&gt;。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;最终效果&lt;a href=&quot;#最终效果&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;费尽周折，最后总算把实验环境搭起来了。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-14-03-41-15.png&quot; alt=&quot;2020-05-14-03-41-15&quot; /&gt;&lt;figcaption&gt;2020-05-14-03-41-15&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-14-03-40-47.png&quot; alt=&quot;2020-05-14-03-40-47&quot; /&gt;&lt;figcaption&gt;2020-05-14-03-40-47&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;云计算是离不开Linux的。学习云计算，拥有良好的Linux基础十分重要。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>利用闲置台式机搭建FusionCompute实验环境</title><link>https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/%E5%88%A9%E7%94%A8%E9%97%B2%E7%BD%AE%E4%B8%BB%E6%9C%BA%E6%90%AD%E5%BB%BAfusioncompute%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/%E5%8D%8E%E4%B8%BA%E4%BA%91%E8%AE%A1%E7%AE%97/%E5%88%A9%E7%94%A8%E9%97%B2%E7%BD%AE%E4%B8%BB%E6%9C%BA%E6%90%AD%E5%BB%BAfusioncompute%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83/</guid><pubDate>Mon, 11 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;{% note info %}
&lt;strong&gt;提示&lt;/strong&gt;
本文适合有一定云计算、虚拟化、华为HCIP-CloudComputing基础知识的人群食用。
{% endnote %}&lt;/p&gt;&lt;p&gt;FusionCompute是华为基于Linux+KVM研发的一个虚拟化套件，用于实现硬件资源的虚拟化，以及对虚拟化资源进行集中调度和管控，是华为FusionSphere解决方案的重要组成部分之一。为了学习这方面的内容，搭建一个简单可用的FusionSphere实验环境是非常有必要的（为什么我强调可用呢，继续往下看）。&lt;/p&gt;&lt;p&gt;华为已经在去年公布了最新版FusionCompute实验环境的搭建方案，大体思路是：在Ubuntu上部署KVM作为Hypervisor，然后在KVM上搭建FusionCompute。本人有幸在专业实训周对这个方案进行了验证，（当时是在VMware Workstation上安装Ubuntu，在Ubuntu里面安装KVM跑FusionCompute，层层嵌套，电脑配置就4核8G = =），让我彻底明白了原来没有服务器也能学云计算，妈妈再也不用担心我找不到服务器！&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;准备工作&lt;a href=&quot;#准备工作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;{% note warning %}
&lt;strong&gt;提示&lt;/strong&gt;
FusionCompute从6.X版本开始，底层架构已经更改为Linux+KVM，不再是Citrix Xen。
{% endnote %}&lt;/p&gt;&lt;p&gt;{% note danger %}
&lt;strong&gt;巨坑&lt;/strong&gt;
经本人多次试验，FusionCompute 6.X可以直接安装在VMware Workstation、Oracle VirtualBox、VMware ESXi等虚拟化软件（平台）上，但是后期没法正常使用（比如：VRM虚拟化部署失败、找不到计算资源等），搭了半天等于白干= =
{% endnote %}&lt;/p&gt;&lt;section&gt;&lt;h2&gt;硬件准备&lt;a href=&quot;#硬件准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;用Ubuntu嵌套部署FusionCompute显然是可行的。然而，鉴于其配置过程太过繁琐等原因（本人懒癌晚期/手动滑稽），将FusionCompute部署在物理机上是再简单不过的事情了。以下是本人的实验环境：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;硬件配置：&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;设备&lt;/th&gt;&lt;th&gt;处理器&lt;/th&gt;&lt;th&gt;内存&lt;/th&gt;&lt;th&gt;磁盘&lt;/th&gt;&lt;th&gt;网络&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;台式机&lt;/td&gt;&lt;td&gt;AMD-FX8300&lt;/td&gt;&lt;td&gt;杂牌DDR3 1600，8GB+4GB+4GB&lt;/td&gt;&lt;td&gt;杂牌120GB固态，希捷1TB机械盘&lt;/td&gt;&lt;td&gt;1GE网口&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;笔记本&lt;/td&gt;&lt;td&gt;Intel i5-8250u&lt;/td&gt;&lt;td&gt;渣士顿DDR4 2400，8GB×2&lt;/td&gt;&lt;td&gt;渣士顿120GB固态，西数500GB机械盘+日立500GB机械盘组RAID 0&lt;/td&gt;&lt;td&gt;1GE网口&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新冠时期的实验环境，唉~太难了&lt;/strong&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-12-14-05-54.jpg&quot; alt=&quot;2020-05-12-14-05-54&quot; /&gt;&lt;figcaption&gt;2020-05-12-14-05-54&lt;/figcaption&gt;&lt;/figure&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;软件准备&lt;a href=&quot;#软件准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;{% note info %}
&lt;strong&gt;提示&lt;/strong&gt;
本文采用的FusionCompute版本为8.0，最新版。
{% endnote %}&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;看表，别看我：&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;文件名称&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;FusionCompute_Installer-8.0.0.zip&lt;/td&gt;&lt;td&gt;FusionCompute安装程序（用于远程部署）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;FusionCompute_CNA-8.0.0-X86_64.iso&lt;/td&gt;&lt;td&gt;CNA节点安装镜像&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;FusionCompute_VRM-8.0.0-X86_64.iso&lt;/td&gt;&lt;td&gt;VRM节点安装镜像&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;网络规划&lt;a href=&quot;#网络规划&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这里我将台式机作为CNA节点，部署FusionCompute(裸机安装)，笔记本利用VMware Workstation创建虚拟机，用来部署VRM节点、IPSAN（因为台式机的机械盘资料太多了不敢乱动…所以这里加一台IPSAN为FFusionCompute提供存储）。因为手头没有光驱，而且这FusionCompute不能用U盘安装，所以CNA节点我会采用PXE部署（把路由器的DHCP服务临时关一下吧，一定要保证本地局域网内没有其他DHCP服务的干扰！）。网络规划如下：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;拓扑图&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-22-40-36.png&quot; alt=&quot;2020-05-10-22-40-36&quot; /&gt;&lt;figcaption&gt;2020-05-10-22-40-36&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;节点网络配置&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;节点名称&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;th&gt;节点类型&lt;/th&gt;&lt;th&gt;IP地址&lt;/th&gt;&lt;th&gt;默认网关&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;CNA&lt;/td&gt;&lt;td&gt;计算节点代理&lt;/td&gt;&lt;td&gt;物理机，即台式机&lt;/td&gt;&lt;td&gt;10.6.0.10/24&lt;/td&gt;&lt;td&gt;10.6.0.254&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;VRM&lt;/td&gt;&lt;td&gt;虚拟化资源管理&lt;/td&gt;&lt;td&gt;虚拟机，部署在笔记本上&lt;/td&gt;&lt;td&gt;10.6.0.60/24&lt;/td&gt;&lt;td&gt;10.6.0.254&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;IPSAN&lt;/td&gt;&lt;td&gt;iSCSI服务器&lt;/td&gt;&lt;td&gt;虚拟机，部署在笔记本上&lt;/td&gt;&lt;td&gt;10.6.0.100/24&lt;/td&gt;&lt;td&gt;10.6.0.254&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;开始部署FusionCompute&lt;a href=&quot;#开始部署fusioncompute&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;准备FusionCompute Installer&lt;a href=&quot;#准备fusioncompute-installer&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;将FusionCompute Installer解压到文件夹后运行exe安装程序：
{% note info %}
&lt;strong&gt;纠正&lt;/strong&gt;
计划有变，VRM节点部署在了笔记本的虚拟机上，只勾主机就OK了，VRM不用勾选。
{% endnote %}
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-05-27.png&quot; alt=&quot;2020-05-10-23-05-27&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-05-27&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;实验环境，典型安装即可：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-06-13.png&quot; alt=&quot;2020-05-10-23-06-13&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-06-13&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;设置软件包路径，点击浏览，定位到CNA节点安装镜像所在的文件夹，点击开始检测，检查完毕后点击下一步→下一步：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-09-57.png&quot; alt=&quot;2020-05-10-23-09-57&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-09-57&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;通过PXE部署CNA节点&lt;a href=&quot;#通过pxe部署cna节点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;配置DHCP服务等信息，检查无误后点击配置服务（一定要保证本地局域网内没有其他DHCP服务的干扰！一定要保证本地局域网内没有其他DHCP服务的干扰！一定要保证本地局域网内没有其他DHCP服务的干扰！）配置成功后点下一步：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-11-04.png&quot; alt=&quot;2020-05-10-23-11-04&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-11-04&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;前片已经配好DHCP服务了，接下来把台式机的电源打开，第一引导设置为PXE（引导模式必须是Legacy！如果不知道怎么设置引导，请自行百度各厂商主板BIOS的设置教程）
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-12-14-06-21.jpg&quot; alt=&quot;2020-05-12-14-06-21&quot; /&gt;&lt;figcaption&gt;2020-05-12-14-06-21&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;电脑正从PXE开始引导：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-12-14-06-34.jpg&quot; alt=&quot;2020-05-12-14-06-34&quot; /&gt;&lt;figcaption&gt;2020-05-12-14-06-34&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;稍等片刻后，FusionCompute Installer会发现PXE引导的主机，此时点击开始安装，正式开始部署CNA节点的操作系统。CNA的部署要花几分钟甚至更长时间（得看机子体质如何），请耐心等待：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-20-30.png&quot; alt=&quot;2020-05-10-23-20-30&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-20-30&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;当FusionCompute Installer显示的主机安装状态为安装完成时，点击下一步。因为这里实验环境只部署一台CNA，所以这里点确定，进入VRM的安装过程：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-24-31.png&quot; alt=&quot;2020-05-10-23-24-31&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-24-31&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;在VMware Workstation上部署VRM节点&lt;a href=&quot;#在vmware-workstation上部署vrm节点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;{% note info %}
&lt;strong&gt;提示&lt;/strong&gt;
原计划是将VRM部署在CNA上的，但由于中途出现了一些意外，所以这里直接将VRM安装在笔记本的虚拟机上了。
{% endnote %}
使用VMware Workstation创建一台虚拟机并挂载VRM安装镜像，作为VRM节点（性能配置至少4核5GB，硬盘120GB以上）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-30-12.png&quot; alt=&quot;2020-05-10-23-30-12&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-30-12&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;启动虚拟机，引导完成后开始进行各方面配置（使用↑、↓、←、→、Tab、Enter进行选择）：
1.配置网络
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-35-46.png&quot; alt=&quot;2020-05-10-23-35-46&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-35-46&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-35-37.png&quot; alt=&quot;2020-05-10-23-35-37&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-35-37&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;这里的Default Gateway一定要配！否则跨网段的话无法访问VRM：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-36-04.png&quot; alt=&quot;2020-05-10-23-36-04&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-36-04&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;2.root密码配置
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-36-45.png&quot; alt=&quot;2020-05-10-23-36-45&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-36-45&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;检查配置，确认无误后点OK，OK，OK…开始安装VRM：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-36-30.png&quot; alt=&quot;2020-05-10-23-36-30&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-36-30&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-41-50.png&quot; alt=&quot;2020-05-10-23-41-50&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-41-50&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;#配置FusionCompute&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;配置VRM&lt;a href=&quot;#配置vrm&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;初次登录&lt;a href=&quot;#初次登录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;安装完成后会自动重启。重启完成后稍等片刻，打开浏览器，通过VRM的IP地址访问VRM。初次登录的用户名为admin，密码为IaaS@PORTAL-CLOUD8!（这密码又长又臭= =），且初次登录会要求修改密码（这安全设定可以的，就是有点废手= =）。&lt;/p&gt;&lt;p&gt;{% note primary %}
&lt;strong&gt;奇淫技巧&lt;/strong&gt;
浏览器按F12，审查密码输入框元素，将onpaste=“return false;“改为onpaste=“return true;“就可以随意粘贴密码了。引自&lt;a href=&quot;https://www.txisfine.cn/archives/a66280b7.html&quot; target=&quot;_blank&quot;&gt;弹霄博科&lt;/a&gt;提供的解决方法。
{% endnote %}&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-48-39.png&quot; alt=&quot;2020-05-10-23-48-39&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-48-39&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-48-47.png&quot; alt=&quot;2020-05-10-23-48-47&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-48-47&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;成功登录到VRM：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-48-55.png&quot; alt=&quot;2020-05-10-23-48-55&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-48-55&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;创建FusionCompute集群&lt;a href=&quot;#创建fusioncompute集群&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;展开左侧栏图标，找到资源池，右键单击，创建集群：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-50-24.png&quot; alt=&quot;2020-05-10-23-50-24&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-50-24&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;为集群进行一些基础配置：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-52-41.png&quot; alt=&quot;2020-05-10-23-52-41&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-52-41&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-52-51.png&quot; alt=&quot;2020-05-10-23-52-51&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-52-51&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-53-27.png&quot; alt=&quot;2020-05-10-23-53-27&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-53-27&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-53-36.png&quot; alt=&quot;2020-05-10-23-53-36&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-53-36&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;为集群添加CNA节点&lt;a href=&quot;#为集群添加cna节点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;右键单击集群，添加主机，输入CNA节点的网络信息：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-10-23-54-26.png&quot; alt=&quot;2020-05-10-23-54-26&quot; /&gt;&lt;figcaption&gt;2020-05-10-23-54-26&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;为集群添加IPSAN存储&lt;a href=&quot;#为集群添加ipsan存储&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;{% note warning %}
&lt;strong&gt;提示&lt;/strong&gt;
本文IPSAN节点是在CentOS 7下基于软件实现的，由于内容超出本文范围，IPSAN的安装配置过程这里不一一叙述。
{% endnote %}
为集群添加IPSAN存储，首先要添加存储资源。输入IPSAN服务器的IP地址（管理IP和存储IP一致即可），勾选关联主机：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-11-00-00-42.png&quot; alt=&quot;2020-05-11-00-00-42&quot; /&gt;&lt;figcaption&gt;2020-05-11-00-00-42&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-11-00-01-06.png&quot; alt=&quot;2020-05-11-00-01-06&quot; /&gt;&lt;figcaption&gt;2020-05-11-00-01-06&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;在集群内扫描所有存储设备：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-11-00-01-40.png&quot; alt=&quot;2020-05-11-00-01-40&quot; /&gt;&lt;figcaption&gt;2020-05-11-00-01-40&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;将IPSAN作为数据存储进行添加：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-11-00-01-56.png&quot; alt=&quot;2020-05-11-00-01-56&quot; /&gt;&lt;figcaption&gt;2020-05-11-00-01-56&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-11-00-02-08.png&quot; alt=&quot;2020-05-11-00-02-08&quot; /&gt;&lt;figcaption&gt;2020-05-11-00-02-08&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;后记&lt;a href=&quot;#后记&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;大学时期的实训环境&lt;a href=&quot;#大学时期的实训环境&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;怀念那段天天撸服务器撸到爽的日子…
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-12-14-06-57.jpg&quot; alt=&quot;2020-05-12-14-06-57&quot; /&gt;&lt;figcaption&gt;2020-05-12-14-06-57&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-05-12-14-07-03.jpg&quot; alt=&quot;2020-05-12-14-07-03&quot; /&gt;&lt;figcaption&gt;2020-05-12-14-07-03&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;FusionCompute的部署的方式有好几种，本文介绍的只是万不得已的情况下采用的部署方法，整个部署过程还是比较简单的，当然这个简单是要建立在一定的理论基础和动手实践能力之上的。&lt;/p&gt;&lt;p&gt;只要思想不滑坡，办法总比困难多，HCIE身上纹，掌声送给社会人（假装我有HCIE/狗头保命）。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>ESXi6.7一些罕见问题的解决方法</title><link>https://blog.tokiame.cn/posts/esxi/esxi%E4%B8%80%E4%BA%9B%E7%BD%95%E8%A7%81%E9%97%AE%E9%A2%98%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/esxi/esxi%E4%B8%80%E4%BA%9B%E7%BD%95%E8%A7%81%E9%97%AE%E9%A2%98%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95/</guid><pubDate>Tue, 28 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;起因&lt;a href=&quot;#起因&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;一大早睡得正香，突然被一通电话叫醒了（内心万马奔腾一万个不情愿）。“…昨晚停了一次电，服务器全都连不上了，网络有问题，过来帮忙看一下”。点开微信群一看，瞬间不淡定了：“工程师反映，系统远程不了了，网站也打不开”，“停电了，昨晚半夜供电局高压跳闸，我们的电池没能坚持下去”。这不意味着整个机房瞬间失去电力供应了？！&lt;/p&gt;&lt;p&gt;我连滚带爬坐到了电脑椅上，打开电脑，还能连接到机房VPN，说明出口网络还是通的。几经排查，原来是因为刀片服务器的交换机忘记保存配置，断电重启后部分配置失效了（一记耳光）。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;第一个问题：VCSA无法访问&lt;a href=&quot;#第一个问题vcsa无法访问&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;异常表现&lt;a href=&quot;#异常表现&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;排查过程中发现，VCSA访问不了了，提示&lt;strong&gt;503 Service Unavailable(Failed to connect to endpoint…）&lt;/strong&gt;。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;解决方法&lt;a href=&quot;#解决方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;第一反应告诉我，可能是VCSA的核心服务没能启动。按照网上大神的说法，需要SSH登录到VCSA，用命令行来启动核心服务。但是问题来了，这VCSA默认没打开SSH服务啊，还能怎么搞？
其实VCSA还有个设备管理功能（用于进行VCSA底层组件管理），可以通过浏览器访问&lt;code&gt;https://&amp;lt;VCSA IP&amp;gt;:5480：&lt;/code&gt;进入：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-29-23-20-11.png&quot; alt=&quot;2020-04-29-23-20-11&quot; /&gt;&lt;figcaption&gt;2020-04-29-23-20-11&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-29-23-23-46.png&quot; alt=&quot;2020-04-29-23-23-46&quot; /&gt;&lt;figcaption&gt;2020-04-29-23-23-46&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;果不其然，VCSA的好几个核心服务都没有启动。按照下图说明来启动相关服务，然后看看VCSA是不是能访问了？：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-29-23-30-14.png&quot; alt=&quot;2020-04-29-23-30-14&quot; /&gt;&lt;figcaption&gt;2020-04-29-23-30-14&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-29-23-32-31.png&quot; alt=&quot;2020-04-29-23-32-31&quot; /&gt;&lt;figcaption&gt;2020-04-29-23-32-31&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;第二个问题：无法操作虚拟机&lt;a href=&quot;#第二个问题无法操作虚拟机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;异常表现&lt;a href=&quot;#异常表现-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;一切尽在不言中：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-29-23-35-50.png&quot; alt=&quot;2020-04-29-23-35-50&quot; /&gt;&lt;figcaption&gt;2020-04-29-23-35-50&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;还有无脑弹出的消息：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-29-23-37-05.png&quot; alt=&quot;2020-04-29-23-37-05&quot; /&gt;&lt;figcaption&gt;2020-04-29-23-37-05&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;解决方法&lt;a href=&quot;#解决方法-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;同第一个问题一样，也是因VCSA服务异常造成的。把相关服务启动或者重新启动一遍就可以了。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;通常遇到以上问题时，重点关注这个几个服务的状态，如果处于异常或停止状态，只需把对应服务启动或重启就OK了：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;VMware vService Manager&lt;/li&gt;
&lt;li&gt;VMware vSphere Update Manager&lt;/li&gt;
&lt;li&gt;VMware PSC Health&lt;/li&gt;
&lt;li&gt;VMware vSphere Client&lt;/li&gt;
&lt;li&gt;VMware vSphere Web Client&lt;/li&gt;
&lt;li&gt;VMware vCenter Server&lt;/li&gt;
&lt;li&gt;VMware vCenter-Services&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;数据无价，双手合十，祈祷永不宕机，永不断电。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>ESXi升级方法 - 从5.5到6.0</title><link>https://blog.tokiame.cn/posts/esxi/esxi%E4%BB%8E55%E5%88%B060/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/esxi/esxi%E4%BB%8E55%E5%88%B060/</guid><pubDate>Mon, 27 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;上个月给数据中心的vSphere平台做了一次升级，期间遇到各种各样的坑，还好后期都完美解决了，不然真得跑路了（都是自找的= =）。现在我来把当时的整个操作流程整理一下。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;思考&lt;a href=&quot;#思考&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;先简单介绍一下这套vSphere平台的配置。平台共包含10个计算节点，均已组成集群并配置了HA，集群使用IPSAN共享存储，每个计算节点正在运行的ESXi版本是5.1。现在的任务是将每个节点的ESXi版本都升级到5.5。&lt;/p&gt;&lt;p&gt;那么问题来了，怎样才能保证ESXi能够平滑升级的同时，又不影响到平台上的虚拟机呢？这时，我们可以利用集群的特性，将需要升级的节点上的虚拟机热迁移到其他节点（热迁移需要配置vMotion），然后将这个节点切换到维护模式，再进行升级。这样既能完成升级，又能保证业务不中断，岂不美哉！&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;操作过程&lt;a href=&quot;#操作过程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;准备&lt;a href=&quot;#准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;前面balabala了一堆废话，是时候开始实操了！我们先准备好一些东西：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;超级终端软件（如PuTTY、SecureCRT、XShell、MobaXTerm等，Win10 CMD自带的SSH功能也是可以的）；&lt;/li&gt;
&lt;li&gt;ESXi 5.5升级包（可从VMware官网或其他途径获取）&lt;/li&gt;
&lt;li&gt;VMware vSphere Client（vSphere客户端）&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;通过vSphere Client进行操作&lt;a href=&quot;#通过vsphere-client进行操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;使用vSphere Client登录到ESXi节点，将节点切换到维护模式：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-26-18-00-29.png&quot; alt=&quot;2020-04-26-18-00-29&quot; /&gt;&lt;figcaption&gt;2020-04-26-18-00-29&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-26-18-04-01.png&quot; alt=&quot;2020-04-26-18-04-01&quot; /&gt;&lt;figcaption&gt;2020-04-26-18-04-01&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;将ESXi升级包上传到数据存储，并记下数据存储路径，后续升级操作要用到。例如我这里将升级包上传到了本地存储，那么我现在得记下本地存储的路径：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-26-18-20-10.png&quot; alt=&quot;2020-04-26-18-20-10&quot; /&gt;&lt;figcaption&gt;2020-04-26-18-20-10&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;通过SSH登录到ESXi节点&lt;a href=&quot;#通过ssh登录到esxi节点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;打开该节点的配置→安全配置文件，启动SSH服务：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-26-18-05-41.png&quot; alt=&quot;2020-04-26-18-05-41&quot; /&gt;&lt;figcaption&gt;2020-04-26-18-05-41&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-26-18-06-45.png&quot; alt=&quot;2020-04-26-18-06-45&quot; /&gt;&lt;figcaption&gt;2020-04-26-18-06-45&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;打开超级终端软件（笔者用的是XShell），使用ESXi的账号密码，用SSH登录到ESXi节点：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-26-18-09-19.png&quot; alt=&quot;2020-04-26-18-09-19&quot; /&gt;&lt;figcaption&gt;2020-04-26-18-09-19&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;使用命令对ESXi进行平滑升级&lt;a href=&quot;#使用命令对esxi进行平滑升级&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;使用这条命令列出ESXi升级包的版本：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;esxcli&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;software&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sources&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;profile&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;ESXi升级包所在的数据存储的路径&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-26-18-15-43.png&quot; alt=&quot;2020-04-26-18-15-43&quot; /&gt;&lt;figcaption&gt;2020-04-26-18-15-43&lt;/figcaption&gt;&lt;/figure&gt;
（注：数据存储路径见本文3.2）&lt;p&gt;&lt;/p&gt;&lt;p&gt;然后使用这条命令，通过升级包进行升级&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;esxcli&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;software&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;profile&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;ESXi升级包所在的数据存储的路径&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;ESXi升级包版本&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-26-19-32-24.png&quot; alt=&quot;2020-04-26-19-32-24&quot; /&gt;&lt;figcaption&gt;2020-04-26-19-32-24&lt;/figcaption&gt;&lt;/figure&gt;
稍等片刻会出现升级结果。升级成功后，要求重新启动，这时输入reboot命令，将该节点重启即可。&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;后续操作&lt;a href=&quot;#后续操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;重启完成后，再次用vSphere Client登录到ESXi，看看ESXi的版本是不是升级到5.5了？
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-26-19-40-10.png&quot; alt=&quot;2020-04-26-19-40-10&quot; /&gt;&lt;figcaption&gt;2020-04-26-19-40-10&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;确认升级成功后，将ESXi节点退出维护模式：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-26-19-44-17.png&quot; alt=&quot;2020-04-26-19-44-17&quot; /&gt;&lt;figcaption&gt;2020-04-26-19-44-17&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;后记&lt;a href=&quot;#后记&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;以上就是ESXi的平滑升级流程。当然，在生产环境下，系统升级前必须拟定相应的方案（例如升级流程、应急预案等），并对原系统进行测试、数据备份，升级过程中必须严格遵循操作规程，升级后还需要保留一定时长的观察期，当这一系列流程都顺利完成后，才能正式交付使用。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Hexo折腾手记</title><link>https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/hexo%E6%8A%98%E8%85%BE%E6%89%8B%E8%AE%B0/</link><guid isPermaLink="true">https://blog.tokiame.cn/posts/blog%E7%BB%B4%E6%8A%A4/hexo%E6%8A%98%E8%85%BE%E6%89%8B%E8%AE%B0/</guid><pubDate>Sat, 25 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;写在最前面…&lt;a href=&quot;#写在最前面&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Hexo是基于node.js构建的一套静态博客平台，安装部署过程都比较简单，稍微懂一点点html和Markdown语法就能搞定（这也是笔者由WP转向Hexo的一个初衷…）
话不多说，立马开搞！&lt;/p&gt;&lt;section&gt;&lt;h2&gt;步骤记录（笔者用的是Windows）&lt;a href=&quot;#步骤记录笔者用的是windows&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;开始之前…&lt;a href=&quot;#开始之前&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;万事开头难（特别是对于我这种对编程一窍不通的菜鸡儿= =）。要让Hexo跑起来，首先要满足一些条件：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;一台Windows或Linux主机；&lt;/li&gt;
&lt;li&gt;主机内部署好node.js环境；&lt;/li&gt;
&lt;li&gt;安装好Git（用于将hexo项目pull到本地，玩码云或者Gayhub的同志必备）；&lt;/li&gt;
&lt;li&gt;最基本的！必须懂得npm的简单使用！必须得会一点Markdown语法（除非你拿这玩意当记事本来写）；&lt;/li&gt;
&lt;li&gt;准备好编辑器（sublime，atom，vscode，typora等等）。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;安装git&lt;a href=&quot;#安装git&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;下载地址：&lt;a href=&quot;http://npm.taobao.org/mirrors/git-for-windows/&quot; target=&quot;_blank&quot;&gt;http://npm.taobao.org/mirrors/git-for-windows/&lt;/a&gt;。我下的是最新版：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/npm.png&quot; alt=&quot;20200425192102&quot; /&gt;&lt;figcaption&gt;20200425192102&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;下载完成后，运行安装（保持默认配置,一直Next即可）。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;安装node.js&lt;a href=&quot;#安装nodejs&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;上&lt;a href=&quot;https://nodejs.org/en/&quot; target=&quot;_blank&quot;&gt;node.js官网&lt;/a&gt;下载适合自己系统版本的node.js运行环境安装包（建议用IDM、迅雷之类的工具来下载，这样比较快）。下载完成后，运行安装即可（没什么需要的话，保留默认配置安装就可以了）：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/2020-04-26-20-34-19.png&quot; alt=&quot;2020-04-26-20-34-19&quot; /&gt;&lt;figcaption&gt;2020-04-26-20-34-19&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;安装完成后,执行以下命令：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-v&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;查看当前安装的node.js版本&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;v12.16.1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-v&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;查看当前安装的node.js软件包管理器版本&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;v6.13.4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;registry&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;http://registry.npm.taobao.org/&lt;/span&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;更换npm安装源为国内源（这里用淘宝的）&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;刷新npm源&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;开始部署Hexo&lt;a href=&quot;#开始部署hexo&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hexo-cli&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;使用npm安装Hexo&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;D:&lt;/span&gt;&lt;span&gt;\P&lt;/span&gt;&lt;span&gt;roject&lt;/span&gt;&lt;span&gt;\h&lt;/span&gt;&lt;span&gt;exo&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;进入你要部署Hexo的目标文件夹&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;hexo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;init&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;部署Hexo&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Tips：Hexo init时，需要将github上的Hexo项目pull下来，速度会比较慢，除非你有喝酸酸乳（/手动滑稽）。初次部署完成后，执行以下命令进行初始化：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;hexo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;clean&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;清除缓存&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;hexo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;g&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;生成静态页面&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;hexo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;开始跑Hexo&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;打开浏览器，输入&lt;code&gt;IP地址:4000&lt;/code&gt;(本地的话是 &lt;code&gt;localhost:4000&lt;/code&gt; 或 &lt;code&gt;127.0.0.1:4000&lt;/code&gt;),就可以看到效果了，是不是很简单！
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.tokiame.cn/example.png&quot; alt=&quot;20200425192452&quot; /&gt;&lt;figcaption&gt;20200425192452&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;后记&lt;a href=&quot;#后记&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;如果你没有公网服务器和域名，也可以将你的Hexo丢到Gayhub、码云或者coding之类的代码托管平台上，直接用你的gayhub域名就能访问了！具体步骤可以参考以下链接的内容：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%88%9D%E6%AC%A1%E8%BF%90%E8%A1%8C-Git-%E5%89%8D%E7%9A%84%E9%85%8D%E7%BD%AE&quot; target=&quot;_blank&quot;&gt;初次运行Git前的配置&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.jianshu.com/p/e70b4ca63115&quot; target=&quot;_blank&quot;&gt;hexo博客部署到github&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;</content:encoded></item></channel></rss>