【云存储】Go项目实践(Fedora、GlusterFS、ownCloud)实验解析

本博客主要是为了理解并记录实验中的每一个步骤的含义,以更好的理解该实验的目的与所作的内容。

一些建议:

实验1:搭建GlusterFS

格式化和挂载分区

将分区进行格式化和挂载是为了为分布式文件系统(如GlusterFS)提供可用的存储空间,也就是所谓的"brick"。

格式化分区的目的是设置文件系统在分区上进行数据存储和管理。在这里,使用了XFS文件系统进行格式化。格式化过程会在分区上创建文件系统的数据结构,以便进行文件的读写操作。

挂载分区的目的是将已格式化的分区连接到文件系统的目录结构中,使得可以通过该目录访问分区中的文件。在这里,创建了一个名为/data/brick1的目录作为挂载点,然后将/dev/sdb分区挂载到该目录。

要确定您的分区位于哪里,您可以使用以下命令来查看系统中存在的分区和其对应的设备:

sudo fdisk -l

挂载

挂载是将文件系统连接到操作系统的目录结构的过程。在这种情况下,通过挂载GlusterFS卷,将使得卷中的文件和目录在指定的目录(在本例中是/mnt)中可访问和可操作。
/mnt:这是挂载点,即将GlusterFS卷连接到操作系统中的目录。在这个例子中,将卷连接到/mnt目录。

  • 数据分布和冗余:卷将数据分布在多个存储节点上,通常使用数据分片(Data Sharding)的方式。这样可以实现数据的分散存储和并行处理,提高系统的性能和容量。卷还可以提供冗余机制,确保数据的可靠性和高可用性,即使某些节点发生故障,数据仍然可访问

测试存储

ls -lA /mnt | wc -l

用于统计 /mnt 目录下的文件和目录的数量,包括隐藏文件和目录
ls -lA /mnt:这是一个 ls 命令的组合,用于列出 /mnt 目录下的所有文件和目录的详细信息。选项 -l 表示以长格式输出,显示文件和目录的详细信息,而 -A 表示显示所有文件和目录,包括隐藏文件和目录(以.开头的文件和目录被认为是隐藏的)。
|:这是管道符号,用于将命令的输出结果传递给下一个命令。
wc -l:这是一个 wc 命令,用于计算行数。选项 -l 表示只计算行数,而不考虑字数或字符数。

实验2:OwnCloud

SELinux(Security-Enhanced Linux)是一种安全增强的 Linux 安全模块,它为 Linux 操作系统提供了强大的访问控制机制。它在操作系统内核级别实施了强制访问控制(MAC)机制,用于强化系统的安全性。

安装OwnCloud

安装Samba和httpd

Samba和httpd是两个不同的**网络服务软件。**下面是它们的解释:

  1. Samba:Samba是一个开源的软件套件,它实现了SMB(Server Message Block)/CIFS(Common Internet File System)协议,用于在Linux和Unix系统上实现与Windows操作系统的文件和打印服务的互操作性。Samba允许Linux/Unix系统作为文件共享服务器与Windows客户端进行通信,使得Windows用户可以访问和共享Linux/Unix系统上的文件、目录和打印机。通过Samba,Linux/Unix系统可以在网络中充当Windows网络的一部分,提供文件共享、身份验证、权限控制等功能。
  2. httpd:httpd是指超文本传输协议(HTTP)服务器守护进程,也常用来指代Apache HTTP Server。Apache HTTP Server是最流行的开源Web服务器软件之一,它以高性能和稳定性而闻名。httpd(Apache HTTP Server)提供了在Web上托管和传输网页、文件和其他内容所需的基础设施。它支持多种操作系统(如Linux、Unix、Windows等)和多种编程语言(如PHP、Perl、Python等),并提供了灵活的配置选项、安全性设置和模块扩展,使开发者能够构建和管理功能强大的Web应用程序和网站。

总结起来,Samba是用于在Linux/Unix系统和Windows系统之间实现文件共享和打印服务的软件,而httpd(Apache HTTP Server)是一个广泛使用的Web服务器软件,用于托管和传输Web内容。

安装php7.4

Remi 是一个开源软件仓库,主要用于提供最新版本的 PHP 软件包和相关的扩展模块。通过安装 remi-release 软件包,可以将 Remi 软件源添加到系统的 YUM 源配置中,从而使系统能够获取 Remi 软件源中的软件包和更新。

PHP(全称为"PHP: Hypertext Preprocessor")是一种广泛使用的开源服务器端脚本语言。它是一种强大的编程语言,特别适用于Web开发。PHP是一种解释型语言,它的代码在服务器上执行,并生成动态的Web页面。

MariaDB

MariaDB 是一个开源的关系型数据库管理系统 (RDBMS),它是 MySQL 数据库的一个分支和替代品。MariaDB 的目标是提供一个兼容 MySQL 的数据库系统,同时扩展和改进 MySQL 的功能

设置开机自启动

httpd 是 Apache HTTP 服务器的主要服务进程,它负责接收和处理客户端的 HTTP 请求,并提供相应的网页内容。通过执行这个命令,你将启动 httpd 服务,使其开始监听并处理来自客户端的请求。

g)修改/var/www/html权限

/var/www/html 是一个常见的目录路径,通常用于存放 Web 服务器(如 Apache)的网站文件。在许多 Linux 发行版中,这是默认的 Web 根目录,用于存放网站的 HTML、CSS、JavaScript 文件以及其他静态资源。

修改 /var/www/html 的权限原因

  • 网站文件的访问权限:通过将 /var/www/html 目录的所有者和所属组设置为 apache,可以确保 Web 服务器进程有足够的权限来访问和提供该目录下的文件。这样,服务器就可以读取和传输网站文件,以响应客户端的请求。

systemctl 是一个用于管理系统服务的命令行工具,它用于控制和监视系统运行的服务单元(units)。在基于 systemd 的 Linux 发行版中,如 CentOS 7、Ubuntu 16.04+ 等,systemctl 是一个常用的管理工具。

chown apache:apache /var/www/html/

这个命令 chown apache:apache /var/www/html/ 是用于更改 /var/www/html/ 目录的所有者和所属组。让我逐个解释它的含义:

  • chown: chown 是一个用于修改文件或目录所有者的命令。
  • apache:apache: 这部分指定了新的所有者和所属组。在这个例子中,apache 是所有者,apache 是所属组。这意味着 /var/www/html/ 目录的所有者被设置为 apache 用户,所属组也被设置为 apache 组。
  • /var/www/html/: 这是指定要修改的目标文件或目录的路径。在这个例子中,/var/www/html/ 是要更改所有者和所属组的目录路径。

通过执行这个命令,你将会将 /var/www/html/ 目录的所有者和所属组设置为 apache:apache,这通常用于 Web 服务器(如 Apache)的配置。这样一来,apache 用户和 apache 组将拥有该目录的访问权限,并能够执行相关的操作,如读取、写入、删除等。

请注意,执行这个命令需要具有足够的权限。确保在执行这个命令之前理解其作用,并根据需要进行适当的操作。

思考与扩展

1. 创建每种卷类型

几种卷类型

基础卷:

  • 布式卷(distribute)、条带卷(stripe)、复制卷(replica)、纠错卷(Dispersed )

复合卷:

  • 分布式条带卷(distribute stripe)、分布式复制卷(distribute replica)、条带复制卷(stripe replica)、分布式条带复制卷(distribute stripe)

操作

基础卷

以下创建挂载卷,均可通过以下命令进行查看、启用、停止、删除

#查看已创建挂载卷
gluster volume info
#启动挂载卷
gluster volume start gv0
#删除前,先停止挂载卷
gluster volume stop gv0
#删除挂载卷
gluster volume delete gv0 
  1. 布式卷(distribute voulme)

将卷内的文件分别放在不同的服务器上,没有副本

分布式模式,既DHT,是GlusterFS的默认模式,在创建卷时,默认选项是创建分布式卷。在该模式下,并没有对文件进行分块处理,而是通过hash算法分布到所有brick server上,只是扩大了磁盘空间,类似window中的跨区卷

gluster volume create gv0 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0

distribute voulme特点

  • 文件分布在不同的服务器,不具备冗余性。
  • 更容易且廉价地扩展卷的大小。
  • 单点故障会造成数据丢失,不具备容错性。
  • 依赖底层的数据保护。
  1. 条带卷(stripe volume)

将文件切割后放在不同的节点上,没有副本

条带模式,既Striped,类似RADI 0,在该模式下,根据偏移量将文件分成N块(N个条带节点),轮询地存储在每个Brick Server节点。节点把每个数据块都作为普通文件存入本地文件系统,通过扩展属性记录总块数和每块的序号。在配置时指定条带数必须等于卷中Brick 所包含的存储服务器数,在存储大文件时,性能尤为突出,但是不具备冗余性。

stripe volume特点

数据被分割成更小块分布到块服务器群中的不同条带区。
分布减少了负载且更小的文件加速了存取的速度。
没有数据冗余,不具备冗余性。
单点故障会造成数据丢失,不具备容错性。
⚠️RAID0称为条带化存储,将数据分段存储在各个磁盘中,读写均可以并行处理,因此读写速率为单个磁盘的N倍,没有冗余功能,任何一个磁盘的损坏就会导致的数据不可用。

RAID 0的特点:

数据条带式分布
没有冗余,性能最佳(不存储镜像、校验信息)
不能应用于对数据安全性要求高的场合

gluster volume create gv0 stripe 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0
  1. 复制卷(replica volme)

将同一文件的副本进行放在卷内的每个服务器上

复制模式,既AFR,文件级别RAID 1,即同一文件保存一份或多份副本,每个节点上保存相同的内容和目录结构。复制模式因为要保存副本,所以磁盘利用率较低,如果多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量。复制卷具有冗余性,即使一个节点损坏,也不影响数据的正常使用。

replica volme特点

卷中所有的服务器均保存一个完整的副本。
卷的副本数量可由客户创建的时候决定。
磁盘利用率低。
具备冗余性
RADI1是镜像存储,没有数据校验,数据被同等的写入到2个或者多个磁盘中。

RAID 1的特点:

提供数据块冗余
写入速度相对慢, 但是读取快

gluster volume create gv0 replica 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0
  1. 纠错卷

Dispersed Volume是基于ErasureCodes(纠错码)的一种新类型的Volume(3.6版本正式发布该特性),类似于RAID5/6。通过配置Redundancy(冗余)级别提高可靠性,在保证较高的可靠性同时,可以提升物理存储空间的利用率。
详细请查看《GlusterFS Dispersed Volume(纠错卷)总结》

4.1. 创建命令

gluster volume create gv1 disperse 4 redundancy 1 10.8.4.92:/var/lib/heketi/mounts/gv1 10.8.4.93:/var/lib/heketi/mounts/gv1 10.8.4.131:/var/lib/heketi/mounts/gv1 10.8.4.132:/var/lib/heketi/mounts/gv1

二、复合卷

  1. 分布式条带卷(distribute stripe volume)

最少需要4台服务器才能创建。 brickserver数量是条带数的倍数,兼具distribute和stripe卷的特点,是DHT 与 Striped 的组合型。

1.1. 创建命令

gluster volume create gv0 stripe 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0 10.8.4.131:/var/lib/heketi/mounts/gv0 10.8.4.132:/var/lib/heketi/mounts/gv0
  1. 分布式复制卷(distribute replica volume)

最少需要4台服务器才能创建。brickserver数量是镜像数的倍数,兼具distribute和replica卷的特点,可以在2个或多个节点之间复制数据,是DHT 与 AFR 的组合型。

2.1. 创建命令

gluster volume create gv0  replica 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0 10.8.4.131:/var/lib/heketi/mounts/gv0 10.8.4.132:/var/lib/heketi/mounts/gv0

  1. 条带复制卷(stripe replica volume)

最少需要4台服务器才能创建。类似RAID 10,是 Striped 与 AFR 的组合型。

先组成RAID1,然后组成RAID0

RAID 10(又叫RAID 1+0)特点:

先按RAID 0分成两组,再分别对两组按RAID 1方式镜像
兼顾冗余(提供镜像存储)和性能(数据条带形分布)
3.1. 创建命令

gluster volume create gv0 stripe 2 replica 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0 10.8.4.131:/var/lib/heketi/mounts/gv0 10.8.4.132:/var/lib/heketi/mounts/gv0
  1. 分布式条带复制卷(distribute stripe volume)

至少需要8台 服务器才能创建。三种模式的混合。

4.1. 创建命令

gluster volume create gv0 stripe 2 replica 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0 10.8.4.131:/var/lib/heketi/mounts/gv0 10.8.4.132:/var/lib/heketi/mounts/gv0 exampleNode5:/var/lib/heketi/mounts/gv0 exampleNode6:/var/lib/heketi/mounts/gv0 exampleNode7:/var/lib/heketi/mounts/gv0 exampleNode8:/var/lib/heketi/mounts/gv0

参考

GlusterFs卷类型分析及创建、使用(结合kubernetes集群分析)-CSDN博客

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了搭建OwnCloud,您需要遵循以下步骤: 1. 准备服务器:您需要一台Linux服务器,可以使用Ubuntu、Debian、CentOS、Fedora等操作系统。 2. 安装LAMP:您需要安装LAMP(Linux、Apache、MySQL和PHP)软件包,以使OwnCloud能够在服务器上运行。您可以使用以下命令在Ubuntu上安装LAMP: sudo apt-get update sudo apt-get install apache2 mysql-server php libapache2-mod-php php-mysql 3. 安装OwnCloud:您可以从OwnCloud官网下载最新版本的OwnCloud,然后将其解压缩到/var/www/html目录中。您可以使用以下命令在Ubuntu上进行此操作: cd /var/www/html sudo wget https://download.owncloud.org/community/owncloud-latest.tar.bz2 sudo tar -xjf owncloud-latest.tar.bz2 4. 创建数据库:您需要创建一个MySQL数据库以存储OwnCloud的数据。您可以使用以下命令在Ubuntu上创建一个名为ownclouddb的数据库: sudo mysql -u root -p CREATE DATABASE ownclouddb; GRANT ALL PRIVILEGES ON ownclouddb.* TO 'ownclouduser'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; EXIT; 5. 安装OwnCloud插件:您需要安装一些插件,以便OwnCloud能够正常运行。您可以使用以下命令在Ubuntu上安装这些插件: sudo apt-get install php-gd php-curl php-zip php-dom php-xml php-mbstring 6. 配置OwnCloud:您需要编辑OwnCloud的配置文件,以将其连接到MySQL数据库。您可以使用以下命令在Ubuntu上编辑配置文件: sudo nano /var/www/html/owncloud/config/config.php 更改以下行以将其连接到MySQL数据库: 'dbname' => 'ownclouddb', 'dbuser' => 'ownclouduser', 'dbpassword' => 'password', 'dbhost' => 'localhost', 7. 配置Apache:您需要配置Apache服务器以允许OwnCloud的访问。您可以使用以下命令在Ubuntu上编辑Apache配置文件: sudo nano /etc/apache2/sites-available/owncloud.conf 添加以下行: Alias /owncloud "/var/www/html/owncloud/" <Directory /var/www/html/owncloud/> Options +FollowSymlinks AllowOverride All Require all granted <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/html/owncloud SetEnv HTTP_HOME /var/www/html/owncloud </Directory> 8. 重启Apache:您需要重启Apache服务器以使配置生效。您可以使用以下命令在Ubuntu上重启Apache: sudo systemctl restart apache2 现在,您已经成功搭建了OwnCloud,并可以使用Web浏览器访问它。您可以使用自己的域名或IP地址访问OwnCloud,例如http://yourdomain.com/owncloud或http://youripaddress/owncloud。首次访问时,您需要设置管理员帐户并登录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值