高级文件系统管理_学习笔记-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

高级文件系统管理_学习笔记

简介: 时间:2017.12.04作者:李强参考:man,info,magedu讲义,万能的internet实验环境:CentOS 6.9与CentOS7.4声明:以下英文纯属个人翻译,英文B级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠,才能有限,希望不误人子弟为好。

时间:2017.12.04
作者:李强
参考:man,info,magedu讲义,万能的internet
实验环境:CentOS 6.9与CentOS7.4
声明:以下英文纯属个人翻译,英文B级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠,才能有限,希望不误人子弟为好。

一、QUOTA,文件配额

1、为何要文件系统的配额
通常一个操作系统管理一些磁盘分区,但是普通用户能进行写write操作的空间只有/home下它的家目录而已。
所以在一些需要给普通用户分配用空间的时候最好能够给其分配单独的分区,便于进行文件系统配额的操作,
那么这里我们就能看出,配额的操作是针对文件系统本身而言。
什么是文件系统就是管理文件的一种格式。
是分区挂载后才能体现的特点。
2、文件配额的基本原理
文件系统的配置
-首先为用户分配一个独立的分区。
-其次分区挂载为其设置其启用配额的特性,可以有针对用户和针对组的
-然后设置配额规则
-测试配额效果
3、文件配额的工具
以下是quota软件包提供的一些quota的功能
高级文件系统管理_学习笔记
在xfs上可以使用xfs_quota工具做配额。

4、文件配额的配置流程
问:
针对lq用户以及stale组。限制1G的空间和1万的文件数。
答:
1)建立文件系统,首先如果/home是在/的分区上的话,需要独立出来。给用户一个独立的空间,
fdisk /dev/sdb //为其分配一个/dev/sdb1
blkid /dev/sdb1 //检查分区是否划分成功

2) 对/dev/sdb1进行格式化分配文件系统后,添加配额功能,并挂载在某个目录比如/mnt/home

mkfs.ext4 /dev/sdb1
mount /dev/sdb1 /mnt/home
备份/home下的目录, 以及提醒用户不要进行操作。
tar cf /opt/home.tar /home
cp -a /home/ /mnt/home
du -h /home /mnt/home
rm -rf /home/

vi /etc/fstab
uuid=xx /home ext4 usrquota,grpquota 0 0
mount -a -o remount /dev/sdb1
umount /mnt/home

3)配置配额规则

初始化quota数据库quotacheck -c ug(看你在fstab中设置的是什么) filesystem(设备名或挂载点(挂载点应该更直观))
然后开启配合功能 quotaon
编辑配额规则
edquota wang(用户)
edquta group lq (组)
对block和inode进行控制,有soft和hard选项,允许的警告和最大值,
4)测试配额规则是否生效

5、错误信息
高级文件系统管理_学习笔记
这里遇到典型问题了,因为selinux的存在不允许你进行操作。
setenforce 0 可以先关闭,当然要去/etc/selinux配置。
高级文件系统管理_学习笔记
高级文件系统管理_学习笔记
第一个图片是没有使用管理员权限的提示信息
第二个图片是和下面quotacheck -cug /home一样的提示信息,说已经存在配额数据库,
高级文件系统管理_学习笔记
这里说明我们创建配额需要针对是的挂载点。
高级文件系统管理_学习笔记
这里说的是已经有配额的数据库了,你可以关闭或者使用-f 强制创建

二、RAID,磁盘阵列

RAID的类别有0,1,5,6,10,01,4(已淘汰),7(太专业),50(太费钱)
3种实现方式,软raid,主板自带raid控制器,专业raid插卡控制器。
1、为何做raid
因为普通磁盘分区没有冗余性,而且raid还能提升数据的读取写入速度。因此在服务器上普遍采用这种技术手段。
2、raid的基本原理
太专业的咱也说不清楚,就是将多块硬盘放在一起做一个array。如果有N个磁盘,N>=2,那么raid1,我们只需要去考虑对N/2做操作就行。总之我们对raid后的设备做操作就行,至于底层那是Raid干的事情,我们不需太多关心,我们只要知道我们要对raid后的设备做哪些操作即可。
raid1:将N/2的硬盘做备份盘
raid0:没有备份盘,数据分成chrunk大小,分别写入到各个磁盘,没冗余性,
raid5:针对0的没有冗余性进行改进,一开始是4,一部分磁盘都用来做校验码的存放,结果因为读写频繁经常损坏,因此,5上校验码分布在各个磁盘中
raid6:对5的进一步改进,因为5上只有一组校验码,因此如果坏了2个磁盘,也不行,6上有2组校验码,这样子坏的几率会降低,但是磁盘的利用率就会变成N-2/N
raid10:经常使用的,将2个做一个raid1之后然后各个raid1之间再做raid0
raid 01:先将2个磁盘做radi0,然后在将raid0,做成raid1
raid50:现将磁盘做成raid5,然后多个raid5再做成raid0。如果是小文件chrunk,再chrunk吗?会很浪费空间的吧。这个不知道是个什么机制呢?
3、软raid的配置流程:
1)首先要有至少2个分区或者设备,分区要指定其type为fd
2)然后创建raid设备
3)指定raid级别和那些磁盘分区做raid。
4)然后对raid设备做常规格式化挂载等操作
增删改查:
md:multiple devices模块
mdadm:md的manage。
格式:
mdadm [mode] <raiddevice> [options] <component-devices>
mdadm和vi类似也有几种模式,常见的有:
assemble,build,create,follow|mirror,grow,manage,misc,Incremental Assembly,auto-detect
用选项来表示模式:
-A
-B
-C:--create 创建一个新的array
-F:--flow,--mirror ,指定mirror模式
-G:--grow,改变有效的array的大小和状态
如果选项跟--add --fail --remove --add-spare 这样子的默认就是mange模式
-I:--incremental
--auto-detect:

每个模式下都有自己的子选项:
我们可以通过mdadm -ABC ... --help 去获取相关选项所支持的子选项。
对于create,build,grow的选项:
对于assemble的选项
对于manage的选项
对于misc的选项
对于mirror的选项
说实话我们现在很少用到软raid,但是要听过,了解过。等真正用的时候不至于是摸瞎的一个状态即可。
增加:
-C -a -l -n -x -c
删除:
--mange
-f:--fail
-r: --remove
修改:
--manage -a
-S
-G
-n: 增加阵列中磁盘数
-l:更改阵列的优先级
查看:
-D
-Ds
cat /proc/mdstat

三、LVM,逻辑卷管理

1、为何有逻辑卷。

LVM三个概念
PV:phsycial volume
VG: volume group
LV: logic volume

因为当我们正常的分区指定后,如果想要扩展其大小是个很麻烦的事情,而lvm的概念就很好的解决了这个问题。而且lvm还有snapshot的特性。
我们拿粉笔来做举例,可能不是准确
以前是粉笔都在仓库里
现在是粉笔要交给教务处分配,然后每个年级组去申请,然后每个班去申请。
粉笔就是pv,年级就是vg,lv就是班级
,snapshot是不允许挂载的。

2、逻辑卷的配置流程
增改删查。

创建:
pvcreate:
要拿仓库里的成箱粉笔打上pv标记给教务处
vgcreate:
从教务处选择有pv标记的成箱粉笔,放到年级组里去,成箱粉笔pv都规划为单份粉笔PE
lvcreate:
从年级组vg中领取多少份(PE)的粉笔。
修改:
pvcreate
vgextend
lvextend
lvreduce
删除:
pvremove
vgremove
lvremove
查看:
pvs
pvdisplay
vgs
vgdisplay
lvs
lvdisplay
3、snapshot快照的特性
我们在vmware中的磁盘就是一种逻辑卷的格式为vmdk。我们可以在虚拟机目录下创建多个虚拟磁盘作为pv使用。扯远了
快照的原理。
就是提供一个在VG的空间创建一个LV作为snapshot使用,其只是提供一个访问lv的一个入口,如果可以挂载的话,你会发现snaphshot上的数据和lv上一致,但是snapshot的空间并不大,因为只有当你lv上的数据和你创建snapshot lv的那一瞬间的数据不一致,或者说你创建快照那一瞬间会把磁盘上inode table发一份到snapshot上,所以快照创建就是一瞬间的事情,然后你lv上如果你要修改文件,比如执行vi等操作的时候,会把文件先备份一份到snaoshot上,然后lv上才会去修改, 这个当你修改大文件的时候就能感觉出来。当恢复快照的时候,其实就是恢复这些被修改过的文件到其原来的地方去把覆盖,这里注意的就是是覆盖,你lv在snapshot之后的修改的数据都会被覆盖,你要考虑清楚是之前的数据重要还是修改后的数据重要的问题,。
既然snapshot是提供了一个入口到源lv上,那么我们可以通过挂载snapshot 进入到lv去中修改lv中的数据,因此mount要只读,而我们创建快照的目的并不是去访问lv中的数据,所以在6上可以进行挂载snapshot,而在7上。
snapshot的概念就是当我们对这个逻辑卷中的数据进行操作时,会将创建快照时的系统环境放到snapshot中。当我们执行恢复快照的时候会将系统环境恢复到备份快照的时候的lv的样子。这里通常用于恢复你觉得现在的东西没有之前数据重要的时候进行操作,因为这个操作是覆盖操作。
数据的存储于恢复其实是个重要的问题。所以养成文件、系统备份的习惯是必不可少的。
创建快照,恢复快照。当恢复快照的时候自动删除快照,删除快照的方式和删除逻辑卷的方式一样,centos6下快照可以被挂载,7下默认不允许挂载。
lvcreate -s -L size -n name -p r (属性只读) /dev/vg(卷组名)/lv(逻辑卷)(指定为哪个源LV创建此刻的snapshot)

注意的问题是:
1、增加pv的时候如果增加的是分区,当然实际很少会是,需要给分区指定system id 为 8e。
2、压缩的时候记得先卸载挂载备份数据,实际很少会去压缩空间
3、我们挂载的是lv逻辑卷设备,fstab中用的是lv uuid,实际设备生成的设备是/dev/dm-xxx.,/dev/mapper/x_y,/dev/x/y啥的都是软链接到/dev/dm-xxx上的。
Q:那我们结合实际综合下,我现在服务器上有8个硬盘槽位,然后做raid几,然后是创建什么操作系统,要求后期可扩展。单块硬盘为500G

规划:
主板为UEFI引导,分区表格式为GPT,
操作系统为Centos7.4
8块500G硬盘,做raid6,2块恢复盘。具体看你什么业务了。我也不知道怎么分,我们假设这个样子。后期可扩展我们使用lvm分区格式。
具体划分为。
8块硬盘实际可用空间为4*500G 就是2T,我们给ROOT分配1个T,给boot分配1G,给home分配500G,给 其他分配500G .

名称规划:
设备名
test
主机名

raid 卡,选择1-6为数据盘,7,8为备份盘
然后设置raid设备名为md_test
那先在我们做lvm
创建/dev/md_test 为pv。
然后创建vg,lv,lv就是分区,然后创建文件系统。

实际中常用 raid(raid卡)+lvm(逻辑卷管理)+ext4,ceph(分布式文件系统

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章
最新文章
相关文章