烂泥:NFS做存储与KVM集成
以前有关NFS的文章,我们介绍的都是NFS的使用挂载等等。这篇文章我们介绍有关NFS作为存储使用。
既然本篇文章的主题是有关NFS的,我们还是先把NFS服务器搭建完毕。具体搭建过程可参考《烂泥:NFS存储与VSphere配合使用》,这篇文章。
在此有关NFS配置文件/etc/exports中的几个参数,我们需要先介绍下:
ro 该主机对该共享目录有只读权限。
rw 该主机对该共享目录有读写权限,需要配合no_root_squash参数使用。
root_squash 该参数为缺省参数,客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户即nobody用户不具有对目录具有创建和删除操作。
no_root_squash 客户机用root访问该共享文件夹时,不映射root用户。即具有root用户所有权限,具有对目录具有创建和删除操作。
all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户。
anonuid 将客户机上的用户映射成指定的本地用户ID的用户。
anongid 将客户机上的用户映射成属于指定的本地用户组ID。
sync 资料同步写入到内存与硬盘中。
async 资料会先暂存于内存中,而非直接写入硬盘。
Insecure 允许从这台机器过来的非授权访问。
因为NFS是做存储使用的,所以我们必须为共享文件配置读写以及root用户权限,同时考虑到数据的安全的问题,建议还需要配置同步权限。具体配置权限如下:
通过上图,我们可以看到NFS共享目录/nfs,具有root用户权限,同时具有可读写、同步的权限。而NFS共享目录/home/datasoft/soft/iso/目录,只具有可读权限。为什么会是这样,我们会在下面就行讲解。
我们现在先来测试下,NFS共享目录的权限。
登录KVM服务器挂载NFS共享目录。如下:
通过上图。我们可以看到NFS的/nfs目录挂载到KVM服务器的/nfs目录下,/home/datasoft/soft/iso/目录挂载到NFS的/nfs目录下。
下面我们开始测试各自挂载目录的权限,如下:
通过以上两张图可以看出,我们对在KVM服务器上对NFS共享目录/nfs的操作都会在NFS服务器上/nfs进行同步,而且我们也具有相应的读写、创建、删除权限。
通过上图我们可以看到,我们在KVM服务器上对NFS共享目录/home/datasoft/soft/iso/只具有读权限权限,而没有创建和删除权限。这个也可以和我们在设置的权限相对应。
注意NFS共享目录/home/datasoft/soft/iso/尽管有读写权限,但是因为没有加入no_root_squash参数,默认使用root_squash参数。尽管已经给出rw参数,但是由于不具有root用户权限,所以没有创建和删除权限。
以上有关NFS共享目录权限测试完毕后,我们现在就开始配置NFS与KVM进行集成。
有关KVM与NFS存储我们分为图形界面方式和命令行方式。
我们首先来介绍命令行方式,现在把KVM的VM的硬盘创建到NFS服务器上,通过如下命令:
qemu-img create -f qcow2 /nfs/nfs.img 20G
ifconfig eth0|grep "inet addr"|awk '{print $2}'|cut -d: -f2
创建完毕后,我们现在登陆NFS服务器查看刚刚生成的文件。如下:
通过上图我们可以看到,现在KVM的VM硬盘已经存在NFS服务器上。
现在我们开始创建VM,使用如下命令:
virt-install -n nfs -r 2048 --os-type=linux --vcpus=1 -c /iso/CentOS-6.5-i386-minimal.iso --disk path=/nfs/nfs.img,format=qcow2,bus=ide --boot cdrom,menu=on -b br0 --vnc --vnclisten=0.0.0.0 --vncport=5993
但是此时会发现系统,提示如下的错误信息:
ERROR 内部错误 Process exited while reading console log output: char device redirected to /dev/pts/1
qemu-kvm: -drive file=/nfs/nfs.img,if=none,id=drive-ide0-0-0,format=qcow2,cache=none: could not open disk image /nfs/nfs.img: Permission denied
经过多次实验,如果把VM的硬盘文件权限修改为777,就不会报错。如下:
但是这种方法你可以看到,这对VM的安全性很低的。
经过查询资料发现,我们只需要把/etc/libvirt/qemu.conf文件中有关用户和用户组的注释去掉即可,这样就不需要修改有关VM的配置。qemu.conf 是libvirt对QEMU的驱动的配置文件,包括VNC、SPICE等和连接它们时采用的权限认证方式的配置,也包括内存大页、SELinux、Cgroups等相关配置。
如下:vi /etc/libvirt/qemu.conf
修改完毕后要重启qemu。如下:
/etc/init.d/libvirtd restart
然后再次创建虚拟机,如下:
系统没有报错,说明现在可以正式安装VM。
现在通过VNC客户端,进行系统安装,如下:
以上是有关命令行下的配置,说实话命令行下配置还是比较简单的。下面我来介绍下如何在图形界面下使用NFS存储,图形界面下需要建立相应的存储池。
注意为了更好的实验效果,我现在把KVM服务器上所有关NFS挂载已经卸载。
启动KVM虚拟机管理virt-manager,如下:
现在我们为KVM创建存储池,如下:
在这个界面中,类型一定要注意,选择netfs:网络导出的目录。
在这个界面中“目标路径”填写KVM服务器中你需要挂载点。我现在需要把NFS的镜像文件权限挂载到/iso目录下。
“主机名”中填写NFS服务器。
“源路径”中填写NFS共享的目录。
这个界面是我们用来存储镜像文件的存储池。下面创建VM硬盘的存储池,利用上边同样的方法,如下:
VM硬盘的存储池创建完毕后,此时并没有创建VM的硬盘文件。现在开始创建VM的硬盘文件,如下:
VM的硬盘文件创建完毕后,我们就可以新建虚拟机。如下:
在ISO镜像中,我们可以选择在前面创建的镜像文件存储池。
在VM的硬盘我们,可以选择前面创建的硬盘文件。
启动VM,开始进行安装系统。
现在看看KVM服务器上NFS挂载情况。如下:
df –h
通过上图我们可以发现,其实命令行和图形界面配置的都是一样的。
以上就是有关,NFS作为存储与KVM进行集成时的相关配置方法以及注意点。
烂泥:NFS做存储与KVM集成的更多相关文章
- 基于NFS共享存储实现KVM虚拟机动态迁移
基于NFS共享存储实现KVM虚拟机动态迁移 一:配置环境 二:安装相关的依赖包 三:实现NFS共享存储 四:KVM机配置相同的步骤 五:安装KVM01安装虚拟机 六:实现迁移 实验初始配置:所有主机 ...
- [k8s]k8s配置nfs做后端存储&配置多nginx共享存储&&statefulset配置
所有节点安装nfs yum install nfs-utils rpcbind -y mkdir -p /ifs/kubernetes echo "/ifs/kubernetes 192.1 ...
- 基于本地存储的kvm虚拟机在线迁移
基于本地存储的kvm虚拟机在线迁移 kvm虚拟机迁移分为4种(1)热迁移基于共享存储(2)热迁移基于本地存储(3)冷迁移基于共享存储(4)冷迁移基于本地存储 这里介绍的是基于本地存储的热迁移 动态块迁 ...
- Linux架构之NFS共享存储1
第35章 NFS共享存储 35.1 NFS基本概述 NFS是Network File System的缩写及网络文件系统.NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录. 常见的文件 ...
- NFS 共享存储实战
目录 NFS 共享存储实战 一.NFS概述 二.NFS部署 部署NFS客户端backup和web01 统一web.nfs.backup的用户权限 代码部署步骤 三.NFS配置详解 NFS存储小结 四. ...
- 09 . Kubernetes之pv、pvc及使用nfs网络存储应用
PV,PVC概述 PV的全称是: PersistentVolume (持久化卷),是对底层的共享存储的一种抽象,PV由管理员进行创建和配置,它和具体的底层的共享存储技术的实现方式有关,比如Ceph.G ...
- NFS 共享存储
目录 环境准备 NFS服务端 NFS客户端 部署时常见报错 httpd服务 NFS 共享存储的坑 环境准备 主机名 WanIP(Wide Area Network) LanIP(Local Area ...
- 生产场景NFS共享存储优化及实战
生产场景NFS共享存储优化: 1.硬件:sas/ssd磁盘,买多块,raid0/raid10,网卡好 2.NFS服务器端优化加all_squash,async /backup/NFS 192.168. ...
- Linux之nginx反向代理+三台web+nfs共享存储实现集群配置
作业四:nginx反向代理+三台web+nfs共享存储实现集群配置 在各个web服务器上挂载nfs [root@localhost nginx]# mount -t nfs 192.168.152.1 ...
随机推荐
- ThinkCMF变量输出+使用函数
ThinkCMF变量输出+使用函数的方式同ThinkPHP. ThinkPHP变量输出: 在模板中输出变量的方法很简单,例如,在控制器中我们给模板变量赋值: $name = 'ThinkPHP'; $ ...
- Node.js包
1.app.js 2.m_p包下package.json 3.index.js 入口模块
- Node.JS事件驱动机制
1.事件驱动程序绑定事件及事件的处理程序 eventEmitter.on('eventName', eventHandler); 我们可以通过程序触发事件 // 触发事件 eventEmitter.e ...
- rabbitmq启动异常之error,{not_a_dets_file recovery.dets
中午,公司群里面测试人员@笔者说,早上测试服务器异常,MQ起不来,重启os了也起不来,报错,上去看下了早上又因为内存oom被内核killed了,启动了下,确实启动报错,erl vm进程起来了,但是be ...
- SlidesJS - 老牌的响应式 jQuery 幻灯片插件
SlidesJS 是一款老牌的 jQuery 幻灯片插件,经过多年的发展,已经成为一款功能齐全,设计精巧的幻灯片插件.支持循环.自动播放功能和淡入淡出过渡效果,并且能够自动生成分页,可以帮助开发者制作 ...
- sublime text 之添加插件 并使用
通过package controll install 安装各种插件: 1:AdvancedNewFile,安装完毕后 快捷键:ctr+alt+n:输入框中输入你要创建的文件夹和文件,就创建好了. ...
- 如何向github上传文件
创建账号并登入 申请一个github账号,登入进去后新建一个项目,得到链接地址 创建本地文件 在本地创建一个文件夹,在文件夹里创建一个git版本库(要预先安装好git),然后点击推送,在弹出框里点击管 ...
- 微信 小程序 drawImage wx.canvasToTempFilePath wx.saveFile 获取设备宽高 尺寸问题
以下问题测试环境为微信开发者0.10.102800,手机端iphone6,如有不对敬谢指出. 根据我的测试,context.drawImage,在开发者工具中并不能画出来,只有预览到手机中显示. wx ...
- yii 的网址收藏
http://blog.csdn.net/yuhui_fish/article/details/7656929 YII框架多子域名同步登录问题 http://blog.csdn.net/yuhui_f ...
- 属性观察器willSet与didSet
willSet与didSet是swift特有的,就是监听属性值的变化,但有一个小注意点. willSet与didSet调用时机:对象创建后的第一次赋值时开始调用.也就是说,初始化时(包含重载的init ...