nvme centos(centos镜像)

nvme ssd 对NVMe SSD热插拔时,我需要注意什么

省去了控制器的NVMe比SAS/SATA的热插拔要复杂的多。在进行热插拔测试之前,第一步就是要确认当前的系统是否支持热插拔。

1,确认SSD的支持

对于SSD,热插拔需要保证在插盘的过程中不会产生电流波峰而损坏器件;拔盘的时候,不会因为突然掉电而丢失数据。这个可以向SSD供应商确定或者查看产品规格书。

2,确认PCIe卡槽的支持

上面提到,NVMe是直接连接到PCIe Bus上的,U.2接口也是直接跟PCIe相连(当判断插入的设备为NVMe SSD时)。某些U.2接口内部连接的PCIe卡槽并不支持热插拔。PCIe Spec规定了热插拔寄存器。下图(通过lspci-vvv获取)显示了一个PCIe卡槽的Capabilities寄存器信息。其中LnkSta,SltCap,SltCtl和SltSta 4个部分在热插拔过程中比较有用(具体意义请参考PCIe Spec)。HotPlug和Surprise是最基础的判断热插拔的标志位。SltSta中有一个PresDet位指示当前是否有PCIe设备插入卡槽。

3,确认操作系统的支持

PCIe热插拔并不是完全由操作系统处理的,也有可能由BIOS处理,这完全取决于服务器BIOS的设计。当操作系统启动时,会根据ACPI提供的信息来了解到底由谁处理PCIe热插拔。如果由操作系统处理,则会根据PCIe卡槽发送的中断获知热插拔事件。对于Linux系统来说,一般使用pciehp驱动来干这件事情。所以,最简单的判断方法就是看系统中是否注册了热插拔中断服务程序。

对于Linux的NVMe热插拔支持将会单独用一篇文章讲解,此处不再多说。

4,确认NVMe驱动的支持

与其说驱动的支持,不如说驱动中是否有Bug。Linux内核提供了NVMe驱动,但是在实际的测试中,驱动的处理不当容易导致系统Crash和Hang住。产生这些问题的原因基本上可以归纳为NVMe驱动release设备和pciehp release设备产生竞争,出现空指针;NVMe驱动release设备时,上层调用sync函数导致进程block住。这个最好跟SSD厂商沟通好自己的测试环境,以便提前了解可能出现的问题。

如果这些环节都通过,基本上可以确认当前的系统可以进行热插拔了。但是目前,Linux系统和PCIe热插拔驱动存在不少问题,我们在操作中还需要避免出现下面的情况:

避免在一个服务器上短时间内频繁地(或者同时对多个设备)进行热插拔操作

原因:这是pciehp驱动中热插拔处理的bug,centos7都没有解决。

潜在的问题:可能导致pciehp进程block住,之后插入的盘无法识别。

解决办法:当对多个盘操作时,顺序进行热插拔,并打开pciehp的debug功能,通过dmesg获得pciehp热插拔处理进度。

避免对带有I/O的设备进行热插拔(尤其是启用了Cache的I/O)

原因:这是由于Linux Block层与PCIe热插拔的配合问题导致的。

潜在的问题:可能导致系统某些进程block住,或者系统crash。

解决办法:通过设置卡槽的power值,在拔盘之前通知操作系统先移除设备。

避免对已经mount文件系统的设备进行热插拔

原因:mount无法感知热插拔事件。

潜在的问题:文件系统无法使用,数据丢失。

解决办法:提前umount文件系统。

按照上面的方法,能够避免绝大多数问题。但是还是可能出现错误,尤其在一些新的服务器厂商的产品中,由于兼容性问题导致NVMe设备无法识别。那么我们可以通过卡槽的Capabilities寄存器信息判断。如果设备没有被PCIe系统正确识别,那么就需要咨询厂商了。

总结

这篇文章主要介绍了在进行NVMe SSD热插拔时需要注意的事项。首先,我们检查系统是否支持NVMe热插拔,然后避免出现上面提到的3种情况。PCIe目前还无法做到如SATA/SAS一样的支持力度,这个需要服务器厂商和SSD厂商共同推进,相信在未来会越来越好。用户在这个阶段,只有尽量和厂商多沟通,才能避免操作中造成系统崩溃,数据丢失等风险。

u盘redhat安装教程

u盘redhat安装教程(U盘安装redhat)红帽企业版Linux(Red Hat Enterprise Linux)简称为RHEL,它比Fedora稳定。由于CentOS已经被Redhat收购,和RHEL相同源代码的CentOS近期变成了Fedora和RHEL之间的稳定过渡带发行版,大家准备逃离CentOS。好在RHEL代码需要开源,又有许多类似的社区版可供使用。不过RHEL并没有向个人收取费用,我们不必执着于同rpm软件包系的Oracle Linux,也不必切换到deb软件包系的Debian、Ubuntu,就正常使用RHEL就好。

下载

根据CPU类型,从RHEL官网下载光盘镜像。比如64位的Intel/AMD CPU选择x86_64;如果是ARMv8的CPU,选aarch64(某些场合也称为arm64,如Debian)。光盘镜像除CPU架构不同外,根据操作系统是否含有附带软件又区分为DVD和Boot镜像。

下载镜像需要红帽账号,登录后选择对应的镜像,网站会自动开始下载。需要注意的是,整个下载链接只有240分钟的有效期。所以,请务必保持较好的网速!(8G大小时,平均下载速度需不低于570K/s)

当然,国内某些网站提供了镜像,比如搜索rhel镜像出来的山东女子学院镜像。

安装分区

禁用swap。一方面考虑内存本身较大,另一方面考虑SSD频繁读写的寿命不高,故选择禁用swap(不创建swap分区)

用户数据和程序动态数据与系统文件分离。操作系统需要的文件放在SSD,可以加快启动和运行,我们可以把“/boot”、“/”、“/boot/efi”放在SSD。用户数据和程序动态数据占用的空间较大、且修改频繁,我们可以把“/home”、“/var”放到机械硬盘上。

dnfmedia.repo

设置软件包地址(默认指向安装光驱)。

在RHEL8,yum只是dnf的一个软链接。

which yum#/usr/bin/yumls-alh/usr/bin/yum# dnf-3ls-alh/usr/bin/dnf# dnf-3在"/etc/yum.repos.d"目录下新建文件media.repo,用于指向光盘镜像的附带软件,即rhel-{m}.{n}-{arch}-dvd.iso。其中该文件分两个部分,InstallMedia-BaseOS的baseurl指向BaseOS目录,我们可以从"/mnt/cdrom/BaseOS"里复制到磁盘目录"/home/administrator/BaseOS"。 InstallMedia-AppStream指向Apptream目录,我们可以从"/mnt/cdrom/AppStream"复制到磁盘目录"/home/administrator/AppStream"。一个可能的内容如下:

[InstallMedia-BaseOS]name= Red Hat Enterprise Linux 8 for x86_64- BaseOS(RPMs)metadata_expire=-1gpgcheck=1enabled=1baseurl= [InstallMedia-AppStream]name= Red Hat Enterprise Linux 8 for x86_64- AppStream(RPMs)baseurl= 1gpgcheck= 1gpgkey= 86400enabled_metadata= 1redhat.repo在较高版本的RHEL,安装时就要求联网,输入账号信息进行激活,就不需要此步骤。较低版本的redhat.repo文件由rhsm自动生成,没有配置任何信息。可以按照如下步骤操作:

#注册,填写在红帽官网注册的用户名和密码 subscription-manager register#注册成功后,redhat.repo内容就会被修改,配置完成#查看所有repo,会发现现在仓库标识多了rhel-8-for-x86_64-appstream-rpms和rhel-8-for-x86_64-baseos-rpmsyum repolist#查看redhat.repo也能看到文件内容多了很多信息cat/etc/yum.repos.d/redhat.repo# dnf clean all# dnf makecache#如果不想注册到红帽,或者因网络问题,注册不了,可以下载Centos-8.repo,将内容复制到redhat.repocurl-o Centos-8.repo Centos-8.repo>>/etc/yum.repos.d/redhat.repo#除aliyun外,清华\中科大\华为等大学/公司也提供了镜像地址epel.repoEPEL(Extra Packages for Enterprise Linux)是社区志愿者为RHEL系统(及其衍生系统)提供的高质量附加软件包仓库。

#安装软件包yum install 安装完毕后"/etc/yum.repos.d/"下有epel相关的存储库了ls-alh/etc/yum.repos.d/#启用"codeready-builder-for-rhel-8-$(arch)-rpms"存储库(EPEL包可能依赖),EPEL支持x86_64,aarch64等架构subscription-manager repos--enable"codeready-builder-for-rhel-8-$(arch)-rpms"#启用epel-testing# dnf config-manager--set-enabled epel-testing#禁用epel-testing# dnf config-manager--set-disable epel-testing#临时使用epel-testing# dnf upgrade--enablerepo=epel-testing# dnf install--enablerepo=epel-testing#更换镜像sudo sed-e's|^metalink=|#metalink=|g'\-e's|^#baseurl=https\?://download.fedoraproject.org/pub/epel/|baseurl=^#baseurl=https\?://download.example/pub/epel/|baseurl=使用有线网卡,而且没有或不使用无线网卡的可以跳过此步骤。安装时可以联网,最小安装后WIFI无法使用的也可以尝试按下面方法进行解决。

#查看网络配置:可以看到显示的wl开头的网卡适配器没有IP地址,或者有IPv6地址,但是ping不通外网ifconfig-a#查看配置文件,SSID名称为你连接无线路由的名称ls-alh/etc/sysconfig/network-scriptscat/etc/sysconfig/network-scripts/ifcfg-{SSID}#由于目前IPv6的可用性处于薛定谔的猫状态,先禁用IPv6,可以启动图形界面禁用nmtui#再次查看,应该看到已禁用IPv6cat电脑/etc/sysconfig/network-scripts/ifcfg-{SSID}| grep IPv6_DISABLED#尝试启用无线网络连接"wlo1",具体名字根据上一个命令结果nmcli c up wlo1#命令提示失败原因# Error: Connection activation failed: No suitable device found for this connection(device lo not available because device is strictly unmanaged)#查看服务状态sudo systemctl status NetworkManager#可以看到提示#'wifi' plugin not available; creating generic device如果是完整DVD安装,可以尝试使用yum/dnf命令安装:

sudo yum install NetworkManager-wifi#如果提示当前用户不在sudoers中时,执行visudo,以“username”用户名只在本机可运行yum/dnf为例添加一行如下(不含“#”):# username localhost=/usr/bin/yum,/usr/bin/dnf,/usr/bin/dnf-3#更改完后,重新执行安装命令sudo dnf install NetworkManager-wifi如果只有无线网络,但安装了双系统,且Windows系统与Linux在不同的硬盘上时,可以考虑在Windows系统使用WSL来解决:

wsl--updatewsl--shutdown#显示支持的linux发行版,显示结果分两列,一列名字(下一个安装命令会用到),另一列为还是名字(全名,可能包含版本等其他信息)wsl--list--online#选取其中一个发行版,进行安装wsl--install-d Debian#查看磁盘信息diskpartlist disk# WSL不能挂载启动分区所在磁盘,找到要挂载的磁盘序号(假设为0)select disk 0#找到要挂载的分区号list partition##挂载整个磁盘时也可以使用“wmic diskdrive list brief”来查看磁盘信息#装载指定分区,命令格式:wsl--mount--partition--type wsl--mount\\.\PHYSICALDRIVE0--partition 1--type ext4#复制rpm包及依赖包到redhat系统的目录cp/mnt/d/Downloads/*.rpm/mnt/uuid/home/pi/Downloads/#卸载wsl--unmount\\.\PHYSICALDRIVE0#如果卸载失败,则退出wsl来卸载wsl--shutdown#进入Linux系统rpm-i NetworkManager-wifi*.rpm#如果安装失败,并提示依赖,则先安装依赖GUI如果使用启动镜像最小化安装,启动后是没有图形界面的。

安装图形界面的方式如下:

#查看程序组dnf group list#安装dnf groupinstall"Server with GUI"#设置启动后默认界面systemctl set-default graphical.target#使用GUI界面systemctl isolate graphical.target#重启# rebootWindows文件格式读写双系统没有虚拟机方便的一点是,切换系统需要重启。但好处是性能会比虚拟机高很多。但有时候,Windows用的比较顺手,有的时候需要Redhat来试验些东西,而且有些东西也只能用Linux来实验。这时我们需要打通两个系统的文件,当然通过网盘,或者自建NAS也是可行,但毕竟又多了些条件。我们需要通过U盘,甚至直接读写NTFS文件系统。如果是U盘,一般建议格式化为exFAT。

# fuse-exfat可以用于读写exfat格式,在“”网页搜索,可以发现它不在正式软件包#通过搜索exfat,比如网站“”,我们找到下载地址,同时发现一个可选的工具exfatprogs在EPELsudo dnf install dnf install exfatprogs# ntfs-3g和ntfsprogs都在EPEL,ntfs-3g用于挂载及读写,ntfsprogs提供了额外的工具(如格式化成NTFS、解密、列出目录、输出文件内容)sudo dnf install ntfsprogs#查看磁盘sudo fdisk-l#挂载U盘(假定为sdb1,让系统自动识别文件格式)mount/dev/sdb1/media#挂载Windwos文件系统mount.ntfs-3g/dev/sda0/mnt/c#可以编辑/etc/fstab,在开机后自动挂载重建启动菜单安装完Linux后,如果Windows启动项丢失,在grub启动界面按"c"健,使用如下命令到Windows系统:

#查看硬盘ls#根据硬盘和分区设置set root=(hd0,gpt2)#如果是BIOS引导# chainloader+1#如果是UEFI引导chainloader/EFI/Microsoft/bootmgfw.efi#启动boot如果直接格式化原来的EFI分区,通过上述方法是无法启动的。因为UEFI要求磁盘必须以GPT方式分区,分区后多个系统的启动文件会在同一个分区的不同文件夹下!当我们格式化分区,安装其他系统时,相当于丢失原有的启动文件,自然无法多系统启动。此时,我们可以利用多系统启动文件在同一个分区这个特性,再安装原来的Windows操作系统到另一个分区上。安装成功后,分区信息在Linux系统信息如下:

[root@localhost]# sudo fdisk-lDisk/dev/nvme0n1:238.5 GiB,256060514304字节,500118192个扇区单元:扇区/ 1* 512= 512字节扇区大小(逻辑/物理):512字节/ 512字节I/O大小(最小/最佳):512字节/ 512字节磁盘标签类型:gpt磁盘标识符:27EE6043-B2C3-42B1-B1A6-2C3F85DF9A68设备起点末尾扇区大小类型/dev/nvme0n1p1 2048 206847 204800 100M EFI系统/dev/nvme0n1p2 206848 239615 32768 16M Microsoft保留/dev/nvme0n1p3 239616 208613375 208373760 99.4G Microsoft基本数据/dev/nvme0n1p4 208613376 209952767 1339392 654M Windows恢复环境/dev/nvme0n1p5 209952768 212049919 2097152 1G Linux文件系统/dev/nvme0n1p6 212049920 316923903 104873984 50G Linux LVM/dev/nvme0n1p7 316923904 500117503 183193600 87.4G Microsoft基本数据[root@localhost]# sudo mount/dev/nvme0n1p1/media[root@localhost]# sudo ls-alh/media/EFI总用量 24Kdrwx------. 5 root root 2.0K 12月 15 15:42.drwx------. 3 root root 16K 1月 1 1970..drwx------. 2 root root 2.0K 12月 15 15:44 BOOTdrwx------. 4 root root 2.0K 12月 17 19:37 Microsoftdrwx------. 3 root root 2.0K 12月 17 19:42 redhat[root@localhost]# sudo umount/dev/nvme0n1p1由于Linux缺乏编辑BCD的工具,回到新安装的Windows系统,下载bootice双击运行,然后选择加载当前系统BCD,在智能模式下,将Windows启动分区设置到原来的Windows分区,最好保存系统设置退出程序,重启便可以回到原来的Windows系统。

虽然将原来的Windows系统找回变得可启动,但是Linux的GRUB2启动选项并没有Windows菜单。每次都通过设置UEFI启动顺序来控制使用哪个系统,远没有GRUB2菜单选择方便。此时需要再登入Linux系统

#不同的Linux发行版,EFI目录不一样,比如centos可能是“/EFI/centos”,#安装redhat将EFI分区挂载在“/boot/efi”目录下,使用如下命令查看cat/boot/efi/EFI/redhat/grub.cfg#终端输出30_os-prober信息如下:### BEGIN/etc/grub.d/30_os-prober###### END/etc/grub.d/30_os-prober###sudo grub2-mkconfig正常情况下,在命令运行完后,终端会看到如下信息:

### BEGIN/etc/grub.d/30_os-prober###Found Windows Boot Manager on/dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efimenuentry'Windows Boot Manager(on/dev/nvme0n1p1)'--class windows--class os$menuentry_id_option'osprober-efi-A25C-CF85'{insmod part_gptinsmod fatif [ x$feature_platform_search_hint= xy ]; then search--no-floppy--fs-uuid--set=root A25C-CF85else search--no-floppy--fs-uuid--set=root A25C-CF85fichainloader/EFI/Microsoft/Boot/bootmgfw.efi}# Other OS found, undo autohiding of menu unless menu_auto_hide=2if ["${orig_timeout_style}"-a"${menu_auto_hide}"!="2" ]; then set timeout_style=${orig_timeout_style} set timeout=${orig_timeout}fi### END/etc/grub.d/30_os-prober###此时准备重新生成grub.cfg。

sudo cat/etc/default/grub| grep GRUB_DISABLE_OS_PROBER#如果没有此配置,则追加配置:GRUB_DISABLE_OS_PROBER=falsesudo cp/boot/efi/EFI/redhat/grub.cfg/boot/efi/EFI/redhat/grub.cfg.baksudo rm-rf/boot/efi/EFI/redhat/grub.cfgsudo grub2-mkconfig-o/boot/efi/EFI/redhat/grub.cfg# sudo rm-rf/boot/efi/EFI/redhat/grub.cfg.bak再查看grub.cfg可以看到原先的30_os-prober之间有了一个menuentry,内容如下:

### BEGIN/etc/grub.d/30_os-prober###menuentry'Windows Boot Manager(on/dev/nvme0n1p1)'--class windows--class os$menuentry_id_option'osprober-efi-A25C-CF85'{insmod part_gptinsmod fatif [ x$feature_platform_search_hint= xy ]; then search--no-floppy--fs-uuid--set=root A25C-CF85else search--no-floppy--fs-uuid--set=root A25C-CF85fichainloader/EFI/Microsoft/Boot/bootmgfw.efi}# Other OS found, undo autohiding of menu unless menu_auto_hide=2if ["${orig_timeout_style}"-a"${menu_auto_hide}"!="2" ]; then set timeout_style=${orig_timeout_style} set timeout=${orig_timeout}fi### END/etc/grub.d/30_os-prober###重启查看GRUB2启动菜单,如果出现Windows菜单,并可正常进入Windows系统便说明修复成功。如果需要将Windows系统设置为默认启动系统,可以采取如下方式:

#根据原启动界面的顺序,比如Linux一般又2个启动项,那么Windows是第三个启动项sudo grub2-set-default 2#上述方法在新安装其他操作系统时可能需要重新调整,为避免调整,可以采用下面一种方式(但注意menuentry修改时要重新运行设置默认启动系统命令sudo grub2-set-default'Windows Boot Manager(on/dev/nvme0n1p1)'sudo reboot

从Centos7升级到Centos8的教程

在进行正式环境的升级之前,务必要对数据进行备份,同时保存重要配置信息。因为升级过程中可能会卸载部分应用。请注意,CentOS 8已于2021年12月31日停止支持,建议迁移至其他发行版,例如可参考作者从Centos-7迁移到RockyLinux-8、AlmaLinux-8的教程。

注意:升级前请备份好数据,升级可能会导致ssh的root用户无法登录、网卡名称发生改变、引导丢失无法开机等问题,如果不知道怎么处理,请进群咨询。

群号:831037125(CentOS、RockyLinux、AlmaLinux升级交流群)

1.安装epel源

2.更新系统至最新版本,以防止升级时出现各种异常问题

3.重启系统

4.安装rpmconf和yum-utils

5.执行rpmconf,如果出现提示,请输入Y和回车继续,如果未出现提示,则继续进行第四步操作

6.安装dnf

7.移除yum和yum-metadata-parser

8.安装Centos8的源和升级epel源

9.卸载centos7的内核

10.升级到centos8,这一步可能会报错,如果没有报错,则进行第10步操作

替换Centos源为过期源

开始升级

执行完上面的命令后,如果出现以下错误:

请将红框内的包名(可能存在多个包,重复以下步骤)替换到以下命令中:

命令:

如:

然后继续以下操作:

发现报错后,先卸载类似于图上from package后面的包名

卸载完成后,再次执行升级

11.执行rpmconf,会出现如下界面,一直输入Y和回车即可

12.安装内核(以防某些情况下开机失败,开机失败的可以使用Centos8 ISO镜像救援模式安装内核)

13.本步骤可选择性执行,执行本步骤可以解决安装yum时出现的报错。

14.安装基础环境

15.执行以下命令,以防迁移完成后找不到引导,重启后无法开机。根据以下命令选择分区表类型,根据分区表类型执行相关命令:

查看分区表类型

GPT分区表

MBR分区表

GPT分区(UFFI的BIOS)

添加UEFI启动项(注意/dev/nvme0n1为efi分区所在磁盘,需根据实际情况自行选择磁盘路径,具体参考上图,-p后面是分区位置(默认为1),efi分区为/dev/nvme0n1p1值就是1,efi分区为/dev/nvme0n1p2值就是2)

MBR分区(传统的BIOS、dos、msdos)(注意/dev/nvme0n1需根据实际情况自行选择磁盘路径,具体参考上图)

16.重启机器

阅读剩余
THE END