Linux之高级文件系统管理

一 文件系统的配额

  • 在内核中执行

  • 以文件系统为单位启用

  • 对不同组或者用户的策略不同

  • 根据块或者节点进行限制

    • 执行软限制(soft limit)

    • 硬限制(hard limit)

初始化

分区挂载选项: usrquota,grpquota

初始化数据库: quotacheck

执行

开启或者取消配额: quotaon,quotaoff

直接编辑配额: edquota username

在shell中直接编辑: setquota username 4096 5120 40 50 /foo

定义原始标准用户: edquota -p user1 user2

报告配额状态

用户调查: quota username

配额概述: repquota /mountpoint

其他工具: warnpuota

操作如下:

1,先添加了一块硬盘,扫描 

echo "- - -" >/sys/class/scsi_host/host2/scan        #扫描新增的硬盘
fdisk /dev/sdb        #创建新的分区
partx -a /dev/dab        #将新创建的分区信息更新到
mkfs.ext4 /dev/sdb1        #格式化分区
mkdir /mnt/home            #新建一个home目录
mount /dev/sdb1 /mnt/home/        #将新划分的分区挂载到 /mnt/home目录下
mv * /mnt/home/                #将home下的内容移动到分区里
mount /dev/sdb1 /home        #将分区挂在到/home 目录下
umount /mnt/home        #卸载/mnt/home
vim /etc/fstab            #编辑配置文件,把分区信息写到里面
UUID=28b60fbb-5c63-4ba0-b818-ec103d714d2f /home  ext4   defaults,usrquota,grpquota      0 0        #分区信息,要写到/etc/fstab文件中
mount -o remount /home        重新挂载分区信息
quotacheck -cgu /home            #初始化配额数据库,发现权限不足,可以执行下面操作,否则跳过,执行成功后,目录下会出现两个新的二进制文件
getenforce             #如果返回值为Enforcing ,则叙执行setenforce 0  ,否则,跳过
quotaon /home        #开启配额功能
edquota cent        #编辑用户配额,内容如下

blob.png

setquota nineven 500000 600000 0 0 /home    #也可以直接通过命令实现以上功能
edquota -p cent xixi            #也可以通过此命令将cent用户的配额配置信息复制给xixi用户
quota cent        #直接查看cent用户的配额信息
repquota /home        #通过repquota 分区 查看更详细的信息

blob.png


二  RAID 

功能:

提供IO能力:磁盘并行读写

提高耐用性:磁盘冗余来实现

级别:多块磁盘组织在一起的工作方式有所不同

RAID实现的方式:

    外接式磁盘阵列:通过扩展卡提供适配能力

    内接式RAID:主板集成RAID控制器,安装os前在BIOS里配置

    软件RAID:通过os实现

RAID级别及其特点

RAID-0:

  读写性能提升

  可用空间:N*min(S1,S2…)

  无容错能力

  最小磁盘数:2

RAID-1:

  读性能提升,写性能略有下降

  可用空间:1*min(S1,S2…)

  用冗余能力

  最小磁盘数:2,2N

RAID-4:

  多块数据盘异或运算值,存于专用校验盘

RAID-5:

  读写性能提升

  可用空间(N-1)*min(S1,S2…)

  有容错能力:允许最多1块磁盘损坏

  最少磁盘数:3,3+

RAID-6:

  读写性能提升

  可用空间:(N-2)*min(S1,S2…)

  有容错能力:允许最多2块磁盘损坏

  最少磁盘数:4,4+    

RAID混合类型级别

RAID-10:(先组成raid0,然后在组成raid1)

  读写性能提升

  可用空间: N*min(S1,S2…)/2

  有容错能力:每组镜像最多只能坏一块

  最少磁盘数:4,4+

RAID-7:

  可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最好的RAID的模式

JBOD:Just a Bunch Of Disks :将多块磁盘的空间合并成一个大的连续空间使用

常用的RAID组级别为:RAID-0;RAID-1;RAID-5;RAID-10;RAID-50;JBOD

mdadm:为软RAID提供管理界面

为空余磁盘添加冗余

结合内核中的md(multi devices)

RAID设备可命名为/dev/md0;/dev/md1等等

命令的语法格式:

mdadm [mode] <raiddevice> [options] <component-devices>

mode:

  创建: -C:创建模式

    -n # :使用#个块设备来创建此RAID

    -l # :指明要创建的RAID的级别

    -a {yes|no} :自动创建目标RAID设备的设备文件

    -c CHUNK_SIZE :指明块的大小

    -x # :指明空闲盘的个数 

  装配: -A

  监控: -F

  管理: 

    -f :标记指定磁盘为损坏

    -r :添加磁盘

    -a :移除磁盘

  -D :显示raid的详细信息:

    mdadm -D /dev/md#

raiddevice:

  /dev/md#

component-devices:

  任意块设备

观察md的状态:

  cat /proc/mdstat

软RAID配置示例:

使用mdadm创建并定义RAID设备

[root@centos6 home]# mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{b..e}1

用文件系统对每个RAID设备进行格式化

[root@centos6 home]# mkfs.ext4 /dev/md0

测试RAID设备

使用mdadm检查RAID设备的状况

[root@centos6 home]# mdadm -D /dev/md0

增加新的成员

[root@centos6 home]# mdadm -G /dev/md0 -n4 -a /dev/sdf1

软RAID测试和修复

模拟硬盘故障

[root@centos6 home]# mdadm /dev/md0 -f /dev/sda1

移除硬盘

[root@centos6 home]# mdadm /dev/md0 -r /dev/sda1

从软件RAID磁盘修复磁盘故障

    替换处故障的磁盘然后开机

    在备用驱动器上常见分区

    #mdadm /dev/md0 -a /dev/sda1

mdadm , /proc/mdatat 及系统日志信息

软RAID管理

生成配置文件:mdadm -D -s >> /etc/mdadm.conf

停止服务:mdadm -S /dev/md0

激活:mdadm -A -s /dev/md0

强制启动:mdadm -R /dev/md0

删除raid信息:mdadm –zero-superblock /dev/sdb1

比如:

创建一个可用空间为10G的RAID1设备,要求其chunk大小为128k,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录 

先创建三个分区大小都为10G的分区,然后把硬盘类型改为raid
mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 -c 128K /dev/sdc{1,2} /dev/sdb2    #创建raid1 一个备用盘,块大小128k
mdadm -D /dev/md0            #显示raid的详细信息
cat /proc/mdstat             #查看raid组创建的信息
mkfs.ext4 /dev/md0            #格式化raid组md0磁盘
mkdir /backup                 #创建一个文件夹
vim /etc/fstab               #将挂载的信息写到配置文件中
UUID=bd0df058-4d13-40cf-b635-cb7390e7ba25  /backup      ext4     defaults 0 0
mount -a                      #重新读取配置文件,是配置生效
mdadm -Ds /dev/md0 > /etc/mdadm.conf        #保存配置文件

命令总结如下:

raid5实现
1、fdisk /dev/sdb
/dev/sdb1
dd if=/dev/sdb of=/dev/sdd bs=1 count=512
2、mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}1 创建raid
3、mkfs.ext4 /dev/md0
4、vim /etc/fstab
/dev/md0 /mnt/raid ext4 defaults 00
5、mount -a
6、mdadm -D /dev/md0  查看状态
cat /proc/mdstat
7、mdadm /dev/md0 -f /dev/sdb1 模拟失败
8、mdadm /dev/md0 -r /dev/sdb1 删除成员
9、mdadm /dev/md0 -a /dev/sdb1 添加成员
10、mdadm -Ds /dev/md0 > /etc/mdadm.conf
11、umount /dev/md0;mdadm -S /dev/md0
清除raid
1、umount /dev/md0;mdadm -S /dev/md0
2、mdadm --zero-superblock /dev/sdx 清除成员raid信息
3、fdisk /dev/sdx 删除成员分区
4、vim /etc/fstab
5、rm /etc/mdadm.conf

三 逻辑卷管理器(LVM)

允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小

允许在多个物理设备间重新组织文件系统

    将设备指定为物理卷

    用一个或多个物理卷来创建一个卷组

    物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的

    在物理卷上创建的逻辑卷是由物理区域(PE)组成

    可以在逻辑卷上创建文件系统   

blob.png

LVM的介绍:

LVM:Logical Volume Manager,Version:2

dm:device mapper:将一个或多个底层块设备组织成一个逻辑设备的模块

设备名: /dev/dm#

软连接:

blob.png

LVM可以弹性的更改LVM的容量,通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量

blob.png

删除逻辑卷: 删除逻辑卷必须先删除LV,再删除VG,最后删除PV

pv管理工具

pvs :显示pv简要信息

pvdisplay :显示详细的PV信息

pvcreate /dev/device :创建pv

vg管理工具

1,显示卷组

 vgs

 vgdisplay

2,创建卷组

 vgcreate  [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]

3,管理卷组

 vgextend  VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]

 vgreduce  VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…] 

4,删除卷组

 先做pvmove,再做vgremove

lv管理工具

1,显示逻辑卷

 lvs

 lvdisplay

2,创建逻辑卷

 lvcreate -L #[mMgGtT] -n NAME VolumeGroup

3,删除逻辑卷

 lvremove /dev/VG_NAME/LV_NAME

4,重设文件系统的大小

 fsadm [options] resize device [new_size[BKMGTEP]] 

 resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]

扩展和缩减逻辑卷

1,扩展逻辑卷

 lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME 

 resize2fs /dev/VG_NAME/LV_NAME 

2,缩减逻辑卷

 umount /dev/VG_NAME/LV_NAME    #先卸载挂载点

 e2fsck -f /dev/VG_NAME/LV_NAME     #对磁盘进行强制检查

 resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]     #缩减文件系统的大小

 lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME     #缩减物理大小

 mount                         #重新挂载分区

这五步缺一不可

创建逻辑卷实例

1,创建物理卷

 pvcreate /dev/sdb2

2,为卷组分配物理卷

 vgcreate vg0 /dev/sdb2

3,从卷组创建逻辑卷

 lvcreate -L 256M -n data vg0

 mke2fs -j /dev/vg0/data

4,挂载

 mount /dev/vg0/data /mnt/data

逻辑卷管理器快照

快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝

对于需要备份或者复制的现有数据集临时拷贝以及其他操作来说。快照是最合适的选择

快照只有在它们和原来的逻辑卷不同时才会消耗空间

 在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间

 当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中

 快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据

 建立快照的卷大小只需要原始逻辑卷的15%-20%就够了,也可以使用lvextend扩展快照

逻辑卷快照原理:

快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则有快照区和文件系统共享

由于快照区与原本的LV公用很多PE的区块,因此快照去与被快照的LV必须要在同一个VG上,系统恢复的时候的文件数量不能高于快照区的实际容量

使用LVM快照

1,为现有的逻辑卷创建快照

 lvcreate -l  64  -s  -n snap-data -p r /dev/vg0/data 

2,挂载快照

 mkdir  -p  /mnt/snap 

 mount -o ro /dev/vg0/snap-data  /mnt/snap

3,删除快照

 umount  /mnt/databackup 

 lvremove  /dev/vg0/databackup

练习:

1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录 

2、 新建用户archlinux,要求其家目录为/users/archlinux ,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录 

3、扩展testlv至7G,要求archlinux用户的文件不能丢失 

4、收缩testlv至3G,要求archlinux用户的文件不能丢失 

5、对testlv创建快照,并尝试基于快照备份数据,验正快照的功能

本练习在centos6.8系统上完成

pvcreate /dev/sd{b,c,e}{1,2}                    #先创建pv
vgcreate testvg -s 16M /dev/sd{b,c,e}{1,2}      #创建卷组
lvcreate -n testlv -L 5G testvg                 #从卷组中创建一个lv
mkfs.ext4 /dev/testvg/testlv                   #格式化lv
mkdir /users                                    #创建一个文件夹作为挂载点
vim /etc/fstab                                  #将分区挂载信息写到配置文件中
mount -a                                        #重新读取配置文件
useradd -d /users/archlinux archlinux           #创建一个新的用户,指定家目录
su - archlinux                                  #切换新创建的用户
cp -a /etc/pam.d/* .                            #复制文件
exit                                            #退出
lvextend -L 7G /dev/testvg/testlv               #扩展lv分区物理大小
resize2fs /dev/testvg/testlv                   #扩展lv分区文件系统大小
umount /users                                   #卸载分区
e2fsck -f /dev/testvg/testlv                   #强制检查文件系统
resize2fs /dev/testvg/testlv 3G                 #将文件系统缩减到指定大小
lvreduce -L 3G /dev/testvg/testlv               #缩减lv物理卷大小
mount -a                                        #重新挂载分区
lvcreate -s -L 500M -n testlvsnap -p r /dev/testvg/testlv         #创造指定卷的快照
mkdir /mnt/testlvsnap                                              #创建一个文件夹作为快照的挂载点
mount /dev/testvg/testlvsnap /mnt/testlvsnap/                      #挂载快照到指定分区

类似文章