「记录」使用PCI设备直通技术在vSphere中部署基于Ubuntu Server 1804的GPU服务器

大约在两年前我撰写了一篇文章记录我为实验室部署GPU云的核心过程。现在给学院部署GPU云,本以为可以照着原来的文章很顺利就可以装完,结果却搞得心态爆炸,一度怀疑人生,所以很有必要再写一篇记录一下。

环境:

实体机:曙光 天阔 W780-G20
操作系统: VMware ESXi, 6.7.0, 14320388
管理平台: VMware vCenter Server Appliance, 6.7.0, 15129973
GPU:NVIDIA GP100GL [Tesla P100 PCIe 16GB] ×8

先简单说一下部署环境和上次的区别:第一是平台不再是商业大厂DELL EMC,很多文档资料缺失;第二是底层esxi和管理平台vcenter都升级到了6.7;第三是虚拟机准备安装Ubuntu Server 1804,之前的16在21年来看有点过老。最关键的是第四点:显卡质量和数量都上了一个巨大台阶,原来单台机器最多3卡(一个泰坦X,两个泰坦XP),遇到的显存最大的卡应该就是p40。当时在安装p40的时候就遇到奇怪的问题,为此还写了一篇记录文章。这次遇到的核心问题和p40那次应该是同一个,都是高级显卡显存过大,需要一些特定的底层配置参数,vmware专门有博客文章(下简称博文)进行了介绍,但是我一开始寻找解决方案的方向有很大偏差,绕了一大圈才找到。

让我一度怀疑人生的核心问题

0. 准备工作

0.1. 主机BIOS设置

根据博文内容,需要在运行虚拟GPU服务器的esxi主机的BIOS设置中查找并开启类似这样的选项:“above 4G decoding”、“memory mapped I/O above 4GB”、“PCI 64-bit resource handing above 4G”

启用BISO中的相关设定

0.2. 配置PCI设备直通

在esxi主机中配置好显卡的设备直通

0.3. 上传系统安装镜像

将ubuntu server 1804安装镜像上传到主机数据存储

1. 创建虚拟机

⚠️注意:必须在vsphere client中创建虚拟机,不可以在本地workstation创建虚拟机安装后再上传

首先按照常规方法创建虚拟机,创建后不要启动!按以下步骤进行预先配置。

1.1. 设置虚拟机引导方式为EFI

为虚拟机的“引导选项”中启用EFI

在虚拟机页面,“操作”→“编辑设置”→“虚拟机选项”→“引导选项”→“固件”,选择“EFI”。

1.2. 设置虚拟机高级配置参数

虚拟机选项中的高级选项卡

在刚才1.1的“引导选项”下方找到“高级”,点击“配置参数”右侧的“编辑配置”,进入高级参数配置窗口。

高级参数配置窗口

在窗口中点击“添加配置参数”,然后添加2条

⚠️注意:“pciPassthru.64bitMMIOSizeGB”条目的值需要根据虚拟机具体直通的显卡型号和数量进行计算后得出!

博文中提供了一种简单估算方法:GPU个数 × 一块GPU的显存大小(GB为单位),然后将结果向上取整到下一个2的整数次幂。

例如,要给这个虚拟机直通两个p100显卡,则值应为:2 × 16 = 32,向上取整到下一个2的整数次幂,得到64。但如果是直通v100显卡,64则只能直通一块,因为v100单卡显存就是32G,想要直通两块就需要改为128。

⚠️注意:与通常情况不同的是不可以添加“hypervisor.cpuid.v0 = FALSE”参数!

1.3. 修改虚拟机兼容性

选择升级虚拟机兼容性

在虚拟机页面,“操作”→“兼容性”→“升级虚拟机兼容性”,打开“配置虚拟机兼容性窗口”。

配置虚拟机兼容性窗口

将虚拟机兼容性改为:ESXi 6.7 Update 2 及更高版本

2. 安装操作系统

现在可以进行第一次开机,并按照提示安装操作系统。安装后,顺便进行基本的系统配置,例如换源、配置网络、软件包升级等。

3. 为虚拟机添加显卡直通

3.1. 启用内存预留

启用内存预留

在虚拟机页面,“操作”→“编辑设置”→“虚拟硬件”→“内存”,勾选“预留所有客户机内存(全部锁定)”。

3.2. 添加显卡设备

添加显卡设备

在虚拟机页面,“操作”→“编辑设置”→“虚拟硬件”→“添加新设备”→“PCI 设备”,然后在PCI设备选项中选择需要添加的显卡。

4. 安装NVIDIA驱动和CUDA

4.1. 检查GPU

4.2. 禁用nouveau

4.3. 安装依赖包

4.4. 安装NVIDIA驱动

默认已经下载好驱动文件

4.5. 安装CUDA

「记录」解决Ubuntu Server 18.04因Intel微码修复无法启动问题

最近在重建学院GPU云,使用原来实验室云的双层虚拟化架构。原来实验室云使用的是基于ubuntu16的GPU服务器,21年再使用16版本就有点老了,准备换成ubuntu18,但是遇到一个奇怪的问题,在此记录一下。

问题的表现形式如下:

环境:

实体机:曙光 天阔 W780-G20
操作系统: VMware ESXi, 6.7.0, 14320388
管理平台: VMware vCenter Server Appliance, 6.7.0, 15129973
虚拟机兼容性: ESXi 6.7 Update 2
虚拟机高级配置附加参数:
hypervisor.cpuid.v0 = FALSE
pciPassthru.use64bitMMIO = TRUE
虚拟机操作系统版本:Ubuntu Server 18.04.5 LTS
截止2021年1月20日,已更新所有最新包

当虚拟机CPU只给一个核心的时候,一切正常。当给2个或者更多核心的时候会出现无法启动的问题,显示如下:

虚拟机无法启动的控制台输出

经过排查发现问题触发的原因有两个:①虚拟机高级配置参数 hypervisor.cpuid.v0 = FALSE;②有2个或更多CPU核心

通过搜索找到两篇类似问题的文章:ESXi 6.7 ubuntu GPU直连踩坑记VMware ESXi 6.7.0 update2 使用 GPU Passthrough 模式的坑。第一篇文章是通过更新esxi解决的,但是第一篇文章里更新后的esxi版本与我现在使用的是同一版本,所以解决方法对我不适用。第二篇文章将问题的根源指向了intel的漏洞修补微码软件包“intel-microcode”。

通过测试发现,无法启动的核心问题就是由“intel-microcode”导致的,该软件包是intel为了修补幽灵、熔断漏洞的补丁,应该是在启动之前执行某种防护操作。我测试时首先尝试卸载该软件包,并同时卸载依赖包,结果导致部分核心包被卸载,无法启动。之后测试只卸载该软件包,不卸载依赖,结果问题解决,确定问题核心就是该软件包导致。

为了解决问题,我首先想到的是在安装vsphere过程中被提示可能受intel的漏洞影响,所以我考虑可能是虚拟化平台的宿主机没有进行漏洞修补,而ubuntu虚拟机进行了漏洞修补,出现兼容性问题。为此我查阅了vsphere的文档,确定默认状态下vsphere6.7确实是不启用漏洞修补程序的。同时,我也发现启动修补程序会导致严重的性能损失,不适合我现在的场景。

之后,我考虑既然虚拟化平台没有进行漏洞修补,那关掉ubuntu虚拟机的漏洞修补应该可以解决问题。于是我阅读了第二篇文章中提到的讨论:Intel-microcode package upgrade in ubuntu 18.04 leads to unbootable system。根据这个讨论,可以通过更改grub参数的方式禁用微码修补,但是尝试了讨论中的解决方案和关联的解决方案,发现并没有效果。最终,我决定按照讨论中的最终解决方案,更换旧版本的二进制软件包。

解决方案:

RouterOS配置教育网IPv6直通

  前几天终于下定决心升级了自己的网络设备,一方面已经种草很久了,另外一方面实验室的网络也需要进一步优化,先用自己的设备进行学习和实践可以省很多乱七八糟的问题(恩,一定是在给自己花钱找借口……)。

  这次升级了两个设备,其中之一就是MikroTik公司的高性能路由器RB4011iGS+RM,据说是刚发布一年,性能看参数似乎不错,但玩路由器玩的实在有限,既无法给出感性的区别,也不会进行详细的性能试验。那为什么选择这个路由器而不是更便宜的款式呢?我主要是看上了他多达10个网口以及最关键的万兆光口。由于内置的是官方的RouterOS,每一个网口都是一个全功能独立网卡,对于以后进行双栈甚至多栈非常有用(同时拉3根不同运营商的宽带进来,想想都刺激,钱嘛,你说什么?)。同时,万兆光口对于以后万兆内网的构建非常有用,对于这种网络设备基本计划寿命都在十年以上,所以有一些性能预留还是很有必要的。

  说了这么多废话下面进入正题,在配置完基本网络之后,开始准备配置教育网重要特色IPv6,这时我遇到非常诡异的问题。首先就是无法获取到v6地址,我几乎尝试了网上能找到的所有教程提供的方法,试了ROS中v6设置所有的可选项,但是路由器还是无法成功获取到v6地址或v6地址池。一般情况下教育网v6在我所在学校里是可以自动获取到的,但具体的分发方法我到现在也没搞清楚,虽然我自学了一些v6网络的知识,但是网络中心给的信息非wan常quan有mei限you,所以要高明白可能需要从校园网抓包分析,不到万不得已我肯定不会这么做。除了尝试让ROS获取v6地址,我还尝试了直接中继DHCPv6,虽然网上很多资料都说不可以这样操作,结果呢肯定是不行。

  在经过了一天的折腾以后,我开始扩大资料查找范围,我逐渐发现ROS的v6是有缺陷的。具体的资料我没保存,因为可信度都多少有缺陷,大概意思就是教育网的v6的某些特性,在ROS中没有得到支持;同时,ROS内的v6在地址获取和DHCPv6中继的功能中存在bug。所以,结论就是ROS现阶段(v6.44)无法按正常方式使用教育网v6.

  但是我显然不甘心这样,同时ROS强大的自由度怎么会导致连这么个问题都解决不了呢,一定有别的方法可以绕过这些问题。下面给出我最后的解决方法:

1、 首先创建一个wan网桥,也可以理解为创建一个路由器的前置交换机。这个wan桥,包括原来的wan口,还要有一个闲置网口,作为v6流量专用网口。

2、 修复防火墙里原有的nat设置。在完成第一步之后,会发现原有的v4网络不正常,这是因为原有的nat地址转换配置的出口网卡原来绑定的wan口被新建的wan桥连接,只需要将原来nat策略中的出口网卡改为新的wan桥即可。

3、 阻断所有非v6流量。

在桥的过滤器设置中,添加两条规则,禁止v6流量专用网卡上的非v6流量。

经过实践发现在桥上禁止流量并不好用,不知道是什么原因,可能我的配置有问题。最终解决方案是在下级的网管交换机上配置安全规则。

4、 最后用网线将v6流量专用接口和内网交换机连接起来。这样内网的所有设备应该都可以直接获取到教育网的v6终端地址了。

  这个解决方案的原理其实很简单,就是ROS的v6路由不是有问题无法正常工作么,那么我们能不能直接让教育网v6跨过ROS的路由,创造一个单独的v6交换机,把v6流量接到内网。通过上面的操作,相当于所有的设备在v4层面上都通过ROS的路由连接校园网,v6层面上则直接通过交换机连接到校园网。

[记录]配置Docker出现的错误

  为了方便管理实验室的GPU资源,上了多层虚拟化,在部署和运维Docker节点的过程中踩了一些坑,在这记录一下,以便日后查阅。

1、Docker服务无法启动

问题定位: Docker启动的时候传入了命令行参数,同时也指定了配置文件,两个配置发生了冲突。

解决方法:

[记录]英伟达Tesla K80显卡直通出现未知错误

  实验室添置了新显卡,超微塔式服务器没地方了,只好把旧显卡换到戴尔刀片里,之后在做显卡直通的时候遇到一些莫名其妙的问题,折腾了好久才解决,在这记录一下。

环境:

实体机:DELL PowerEdge R730
操作系统: VMware ESXi, 6.5.0, 6765664
管理平台: VMware vCenter Server Appliance, 6.7.0.21000, 11726888
设备: Nvidia Tesla K80

  问题是这样的:在主机上开虚拟机,并直通其他PCI设备(usb控制器),一切正常,且虚拟机正常启动,正常识别设备。给虚拟机直通Nvidia Tesla K80,虚拟机无法开机,报未知异常,如下图:

  尝试了很多国内外常见的解决方案都无法生效。怀疑是跟显卡型号有关,最后在官方社区找到一个出现完全相同问题的讨论:Passing through Tesla k80 Issue…。下面有一个官方人员的回答是:

Re: Passing through Tesla k80 Issue…

A previous version of this post included advice to add two VMX file entries (efi.legacyBoot.enabled and efi.bootOrder) as part of the solution. These two settings should NOT be used. Instead, following the directions below.
 ——–
You should be able to pass a single GPU (that is, half of a K80) to a VM running on ESX 6 by creating an EFI-bootable VM, doing an EFI installation of your guest OS, and then adding the following to the VM’s VMX file.
pciPassthru.use64bitMMIO=”TRUE”
Trying to pass more than one of these GPUs into the same VM will currently hit a platform memory limit and the VM will fail to boot. (NOTE: This limit has been removed in ESX 6.5).
A smaller card like the K2 does not have this issue: GPGPU Blog Entry
If the above does not work for you, send me email directly at “simons at vmware dot com”. In either case, please share your experience with others on the thread.
And if you have any other questions about running HPC applications in a VMware environment, I’d be happy to hear from you directly.
If you are interested in learning more of what we’ve been doing related to HPC, you can check out our HPC entries on the VMware CTO blog site here: HPC Blog Entries
 
Josh Simons
High Performance Computing
Office of the CTO
VMware, Inc.

  关键是要添加以下高级参数:

「记录」在vSphere中基于Ubuntu Server 1604部署Docker,并安装CUDA,构建多层虚拟化深度学习开发环境

首先准备好Ubuntu Server 1604的虚拟机,只设定基本功能,不添加显卡直通等特殊功能,以便于基础环境完成后进行快照。

安装好系统后,进行ssh端口设置,apt换源,apt upgrade等基本操作,之后关机打快照。

1、 显卡直通

1.1、 添加显卡直通

勾选“预留所有客户机内存(全部锁定)”,并添加显卡PCI设备,确定修改。不在第一步直通显卡的话,之后的驱动安装可能有问题!

1.2、 修改虚拟机硬件配置参数

切换到“虚拟机硬件”选项卡。展开“高级”,修改“配置参数”。 在打开的“配置参数”对话框中,点击“添加配置参数”,填入“
hypervisor.cpuid.v0 = FALSE”
,确定修改。完成后务必再次进入“配置参数”,检查参数确实已经添加并保存!

1.3、 启动虚拟机并配置基本环境

配置网络、换源、更新软件包等

完成基本配置后建议对虚拟机生成快照!

2、 安装显卡驱动

2.1、 下载驱动

可以在 NVIDIA驱动下载 或者 Geforce显卡驱动下载 页面搜索并下载需要的驱动程序,也可以通过直接拼接资源链接:
http://cn.download.nvidia.com/XFree86/Linux-x86_64/[驱动版本号]/NVIDIA-Linux-x86_64-[驱动版本号].run,进行下载。比如我要下载430.14版本号的Linux驱动,可以直接在服务器运行以下代码:

2.2、 检查GPU

应该显示相应的PCI设备

2.3、 禁用nouveau

2.3、 安装显卡驱动

安装完驱动建议对虚拟机生成快照!

然后开机安装docker,去清华源帮助文档里找清华源安装方法。安装好之后配置docker远程管理,参考“docker 配置 TLS 认证开启远程访问”“Docker 守护进程+远程连接+安全访问+启动冲突解决办法 (完整收藏版)”。配置好docker之后关机打快照。

在ESXi中添加显卡直通,并启动。

2020年6月28日补充

2.4、安装CUDA

本处使用的CUDA安装文件是文章在19年6月初次完成时下载的,因此安装方法也是当时的安装方法。根据从英伟达官网的CUDA安装文档来看,最新的推荐安装方式似乎变成了用apt包管理器安装。但是根据最新的安装文档,我在操作过程中出现了两个问题:首先是所有的下载资源(包括软件源证书和软件包)都无法在中国大陆正常下载;另一个是安装后server系统会出现GUI界面。因此,我决定使用去年的安装包和安装方法。

安装完CUDA建议对虚拟机生成快照!

3、 安装Docker

3.1、 安装Docker

根据清华开源镜像站的帮助文档,安装Docker。

3.2、 安装nvidia-docker

安装并配置好docker建议对虚拟机生成快照!

4、 配置TLS远程管理,及Portainer接入

配置TLS远程管理是在Docker服务器(运行docker守护进程的服务器)进行配置,因此下面的$HOSTDocker服务器的IP

4.1、 修改openssl配置的CA部分

ubuntu 16.04 下 openssl 配置文件位置:/usr/lib/ssl/openssl.cnf,其他系统可参考

4.2、 生成私钥并自签证书

4.3、 颁发证书

4.4、 配置Docker使用TLS认证

4.5、 Portainer接入

如果已经添加过服务器,只更新TLS认证配置,则只需要上传相应证书:

/etc/docker/ssl/目录内的cert.pemkey.pem文件拷贝到本地,上传至Portainer。

上传证书

如果是新服务器,按照下面步骤进行添加:

配置好TLS远程管理后建议对虚拟机生成快照!

参考资料

docker 配置 TLS 认证开启远程访问

Docker 守护进程+远程连接+安全访问+启动冲突解决办法 (完整收藏版)

「记录」解决VSCode编辑Python文件时自动给过长的行换行问题

在使用VSCode写Python的时候,总是莫名其妙的被换行,记得之前已经改过一次全局的行长度限制,但问题依旧,本来懒得管了,最近写数据处理经常要写很长的 columns数组,实在受不了,记录下解决过程。

通过逐一排查插件确定了是官方的“
ms-python.python”插件导致了这个问题,排查设置没找到相关项。通过搜索发现是因为该插件默认使用了格式化工具“autopep8”,这个工具有默认行长度限制。需要添加参数修改此限制:

参考:visual studio code disable auto wrap long line

「记录」博客重生记——Ubuntu 18.04安装LNMP+phpmyadmin

  因为各种客观+主观的原因(chrome恶心的安全措施、长期没有对服务器系统进行升级、脑子被门夹了非要上https、海森堡编辑器全是bug、研二全是事情等等),我做了各种令人窒息的操作,导致我的站点和博客彻底凉凉。为了完成曾老师的作业,也为了能好好做记录,我终于下定决心把整个站点重建一遍。

  其实最早只是想着从ubuntu16迁移到18,结果玩脱了。不过既然都上18了,再退到16岂不是坑都白踩了,而且16也不一定能活多久,干脆一步到位。

  这次记录除了包括在ubuntu18上部署lnmp、phpmyadmin以外,还会有https站点迁移的内容,读者请各取所需。

首先安装 lnmp

下面给一个配置文件样本,是一个很早的原始版本,仅供测试参考

有了简单配置之后可以测试下nginx和php了,一定先测试后迁移,因为在迁移过程中涉及的步骤和环节很多,而且中间几乎无法测试,一旦前期有问题最后都没法定位错误!

使用php探针测试会发现页面显示白页,nginx日志无问题,这是一个bug,解决方法如下

测试通过之后就可以开始迁移了,但是建议先把phpmyadmin装了,这样可以先配置数据库

终于可以开始迁移服务器了

完成数据库迁移之后,就是最关键的部分了,之后的步骤中间几乎完全不能调试

  1. 将整站数据上传至相应的服务器目录
  2. 修改目录属主和权限
  3. 将原服务器的nginx配置文件替换掉新服务器nginx的配置文件
  4. 修改新服务器nginx服务器文件,使得其中一些小条目符合新服务器配置
  5. 将ssl证书配置到相应目录
  6. 重启nginx
  7. 进入wordpress目录修改wp-config.php中的数据库连接信息
  8. 修改dns解析地址到新服务器
  9. 通过url访问页面测试

如果一切正常,恭喜你完成了全部步骤!

「记录」制作macOS High Sierra 10.13.6的ISO安装镜像

  最近掏了一个dell 9020sff,心血来潮想要装mac虚拟机,但是折腾了好久总是出各种奇怪的问题,后来还是在一个台湾的博客里找到解决方法,在这记录一下。废话不多说,先上干货。

制作macOS High Sierra 10.13.6的ISO安装镜像

  首先准备好一个mac系统,不管是实体mac还是mac虚拟机都行,甚至比较老的OS X也行(我用的10.8,虽然官方说这个版本支持升级到10.13,但从store下载的原版app在10.8里提示已损坏无法打开,但这并不影响iso的制作)。然后需要下载好10.13的安装应用,建议从mac app store下载,把app放在应用程序目录。

注意:下面的代码中默认的10.13安装app路径是:”/Applications/Install\ macOS\ High\ Sierra.app”,如果你的安装app不在默认位置,请自行替换路径。

  如果没有意外,你就可以在桌面找到iso安装镜像了。

参考资料:製作 macOS High Sierra 10.13 的可開機安裝隨身碟及 ISO 映像檔

神奇的坑

  在找到正确的解决方法之前,我当然也踩了不少坑,一度甚至想放弃,但「缘,妙不可言!」,所以在这记录一些比较神奇的坑。

1、用官方推荐的createinstallmedia创建的dmg,用磁盘工具另存为“DVD/CD 主映像”,会储存为.cdr文件,但这个文件不能直接改后缀成.iso!

  直接改后缀看似没有什么问题,在win里也能打开,也可以在esxi里挂载,但是在安装中要么无法引导,要么在引导的最后阶段出现禁止符号!!!没错,就是这个符号🚫。黑色的背景,白色的禁止符,我一直以为是我虚拟机的问题,废了好大劲才晓得是镜像问题。

2、不可以在mac以外的系统里将dmg或cdr转为iso,不管用什么工具都不行,必须用mac!

  我试过百度上几乎所有的转换方案,包括软碟通啊,或是什么其他的软件,最后事实证明,都TMD在骗人,浪费我的时间和精力!SB百度!

3、VMware虚拟macOS需要加两个高级参数

有两个修改方法。第一个是直接改vmx文件,另一个是在vsphere client里“编辑虚拟机设置”,“虚拟机选项”选项卡,展开“高级”,点“编辑配置”。确保下面两个参数正确,否则无法打开虚拟机,或运行出现奇怪的错误。

smc.present = “TRUE”
smc.version = 0

「记录」在Ubuntu Server 1604上部署SOCKS5服务器dante-server

因为某些原因,我需要部署一台代理服务器,之前配置了http缓存代理,但是有些网站访问异常,而且有些软件不支持http代理,所以萌生了部署SOCKS5服务。

1、安装 dante-server

2、配置
备份配置文件

查找以下关键行进行修改

创建日志文件夹,并重启服务

使用Virtualenv创建独立Python开发环境

在使用Python进行开发时,经常需要安装各种包,如果同时开发多个项目,就有可能出现开发环境冲突的问题。通过使用Virtualenv来创建多个独立的Python开发环境,可以很好的解决环境冲突问题,也可以避免主系统环境被污染的问题。

安装

创建虚拟环境

Windows 激活虚拟环境

Linux 激活虚拟环境

Ubuntu 1604 安装nginx+php7+mysql+phpmyadmin环境

1. 安装 nginx 最新版本,使用以下命令:

2. 安装 php7 :(不要尝试直接apt-get install php7,这样会默认安装apache,ubuntu 16默认不能安装php5)

3. 安装 MySQL 数据库:

4. nginx管理操作

大括弧里是可选的操作,选一个,外面不需要加大括弧

5. 配置nginx

配置文件样本:

重启nginx:

6. 安装phpMyAdmin

HP Microserver Gen8 微型服务器折腾记

得知研一的奖学金是每人平均分后兴奋地买了种草已久的HP Microserver Gen8。在经历漫长的德国直邮和配置升级之后,终于在上周末开始准备上电装系统。现在已经基本完成了计划,在此记录一下。

这台微型服务器首先是要取代我旧的下载机,其次还要为以后用作数据、媒体中心准备,因此我决定直接安装虚拟化环境。虚拟化环境最出名的就是VMware的vSphere产品了,我要使用的是其中的ESXi。

首先下载HP定制版ESXi6.5系统镜像:

HP定制镜像下载页:https://www.hpe.com/us/en/servers/hpe-esxi.html

HPE Custom Image for ESXi 6.5U1 Install CD:https://my.vmware.com/cn/group/vmware/details?downloadGroup=OEM-ESXI65U1-HPE&productId=614

文件为:VMware-ESXi-6.5.0-Update1-6765664-HPE-650.U1.10.1.5.26-Oct2017.iso ,SHA1:58685a1d662f9fb798d2ccb28376811f1b78090a

直接使用iLO远程挂载镜像,注意必须在win7中用ie打开远程控制台,win10有安全限制,chrome会识别为文件下载!

安装前尽量把非目标硬盘都断开连接,只接目标硬盘,我选择安装在主板上的U盘里。安装过程中按照提示选择即可。安装完成后,注意进BIOS改硬盘模式。默认是使用RAID模式,ESXi里只能看到U盘和RAID卡,除非配置好RAID卡上的硬盘组,否则不会显示硬盘。手动切换到AHCI模式后,就可以在ESXi里直接管理硬盘了。

在安装好用来取代之前下载机的虚拟机后,要配置硬盘直通,把旧下载机的硬盘直通给新下载机。ESXi不能简单的直通硬盘,因为硬盘不是设备,只能直通硬盘控制器,但是这样的话所有的硬盘都只能给一个机器用,显然是不合理的。也不能使用扩展卡,因为这样会占用显卡安装位。因此要用RDM技术来间接实现硬盘直通,这种技术是创建一个的特殊 .vmdk 文件(一个文本文件)映射到一块物理磁盘,当虚拟机向这块 VMDK 写入时,实际写入的是后面的物理磁盘。

1、在ESXi 中打开 SSH 访问,并远程登录。

2、寻找需要直连的磁盘路径,一般在/vmfs/devices/disks/目录下

CC(_857X_[H688DG[I_]G~T

3、创建RDM映射

可选参数-z或-r
-r 参数创建的是 Virtual Compabilitiy Mode RDM,即 ESXi 会截获除 READ / WRITE 之外所有 SATA 指令。
-z 参数则是创建 Physical Compability Mode RDM,即 ESXi 除了 LUN REPORT 指令,其他全部原样传递给物理磁盘。

4、分配.vmdk硬盘给目标虚拟机

 

「记录」重新安装Adobe Ps & Lr CC 2015,并激活

因为给电脑换了CPU所以导致之前用的好好的Ps和Lr需要重新激活,因为某些未知的原因激活不了,我只好清理后重装,折腾了很久,这次记下来免得以后忘了。

1、首先要彻底清理旧的软件,可以先用官方卸载器卸载,然后再用清理工具清理,也可以不卸载直接清理。
运行“AdobeCreativeCloudCleanerTool.exe”,选择语言,确认,然后选择要清理的软件:
$G0$F23H@LVS]B108X3~@@L
选择“1、All”,工具会自动扫描并列出所有电脑中的adobe软件:
K((U_@%M@UBM3Y48O`8`LJN
选择“Clean All”,确认,等待清理完毕。

2、清理旧的授权文件,清空以下目录内的全部文件。

C:\Program Files (x86)\Common Files\Adobe\SLCache
C:\ProgramData\Adobe\SLStore

PAGVF%1~%1V7{WJ$(Z@B2A6
D]~FI155]6CK3CAD)6B{EC8

3、清理host文件中全部关于adobe的记录!

4、重启并断网,断网、断网!

5、运行Ps安装程序

选择“忽略”,
J`~@96UYOVC4BM1V}9JY%HS

选择“安装”,
ZU`AV6ASSQ@BWZXF6O9M

选择右下角的“登陆”,然后选择“稍后连接”,接受许可协议,进入序列号输入界面,
打开序列号生成工具,先选择产品,确认选择正确后点击左边按钮,生成序列号,不要关闭生成工具,或把序列号存在一个文件里
C]A0Q9JT1PEP{]I9MSVZ}_P

输入序列号后点“下一步”,点“稍后连接”,选择安装目录,并安装,安装完成后点“立即启动”,
UN9]IDI`M```{RZQ)2]}583

启动Ps后关闭,并关闭要求登陆的窗口,重新打开Ps,在登录窗口选择“连接Internet时是否出现问题?”,
XN8ATWFBB_L[HDQMA)JNW(U

选“脱机激活”,并“生成请求代码”,
W(@5VBR_(B(8~35N_O7)3Q2

生成请求代码后,检查序列号生成工具中的产品选项,并保证序列号是刚才输入的序列号,
将请求代码粘贴到序列号下面的文本框,点击左侧按钮生成响应代码,粘入激活窗口,
GQ3DP$}I2~9BASMU_7180VT

Ps安装激活完成。

6、运行Lr安装程序

忽略重启检测,选择“安装”,
OJ809JUNNV[}6WHX6R8G3]7

选择右下角的“登陆”,然后选择“稍后连接”,接受许可协议,进入序列号输入界面,
打开序列号生成工具,先选择产品,确认选择正确后点击左边按钮,生成序列号,不要关闭生成工具,或把序列号存在一个文件里
F5AK{KEW7)5TWT9OGU2RGXO

输入序列号后点“下一步”,点“稍后连接”,选择安装目录,并安装,安装完成后点“立即启动”,
启动Lr后关闭,并关闭要求登陆的窗口,重新打开Lr,在登录窗口选择“连接Internet时是否出现问题?”,
选“脱机激活”,并“生成请求代码”,生成请求代码后,检查序列号生成工具中的产品选项,并保证序列号是刚才输入的序列号,
将请求代码粘贴到序列号下面的文本框,点击左侧按钮生成响应代码,粘入激活窗口,
HZD5R%TGC~]JPLQE)G)A{(9

Lr安装激活完成。

7、在host中加入以下记录

# Adobe
127.0.0.1 lmlicenses.wip4.adobe.com
127.0.0.1 lm.licenses.adobe.com
127.0.0.1 na1r.services.adobe.com
127.0.0.1 hlrcv.stage.adobe.com
127.0.0.1 practivate.adobe.com
127.0.0.1 activate.adobe.com
127.0.0.1 ereg.adobe.com
127.0.0.1 activate.wip3.adobe.com
127.0.0.1 wip3.adobe.com
127.0.0.1 3dns-3.adobe.com
127.0.0.1 3dns-2.adobe.com
127.0.0.1 adobe-dns.adobe.com
127.0.0.1 adobe-dns-2.adobe.com
127.0.0.1 adobe-dns-3.adobe.com
127.0.0.1 ereg.wip3.adobe.com
127.0.0.1 activate-sea.adobe.com
127.0.0.1 wwis-dubc1-vip60.adobe.com
127.0.0.1 activate-sjc0.adobe.com

8、联网重启

「记录」树莓派raspbian-stretch系统安装LNMP环境 & 解决无法安装php5-mysql的问题

为了能让实验室的路由器一直保持登陆状态,但又不想使用非官方固件,因为非官方固件都不够稳定,所以买了一个树莓派 zero-w。
本着新硬件就要用新系统的想法,刷了官方才出了不到一个月的系统:2017-09-07-raspbian-stretch,然后在安装LNMP环境的过程中遇到很多奇怪的问题,在这里记录一下。

先插一个zero-w的网络配置过程,虽然不是什么大问题,但是着实坑了我很久。
正常刷好系统后,用电脑在/boot分区的根目录创建名为“wpa_supplicant.conf”的文本文件,内容为:

注意:WiFi名称不能包含“_”,就是下划线,因为有些情况下下划线和空格会混淆。WiFi加密模式只能为“WPA-PSK [TKIP]”,因为wpa不支持AES加密。
然后在/boot分区的根目录创建名为“ssh”的空目录,这样就会自动打开ssh服务。

配置好网络后,开始换源。

阿里云
Raspbian http://mirrors.aliyun.com/raspbian/raspbian/

清华大学
Raspbian http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/

文件内容如下:

保存

配置LNMP环境

先上干货:

如果直接按照通常步骤直接安装php5-mysql,会提示如下错误:

为了解决这个问题,我参考了「libmysqlclient18 has no installation candidate」。
尝试手动下载并安装packages.debian.org提供的libmysqlclient18包,libmysqlclient18_5.5.57-0+deb8u1_armhf.deb,文件sha1:16237a52a6c3b945c30a8fdf401816277d7f2436。
手动安装libmysqlclient18后,可以成功安装php5-mysql。但是apt-get在安装完,重启php5-fpm的时候会出现以下错误:

尝试多次后,我发现之前参考的讨论里有人说使用archive.raspbian.org官方的libmysqlclient18包,于是进行尝试,并获得成功。
包下载地址:libmysqlclient18,sha1:a5f6877e856a58efbf9046f8db752646895b137b。

「记录」解决Ubuntu 16.04无法安装php5的问题

在Ubuntu 16.04 中默认无法安装php5,只能安装php7,直接用如下命令

会提示

按照这个文章中给出的解决方法,执行以下指令

「记录」UITableView运行时动态改变行高

在cell中加入一个可以改变cell高度的button,就是下面这种效果

1025465-d0c0d390136803e8

核心代码:

在Cell.h中添加tableview更新块属性:

button的点击事件:

在TableViewController的- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 方法中添加:

参考资料:http://www.jianshu.com/p/e86f1989b1d6