一、DFS简介

DFS(Distributed File System,分布式文件系统)通过将多个节点的存储资源整合,为用户提供统一的文件访问入口,实现数据的分布式存储、冗余备份和负载均衡,提升存储系统的扩展性和可靠性。本笔记以常见的开源DFS方案(如GlusterFS)为例,记录部署流程。

配置DFS

/etc/dnf/dnf.conf:

  • 主要的配置文件
  • main:部分保存着DNF的全局设置
  • repository:部分保存着软件源的设置,可以有零个或多个”repository“
/etc/yum.repos.d目录中保存着零个或多个repo源相关文件,也可以定义不同的”repository“

配置main部分

①/etc/dnf/dnf.conf 文件的main 部分
例如:
sudo vim /etc/dnf/dnf.conf

参数名

作用

gpgcheck=1

启用 GPG 签名校验,安装包时验证来源合法性(防止恶意软件)

installonly_limit=3

限制 “仅安装型” 包(如内核)的保留数量,最多保留 3 个旧版本

clean_requirements_on_remove=True

卸载包时自动清理不再被依赖的依赖包(避免残留无用文件)

best=True

优先选择 “最佳匹配” 的包版本(通常是最稳定、兼容性最好的版本)

skip_if_unavailable=False

仓库不可用时不跳过,若仓库故障会报错(保证安装源可靠性)

常用选项的作用以及默认值

配置repository部分

在/etc/dnf/dnf.conf文件中的 ”repository“

软件源(repository/repo):Linux 系统的软件安装 / 更新仓库,存储了预编译的软件包、依赖关系、包索引等信息,通过包管理器(yum/dnf/apt/zypper)实现软件的一键安装、升级、卸载,无需手动编译源码。

核心作用:统一管理软件版本、自动解决依赖、简化软件维护流程,是 Linux 系统管理的基础配置。

配置命令:

dnf config-manager --dump

dnf repolist

dnf config-manager --dump repository

dnf config-manager --dump glob_expression

创建本地软件源仓库

本地软件源仓库是本地化的私有软件包分发中心,存储deb、rpm等格式软件包,供内网设备替代公网源安装软件。

核心价值

  • 提速增效:内网传输无公网瓶颈,批量部署更高效。

  • 安全可控:隔绝公网风险,可审计软件包,适配隔离环境。

  • 节约带宽:一次同步公网源,内网共享资源。

  • 灵活定制:支持私有包上传、自定义版本,适配业务需求。

 适用场景

企业内网、实验室、无公网环境及对部署速度、安全性有高要求的场景。

主流类型及搭建工具

系统/类型 包格式 搭建工具 核心特点
Debian/Ubuntu .deb apt-mirror、reprepro 适配性强,增量同步,配置简单
CentOS/RHEL .rpm createrepo、reposync 兼容yum/dnf,支持索引生成
Python .whl、.tar.gz pypiserver、devpi 支持私有PyPI源,缓存自定义包
通用跨平台 多种格式 Nexus OSS、Artifactory OSS 可视化管理,企业级多格式支持

分类型搭建步骤(实操)

Debian/Ubuntu源(apt-mirror)

安装与配置

# 安装工具
sudo apt update && sudo apt install -y apt-mirror apache2
# 配置/etc/apt/mirror.list(核心参数如下)
set base_path  /var/spool/apt-mirror
set defaultarch  amd64
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
set clean http://mirrors.aliyun.com/ubuntu/

同步与部署

sudo apt-mirror  # 首次同步耗时较长
sudo ln -s /var/spool/apt-mirror/mirror/mirrors.aliyun.com/ubuntu /var/www/html/ubuntu
sudo systemctl start apache2 && sudo systemctl enable apache2

客户端配置

替换客户端/etc/apt/sources.list为本地IP,执行sudo apt update生效。

CentOS源(createrepo + reposync)

安装与操作

# 安装依赖
sudo yum install -y createrepo yum-utils httpd
# 同步源并生成索引
sudo mkdir -p /var/www/html/centos/7/os/x86_64
sudo reposync -r base -r updates -r extras -r epel --download_path=/var/www/html/centos/7/os/x86_64
sudo createrepo /var/www/html/centos/7/os/x86_64/
# 启动服务
sudo systemctl start httpd && sudo systemctl enable httpd

客户端配置

创建/etc/yum.repos.d/local.repo指向本地IP,执行yum clean all && yum makecache

Python私有源(pypiserver)

# 安装与配置
pip install pypiserver passlib
mkdir -p ~/pypi/packages
htpasswd -sc ~/pypi/.htpasswd admin  # 创建上传账号
# 启动服务
pypi-server -p 8080 -P ~/pypi/.htpasswd ~/pypi/packages
# 客户端使用
pip install -i http://192.168.1.100:8080/simple/ requests
twine upload -r local http://192.168.1.100:8080/simple/ 包名.tar.gz

添加、启用和禁用软件源

添加软件源

例如:dnf config-manager --add-repo repository_url

启动软件源

例如:dnf config-manager --set-enable repository

禁用软件源

例如:dnf config-manager --set-disable repository

安装下载和删除:

安装:dnf install package_name

下载:dnf download package_name

删除:dnf remove package_name...

维护与排查

  • 定时同步:添加crontab任务,每日凌晨执行sudo apt-mirror > /var/log/apt-mirror.log 2>&1

  • 空间管理:定期清理过期包,仓库目录单独挂载大容量硬盘。

  • 安全加固:禁用匿名上传,用HTTPS加密,限制内网IP访问。

NFS共享存储服务

安装NFS服务包

CentOS系统:

# 安装NFS服务端和RPC绑定服务(NFS依赖RPC)
yum install nfs-utils rpcbind -y
# 启动服务并设置开机自启
systemctl start rpcbind
systemctl start nfs-server
systemctl enable rpcbind
systemctl enable nfs-server
# 检查服务状态
systemctl status rpcbind
systemctl status nfs-server

Ubuntu系统:

# 安装NFS服务端
apt update
apt install nfs-kernel-server -y
# 启动服务并设置开机自启
systemctl start nfs-kernel-server
systemctl enable nfs-kernel-server
# 检查服务状态
systemctl status nfs-kernel-server

创建共享目录

# 创建共享目录(路径可自定义)
mkdir -p /data/nfs/share
# 设置目录权限(确保客户端可访问)
chmod 755 /data/nfs/share
chown nfsnobody:nfsnobody /data/nfs/share

配置共享规则

编辑NFS主配置文件/etc/exports,添加共享规则:

vi /etc/exports
# 添加以下内容(根据实际需求调整)
/data/nfs/share 192.168.1.0/24(rw,sync,no_root_squash,no_all_squash)
# 保存退出后,使配置生效
exportfs -r

启动NFS服务程序

启动rpcbind 和 nfs-server
systemctl start rpcbind
systemctl start nfs-server
需要安装网络工具,否则无法使用netstat
dnf install net-tools -y
判断客户端和服务端是否连通
netstat -anpt |grep rpc

查看本机发布的NFS共享目录

showmount -e

在客户机中访问NFS共享资源

安装并启动rpcbind

前提:正常访问NFS共享资源,客户机也需要安装"rpcbin"软件包(使用showmount查询工具,也要安装相应的软件包nfs-utils):dnf install -y rpcbind nfs-utils
配置开机启动rpcbind系统服务:systemctl enable rpcbind
配置启动 rpcbind:systemctl start rpcbind
使用showmount查看NFS服务器端共享了哪些目录:showmount -e 服务器地址

手动挂载NFS共享目录

前提:以root用户身份执行mount操作
创建挂载目录:
例如:mkdir -p /var/www/html
将NFS服务器共享的(/opt/wwwroot)目录挂载到本地目录(var/www/html),设备位置应指出服务器地址:
例:mount 192.168.10.101:/opt/wwwroot /var/www/html
确认挂载结果:tail -l /etc/mtab
最后在客户机创建测试文件
vim /var/www/html/index.html
进入
cd /var/www/html
ls
在客户端进入创建的共享目录
cd /opt/wwwroot/
ls
创建一个空文本
touch test.txt

fstab自动挂载设置

修改/etc/fstab配置文件,加入NFS共享目录的挂载设置,将文件类型改为nfs
加入NFS共享目录的挂载设置(将文件系统类型设为nfs)
例如:
vim /etc/fstab
配置:
192.168.10.101:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0

强制卸载NFS

umount -lf:强制卸载
-l:表示结束正在繁忙的文件系统
-f:表示强制
例如:
umount /var/www/html
&
umount -lf /var/www/html
出现卡死现象,需要重新开一个终端

常见问题排查

  • 客户端无法挂载:检查NFS服务端是否正常运行,防火墙是否开放111、2049端口,共享规则是否允许客户端IP访问,客户端是否安装NFS客户端包。

  • 客户端无写入权限:检查共享目录权限是否为755,配置文件中是否设置rw权限,是否开启no_root_squash(客户端root用户)。

  • 挂载后无法访问:检查SELinux是否关闭,NFS服务端和客户端的时间是否同步,网络是否稳定。

DFS与NFS的区别与适用场景

  • DFS:适用于大规模分布式存储场景,支持数据冗余、负载均衡和横向扩容,适合需要高可靠性、高扩展性的企业级存储需求。

  • NFS:适用于局域网内简单文件共享,配置简单、性能损耗低,适合中小型团队或跨平台(Linux/Windows)的轻量级共享需求。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐