高级文件系统管理1

本部分内容主要讲述了高级文件系统的管理,包括设定文件系统配额,设定和管理软RAID设备,配置逻辑卷,设定LVM快照和btrfs文件系统。其中文件系统配额和软RAID在企业中使用的频率并不很高,作为熟练即可,而逻辑卷的创建和LVM快照是非常重要的内容,必须精通并完全理解其原理。至于btrfs文件系统是新兴的一种技术,作为了解即可。

一、知识整理

1、文件系统配额综述:在内核中执行;以文件系统为单位启用;对不同组或者用户的策略不同,是根据设置配额的目录下的文件的所属主和所属组进行空间限定;可以根据块或者节点进行限制,包括软限制和硬限制。

2、RAIDredundant arrays ofinexpensiveindependentdisks

1988university of California-Berkeley发明;多个磁盘合成一个阵列来提供更好的性能或者冗余性。RAID实现方式:外接式磁盘阵列:通过扩展卡提供适配能力;内接式RAID:主板阶乘RAID控制器,安装OS之前在BIOS中配置;软RAIDsoftware RAID:在企业基本无应用,但可作为测试进行试验。

3、用dd命令创建空文件,对文件格式化,挂载,即可是使用文件作为存储设备。centos6中最多8个,centos7中依次生成。可以指定loop设备与FILE的关系,使用命令losetup /dev/loop#  /testdir/FILE指定FILEloop2,再挂载可以使用FILE或者loop设备。例如:

[root@localhost testdir]# dd if=/dev/zero of=testfile count=10 bs=10M 
10+0 records in
10+0 records out
104857600 bytes (105 MB) copied, 1.23945 s, 84.6 MB/s

格式化之后blkid无法查看,但blkid /testdir/FILE能够查看

[root@localhost testdir]# mke2fs -t ext4 ./testfile 
mke2fs 1.41.12 (17-May-2010)
./testfile is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks: 
8193, 24577, 40961, 57345, 73729
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost mnt]# mount /testdir/testfile testfile/
mount: /testdir/testfile is not a block device (maybe try `-o loop'?)
[root@localhost mnt]# mount /testdir/testfile testfile/ -o loop

其他的挂载方式还有:

ftp挂载:10.1.0.1:share  /mnt/dir  nfs  …

windows共享文件夹挂载\\10.1.0.1\FILE  /mnt/dir  cifs  …

二、详细事例及命令

1、文件系统配额配置:配置好的soft limit有效期是7天,7天后soft变为hard。启用配额之后的空间不包含之前使用的空间,只算开启之后的使用。

①分区,将home目录重新挂载,挂到新建的磁盘下,步骤如下:

fdisk /dev/sdc

cd mnt/

mkdir sdc1

mke2fs -t ext4 /dev/sdc1

mount /dev/sdc1 /mnt/sdc1

mv /home/*  /mnt/sdc1/

umount  /mnt/sdc1

mkdir  /home

mount /dev/sdc1  /home

②启用配额功能,重新挂载并写入/etc/fstabdefaultsusrquotagrpquota

重新挂载mount -o  remount,usrquota,grpquota  /home

③启用配额功能并编辑:首先初始化:

[root@localhost home]# quotacheck -ug /home
[root@localhost home]# ls
aquota.group  aquota.user  gjy  lisi  lost+found  shiting  zhangsan
[root@localhost home]# quotaon /home/

vim中编辑配额:

[root@localhost home]# edquota shiting

直接在shell中给定配额

[root@localhost home]# setquota shiting 100000 200000 200 230 /home

查看某用户的配额,查看所有配额repquota /home

[root@localhost home]# quota shiting
Disk quotas for user shiting (uid 1003): 
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
 /dev/sdc1      20  100000  200000               5     200     230

设定第二个用户与第一个用户的配额相同:

[root@localhost home]# edquota -p shiting lisi
[root@localhost home]# repquota /home
*** Report for user quotas on device /dev/sdc1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User  used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root   --    20      0     0       2     0     0       
gjy   --    16       0    0       4     0     0       
zhangsan --   20       0   0        5     0     0       
lisi   --    20       100000  200000    5   200   230       
shiting --    20       100000  200000   5   200   230

④取消配额:

[root@localhost /]# quotaoff /home
[root@localhost /]# umount /home
[root@localhost /]# mount /dev/sdc1 /home
[root@localhost /]# cd home/
[root@localhost home]# ls
aquota.group  aquota.user  gjy  lisi  lost+found  shiting  zhangsan
[root@localhost home]# rm aquota.group 
rm: remove regular file 'aquota.group'? y
[root@localhost home]# rm aquota.user 
rm: remove regular file 'aquota.user'? y

2、RAID级别:常用级别5610

RAID 0:条带卷:

分散存储,并行放置硬盘;最少磁盘数2;提高读写能力,没有冗余能力;可用空间N*mins1s2…)。

RAID 1:镜像卷:

读性能没有提升,写能力略有下降;可用空间:1*mins1s2…);有冗余能力;最少磁盘数量2,数量太多也不好。

RAID 4

最少三块磁盘,单块磁盘作为校验盘,使用异或机制,不允许一个以上损坏,访问压力较大。

RAID 5

循环放置校验码;分为左对称和右对称;读写能力有提升,可用空间(N-1*mins1s2…);有一块硬盘的冗余能力;最少磁盘数量3个。

RAID 6

两块校验盘,最少磁盘数4;可用空间(N-2*mins1s2…);有容错能力,读写能力提升;

RAID 10 :混合类型

相对01损坏可能性更小一些,读写能力提升,有容错能力,每组镜像最多只能坏一块;最少4个磁盘,可用空间N*mins1s2…/2

blob.png

blob.png

JBODjust a bunch of disks

将多块磁盘空间合并一个大的连续的空间使用。

3、实现软RAIDmdadm:模式化的工具:

mdadm [] raiddevice/dev/md#[] component-device(任意块设备)

直接支持的级别有145610,其他组合类型可以间接实现;

模式:创建模式:-C

-n # 使用#块盘来创建此raid

-l # 指明要创建的raid的级别

-a {yes|no} 是否自动创建目标raid设备的设备文件

-c CHUNK_SIZE 指明块大小,默认512KB

-x # 指明空闲盘的个数

-f 人为标记错误盘

装配模式-A

监控模式:-F

管理模式:-f -r -a

-r 移除一块硬盘

-a 添加一块硬盘

-f 模拟失败

-D 显示raid 的详细信息

停止md设备 -S

添加新成员:mdadm -G /dev/md0 -n 4 -a /dev/sdf1

生成配置文件mdadm -Ds > /etc/mdadm.conf

停止服务:mdadm -S /dev/md0:此时/dev下无md0设备文件

激活服务:mdadm -A -s /dev/md0使用生成的配置文件激活服务

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

此命令用于彻底删除raid的信息,包括mdadm生成的配置信息等

三、课后练习

1、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项。

fdisk /dev/sdb

mke2fs -t ext4 -b 2048 -m 1 -L "TEST"

mke2fs -t ext4 -b 2048 -m 1 -L "TEST" /dev/sdb1

dumpe2fs /dev/sdb1

vim /etc/fstab

/dev/sdb1          /testdir/         ext4    defaults,acl       0 0

2、写一个脚本,完成如下功能:

(1) 列出当前系统识别到的所有磁盘设备;

(2) 如磁盘数量为1,则显示其空间使用信息;

否则,则显示最后一个磁盘上的空间使用信息。

#!/bin/bash
#test 2
#
INFO () {
fdisk -l | grep "Disk /dev/sd" | cut -d: -f1| cut -d" " -f2
}
echo "The disk name: "
INFO
NUM=`INFO | wc -l`
 
if [ $NUM -eq 1 ];then
        echo "The sda infomation: "
        fdisk -l /dev/sda | grep "/dev/sda"
else
        echo "Then `INFO | tail -1`infomation: "
        INFO | tail -1 | fdisk -l | grep "`INFO | tail -1`"
fi

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

[root@localhost ~]# mdadm -C /dev/md0 -a yes -c 128  -l 1 -n 2  -x 1  /dev/sdc2 /dev/sdd1 /dev/sdd2
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? 
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# ll /dev/md0 
brw-rw----. 1 root disk 9, 0 7月  27 22:43 /dev/md0
[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdd2[2](S) sdd1[1] sdc2[0]
      1047552 blocks super 1.2 [2/2] [UU]    
unused devices: <none>
[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf
[root@localhost ~]# mdadm -D /dev/md0 
/dev/md0:
        Version : 1.2
  Creation Time : Wed Jul 27 22:43:13 2016
     Raid Level : raid1
     Array Size : 1047552 (1023.17 MiB 1072.69 MB)
  Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent
    Update Time : Wed Jul 27 22:43:23 2016
          State : clean 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1
           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : ea494c0e:ccb70d7f:a2cd0063:655b739c
         Events : 17
    Number   Major   Minor   RaidDevice State
       0       8       34        0      active sync   /dev/sdc2
       1       8       49        1      active sync   /dev/sdd1
       2       8       50        -      spare   /dev/sdd2
[root@localhost ~]# mke2fs -t ext4 /dev/md0 
[root@localhost /]# mkdir backup
[root@localhost /]# mount /dev/md0 /backup/
[root@localhost /]# mdadm -A -s /dev/md0 
[root@localhost /]# vim /etc/fstab

删除此RAID设备的步骤:首先取消挂载:

[root@localhost /]# mdadm -S /dev/md0 
mdadm: Cannot get exclusive access to /dev/md0:Perhaps a running process, mounted filesystem or active volume group?
[root@localhost /]# umount /dev/md0 
[root@localhost /]# mdadm -S /dev/md0 
mdadm: stopped /dev/md0
[root@localhost /]# mdadm --zero-superblock /dev/sdd2
[root@localhost /]# mdadm --zero-superblock /dev/sdd1
[root@localhost /]# mdadm --zero-superblock /dev/sdc2
[root@localhost /]# rm /etc/mdadm.conf 
rm:是否删除普通文件 "/etc/mdadm.conf"?y
[root@localhost /]# rm -fr backup/
[root@localhost /]# fdisk /dev/sdd
[root@localhost /]# fdisk /dev/sdc
[root@localhost /]# partprobe

4、创建由三块硬盘组成的可用空间为2GRAID5设备,要求其chunk大小为256K,文件系统为ext4,开机可自动挂载至/mydata目录。

[root@localhost /]# mdadm -C /dev/md0 -l 5 -n 3 -c 256 /dev/sdb1 /dev/sdb2 /dev/sdd1
mdadm: /dev/sdb1 appears to contain an ext2fs file system
       size=2097152K  mtime=Wed Jul 27 17:55:15 2016
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost /]# ll /dev/md0 
brw-rw----. 1 root disk 9, 0 7月  27 23:14 /dev/md0
[root@localhost /]# mke2fs -t ext4 /dev/md0

[root@localhost /]# mdadm -Ds > /etc/mdadm.conf
[root@localhost /]# mdadm -D /dev/md0 
/dev/md0:
        Version : 1.2
▽Creation Time : Wed Jul 27 23:14:00 2016
     Raid Level : raid5
     Array Size : 2095104 (2046.34 MiB 2145.39 MB)
  Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent
    Update Time : Wed Jul 27 23:14:53 2016
          State : clean 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0
         Layout : left-symmetric
     Chunk Size : 256K
           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 1664368b:42f19d0a:3c6fb687:4a0b3b33
         Events : 18
    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2
       3       8       49        2      active sync   /dev/sdd1
[root@localhost /]# mount /dev/md0 /mydata/
[root@localhost /]# vim /etc/fstab 
[root@localhost mydata]# mdadm -A -s /dev/md0

原创文章,作者:SilencePavilion,如若转载,请注明出处:http://www.178linux.com/41327

(0)
SilencePavilionSilencePavilion
上一篇 2016-08-29
下一篇 2016-08-29

相关推荐

  • 设计模式 ( 十七) 状态模式State(对象行为型)

    设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用if… ellse语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得“力不从心了”。随着增加新的状态或者修改一个状体(if else(或swit…

    Linux干货 2015-07-27
  • 初识Linux

                              初认识Linux 1.1 Linux的登录界面 在虚拟机安装CentOS 7中有提到,我在安装Linux操作系统的时候,采用的是命令行界面的登录方式,当然也有像Windows那样…

    Linux干货 2016-10-27
  • bash(awk递归)N阶【斐波那契数列】多种实现(含递归解析图)

    【版权所有】转载请说明作者【Jev Tes】        【本文导航】        零、关于斐波那契数列        一、输入参数合法性判断       &nbsp…

    Linux干货 2016-11-24
  • Linux 基础(7)——文本处理工具

    cat  tac  rev  more  less           head  tail cut  paste  wc               &nbs…

    2017-07-29
  • bind的安装实现

    首先介绍一下我的测试环境:centos 7+入网(为了试行一下自己的安装文档,才装的虚拟机) 1> yum install bind bind-chroot -y     因为刚刚安装的虚拟机,这里我就不检查了; 2>vim named.conf [root@localhost named]# cat /e…

    Linux干货 2016-03-20
  • 网络班22期学习宣言

    马哥Linux运维学院 学习宣言 亲爱的小伙伴:        欢迎大家报名马哥Linux运维网络学习班,跟随马哥学习Linux技术,成就Linux大牛之梦。在这里,我们不仅可以学习到最优秀的技术课程,还可以跟着追梦的小伙伴们一起学习、一起进步。 为了督促大家一直积极认真努力的学习,请各位同学在评论区写出你的学习宣言。…

    Linux干货 2016-08-03