又一次迁移主机–LAMP迁移至LNMP

之前使用的是阿里云轻量云服务器,今年年底到期,因为阿里云主机续费就是大大大大大大坑,因此迁移主机是迟早都要解决的问题。正好最近6.18促销活动,新用户购买ECS-T5突发20%性能的云主机400多元3年,1核2G-3M-40G,难道这不香吗?可惜最长只能买3年。

买!买!买!

6月15日下单购买了ECS-T5,3年。

购买之后,确实不会怎么玩。首先熟悉了一下控制台大概的内容,有点无从下手,各种功能点来点去。尝试编译LAMP源码看看好不好玩的,于是用putty连上服务器,各种操作之后编译了最新版的apache2.4.43与php7.4.7,但是apache无法解析php………烦,没时间搞了。

服务器闲置了1天之后,进入控制台看看吧,然后控制台提示存在xxx个漏洞,建议修复#@¥@#%。然后反正没有部署任何东西,编译的源码又由于配置不合适没法工作,就让他修复一下吧。又这样闲置了一天,在本地的主机研究了编译apache与php源码,解决了各种问题,终于成功工作了。正准备在ECS上面再次编译,测试的时候,却发现putty无法连接ECS服务器!进入控制台重启ECS服务器,重启了很长时间,才成功重启,但是依然无法连接服务器,ping服务器公网地址也无响应。

不得不说阿里云那个云安全中心修复漏洞实在是太坑人了。centos系统居然被他给修坏了,怪不得修复漏洞的时候总提示建立快照,谁不知道建立快照呢,快照又得收费,而且怎么计费我实在是看不懂。为了避免不必要的麻烦,后续搞不清楚的按时,按量付费的,一律不玩。所以,快照功能,对于我等于没有的功能。现在云安全中心修漏洞修坏了系统,幸运的是我没有部署有用的东西到服务器,直接重新初始化硬盘,问题解决了。

云安全中心只是免费试用7天,之后如果需要,是要收费才能使用的。第一印象就给我修坏系统,即使免费使用,我也不用。

废话之后,切入正题。

为何从LAMP迁移至LNMP

自从购买了ECS-T5之后,才着手尝试编译apache与php源码,遇到各种乱七八糟的问题,各种找资料解决,之后成功的运行起来后发现,也就那样。运行WordPress的速度也许是快了点点 30ms 左右(非常不准确的估计,心理作用占比更大),最重要的是不小心 yum update 之后从centos7.3升级到centos7.8,apache居然无法启动了,提示libonig.so.2 …@#$#%$^ 反正我用 find / -name libonig.so 只找到 libonig.so 与 libonig.so.5 没有找到 libonig.so.2。哎……!2天时间折腾编译apache与php,浪费,没意义,直接 yum install 不香吗?yum install 版本太老,就用centos scl软件集,虽然不是最新的版本,已经是非常新的稳定版本了。所以,再次在本地测试使用 scl 软件集,干脆尝试 nginx + php + mysql 组合。

不试不知道,试过才知道,也就那样!!nginx1.18.0 + rh-php73 + rh-mysql80 貌似比编译好的 apache2.4.43 + php7.4.7 + mysql8 快了点点 (20ms可能也是心理作用

最重要的是,没有配置过 nginx 却比 apache 更容易接受,就凭这点,我决定了转投 nginx

从LAMP迁移至LNMP的操作记录

一、备份旧网站数据库与网站文件

我之前已经设置好每天自动备份MySQL与wp-content目录,下载到本地准备上传到新环境。

二、搭建LNMP环境并导入旧网站备份

系统选择的是阿里云centos7.6镜像。

1、安装NMP环境

在安装NMP环境之前,先升级一下系统,据说有漏洞,那么就在centos里升级吧。

查看当前系统版本

cat /etc/redhat-release #查看centos系统版本
cat /proc/version #查看linux内核版本

既然选择的是centos7.6,就肯定不需要更新到7.8,所以更新时不升级系统与内核。

修改yum的配置文件,不更新centos系统版本与Linux内核版本

vi /etc/yum.conf
在[main]的最后添加
exclude=kernel* #不更新Linux内核版本
exclude=centos-release* #不更新centos系统版本

修改保存 yum.conf 之后,执行更新。

yum update #执行更新

顺利的话,会更新一堆的东西。报警告等无法更新的话,那就别更新了,不如直接ECS选高版本的系统。比如要使用centos7的版本,直接在ECS控制台选7版本最高版本号的那个使用即可。

更新完成之后,reboot 一下,开始部署NMP环境。

检查并关闭防火墙与 selinux ,因为ECS自带内外网出入端口自定义。(这样处理不知合理与否

安装 Software Collections 软件集 centos-release-scl

因为之前修改了 yum.conf 排除了 centos 更新系统版本,会导致无法安装 centos-release-scl ,所以,要再次修改 yum.conf

vi /etc/yum.conf
在[main]的最后添加
exclude=kernel* #不更新Linux内核版本
#exclude=centos-release* #把这行注释掉

然后执行安装 centos-release-scl

yum install -y centos-release-scl

安装好 centos-release-scl 之后再把 yum.conf 改回禁止更新centos系统版本即可。

安装 epel、webtatic 源

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

安装 nginx

创建 nginx 安装源

vi /etc/yum.repos.d/nginx.repo #创建安装源
#编辑nginx.repo内容如下

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

先安装 yum-utils

yum install yum-utils -y

再安装 nginx

yum install nginx -y

安装 rh-mysql80

yum install rh-mysql80 -y

安装 rh-php73

yum install -y rh-php73 rh-php73-php rh-php73-php-fpm rh-php73-php-gd rh-php73-php-mbstring \
rh-php73-php-intl rh-php73-php-pecl-apcu rh-php73-php-mysqlnd rh-php73-php-pecl-redis \
rh-php73-php-opcache rh-php73-php-imagick rh-php73-php-bcmath rh-php73-php-gmp \

2、配置NMP

MySQL初始化

启动 rh-mysql80

service rh-mysql80-mysqld start

启用 bash 命令

scl enable rh-mysql80 bash

查看 mysql 版本

mysql -V

设置开机启动 mysql

systemctl enable --now rh-mysql80-mysqld

创建 mysql 启动脚本

vi /etc/profile.d/rh-mysql80.sh
#rh-mysql80.sh内容如下
source /opt/rh/rh-mysql80/enable
export X_SCLS="`scl enable rh-mysql80 'echo $X_SCLS'`"

设置 mysql 字符集

vi /etc/opt/rh/rh-mysql80/my.cnf.d/mysql-server.cnf

[mysqld]
character-set-server=utf8mb4 # 在[mysqld]下加入此行

重启 mysql

service rh-mysql80-mysqld stop
service rh-mysql80-mysqld start

初始化 mysql 数据库

mysql_secure_installation

然后按照步骤设置即可。我的设置:y,1,输入root密码,y,y,y,y,y

查看 mysql 数据库字符集

mysql -u root -p #以root身份登录数据库
show variables like '%character%';
+--------------------------+---------------------------------------------------+
| Variable_name            | Value                                             |
+--------------------------+---------------------------------------------------+
| character_set_client     | utf8mb4                                           |
| character_set_connection | utf8mb4                                           |
| character_set_database   | utf8mb4                                           |
| character_set_filesystem | binary                                            |
| character_set_results    | utf8mb4                                           |
| character_set_server     | utf8mb4                                           |
| character_set_system     | utf8                                              |
| character_sets_dir       | /**************************************/charsets/ |
+--------------------------+---------------------------------------------------+

然后创建 mysql 数据库数据表,用户、密码(与之前旧网站的数据表、用户、密码一样,以便导入旧数据,不知是否合理)

将旧网站备份的数据库文件上传到服务器,然后导入数据库

#选择数据表
use db1; # db1 为数据表名称

#导入数据
source /sqlbak/db1_bak.sql; # db1_bak.sql 为数据库备份文件名称

配置 php-fpm

修改 php-fpm 配置文件

vi /etc/opt/rh/rh-php73/php-fpm.d/www.conf
# 用户 = nginx ,组 = nginx
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx  #安装好默认值apache
; RPM: Keep a group allowed to write in log dir.
group = nginx  #安装好默认值apache

启动 php-fpm

service rh-php73-php-fpm start

设置 php-fpm 开机启动

systemctl enable --now rh-php73-php-fpm

隐藏 php 版本号

vi /etc/opt/rh/rh-php73/php.ini

; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
expose_php = Off #默认On,修改为Off

配置 nginx

查看 nginx 版本,以及确认 http_ssl_module 模块

nginx -V

修改 nginx 辅配置文件 支持 SSL

vi /etc/nginx/conf.d/default.conf

server {
    listen       80;
    server_name  www.域名.com;
    #80端口访问跳转443端口
    rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
    #开启ssl https访问
    listen 443 ssl;
    server_name  www.域名.com;
    ssl on; 
    #root html;
    #index index.html index.htm;
    ssl_certificate /证书/实际/路径/ssl证书名.pem;
    ssl_certificate_key /证书/实际/路径/ssl证书名.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        #增加支持php
        index  index.html index.php;
        #解决除了首页外,所有页面404的问题。
        try_files $uri $uri/ /index.php?$query_string;
        if (!-e $request_filename){  
            rewrite ^/(.*) /index.php last;  
        }
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    #    root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /网站/根目录/路径/html$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

隐藏 nginx 版本号

vi /etc/nginx/nginx.conf
# 主配置文件 http {内容}
http {
    server_tokens off; #隐藏nginx版本号
}

启动 nginx 并设置开机启动

systemctl start nginx
systemctl enable nginx

所有配置基本完成,reboot ,测试网站。

上传网站文件备份至对应目录,测试网站正常运行,一切都是那么的熟悉!响应速度完全上了一个档次!!(→_→)

记录可能有错漏,有时间再优化一下,因为阿里云控制台又给我找出了安全漏洞 (@_@;)

更换了ECS云主机后微信JS-SDK无法调用

刚刚从轻量云主机迁移到阿里云ECS-T5主机,各种都已经调试完成后,发现微信的JS-SDK各种接口都无效了,所有JS-SDK接口都无法调用了。于是登录公众号看看,发现需要将新的ECS-T5主机的IP添加到白名单,然后所有JS-SDK接口都可以正常工作了。

Win10 LTSC 远程桌面 身份验证错误,可能是由于CredSSP加密数据库修正…

Windows10 企业版 LTSC 使用远程桌面连接到 Windows server 2012 R2 本来一直用得好好的,突然今天连接不上了。

出现身份验证错误。要求的函数不受支持,这可能是由于 CredSSP 加密数据库修正。… … 如下图:

解决方法:

1、运行 gpedit.msc 打开本地组策略编辑器

2、策略路径:计算机配置 → 管理模板 → 系统 → 凭据分配 → 加密数据库修正

3、加密数据库修正 → 已启用 → 易受攻击

问题解决。

参考微软支持文档

https://support.microsoft.com/zh-cn/help/4093492/credssp-updates-for-cve-2018-0886-march-13-2018

AutoCAD2018打印为PDF文件的一些设置

在AutoCAD2018做好的资料,需要输出PDF文件,方便发送给其他人查看与打印,而且是A4纸格式的文件。如果直接点击菜单栏的 输出→PDF输出,可以输出PDF文件,但是PDF输出的A4文件与设计的A4有偏差。

因此,我们最好创建一个自己常用的打印布局,并且配置好打印PDF文件的页面。如下:

登录查看完整内容

Windows10无法连接到打印机操作失败错误为0x00004005

三台联想品牌台式电脑需要共享一台打印机使用,系统都是Windows10家庭中文版。按常规共享设置,问题出现了:Windows 无法连接到打印机。操作失败,错误为0x00004005。

共享打印机的方法就不在这里啰嗦了,与Windows7类似。连接网络的共享打印机在Windows10里稍有点麻烦,因为Win10会在添加网络打印机的时候,无法找到共享的打印机。我们可以直接 【Win键+R键】 在运行里输入局域网打印机地址:\\***计算机名IP地址***\**打印机型号**

这样可以快捷访问到网络上的共享打印机。

Windows 无法连接到打印机。操作失败,错误为0x00004005。

尝试了很多方法,我已经崩溃了,但问题还是没得解决。

尝试过设置密码,添加凭据,更改网络连接属性 公用←→专用 ,无密码保护的共享 …… 涛声依旧 错误为0x00004005。

最近(2021年5月10日)遇到的问题是:

Windows10 正常连接 Windows7 共享出来的打印机,然鹅用了几天后却无法正常打印了!或在 Windows10 控制面板 → 设备和打印机 这里可以看到连接的共享打印机,可是右键点击打印机却没有打印机属性可以操作,双击此连接的共享打印机也没有任何反应,即我想管理或查看出错的打印任务都没门!Windows10的共享简直糟透了,或许是我的原因,没有搞清楚 Windows10 系统关于共享的真理吧。

后来还是找到了这个方法,现在应该解决了 Windows10 连接网络共享打印机的问题了(需观察半个月才能确定)

因此往后关于Windows10连接共享打印机,建议使用以下的方法添加,避免连接的共享打印机出现用着用着又无法正常使用。(总之Windows10要么没有问题,要么遇到的小问题总是找不到确切的解决方法)

Windows7 / Windows10 添加网络共享的打印机

建议使用如下步骤:

请提前准备好要连接的打印机的驱动程序。此方法有效解决 Windows7 / Windows10 无法连接到打印机

  • 错误0x00004005
  • 错误0x00000bcb

1、添加网络打印机 → 我所需的打印机未能列出

2、通过手动设置添加本地打印机或网络打印机

3、创建新端口:端口类型 Local Port

4、输入端口名:\\计算机名或IP地址\打印机型号名称

5、从磁盘安装 打印机驱动程序(我们得先下载好对应网络共享的打印机驱动

实话说,在 Windows10 设置各种共享的时候,总能遇到各种奇奇怪怪的问题,而且没有很好的解决办法。百度搜索出来的解决方法都是牛头不对马嘴的,或许是因为 Windows10 不断更新版本,导致网上找的解决方法各种对应不上的功能设置,因此遇到的问题总是新鲜的问题。有很多设置在Windows7是多么的方便简单,而在Windows10上却变得如此的杂乱无章,Windows10的设置与控制面板的设置这两套东西就够乱了!!!实在想不明白为何设置还搞那么多套路,分分钟被Windows10套晕!!

Windows7 网络共享打印机打印失败-错误0x00000006

故障描述:

系统是Windows7 X64,使用的是网络共享的打印机,可以正常添加网络共享的打印机,而且添加3台同一局域网不同电脑分别共享出来的打印机,其中有一台京瓷的共享打印机打印失败错误0x00000006,其他的打印机都正常使用。京瓷这台打印机报错如下图:

尝试在本机删除该出错的京瓷网络打印机,重新添加,故障依旧。

尝试在本机添加其他网络共享的打印机,一切正常。

尝试用其他电脑添加该京瓷网络打印机,一切正常。

面对当前的问题,错综复杂,无从下手:

1、如果是本机系统的问题,为什么添加其他网络打印机都可以正常使用。

2、如果是连接京瓷打印机的主机系统有问题,为什么其他电脑添加共享的京瓷打印机可以正常使用?

漫无目的的折腾,是无法解决问题的。所以该问题就这样拖延了一段时间,直到今天客户再次强烈需要使用该共享打印机,于是今天把问题解决了。

冷静下来分析,这绝对是本机的京瓷打印机驱动出了问题。但是我已经尝试把已添加的京瓷共享打印机删除了,并且重启电脑,再重新添加,并没有解决问题。实际我并没有意识到在控制面板→打印机→删除网络打印机,驱动是没有跟着一并删除的。我们需要删除已添加的网络打印机驱动,应该是:

控制面板→管理工具→打印管理→打印服务器→计算机名xxx→驱动程序

找到需要删除的对应的打印机型号,然后右键点击该打印机→删除驱动程序包

如下图:

(以上图片只是演示图片,不是实际处理问题现场图)

删除出错的京瓷打印机驱动,重启电脑,重新添加该京瓷网络打印机后,故障排除,可以正常使用了。

Windows XP 您的时钟快了,无法建立私密连接

最近遇到了几台老配置,DDR2 1G内存的古董,只有使用 Windows XP 系统了。安装好 Windows XP 然后发现新版本的 Chrome 浏览器也不支持 XP 系统了,只能使用低版本的 Chrome32_47.0.2526.80(Chrome47),再高点版本的Chrome49貌似是最后支持 XP 的版本,但是会经常提示:此计算机将不会再收到 Google Chrome 更新,因为 Windows XP 和 Windows Vista 不再受支持。于是才特意留着Chrome47,因为国内实在没有(或者我找不到)一款有良心的浏览器可用,都是低俗广告浏览器。

问题来了,打开 Chrome47 浏览器浏览网页,提示:您的时钟快了

如下图:

您的时钟快了

您计算机的日期和时间不正确,因此无法与www.baidu.com建立私密连接。

明明时间日期是正确的,却硬要说不正确,我也无话可说了。即使将2020年改为2019年,或再次重装 XP 系统也没用,还是提示 您的时钟快了。造成无法浏览网页,尝试安装QQ浏览器,问题一样,后来搜索找到了一些资料,发现安装火狐浏览器可以正常浏览网页,但是并没有完全解决问题。

比如安装最新版本的QQ,总是提示安装包非法,无法安装。更多的问题,没有更多的时间去测试。

归根到底,是由于没有安装 KB931125-rootsupd 这个补丁,把这个补丁装上之后,问题就解决了。此补丁 KB931125 是 Windows XP 的根证书更新,详细自行百度了解。双击运行安装,安装此补丁没有任何界面提示,安装后重启电脑即可。

点击下载:KB931125-rootsupd

用jQuery实现了返回顶部按钮😄

实现返回顶部的jQuery代码如下:

jQuery(function(){
	jQuery(window).scroll(function(){
		if(jQuery(window).scrollTop()>200){
			jQuery('.go-to-top').addClass('go-on');
		} else { if(jQuery(window).scrollTop()<200) {
				jQuery('.go-to-top').removeClass('go-on');
			}
		}
	});
	jQuery('#to-top').click(function(){
		jQuery('html, body').animate({scrollTop:0},300);
	});
});

还需要配合在footer.php这里加入一个div

<div id="to-top" class="go-to-top"></div>

因为每个页面都调用footer.php,所以这个div就放这儿了。

css再来配合一下

.go-to-top.go-on {
	position: fixed;
	right: 2em;
	bottom: 2em;
	width: 38px;
	height: 38px;
	text-align: center;
	padding: 0.27em 0;
	background-color: rgba(10,10,10,.08);
	border-radius: 2px;
	cursor: pointer;
}
.go-to-top.go-on:before {
	font-family: dashicons;
	content: "\f342";
	font-size: 1.8rem;
	color: rgba(10,10,10,.65);
}

任务完成。

但是我不知道这样是不是很合理,总之我需要的功能实现了,他已经完美工作了。

Windows Server 2012 R2 存储池硬盘损坏处理

在Windows Server 2012 R2系统创建的存储池使用至今差不多2年了,终于在前几天出现了故障。因为硬盘用的是2个淘汰下来的WD500G SATA旧硬盘,创建存储池的原因就是为了将淘汰下来的旧硬盘继续发挥作用,用到彻底坏了再扔掉。

存储池:Mirror (镜像)模式,2个WD500G物理硬盘。

放在存储池里的Hyper-v虚拟机有如下:

  • CentOS 7 部署了 WordPress 与 NextCloud
  • LEDE + KMS激活服务

用了这么长时间,真没有去关注过硬盘的健康状态。直到前几天发现Hyper-v里的CentOS 7 与 LEDE 都无法自动启动了,手动启动又能正常启动,都还没有去怀疑硬盘有问题。正因前几天是春节期间,并且这段时间由于新型冠状病毒肺炎的影响,不出门,不聚会 … … ,所以时间不知道怎么打发了,才想着折腾一下搞个Onlyoffice服务器试试看好不好玩。在拷贝虚拟磁盘文件到存储池的时候,发现怎么写入速度奇慢无比,一开始还能100MB/S左右,然后一下子速度掉下来之后10MB/S,再然后只有1MB/S左右的速度。什么情况?难道存储池写入速度就是这么垃圾的吗?不可能,因为存储池是Mirror镜像模式,就是Raid1模式,读取与写入速度跟单盘没有区别或区别很小的才对啊。

肯定硬盘出问题了!

马上找到HDTune检测一下,发现有一个硬盘果然出问题了。

正好,本来一直觉得500G的存储池太小,一直都想要不要弄1T的比较实用一些,如果说现在是更换1T的机会来了,不如说2T的更实际些。但是现在门也不给出,貌似快递很多都还没有上班,自己也没有空闲的2T硬盘。到处找了又找的,找到了2台旧机的ST500G,正好试验一下存储池的硬盘损坏了,到底要怎么恢复数据的。

实际上我确实不知道怎么恢复数据。

上图所示,损坏的存储池,出现三角形感叹号标示(已降级)

我直接把损坏的硬盘拆下来,然后装上一个已经删除所有分区的ST500G硬盘。然后右键点击虚拟磁盘hyperVhdd,会有修复的选项,点击修复之后进度条一闪而过,根本就没有修复好不好!!现在存储池的 盘符E 还是可以正常打开的,里面的数据还是可以访问读取的。但是要怎么恢复正常的存储池呢?难道要将正常的ST500G添加进来才能修复,我马上添加进来,再点击删除已经拆掉的坏盘,但无法删除。

然后又尝试点击修复,也是进度条一闪而过,根本就无法修复。坏盘也无法删除,什么鬼存储池,根本无法操作。然后回到磁盘管理 – 右键点击虚拟磁盘hyperVhdd – 脱机,再进入存储池再右键点选虚拟磁盘,修复选项无法点击了。我尝试重启Windows server 2012 R2 ,再次进入存储池,还是脱机状态,再右键点选虚拟磁盘,却无法使它联机了,这就完蛋了!!!数据我都没有拷贝出来,完了!!

虚拟磁盘E,现在没了。赶紧关机,拆除没有损坏的另一个WD500G,接到另一台电脑用 DiskGenius 打开发现怎么也是读不了数据?头都大了!!虽然NextCloud的资料我工作电脑是有同步的,数据丢不了太多,但是所有的系统与配置还有LEDE的所有都要重新安装配置,这也得要耗上1整天时间才能调教好吧?并且现在已经是北京的时间凌晨三、四点了。还得赶紧的搞好,不然连网络都没法用,因为LEDE也在这个存储池的虚拟盘上运行的。

然后我又把未损坏的WD500G接到工作电脑的Windows 10 LTSC上,可以直接识别到存储空间,但是跟2012R2上面一样,无法读取数据,无法联机装载磁盘,无法修复。百度了一段时间,相关存储池的资料很少并没有帮助,唯一就只能删除存储池!!!没办法的,只能这样子了,因为天差不多要亮了。

删除存储池!

然后再用 DiskGenius 搜索丢失分区表!

奇迹来了,搜出分区表了。本来之前存储池分区结构就是一块500G的分一个盘,没有删除存储池之前在 DiskGenius 里发现是只有2个分区的,一个是MSR分区,另一个叫什么NTFS什么来着我大概也忘了。现在搜索到的是物理磁盘开头与结尾很小的两节空闲的未分区空间,中间的是存储池分区NSFS,数据都还在,保留了这个分区表,然后将数据全部拷贝了出来!!!

天早已经亮了,现在是早餐时间,小朋友们都起床吃早餐了,正好我已经饿到差点不想吃了。重新装好正常的硬盘,重新创建存储池,再将数据拷贝进去,趁着拷贝数据的时间,先去吃饱肚子再说。

填饱肚子之后,继续折腾,反正天也亮了,虽然累但好像这些天都不会到处去哪里。

测试启动虚拟机,LEDE正常启动,但是CentOS7启动的时候报错,当时由于处理问题赶时间没有截图。于是我再将虚拟磁盘上面的CentOS7的数据删掉,放到另一个物理磁盘单盘再导入测试,也是折腾了几回才正常导入运行了。

因为当初创建hyper-v虚拟机时,虚拟磁盘目录结构如下:

虚拟磁盘放在VHDX这个文件夹

导入虚拟机的时候

  • 如果选择D:\HyperVhdd-bak\2019CenOS731611这个目录会找不到虚拟机
  • 如果选择D:\HyperVhdd-bak\2019CenOS731611\2019CenOS731611这个目录能找到虚拟机但是找不到虚拟磁盘。需要手动浏览到VHDX目录,并且如果有检查点的,还要一个一个的浏览到AVHDX文件!!

后来重新导出虚拟机的目录结构如下:

正确的目录结构,导入虚拟机时直接选择2019CenOS731611,即可正常导入虚拟机。但是有时候总会给一点报错,让你崩溃的。比如我之前的虚拟机是2019CenOS731611的无法正常启动了,我肯定把它删除了,然后再重新导入备份的虚拟机,但是他会提示虚拟机唯一ID相同,无法就地注册虚拟机。几百GB的数据拷贝好了,你居然说无法就地注册虚拟机,难道又得拷贝几百GB的数据到其他位置注册?后来我重启Windows Server 2012R2之后,再次导入就地注册,正常了!!

现在我真觉得Windows的东西都是非常能把人折腾到没有脾气的,因为Hyper-v虚拟机我导入了很多次都会出现很多小问题的,不是这里报错就是那里报错,简直能够把人搞疯掉。

好吧,还是必需再次重演一次

Mirror(镜像模式)的存储池其中一个硬盘损坏之后,该怎么修复

如果同时2个物理硬盘损坏,那就只能去买彩票了。当损坏一个物理硬盘的时候:

  • 首先第一件事就是将所有数据拷贝出来!!!
  • 然后,再添加新硬盘修复。

修复存储池步骤如下:

一、发现其中一个硬盘损坏,关机把损坏的硬盘拆掉,装上一个同容量或更大容量的硬盘。

二、然后开机,使用PowerShell命令将坏硬盘退出:

1、Get-physicaldisk  列出所有物理硬盘信息

此时我们可以发现刚才拆掉的损坏的旧硬盘,显示状态为lost communication

2、Set-physicaldisk –Friendlyname "physicaldisk-1" –usage retired  把physicaldisk-1退出

然后在存储池管理页,刷新一下,确认已退出

3、然后添加物理硬盘进来

4、最后点击修复

正常情况,就会出现修复进度条,这是一个漫长的修复等待过程。

三、修复完成之后,最后将损坏的那个磁盘 Physicaldisk-1 删除。

实际上我建议别去修复,宁愿重新建立存储空间,再将数据拷贝到新的存储空间。

因为我已经测试了,即使数据只有几十GB,修复时间都很长,比拷贝出来再次写入都要耗得多的时间。并且修复还不一定会成功,因为Windows就是有太多不确定的因素了。

实际上我测试修复成功了,耗了不少时间重演了一次修复过程。成功了,感觉非常愉快。

但是只用了2天,可能还不够2天,一个ST500G又损坏了!TMD这也太倒霉了吧!!!难道是由于修复的时候,硬盘累坏了?还是因为那个硬盘本来就在一个潮湿恶劣的环境呆得太久的原因,不得而知!

再次重新表演修复,步骤绝对的没有错,但是无法修复了!!!也许可能是我用了两个ST500G的重新组的存储空间,将之前未损坏的WD500G拆出来,现在又将WD500G的所有分区以及数据删除,添加然后修复失败(本来之前就用过的物理磁盘)点击修复,进度条一闪而过,无法修复。使用PowerShell命令一样无法修复,最后放弃!!!

所使用的一些PowerShell命令:

列出所有物理磁盘信息
Get-physicaldisk

停用物理磁盘
Set-physicaldisk –Friendlyname "physicaldisk-1" –usage retired

列出所有虚拟磁盘信息
Get-VirtualDisk

修复虚拟磁盘
Repair-VirtualDisk -FriendlyName VD1

Hyper-v第二代虚拟机安装CentOS7.3

在Hyper-v第二代虚拟机安装CentOS7.3 – 1611,需要注意的是虚拟机设置里,别勾选 启用安全启动。安装的步骤实际上很简单,这里仅用截图保留安装步骤的记录。

大概步骤如下:

1、软件选择 – 我必须选上GNOME桌面(因为太多的命令不懂,需要桌面配合才适合我使用

2、分区这里根据喜好分区吧,反正我也不太懂,只知道使用root分区,所以这个分区尽量分得最大容量

3、设置 root 用户密码

最后就等一段时间安装即可完成,之后就可以使用了。