云计算虚拟化技术基础与实践:QEMU虚拟化配置_第1页
云计算虚拟化技术基础与实践:QEMU虚拟化配置_第2页
云计算虚拟化技术基础与实践:QEMU虚拟化配置_第3页
云计算虚拟化技术基础与实践:QEMU虚拟化配置_第4页
云计算虚拟化技术基础与实践:QEMU虚拟化配置_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

云计算虚拟化技术基础与实践

QEMU虚拟化配置目录CONTENT02.QEMU基本命令03.CPU配置04.内存配置05.存储器配置06.网络配置01.KVM与QEMU环境构建本章重点理解KVM与QEMU的关系。掌握KVM与QEMU虚拟化环境构建过程。掌握QEMU基本命令。掌握客户机核心模块CPU、内存、存储器和网络配置基本方法。掌握qemu-img命令的基本使用方法。掌握客户机镜像制作过程。KVM与QEMU环境搭建KVM与QEMU关系宿主机环境的验证与配置QEMU编译与安装KVM与QEMU虚拟化环境验证011.KVM与QEMU关系KVM是Linux的一个内核驱动模块,它能够让Linux主机成为一个Hypervisor(虚拟机监控器)。QEMU本身并不是KVM的一部分,而是一套由FabriceBellard编写的模拟处理器的自由软件。由于QEMU支持Xen和KVM模式下的虚拟化,KVM为了简化开发和代码重用,对QEMU进行了修改。从QEMU角度来看,虚拟机运行期间,QEMU通过KVM模块提供的系统调用进行内核,由KVM模块负责将虚拟机置于处理器的特殊模式运行。QEMU使用了KVM模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化加速,来提高虚拟机的性能。KVM和QEMU相辅相成,QEMU通过KVM达到了硬件虚拟化的速度,而KVM则通过QEMU来模拟设备。2.宿主机环境的验证与配置本书统一利用VMwareWorkstation中搭建的CentOS7作为虚拟化环境的宿主机使用,在本节中,KVM与QEMU的环境构建步骤都是在宿主机中执行。开启CentOS虚拟化2.宿主机环境的验证与配置如果看到的“虚拟化引擎”为灰色,说明VMware的宿主机Windows还未开启虚拟化的支持。需要将Windows重启,进入BIOS页面,开启虚拟化设置。如何在BIOS中开启虚拟化,由于各机器不同,设置也不同。这里以DELL笔记本进行举例,DELL笔记本电脑进BOIS的快捷键是F2。2.宿主机环境的验证与配置2.宿主机环境的验证与配置2.宿主机环境的验证与配置利用命令“uname-r”查看内核的版本号,2.6以上的内核都支持,本书中CentOS7操作系统的内核版本为3.10.0。判断CentOS宿主机操作系统内核是否支持KVM[root@localhost~]#uname-r3.10.0-1160.el7.x86_642.宿主机环境的验证与配置验证CentOS系统内核是否安装KVM内核模块注意事项:此处是以支持Intel的虚拟化技术Intel-VT的CPU为例,如果是支持AMD的虚拟化技术AMD-V的CPU,需要查看是否包含“svm”,命令为“cat/proc/cpuinfo|grepsvm”。注意事项:KVM模块无需安装,因为在CentOS7的通用发行版本中KVM模块均已安装。[root@localhost~]#cat/proc/cpuinfo|grepvmx[root@localhost~]#lsmod|grepkvmkvm_intel1887400kvm6372891kvm_intelirqbypass135031kvm3.QEMU编译与安装可以通过wget工具下载QEMU源码压缩包,然后进行QEMU的配置编译安装。[root@localhost~]#wget/qemu-4.1.0.tar.xz[root@localhost~]#tarxvJfqemu-4.1.0.tar.xz[root@localhost~]#cdqemu-4.1.0/[root@localhostqemu-4.1.0]#./configure[root@localhostqemu-4.1.0]#make-j10[root@localhostqemu-4.1.0]#makeinstall3.QEMU编译与安装安装完毕后,使用命令“qemu-”,按两次Tab键查看QEMU是否安装成功,如果能够成功输出“qemu-system-x86_64”说明安装成功。[root@localhostqemu-4.1.0]#qemu-qemu-aarch64qemu-ppcqemu-system-mips64……qemu-mips64elqemu-system-hppaqemu-system-x86_64使用“whichqemu-system-x86_64”命令查看QEMU安装的目录。[root@localhostqemu-4.1.0]#whichqemu-system-x86_64/usr/local/bin/qemu-system-x86_644.KVM与QEMU虚拟化环境验证1.下载cirros磁盘镜像文件cirros磁盘镜像文件的下载地址为/cirros-dev/cirros/releases/,文件名为cirros-0.5.2-x86_64-disk.img下载cirros系统的磁盘镜像文件4.KVM与QEMU虚拟化环境验证2.安装VNC远程连接工具在主控端计算机上安装tigervnc[root@localhost]#yuminstall-ytigervnc在被控端计算机上安装tigervnc-server[root@localhost]#yuminstall-ytigervnc-server4.KVM与QEMU虚拟化环境验证3.在被控端计算机上,通过命令“qemu-system-x86_64-m1024-smp1-bootorder=c-hdacirros-0.5.2-x86_64-disk.img-vnc:1-enable-kvm”来启动KVM虚拟机。[root@localhost~]#qemu-system-x86_64-m1024-smp1-bootorder=c-hdacirros-0.5.2-x86_64-disk.img-vnc:1-enable-kvm“-m1024”表示给虚拟机分配1024MB内存;“-smp1”表示给虚拟机分配1个vCPU;“-bootorder=c”表示虚拟机从硬盘启动。“-hdacirros-0.5.2-x86_64-disk.img”表示使用cirros系统磁盘镜像文件作为虚拟机启动盘启动虚拟机。“-vnc:1”表示使用vnc的5901端口共享虚拟机桌面;“-enable-kvm”表示开启KVM内核加速模块。4.KVM与QEMU虚拟化环境验证4.在主控端计算机上,启动vncviewer远程连接虚拟机桌面。执行命令“vncviewer”。注意事项:如果无法连接远程桌面,有可能是因为被控计算机的防火墙,请尝试关闭防火墙。4.KVM与QEMU虚拟化环境验证输入账户名cirros,密码gocubsgo,进入KVM虚拟机QEMU基本命令02QEMU基本命令一般来说,在X86_64平台上的QEMU命令行基本格式如下:qemu-system-x86_64[options][disk_image]QEMU的标准选项主要涉及指定主机类型、CPU模式、NUMA、软驱设备、光驱设备及硬件设备等。-namename:设定客户机名称;-mmegs:设定客户机的RAM大小;-cpumodel:设定CPU模型;-hdafile:使用指定file作为第一个硬盘镜像;-cdromfile:使用指定file作为CD-ROM镜像;-boot[order=drives][,once=drives][,menu=on|off]:定义启动设备的引导次序。CPU配置CPU设置基本参数CPU模型031.CPU设置基本参数在QEMU中,“-smp”参数是为了配置客户机的SMP系统。-smp[cpus=]n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]cpus用来设置客户机中使用的逻辑CPU的数量(默认值是1);maxcpus用来设置客户机的最大CPU的数量,最多支持255个CPU。其中,包含启动时处于下线状态的CPU数目;sockets用来设置客户机中看到的总socket的数量。cores用来设置在一个socket上CPUcore的数量;threads用来设置在一个CPUcore上线程的数量;1.CPU设置基本参数举例说明:不加smp参数,使用其默认值1,模拟只有一个逻辑CPU的客户机系统。[root@localhost~]#qemu-system-x86_64cirros-0.5.2-x86_64-disk.img-vnc:1-monitorstdio在qemumonitor中,用“infocpus”命令可以看到客户机中CPU状态(qemu)infocpus*CPU#0:thread_id=109659[root@localhost~]#ps-efL|grepqemuroot10965629161096563421:53pts/000:00:06qemu-system-x86_64cirros-0.5.2-x86_64-disk.img-vnc:1-monitorstdioroot10965629161096570421:53pts/000:00:00qemu-system-x86_64cirros-0.5.2-x86_64-disk.img-vnc:1-monitorstdioroot109656291610965934421:53pts/000:01:03qemu-system-x86_64cirros-0.5.2-x86_64-disk.img-vnc:1-monitorstdio在宿主机中,可以用ps命令来查看QEMU进程和线程1.CPU设置基本参数在客户机中,可使用“ls/sys/devices/system/cpu/”查看CPU情况在客户机中,可使用“cat/proc/cpuinfo”查看CPU情况1.CPU设置基本参数举例说明:使用smp参数,模拟有4个逻辑CPU的客户机系统,共有2个CPUsocket,每个socket有两个核。[root@localhost~]#qemu-system-x86_64-smp4,sockets=2,cores=2cirros-0.5.2-x86_64-disk.img-vnc:1-monitorstdio在qemumonitor中,用“infocpus”命令可以看到客户机中CPU状态(qemu)infocpus*CPU#0:thread_id=117343CPU#1:thread_id=117344CPU#2:thread_id=117345CPU#3:thread_id=1173461.CPU设置基本参数在宿主机中,可以用ps命令来查看QEMU进程和线程[root@localhost~]#ps-efL|grepqemuroot11734029161173401722:22pts/000:00:13qemu-system-x86_64-smp4,sockets=2,cores=2cirros-0.5.2-x86_64-disk.img-vnc:1-monitorstdioroot11734029161173410722:22pts/000:00:00qemu-system-x86_64-smp4,sockets=2,cores=2cirros-0.5.2-x86_64-disk.img-vnc:1-monitorstdioroot11734029161173432722:22pts/000:00:33qemu-system-x86_64-smp4,sockets=2,cores=2cirros-0.5.2-x86_64-disk.img-vnc:1-monitorstdioroot11734029161173440722:22pts/000:00:11qemu-system-x86_64-smp4,sockets=2,cores=2cirros-0.5.2-x86_64-disk.img-vnc:1-monitorstdioroot11734029161173451722:22pts/000:00:14qemu-system-x86_64-smp4,sockets=2,cores=2cirros-0.5.2-x86_64-disk.img-vnc:1-monitorstdioroot11734029161173461722:22pts/000:00:20qemu-system-x86_64-smp4,sockets=2,cores=2cirros-0.5.2-x86_64-disk.img-vnc:1-monitorstdioroot11734029161173470722:22pts/000:00:01qemu-system-x86_64-smp4,sockets=2,cores=2cirros-0.5.2-x86_64-disk.img-vnc:1-monitorstdioroot1176641097231176640122:42pts/300:00:00grep--color=autoqemu1.CPU设置基本参数在客户机中,使用“cat/proc/cpuinfo|grep'processor'”命令来查看逻辑CPU个数在客户机中,使用“cat/proc/cpuinfo|grep'physicalid'|sort|uniq”命令来查看socket在客户机中,使用“cat/proc/cpuinfo|grep'coreid'|sort|uniq”命令来查看核数2.CPU模型举例说明:查看当前的QEMU支持的所有CPU模型。[root@localhost~]#qemu-system-x86_64-cpu?[root@localhost~]#qemu-system-x86_64cirros-0.5.2-x86_64-disk.img-vnc:1举例说明:不加“-cpu”参数来启动客户机。举例说明:在启动客户机时指定了CPU模型为Penryn。[root@localhost~]#qemu-system-x86_64cirros-0.5.2-x86_64-disk.img-cpuPenryn-vnc:1内存配置内存设置基本参数大页(HugePage)041.内存设置基本参数启动客户机时,设置内存大小的参数:-m[size=]megs设置客户机虚拟内存的大小为megsMB字节。在默认情况下,内存大小为128MB。可以加上“M”或者“G”为后缀,指定使用MB或者GB作为内存分配的单位。举例说明:不加内存参数,模拟一个默认内存大小的客户机系统。在客户机中,可以使用命令“free-m”查看内存信息[root@localhost~]#qemu-system-x86_64cirros-0.5.2-x86_64-disk.img-vnc:1在客户机中,可以使用命令“cat/proc/meminfo”查看内存信息2.大页在Linux环境中,内存是以页Page的方式进行分配,页面的默认大小为4KB。如果需要比较大的内存空间,操作系统需要进行频繁的页分配和管理寻址动作。HugePage是传统4KPage的替代方案,它的广泛启用开始于Kernel2.6,使用HugePage可以让我们有更大的内存分页。通常情况下,内存页大小为4KB,HugePage的大小是2048KB,即2MB。2.大页举例说明:在宿主机中进行设置,让客户机启动后使用HugePage大页内存。第一步,查看宿主机中内存页的大小和HugePage的大小。第二步,使用mount命令挂载hugetlbfs文件系统到Linux的HugePage目录下。第三步,设置HugePage的数量为1024。第四步,启动客户机,并让其使用HugePage内存。第五步,查看宿主机中HugePage的使用情况。如果使用“-mem-prealloc”参数就会让给客户机预分配内存,这时,HugePages_Free数量的减少和分配给客户机的内存大小会保持一致。2.大页在Linux环境中开启HugePage有很多好处:非Swap内存:当开启HugePage的时候,HugePage是不会Swap的;减少TLB(TranslationLookasideBuffer)负担:TLB是在CPU里面的一块缓冲区域,其中包括了部分PageTable内容。使用HugePage可以减少TLB工作负载;减少PageTable空间负载:在PageTable管理中,每条Page记录是要占据64byte的空间;减少PageTable检索负载:更小的PageTable意味着更快的检索定位能力;内存性能提升:Page数量减少和大小的增加,减少了管理过程的复杂性,进一步减少了瓶颈出现的概率。存储器配置常见的存储配置启动顺序配置QEMU支持的镜像文件格式qemu-img命令Ubuntu客户机镜像制作Windows客户机镜像制作051.常见的存储配置-hdafile:此为默认选项,指定file镜像作为客户机中的第一个IDE设备(序号0)。-cdromfile:指定file作为CD-ROM镜像。-driveoption[,option[,option[,...]]]file=/path/to/somefile:硬件镜像文件路径。if=interface:指定硬盘设备所连接的接口类型,即控制器类型。常见的有ide、scsi、sd、mtd、floopy、pflash和virtio等。cache=none|writeback|writethrough|unsafe:设置对客户机块设备(包括镜像文件或一个磁盘)的缓存方式。2.启动顺序配置-boot[order=drives][,once=drives][,menu=on|off][,splash=splashfile][,splash-time=sp-time]order=drives:在QEMU模拟的x86_64平台中,用“a”和“b”表示第一和第二个软驱,用“c”表示第一个硬盘,用“d”表示CD-ROM光驱,用“n”表示从网络启动。默认情况下从硬盘启动,假如要从网络启动可以设置“-bootorder=n”。once=drives:设置第一次启动的启动顺序,重启后恢复为默认值。例如“-bootonce=n”设置,表示本次从网络启动,但系统重启后从默认的硬盘启动。menu=on|off:用于设置交互式的启动菜单选项,需要客户机的BIOS支持。默认情况下,“menu=off”,表示不开启交互式的启动菜单。3.QEMU支持的镜像文件格式镜像格式Hypervisorrawqcow2vmdkqedvdivhdKVM√√√√√

XEN√√√

√VMware

Virtualbox

√√常见Hypervisor及其支持的镜像格式4.qemu-img命令1.check[-ffmt]filenamecheck命令用来对磁盘镜像文件进行一致性检查,查找镜像文件中的错误。参数-ffmt用来指定文件的格式,如果不指定格式,qemu-img会自动检测。filename是磁盘镜像文件的名称(包括路径)。目前仅支持对“qcow2”、“qed”、“vdi”格式文件的检查。举例说明:对镜像文件进行一致性检查。[root@localhost~]#qemu-imgcheckcirros-0.5.2-x86_64-disk.imgNoerrorswerefoundontheimage.578/1792=32.25%allocated,49.31%fragmented,20.76%compressedclustersImageendoffset:367656964.qemu-img命令2.create[-ffmt][-ooptions]filename[size]create命令用来创建一个格式为fmt,大小为size,文件名为filename的镜像文件。举例说明:创建没有backing_file的qcow2格式的镜像文件,指定5GB大小。[root@localhost~]#qemu-imgcreate-fqcow2test.qcow25GFormatting'test.qcow2',fmt=qcow2cluster_size=65536compression_type=zlibsize=5368709120lazy_refcounts=offrefcount_bits=164.qemu-img命令3.commit[-ffmt][-tcache]filename如果在创建镜像文件时,通过backing_file指定了后端镜像文件,可以通过commit命令提交filename文件中的更改到后端支持镜像文件中去。4.convert[-c][-p][-ffmt][-tcache][-Ooutput_fmt][-ooptions][-ssnapshot_name][-Ssparse_size]filename[filename2[...]]output_filename通过convert命令,可以实现不同格式的镜像文件之间的转换。举例说明:将一个qcow2格式的镜像文件转换为raw格式的文件。[root@localhost~]#qemu-imgconvertcirros-0.5.2-x86_64-disk.imgcirros.raw[root@localhost~]#llcirros.raw-rw-r--r--.1rootroot117440512Apr1312:29cirros.raw4.qemu-img命令5.info[-ffmt]filenameinfo命令主要用来展示filename镜像文件的信息。举例说明:查看镜像文件的相关信息。[root@localhost~]#qemu-imginfocirros-0.5.2-x86_64-disk.imgimage:cirros-0.5.2-x86_64-disk.imgfileformat:qcow2virtualsize:112MiB(117440512bytes)disksize:35.1MiBcluster_size:65536Formatspecificinformation:compat:1.1compressiontype:zliblazyrefcounts:falserefcountbits:16corrupt:false4.qemu-img命令6.snapshot[-l|-asnapshot|-csnapshot|-dsnapshot]filenamesnapshot命令主要用来操作镜像文件中的快照,qcow2支持快照功能,raw不支持。举例说明:针对qcow2格式的镜像文件,创建一个镜像文件快照并使用。[root@localhost~]#qemu-imgsnapshot-cbasecirros-0.5.2-x86_64-disk.img[root@localhost~]#qemu-imgsnapshot-lcirros-0.5.2-x86_64-disk.imgSnapshotlist:IDTAGVMSIZEDATEVMCLOCK1base0B2021-04-1312:39:1000:00:00.000[root@localhost~]#qemu-imgsnapshot-a1cirros-0.5.2-x86_64-disk.img[root@localhost~]#qemu-imgsnapshot-lcirros-0.5.2-x86_64-disk.imgSnapshotlist:IDTAGVMSIZEDATEVMCLOCK1base0B2021-04-1312:39:1000:00:00.0004.qemu-img命令7.rebase[-ffmt][-tcache][-p][-u]-bbacking_file[-Fbacking_fmt]filenamerebase命令主要用来改变镜像的后端镜像文件,只有qcow2和qed格式才支持rebase命令。8.resizefilename[+|-]sizeresize命令主要用来改变镜像文件的大小。“+”用于增加镜像文件的大小,“-”用于减少镜像文件的大小。举例说明:利用qemu-imgresize命令为qcow2镜像增加100MB空间,查看镜像文件大小[root@localhost~]#qemu-imgresizecirros-0.5.2-x86_64-disk.img+100MImageresized.[root@localhost~]#qemu-imginfocirros-0.5.2-x86_64-disk.imgimage:cirros-0.5.2-x86_64-disk.imgfileformat:qcow2virtualsize:212MiB(222298112bytes)disksize:35.2MiB……5.Ubuntu客户机镜像制作本小节以Ubuntu16.04.7为例,详细讲述Ubuntu客户机镜像的制作过程。首先需要下载Ubuntu16.04.7的ISO文件,用户可以到Ubuntu的官网下载,然后创建一个10GB大小的镜像“硬盘”(raw格式);[root@localhost~]#qemu-imgcreate-frawubuntu16.04.7.img10GFormatting'ubuntu16.04.7.img',fmt=rawsize=10737418240使用Ubuntu16.04.7的ISO文件和刚创建的镜像“硬盘”引导启动Ubuntu系统安装[root@localhost~]#qemu-system-x86_64-m1024ubuntu-16.04.7-desktop-amd64.iso-drivefile=ubuntu16.04.7.img-bootd-vnc:15.Ubuntu客户机镜像制作5.Ubuntu客户机镜像制作设置计算机名称,用户名和密码[root@localhost~]#qemu-system-x86_64-m1024-smp2-bootc-drivefile=ubuntu16.04.7.img-vnc:1镜像制作完成,利用镜像文件启动一个虚拟机。6.Windows客户机镜像制作以Windows7为例,详细讲述Window客户机镜像的制作过程。首先下载Windows7操作系统的ISO文件cn_windows_7.iso。然后创建一个50GB大小的镜像文件win7.img(qcow2格式)。其中“create”参数为使用qemu-img命令创建镜像文件,“-f”参数指定镜像文件的格式为“qcow2”,镜像文件名为win7.img,大小为50GB。[root@localhost~]#qemu-imgcreate-frawwin7.img50G使用Windows7的ISO文件和刚创建的磁盘镜像文件引导启动系统安装,启动时按F12选择启动菜单,进入光盘安装界面。[root@localhost~]#qemu-system-x86_64-m2048-drivefile=win7.img,cache=writeback,if=virtio-fdavirtio-win-1.1.16.vfd-cdromcn_windows_7.iso-netnic-netuser-bootonce=d,menu=on-usbdevicetablet--enable-kvm6.Windows客户机镜像制作选择启动设备,输入1选择从光盘启动6.Windows客户机镜像制作因为没有相应的硬盘,所以首先加载硬盘驱动程序,此处点击“加载驱动程序”6.Windows客户机镜像制作安装结束后,Windows7已经安装成功,但是网络模块未安装。若要继续安装网络模块,需先将Windows7关闭,然后使用以下命令再次启动虚拟机。其中:在-netnic中加入model=virtio表示使用网卡半虚拟化驱动virtio。将virtio-win-0.1-81.iso设置为客户机的光盘文件,从该文件安装Windows7所需的virtio网卡驱动程序。[root@localhost~]#

qemu-system-x86_64-m2048-drivefile=win7.img,cache=writeback,if=virtio-cdromvirtio-win-0.1-81.iso-netnic,model=virtio-netuser-bootorder=c-usbdevicetablet--enable-kvm6.Windows客户机镜像制作正常进入Windows7客户机之后,选择“设备管理器”中的“网络适配器”,右键“更新驱动程序软件”6.Windows客户机镜像制作浏览文件夹,选择CD驱动器中的WIN7文件夹6.Windows客户机镜像制作在Windows7虚拟机中查看本机的IP地址,如果宿主机网络正常,就可以在Windows7虚拟机中,通过ping查看网络是否畅通。网络配置网桥模式NAT模式06网络配置在QEMU中,主要给客户机提供了以下4种不同模式的网络配置方案:1.基于网桥(Bridge)的虚拟网卡模式。2.基于NAT(NetworkAddressTranslation)的虚拟网络模式。3.QEMU内置的网络模式。4.直接分配网络设备模式(例如,VT-d)。网桥和NAT是基于Linux-Bridge实现的软件虚拟网络模式,QEMU内置的网络模式是QEMU软件虚拟的网络模式。第四种模式是直接物理网卡分配给客户机使用,例如有ens33和ens38两块网卡,直接把ens33这块网卡给某一客户机使用。在QEMU命令行中,采用前三种网络配置方案对客户机网络的配置都是用“-net”参数。网络配置举例说明:在宿主机中,不设置任何网络参数,直接启动一个客户机。[root@localhost~]#qemu-system-x86_64-drivefile=cirros-0.5.2-x86_64-disk.img-netnic-netuser-vnc:1-monitorstdio在qemumonitor中,用“infonetw

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论