一、文件写入方式与文件恢复
1.文件写入
mfs默认的单个chunk大小为50M,如果写入文件大于50M,则mfs会为其分配多个chunk来存储
mfs写入过程图解:
2.文件恢复
[root@foundation1 mfs]# cd dir1
[root@foundation1 dir1]# ls
passwd
[root@foundation1 dir1]# rm -rf passwd %删除passwd文件
[root@foundation1 dir1]# ls
[root@foundation1 dir1]# cd
[root@foundation1 mnt]# mkdir mfsmeta %创建元数据目录
[root@foundation1 mnt]# cd mfsmeta/
[root@foundation1 mfsmeta]# ls
[root@foundation1 mfsmeta]# mfsmount -m /mnt/mfsmeta/ %-m参数是指定元数据的意思
mfsmaster accepted connection with parameters: read-write,restricted_ip
[root@foundation1 mfsmeta]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 3924804 0 3924804 0% /dev
tmpfs 3940708 18720 3921988 1% /dev/shm
tmpfs 3940708 10044 3930664 1% /run
tmpfs 3940708 0 3940708 0% /sys/fs/cgroup
/dev/mapper/rhel_foundation1-root 225251880 73165968 152085912 33% /
/dev/sda1 1038336 683544 354792 66% /boot
tmpfs 788140 32 788108 1% /run/user/1000
/dev/loop0 4391278 4391278 0 100% /var/www/html/rhel7.6
mfsmaster:9421 20948992 590656 20358336 3% /mnt/mfs
[root@foundation1 mfsmeta]# ls
sustained trash
[root@foundation1 mfsmeta]# cd trash/
[root@foundation1 trash]# ls
[root@foundation1 trash]# ls | wc -l
4097
[root@foundation1 trash]# find -name *passwd*
./004/00000004|dir1|passwd
[root@foundation1 trash]# cd 004/
[root@foundation1 004]# ls
'00000004|dir1|passwd' undel
[root@foundation1 004]# mv 00000004\|dir1\|passwd undel/ %相当于撤销的动作
[root@foundation1 004]# cd /mnt/mfs/dir1/
[root@foundation1 dir1]# ls %删除的文件已经恢复
passwd
二、存储类
master内存的开销主要取决于整个分布式文件系统中文件的数量而不是大小,cpu的消耗主要来源于用户的操作。为了更合理的利用系统资源,我们需要来创建存储类来对存储进行管理
1.添加chunk server节点
1.示例1
更改chunk server配置文件,添加LABEL:
[root@foundation1 mfs]# cd dir2
[root@foundation1 dir2]# ls
bigfile fstab
[root@foundation1 dir2]# mfsscadmin create 2A class_2A %创建存储类,2A表示存两份,两份都在有标签A的节点上
storage class make class_2A: ok
[root@foundation1 dir2]# mfsscadmin create AB class_AB %AB表示存一份,在具有A和B标签的节点上
storage class make class_AB: ok
[root@foundation1 dir2]# mfsfileinfo fstab
fstab:
chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
copy 1: 172.25.0.2:9422 (status:VALID)
copy 2: 172.25.0.3:9422 (status:VALID)
[root@foundation1 dir2]# mfssetsclass class_2A fstab %设置文件的存储类
fstab: storage class: 'class_2A'
[root@foundation1 dir2]# mfsfileinfo fstab %查看文件的存储信息
fstab:
chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
copy 1: 172.25.0.2:9422 (status:VALID)
copy 2: 172.25.0.4:9422 (status:VALID)
[root@foundation1 dir2]# mfsfileinfo bigfile
bigfile:
chunk 0: 0000000000000003_00000001 / (id:3 ver:1)
copy 1: 172.25.0.2:9422 (status:VALID)
copy 2: 172.25.0.3:9422 (status:VALID)
chunk 1: 0000000000000004_00000001 / (id:4 ver:1)
copy 1: 172.25.0.2:9422 (status:VALID)
copy 2: 172.25.0.3:9422 (status:VALID)
[root@foundation1 dir2]# mfssetsclass class_AB bigfile
bigfile: storage class: 'class_AB'
[root@foundation1 dir2]# mfsfileinfo bigfile
bigfile:
chunk 0: 0000000000000003_00000001 / (id:3 ver:1)
copy 1: 172.25.0.3:9422 (status:VALID)
chunk 1: 0000000000000004_00000001 / (id:4 ver:1)
copy 1: 172.25.0.3:9422 (status:VALID)
[root@foundation1 dir2]# mfsscadmin delete class_AB %删除存储类
storage class remove class_AB: error: Class in use
[root@foundation1 dir2]# mfsscadmin create A,B classAB %A,B表示存两份,一份在具有标签A的节点上,一份在具有标签B的节点上
storage class make classAB: ok
[root@foundation1 dir2]# mfssetsclass classAB bigfile
bigfile: storage class: 'classAB'
[root@foundation1 dir2]# mfsscadmin delete class_AB
storage class remove class_AB: ok
[root@foundation1 dir2]# mfsfileinfo bigfile
bigfile:
chunk 0: 0000000000000003_00000001 / (id:3 ver:1) %因为bigfile为100M大小,因此分为两个chunk(块)来存
copy 1: 172.25.0.3:9422 (status:VALID)
copy 2: 172.25.0.4:9422 (status:VALID)
chunk 1: 0000000000000004_00000001 / (id:4 ver:1)
copy 1: 172.25.0.3:9422 (status:VALID)
copy 2: 172.25.0.4:9422 (status:VALID)
2.示例2
server2上:
[root@server2 mfs]# vim mfschunkserver.cfg
LABELS = A S %更改标签
[root@server2 mfs]# systemctl reload moosefs-chunkserver.service
server3上:
[root@server3 mfs]# vim mfschunkserver.cfg
LABELS = A B S H %更改标签
[root@server3 mfs]# systemctl reload moosefs-chunkserver.servic512e
server4上:
[root@server4 ~]# vim /etc/mfs/mfschunkserver.cfg
LABELS = A H %更改标签
[root@server4 ~]# systemctl reload moosefs-chunkserver.service
客户端:
[root@foundation1 dir2]# mfsscadmin create AS,BS class_ASBS %创建存储类
storage class make class_ASBS: ok
[root@foundation1 dir2]# ls
bigfile fstab
[root@foundation1 dir2]# mfssetsclass class_ASBS fstab %设置文件以指定存储类型存储
fstab: storage class: 'class_ASBS'
[root@foundation1 dir2]# mfsfileinfo fstab
fstab:
chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
copy 1: 172.25.1.2:9422 (status:VALID)
copy 2: 172.25.1.3:9422 (status:VALID)
[root@foundation1 dir2]# mfsscadmin create BS,2A[S+H] class4
storage class make class4: ok
[root@foundation1 dir2]# mfssetsclass class4 fstab
fstab: storage class: 'class4'
[root@foundation1 dir2]# mfsfileinfo fstab
fstab:
chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
copy 1: 172.25.1.2:9422 (status:VALID)
copy 2: 172.25.1.3:9422 (status:VALID)
copy 3: 172.25.1.4:9422 (status:VALID)
[root@foundation1 dir2]# mfsscadmin create -C 2AS -K AS,BS -A AH,BH -d 30 class5 %表示创建一个存储类class5,存储两份,在AS上,-K参数指定数据保留在AS和BS上各一份,-d指定30天后,-A指定迁移到AH和BH上
storage class make class5: ok
[root@foundation1 dir2]# mfssetsclass class5 fstab
fstab: storage class: 'class5'
[root@foundation1 dir2]# mfsfileinfo fstab
fstab:
chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
copy 1: 172.25.1.2:9422 (status:VALID)
copy 2: 172.25.1.3:9422 (status:VALID)