모길 레프
건축물
mogilefs는 3 개의 노드, 트래커, 데이터베이스 및 스토리지를 포함합니다.
- Tracker는 mogilefs 기능을 구현 한 것으로, 스케줄러와 동일하며 사용자가 요청을 보낸 후 사용자가 데이터베이스를 통해 접근하고자하는 데이터의 메타 데이터를 조회 한 후 실제 URI를 사용자에게 반환합니다. 사용자는 실제 URI를 다시 요청합니다.
- 데이터베이스는 mogilef의 메타 데이터를 저장하고 트래커는이를 관리하고 운영합니다.
- 스토리지 노드는 스토리지 노드이며 모든 저장된 파일은이 시스템에 있습니다.
기타 용어
Domain
: mogilef는 서로 다른 파일을 저장하는 데 사용되는 여러 도메인을 가질 수 있습니다. 다른 도메인에서는 동일한 도메인의 키가 고유해야하며 키가 동일 할 수 있습니다. 각 스토리지 노드를 호스트 호스트라고합니다. 호스트에는 여러 스토리지 디바이스 dev (개별 하드 디스크)가있을 수 있습니다. 각 디바이스에는 ID 번호가 있으며 Domain + Fid는 파일을 찾는 데 사용됩니다.class
: 파일 속성 관리, 다른 장치에 저장된 파일의 사본 수를 찾습니다. 도메인에는 파일이 아니라 가장 작은 복사 단위 인 여러 클래스가 있습니다. 클래스는 데이터를 저장할 서버를 결정
하며 파일을 찾을 때 도메인과 파일 ID를 통해 검색합니다.
* device
: 스토리지 노드에는 파일을 저장하는 데 사용되는 디렉토리 인 여러 장치가있을 수 있습니다 (마운트 된 디렉토리 비교). 각 장치에는 장치 ID가 있으며 mogstored 구성 파일의 docroot 구성 항목에 지정해야합니다. 디렉토리 생성 디렉토리 이름은 docroot / devid입니다. 장치는 삭제할 수 없습니다. 장치 상태 값을 dead로만 설정할 수 있습니다. 장치가 죽은 경우 실제로 죽은 상태입니다. 내부 데이터 복원 할 수 없으며 죽은 장치의 ID를 더 이상 사용할 수 없습니다.
mogilefs 설치
주최자 | 풍모 |
---|---|
11.2.3.63 | 추적기, 데이터베이스, mogstored |
11.2.3.25 | mogstored |
mogilefs의 업데이트가 인터넷에서 중지되었으므로 모든 패키지가 centos6에서 멈 춥니 다. 다음은 centos7에 대한 데모입니다.
1) 다양한 종속성 패키지 설치
yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes```
2)安装mogilefs服务的包
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201213024848869.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NTY0MzY2,size_16,color_FFFFFF,t_70)
```bash
yum install -y *.rpm
3) 데이터베이스 설치
yum install -y mariadb-server
4) 데이터베이스 사용자 생성
MariaDB [(none)]> GRANT ALL ON *.* TO 'ydong'@'11.2.%.%' IDENTIFIED BY 'centos';
Query OK, 0 rows affected (0.00 sec)
此种方式创建的用户权限太大,可以专门创建一个用户只对mogilefs表有效
5) mogilefs 라이브러리 생성
[root@localhost ~]# mogdbsetup --dbhost=127.0.0.1 --dbuser=ydong --dbpass=centos --dbport=3306 --dbname=mogilefs
This will attempt to setup or upgrade your MogileFS database.
It won't destroy existing data.
Run with --help for more information. Run with --yes to shut up these prompts.
Continue? [N/y]: y
Create/Upgrade database name 'mogilefs'? [Y/n]: y 是否生成mogilefs库
Grant all privileges to user 'ydong', connecting from anywhere, to the mogilefs database 'mogilefs'? [Y/n]: y 是否支持远程连接
6) 트래커 구성
daemonize = 1 ##设置为1表示启动为守护进程
db_dsn = DBI:mysql:mogilefs:host=127.0.0.1 db_user = username db_pass = password ##配置数据库连接相关信息
listen = 127.0.0.1:7001 ##mogilefs监听地址,监听在127.0.0.1表示只允许从本机登录进行管理
query_jobs = 10 ##启动多少个查询工作线程
delete_jobs = 1 ##启动多少个删除工作线程
replicate_jobs = 5 ##启动多少个复制工作线程
reaper_jobs = 1 ##启动多少个用于回收资源的线程
maxconns = 10000 ##存储系统的最大连接数.
httplisten = 0.0.0.0:7500 ##可通过http访问的服务端口
mgmtlisten = 0.0.0.0:7501 ##mogilefs的管理端口
docroot = /var/mogdata ##该项决定了数据的在storage上存储的实际位置,建议使用的是一个单独挂载使用的磁盘
7) 추적기를 시작합니다. mogilefs는 루트 사용자로 시작할 필요가 없으며 실행하려면 mogilefs 사용자로 전환해야합니다.
[root@localhost ~]# mogilefsd -h
Unknown option: h
mogilefsd cannot be run as root
bash-4.2$ systemctl start mogilefsd
8) mogstored 구성
[root@localhost ~]# cat /etc/mogilefs/mogstored.conf
maxconns = 10000
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /data/mogilefs #数据存放的目录。此目目录需要以mogilefs用户来访问
[root@localhost ~]# mkdir /data/mogilefs -p
[root@localhost ~]# chown -R mogilefs.mogilefs /data/
[root@localhost ~]# ll /data/
总用量 0
drwxr-xr-x 2 mogilefs mogilefs 6 12月 13 03:22 mogilefs
9) mogstored 노드 시작
[root@localhost ~]# mogstored -c /etc/mogilefs/mogstored.conf --daemon
10) 추적기에 스토리지 노드 추가
[root@localhost ~]# mogadm host add 11.2.3.63 --status=alive
显示tracker中的host
[root@localhost ~]# mogadm host list
11.2.3.63 [1]: alive
IP: 11.2.3.63:7500
修改tracker的host
[root@localhost ~]# mogadm host modify 11.2.3.63 --status=down
[root@localhost ~]# mogadm host list
11.2.3.63 [1]: down
IP: 11.2.3.63:7500
11) 저장 장치 (장치)를 추가합니다. 즉, mogstored에 docroot
지정된 디렉토리가 저장 장치에서 사용됩니다. 이 디렉터리에 디렉터리를 만들고 dev + ID 형식을 사용하면 기억 된 모든 시스템의 ID는 반복 될 수 없으며 구성 파일의 경로와 동일해야합니다.
[root@localhost ~]# mkdir /data/mogilefs/dev1
[root@localhost ~]# chown -R mogilefs.mogilefs /data/mogilefs/
[root@localhost ~]# mogadm device add 11.2.3.63 1
[root@localhost ~]# mogadm device list
11.2.3.63 [1]: alive
used(G) free(G) total(G) weight(%)
dev1: alive 5.209 44.767 49.976 100
12) 다른 스토리지 노드 (11.2.3.25)를 추가합니다. 1, 2, 8 단계에서 설치
mogstored -c /etc/mogilefs/mogstored.conf --daemon
13) 트래커 추가
[root@localhost ~]# mogadm host list
11.2.3.63 [1]: alive
IP: 11.2.3.63:7500
11.2.3.25 [2]: down
IP: 11.2.3.25:7500
14) 두 번째 노드에 대한 장비 추가
在11.2.3.25中创建dev2的目录
[root@localhost ~]# ll /data/mogilefs/
总用量 0
drwxr-xr-x 3 mogilefs mogilefs 37 12月 13 03:47 dev2
[root@localhost ~]# mogadm device list
11.2.3.63 [1]: alive
used(G) free(G) total(G) weight(%)
dev1: alive 5.209 44.767 49.976 100
11.2.3.25 [2]: alive
used(G) free(G) total(G) weight(%)
dev2: alive 4.014 45.962 49.976 100
15) 트래커에서 도메인 구축
[root@localhost ~]# mogadm domain add imgs
[root@localhost ~]# mogadm domain add files
[root@localhost ~]# mogadm domain list
domain class mindevcount replpolicy hashtype
-------------------- -------------------- ------------- ------------ -------
files default 2 MultipleHosts() NONE
imgs default 2 MultipleHosts() NONE
class:复制文件的最小单位 (最大为64M,如果一个单文件超出此大小将拆分为多个class存储)。在一个域中,可以有多个类,主要是用来控制复制单元的,类是用来做属性管理的,类是比域 domain 低一个级别,可以定义一个文件存储在不同 device 中的份数.一个文件必须通过 domain,class 和 key 才能找出来.我们可以给不同的重要程度的文件,不同热度的文件,来分别用类来控制份数.
mindevcount:表示最小的份数
16) 파일 업로드
[root@localhost ~]# mogupload --trackers=127.0.0.1 --domain=files --key='/fstab' --file='/etc/fstab'
key:http访问的url
file:本地文件
17) 쿼리 파일
[root@localhost ~]# mogfileinfo --tracker=127.0.0.1 --domain=files --key='/fstab'
- file: /fstab
class: default
devcount: 1
domain: files
fid: 2
key: /fstab
length: 541
- http://11.2.3.25:7500/dev2/0/000/000/0000000002.fid
.fid的文件就是web访问的路径