CentOS下想要判断自己的服务器是物理机还是VPS或者云服务器,这种情况就是判断一下vps的技术,如果不是vps的话就不会反馈结果。
一般来说,VPS的虚拟化技术,有Xen、OpenVZ、Xen HVM和VMware这几种,那么,如何判断自己的VPS是基于哪种虚拟化技术的呢?
1、执行:ls /proc/
命令,一般Xen的VPS,/proc目录下面会有xen的目录,openvz的会有vz目录。
2、执行:free -m
命令看内存,openvz的没有swap,当然也有xen的没有swap,但是xen的是可以加的,openvz不行。
3、执行:uname -a
命令,有些xen的VPS里面会显示有xen。
4、执行:ifconfig
或者 ip addr
命令查看网卡,openvz的一般都是venet0: ,xen的一般都是eth。
5、通过VPS控制面板查看,像SolusVM、vePortal控制面板上都显示虚拟技术。
6、使用专门的软件命令:
virt-what
virt-what是一个判断当前环境所使用的虚拟技术的脚本,常见的虚拟技术比如openvz,xen,kvm
基本上都能正常识别出来。
可以执行如下命令安装(需要安装好gcc、make):
wget http://people.redhat.com/~rjones/virt-what/files/virt-what-1.9.tar.gz tar zxvf virt-what-1.9.tar.gz cd virt-what-1.9/ ./configure make && make install
再运行 virt-what
,脚本就会判断出当前环境所使用的虚拟技术
7、执行systemd-detect-virt
systemd-detect-virt //执行该命令 kvm //33的是阿里云的kvm技术
8、还可以使用dmidecode -t system来查看系统信息。
dmidecode -t system //执行命令
输出结果:
# dmidecode 3.2 Getting SMBIOS data from sysfs. SMBIOS 2.8 present. Handle 0x0100, DMI type 1, 27 bytes System Information Manufacturer: Alibaba Cloud Product Name: Alibaba Cloud ECS Version: pc-i440fx-2.1 Serial Number: 111-556a-47e6-a1d8-666 UUID: 111-556a-47e6-a1d8-666 Wake-up Type: Power Switch SKU Number: Not Specified Family: Not Specified Handle 0x2000, DMI type 32, 11 bytes System Boot Information Status: No errors detected
9、docker容器
a、如果是虚拟机中安装的操作系统中运行docker,则systemd-detect-virt和dmidecode -t system在容器中是失效的
b、可以通过docker容器根分区专用的文件系统类型overlay来判断:
[root@33f /]# df -h / | grep overlay overlay 100G 25G 23G 25% /
如果根分区文件系统是ovlerlay,表示是在docker容器中
c、通过dockerenv文件判断
[root@33f /]# ls /.dockerenv /.dockerenv
如果存在/.dockerenv文件,则是在docker容器中
d、根据/proc/1/cgroup是否包含docker字样判断
[root@centos /]# cat /proc/1/cgroup | grep docker 11:pids:/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286 1:name=systemd:/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286 /docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286/init.scope
进程1的控制组是包含有docker的字样
#systemd-detect-virt的用法
1,列出支持检测的虚拟环境
[root@33f /]# systemd-detect-virt --list none kvm qemu bochs xen uml vmware oracle microsoft zvm parallels bhyve qnx vm-other systemd-nspawn lxc-libvirt lxc openvz docker rkt container-other
2,非虚拟机或容器环境时,返回none
[root@33f /]# systemd-detect-virt none
3,systemd-detect-virt查看版本
[root@33f /]# systemd-detect-virt --version systemd 239 +PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=legacy
4,只检测虚拟机
[root@33f /]# systemd-detect-virt -v vmware
5,只检测容器
[root@33f /]# systemd-detect-virt -c docker
说明:如果是虚拟机中的容器会检测不到
Copyright © 2013-2021 8a.hk All Rights Reserved. 八艾云 版权所有 中山市八艾云计算有限公司 粤ICP备14095776号