分布式文件系统与网络信息服务入门
1. 分布式文件系统(DFS)概述
分布式文件系统(DFS)能够将数据分散存储在多个物理服务器上,并让客户端将这些数据视为单一的文件系统资源。目前存在多种DFS实现方案,包括开源和专有版本。以下是一些常见的DFS实现:
| DFS实现 | 特点 | 适用场景 | 安装与配置难度 |
| — | — | — | — |
| GlusterFS | 开源、易于设置和使用,代码活跃开发,有预编译包 | 高性能和虚拟化云工作负载 | 低 |
| Lustre | 高性能,常用于集群工作负载和局域网环境 | 集群和局域网 | 高 |
| MooseFS | 简单易用、容错,较新但有潜力 | 多数Linux发行版 | 低 |
| Microsoft DFS | 成熟,在纯Windows环境易安装 | Windows环境 | 低 |
| OpenAFS | 老牌,多平台支持,依赖Kerberos | 多平台 | 高 |
| XtreemFS | 易于设置和管理,适合云计算环境 | 云计算 | 低 |
1.1 DFS术语解释
- brick :指为DFS整体存储容量贡献本地存储资源的物理服务器或系统。多个brick以不同方式组合构成DFS系统的基础,客户端访问存储在brick上的文件系统资源时,无需了解数据存储在一个还是多个brick上。
- metadata :指数据(或文件)除实际数据本身之外的所有特征,如文件大小、权限、时间戳、文件名等。不同的分布式文件系统通常以特殊方式组织所托管数据的元数据信息,有些DFS实现需要单独的元数据服务器来管理存储的元数据。
- fault tolerance :DFS的一个特性,允许在发生故障时透明且持续地访问DFS的共享资源。类似于RAID中多存储磁盘提供的可靠性,在容错DFS中,若一台(有时多台)服务器突然不可用或离线,文件系统资源仍可继续使用。不过,在某些更注重DFS整体性能的设置中,该特性可能并非必要。
- replication :将一个文件系统的内容复制到另一个位置的过程,用于确保数据一致性、容错和提高数据可访问性。复制可以同步或异步进行。同步复制可能会稍微降低性能,因为它要求在一台服务器上进行的某些文件操作(如读写)必须在其他服务器上同时完成才能被视为成功;而异步复制更适合慢速连接,因为文件系统操作在一台服务器上完成后即可视为成功,其他服务器稍后再同步。
- POSIX compliance :POSIX是IEEE定义的与UNIX操作系统变体兼容的软件标准。在DFS实现中,POSIX文件系统合规意味着DFS软件能够呈现和保留UNIX文件系统语义,如时间戳、区分大小写的文件名、权限等。这是一个很好的特性,因为它使现有用户和应用程序在与DFS卷上存储的数据交互时不会察觉到差异。
2. GlusterFS的安装与配置
2.1 环境准备
我们将创建一个包含两台服务器(server - A和server - B)和一台客户端(client - C)的简单DFS环境,两台服务器将托管分布式复制卷,确保数据冗余,类似于RAID 1的镜像设置,提高可用性和可靠性。
2.2 安装GlusterFS
- 在server - A和server - B上安装 :以具有管理权限的用户登录系统,在控制台输入以下命令:
[root@server-* ~]# dnf -y install glusterfs glusterfs-server
- 在客户端系统(client - C)上安装 :需要安装核心glusterfs包和原生glusterfs客户端包,输入以下命令:
[root@client-C ~]# dnf -y install glusterfs glusterfs-fuse
2.3 管理Gluster服务
2.3.1 名称解析
为了让GlusterFS软件能够可靠地将其他系统的主机名转换为IP地址,我们可以通过确保所有系统的
/etc/hosts
文件包含所有参与系统的名称和IP地址映射,或者通过DNS解析主机名。在我们的简单设置中,确保所有三个系统的
/etc/hosts
文件包含以下条目:
192.168.0.67 server-A
172.16.0.69 server-B
192.168.0.246 client-C
2.3.2 启动和停止Gluster服务
在server - A和server - B上,可通过以下命令检查
glusterd
守护进程的状态:
[root@server-* ~]# systemctl status glusterd
停止
glusterd
:
[root@server-* ~]# systemctl stop glusterd
启动
glusterd
:
[root@server-* ~]# systemctl start glusterd
2.3.3 创建可信存储池
在GlusterFS中,可信存储池由所有你信任的参与DFS的服务器或brick组成。存储池的概念有助于管理GlusterFS环境的各个方面,例如可以通过向存储池添加新的存储brick来增加DFS的总容量。
注意:Gluster DFS中的主机通过TCP端口24007和24008进行通信,确保GlusterFS服务器和客户端之间没有防火墙规则(本地或外部)阻止这些端口。在我们的示例中,临时禁用了Fedora服务器和客户端的默认防火墙子系统,可以通过禁用系统上的
iptables
、
nftables
或
firewalld
服务来实现。
从server - A将server - B添加到存储池:
[root@server-A ~]# gluster peer probe server-B
检查刚创建的存储池中对等体的状态:
[root@server-A ~]# gluster peer status
若需要从存储池中移除服务器(如server - B),可使用以下命令:
[root@server-A ~]# gluster peer detach server-B
2.4 创建分布式复制卷
我们将使用
/data
目录下的目录作为存储空间,在DFS的可信对等体之间进行分布,然后创建一个名为
MASSIVE_DATA
的复制卷。
- 在server - A上创建父目录和子目录
/data/A
:
[root@server-A ~]# mkdir -p /data/A
-
在server - B上创建父目录和子目录
/data/B:
[root@server-B ~]# mkdir -p /data/B
-
从server - A创建
MASSIVE_DATA卷:
[root@server-A ~]# gluster volume create MASSIVE_DATA replica 2 \
transport tcp server-A:/data/A server-B:/data/B force
使用
gluster volume info
命令查看刚创建的glusterfs卷的信息:
[root@server-* ~]# gluster volume info MASSIVE_DATA
启动glusterfs卷:
[root@server-* ~]# gluster volume start MASSIVE_DATA
2.5 客户端挂载glusterfs卷
客户端系统可以使用不同方法和协议访问glusterfs卷,推荐使用“原生”glusterfs客户端挂载远程glusterfs卷,因为它利用了软件的内置优化,性能最佳。
- 在客户端系统上创建挂载点:
[root@client-C ~]# mkdir -p /mnt/glusterfs/MASSIVE_DATA
- 挂载gluster服务器上导出的卷:
[root@client-C ~]# mount -t glusterfs server-A:/MASSIVE_DATA \
/mnt/glusterfs/MASSIVE_DATA/
-
使用
df命令对远程卷进行基本检查:
[root@client-C ~]# df -h /mnt/glusterfs/MASSIVE_DATA/
2.6 客户端访问glusterfs卷
成功在本地客户端挂载远程glusterfs卷后,客户端系统上的用户可以开始对远程存储进行读写操作,前提是他们具有正确的文件系统权限。
- 在客户端系统上的
MASSIVE_DATA
卷上创建一些示例文件:
[root@client-C ~]# touch /mnt/glusterfs/MASSIVE_DATA/{1,2,3,4}
- 执行简单的目录列表以确保文件已正确创建:
[root@client-C ~]# ls /mnt/glusterfs/MASSIVE_DATA/
2.7 复制DFS的优势
如果对server - A和server - B的
/data/A
和
/data/B
目录分别进行目录列表,会看到从客户端创建的文件在两台服务器上都被复制。此外,如果其中一台服务器(如server - A)因任何原因突然离线,另一台服务器(server - B)将继续托管复制的文件,对客户端来说这一切都是透明的。
3. 网络信息服务(NIS)概述
3.1 NIS的作用
网络信息服务(NIS)有助于在网络中的系统之间共享存储在平面文件中的关键数据。在管理包含多个系统/主机的网络时,通常希望有一个公共存储库(如NIS)来存储传统上存储在平面文件(如
/etc/passwd
和
/etc/group
)中的用户和组信息。通过NIS使这些文件可用,任何远程且配置正确的NIS客户端机器都可以访问或查询这些共享文件中包含的数据,并将这些文件的网络版本作为本地版本的扩展。NIS不限于共享这两个文件,实际上,任何至少有一列在整个文件中具有唯一值的表格文件都可以通过NIS共享,例如Linux/UNIX系统上常见的Sendmail别名文件、自动挂载器文件和
/etc/services
文件。
3.2 NIS的优势
使用NIS的主要好处是可以维护数据的中央副本,并且每当数据更新时,它会自动传播到所有网络用户。对于用户来说,NIS的功能有助于使系统看起来更加统一,无论他们在哪个主机上工作。如果你有Windows背景,可以将NIS视为Linux/UNIX对Active Directory提供的某些服务的解决方案,但NIS是一种更古老的技术,不会尝试解决(或引发)Active Directory所处理的大量问题。
3.3 NIS的工作原理
NIS实际上是一个客户端可以查询的简单数据库,它包含一系列独立的表。每个表由纯文本文件(如
/etc/passwd
)创建,这些文件具有表格性质,且每行至少有一列具有唯一值(键/值对数据库)。NIS按名称跟踪这些表,并允许以两种方式进行查询:
-
Listing the entire table
:列出整个表。
-
Pulling a specific entry to match a search for a given key
:根据给定的键搜索特定条目。
一旦服务器上建立了数据库,客户端就可以向服务器查询数据库条目。通常,当客户端配置为在本地数据库中找不到条目时查找NIS映射时会发生这种情况。借助NIS,主机/客户端可以拥有仅包含系统在单用户模式(无网络连接时)运行所需的最少条目的简单配置文件。
例如,当程序请求查找用户密码信息时,客户端会先检查其本地
passwd
文件,发现用户不存在后,会向NIS服务器请求在
passwd
表中查找相应条目。
3.4 NIS的查询流程
graph LR
A[程序请求查找用户密码信息] --> B[客户端检查本地passwd文件]
B -->|用户不存在| C[客户端向NIS服务器请求查询]
C --> D[NIS服务器在passwd表中查找条目]
D -->|找到条目| E[返回条目信息给客户端]
D -->|未找到条目| F[返回未找到信息给客户端]
综上所述,分布式文件系统(DFS)和网络信息服务(NIS)在网络数据管理中都扮演着重要角色。DFS通过将数据分散存储在多个服务器上,为客户端提供统一的文件系统资源,不同的DFS实现适用于不同的场景和需求。而NIS则通过集中管理关键数据,实现数据在网络中的共享和自动传播,提高了系统的统一性和管理效率。通过了解和掌握这些技术,我们可以更好地构建和管理复杂的网络环境。
4. NIS的设置与工具使用
4.1 NIS服务器设置
4.1.1 安装NIS服务
在要作为NIS服务器的系统上,需要安装NIS服务软件包。以基于RPM的Linux发行版(如Fedora、RHEL、CentOS等)为例,可使用以下命令进行安装:
[root@nis-server ~]# dnf -y install ypserv ypbind
4.1.2 配置NIS域
编辑
/etc/sysconfig/network
文件,设置NIS域的名称。例如,将NIS域名称设置为
example.com
:
NISDOMAIN=example.com
4.1.3 配置NIS服务器
编辑
/etc/ypserv.conf
文件,配置NIS服务器的访问控制规则。例如,允许特定网段的客户端访问:
# 允许192.168.1.0/24网段的客户端访问
2:192.168.1.0/255.255.255.0: *:*:*:none
4.1.4 创建NIS映射
使用
make
命令在NIS服务器上创建NIS映射。首先进入
/var/yp
目录:
[root@nis-server ~]# cd /var/yp
然后执行
make
命令:
[root@nis-server yp]# make
4.1.5 启动NIS服务
启动
ypserv
和
rpcbind
服务:
[root@nis-server ~]# systemctl start ypserv rpcbind
[root@nis-server ~]# systemctl enable ypserv rpcbind
4.2 NIS客户端设置
4.2.1 安装NIS客户端软件
在要作为NIS客户端的系统上,安装NIS客户端软件包。以基于RPM的Linux发行版为例,使用以下命令:
[root@nis-client ~]# dnf -y install ypbind
4.2.2 配置NIS域
同样编辑
/etc/sysconfig/network
文件,设置与NIS服务器相同的NIS域名称:
NISDOMAIN=example.com
4.2.3 配置NIS服务器地址
编辑
/etc/yp.conf
文件,指定NIS服务器的地址:
domain example.com server 192.168.1.100
4.2.4 启动NIS客户端服务
启动
ypbind
服务并设置为开机自启:
[root@nis-client ~]# systemctl start ypbind
[root@nis-client ~]# systemctl enable ypbind
4.3 NIS相关工具
| 工具名称 | 功能描述 | 使用示例 |
|---|---|---|
ypcat
| 用于列出NIS表的内容 |
ypcat passwd
:列出NIS中
passwd
表的内容
|
ypwhich
| 用于显示当前使用的NIS服务器 |
ypwhich
|
yppasswd
| 用于在NIS环境中更改用户密码 |
yppasswd
|
4.4 NIS设置流程总结
graph LR
A[NIS服务器安装服务] --> B[配置NIS域]
B --> C[配置NIS服务器访问规则]
C --> D[创建NIS映射]
D --> E[启动NIS服务]
F[NIS客户端安装软件] --> G[配置NIS域]
G --> H[配置NIS服务器地址]
H --> I[启动NIS客户端服务]
E --> J[NIS系统正常运行]
I --> J
5. 总结与展望
5.1 技术总结
分布式文件系统(DFS)和网络信息服务(NIS)是网络数据管理中的重要技术。DFS通过多种实现方案(如GlusterFS、Lustre等)将数据分散存储在多个物理服务器上,为客户端提供统一的文件系统资源,不同的DFS实现具有各自的特点和适用场景。而NIS则通过集中管理关键数据(如用户和组信息),实现数据在网络中的共享和自动传播,提高了系统的统一性和管理效率。
5.2 实际应用场景
- DFS :在云计算、高性能计算等领域有广泛应用。例如,在云计算环境中,GlusterFS可以为多个虚拟机提供统一的存储资源,提高数据的可用性和可靠性;在高性能计算中,Lustre可以满足集群工作负载对存储性能的要求。
- NIS :适用于管理包含多个系统/主机的网络,如企业内部网络。通过NIS,管理员可以集中管理用户和组信息,减少管理成本,提高系统的安全性和一致性。
5.3 未来发展趋势
- DFS :随着云计算和大数据的发展,DFS将朝着更高性能、更强扩展性和更好的容错性方向发展。例如,未来的DFS可能会更好地支持分布式存储和并行计算,以满足不断增长的数据处理需求。
- NIS :虽然NIS是一种较老的技术,但在一些传统的企业网络环境中仍然有一定的应用价值。未来,NIS可能会与其他身份认证和管理技术(如LDAP、Active Directory等)进行整合,以提供更全面的网络管理解决方案。
通过深入了解和掌握DFS和NIS技术,网络管理员可以更好地构建和管理复杂的网络环境,提高数据的存储和管理效率,为企业的发展提供有力支持。同时,随着技术的不断发展,我们也需要持续关注和学习新的技术趋势,以适应不断变化的网络需求。
超级会员免费看
3425

被折叠的 条评论
为什么被折叠?



