[镜像制作]使用NFS实现Ubuntu的文件共享
2015-05-09 22:26
746 查看
在实际使用中,经常会出现文件夹或者文件共享的情况,例如,如果实现在云环境下对VM实例进行Live迁移,如果不使用block方式,我们需要将实例放在一个共享存储上面,那么就需要文件共享技术,Linux一般使用nfs来实现这个功能。
例如,我的控制节点 180机器,共享一个文件夹为instances,那么我希望我的计算节点的实例在创建在180共享的文件中,我希望使用181本地的instances文件夹来mount上,也就是查看两个文件夹,里面的内容是一样的。
1、安装包
在很多Linux版本中,已经没有了portmap,或者说后面启动服务对应的是rpcbind
2、启动服务
3、设置180机器的/etc/exports
/var/lib/nova/instances:是我希望本机共享的路径
* :代表所有IP都可以访问,当然你也可以指定IP、IP段或者机器名
关于nfs的其他参数:
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
Hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
我们可以通过如下命令,来查看共享的信息
4、在181机器mount
那么如果希望181访问180共享的文件夹,181需要指定一个文件夹,然后直接使用如下命令即可访问,
具体格式为:mount 共享IP:共享路径 本机路径
<file systems> - 要挂载的分区或存储设备.
<dir> - <file systems>的挂载位置。
<type> - 要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统:
设置成
<options> - 挂载时使用的参数,注意有些mount 参数是特定文件系统才有的。一些比较常用的参数有:
<dump> dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 <dump> 应设为 0。
<pass> fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。
例如,我的控制节点 180机器,共享一个文件夹为instances,那么我希望我的计算节点的实例在创建在180共享的文件中,我希望使用181本地的instances文件夹来mount上,也就是查看两个文件夹,里面的内容是一样的。
1、安装包
sudo apt-get install portmap nfs-kernel-server
在很多Linux版本中,已经没有了portmap,或者说后面启动服务对应的是rpcbind
2、启动服务
root@controller:~# /etc/init.d/rpcbind restart root@controller:~# /etc/init.d/nfs-kernel-server restart * Stopping NFS kernel daemon [ OK ] * Unexporting directories for NFS kernel daemon... [ OK ] * Exporting directories for NFS kernel daemon... exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/var/lib/nova/instances". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x [ OK ] * Starting NFS kernel daemon [ OK ]
3、设置180机器的/etc/exports
root@controller:~# more /etc/exports # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subt ree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /var/lib/nova/instances *(rw,sync,no_root_squash)
/var/lib/nova/instances:是我希望本机共享的路径
* :代表所有IP都可以访问,当然你也可以指定IP、IP段或者机器名
关于nfs的其他参数:
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
Hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
我们可以通过如下命令,来查看共享的信息
root@controller:~# exportfs /var/lib/nova/instances <world>
4、在181机器mount
那么如果希望181访问180共享的文件夹,181需要指定一个文件夹,然后直接使用如下命令即可访问,
具体格式为:mount 共享IP:共享路径 本机路径
mount 192.168.3.180:/var/lib/nova/instances /var/lib/nova/instances但是 这种方式需要每次都要Mount,我们希望开机mount怎么实现呢?需要编辑/etc/fstab文件即可
root@computer:~# more /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda2 during installation UUID=2444e31c-f276-4461-9e4f-203c6083c328 / ext4 errors=remount -ro 0 1 # /boot was on /dev/sda1 during installation UUID=f69a08d9-4b08-4bc1-8a5c-bf743e685679 /boot ext4 defaults 0 2 # swap was on /dev/sda3 during installation UUID=b466b73b-27fd-4134-859a-1a9d6d4ab522 none swap sw 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0 192.168.3.180:/var/lib/nova/instances /var/lib/nova/instances nfs defaults 0 0
字段定义
/etc/fstab文件包含了如下字段,通过空格或 Tab 分隔:
<file system> <dir> <type> <options> <dump> <pass>
<file systems> - 要挂载的分区或存储设备.
<dir> - <file systems>的挂载位置。
<type> - 要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统:
ext2,
ext3,
ext4,
reiserfs,
xfs,
jfs,
smbfs,
iso9660,
vfat,
ntfs,
swap及
auto。
设置成
auto类型,mount 命令会猜测使用的文件系统类型,对 CDROM 和 DVD 等移动设备是非常有用的。
<options> - 挂载时使用的参数,注意有些mount 参数是特定文件系统才有的。一些比较常用的参数有:
auto- 在启动时或键入了
mount -a命令时自动挂载。
noauto- 只在你的命令下被挂载。
exec- 允许执行此分区的二进制文件。
noexec- 不允许执行此文件系统上的二进制文件。
ro- 以只读模式挂载文件系统。
rw- 以读写模式挂载文件系统。
user- 允许任意用户挂载此文件系统,若无显示定义,隐含启用
noexec,
nosuid,
nodev参数。
users- 允许所有 users 组中的用户挂载文件系统.
nouser- 只能被 root 挂载。
owner- 允许设备所有者挂载.
sync- I/O 同步进行。
async- I/O 异步进行。
dev- 解析文件系统上的块特殊设备。
nodev- 不解析文件系统上的块特殊设备。
suid- 允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限。
nosuid- 禁止 suid 操作和设定 sgid 位。
noatime- 不更新文件系统上 inode 访问记录,可以提升性能(参见 atime 参数)。
nodiratime- 不更新文件系统上的目录 inode 访问记录,可以提升性能(参见 atime 参数)。
relatime- 实时更新 inode access 记录。只有在记录中的访问时间早于当前访问才会被更新。(与 noatime 相似,但不会打断如 mutt 或其它程序探测文件在上次访问后是否被修改的进程。),可以提升性能(参见 atime 参数)。
flush-
vfat的选项,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失。
defaults- 使用文件系统的默认挂载参数,例如
ext4的默认参数为:
rw,
suid,
dev,
exec,
auto,
nouser,
async.
<dump> dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 <dump> 应设为 0。
<pass> fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。
相关文章推荐
- UBUNTU下如何使用NFS实现文件夹共享
- Ubuntu下使用Simba服务实现局域网内文件共享
- Linux(Ubuntu)光盘镜像文件制作及使用攻略
- Ubuntu下使用Simba服务实现局域网内文件共享
- 使用samba实现Ubuntu 11和win7文件共享
- Fedora core 6 Linux使用NFS挂装远程文件系统实现目录共享
- 使用samba实现Ubuntu 11和win7文件共享
- nfs实现ubuntu与开发板OK6410文件共享
- 使用NFS实现AIX之间文件网络共享[转载]
- Linux(Ubuntu)光盘镜像文件制作及使用攻略
- 使用NFS实现AIX之间文件网络共享
- NFS服务器安装配置实现Ubuntu 12.04与ARM文件共享
- 使用nfs在mac os x与ubuntu之间共享文件
- NFS服务器安装配置实现Ubuntu 12.04与ARM文件共享
- Ubuntu下使用Simba服务实现局域网内文件共享
- Ubuntu 12.04.3 X64 使用 NFS 作为文件共享存储方式 安装 Oracle11g RAC
- 实现开发板与ubuntu的共享--根文件系统NFS--Samba共享【sky原创】
- NFS服务器安装配置实现Ubuntu 12.04与ARM开发板文件共享
- Ubuntu 使用 virtualbox 安装win7 实现文件共享
- 如何使用NFS实现不同服务器之间文件共享