本部分内容主要讲述了高级文件系统的管理,包括设定文件系统配额,设定和管理软RAID设备,配置逻辑卷,设定LVM快照和btrfs文件系统。其中文件系统配额和软RAID在企业中使用的频率并不很高,作为熟练即可,而逻辑卷的创建和LVM快照是非常重要的内容,必须精通并完全理解其原理。至于btrfs文件系统是新兴的一种技术,作为了解即可。
一、知识整理
1、文件系统配额综述:在内核中执行;以文件系统为单位启用;对不同组或者用户的策略不同,是根据设置配额的目录下的文件的所属主和所属组进行空间限定;可以根据块或者节点进行限制,包括软限制和硬限制。
2、RAID:redundant arrays ofinexpensive(independent) disks
1988年university of California-Berkeley发明;多个磁盘合成一个阵列来提供更好的性能或者冗余性。RAID实现方式:外接式磁盘阵列:通过扩展卡提供适配能力;内接式RAID:主板阶乘RAID控制器,安装OS之前在BIOS中配置;软RAID:software RAID:在企业基本无应用,但可作为测试进行试验。
3、用dd命令创建空文件,对文件格式化,挂载,即可是使用文件作为存储设备。centos6中最多8个,centos7中依次生成。可以指定loop设备与FILE的关系,使用命令losetup /dev/loop# /testdir/FILE指定FILE为loop2,再挂载可以使用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/fstab,defaults,usrquota,grpquota
重新挂载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级别:常用级别5、6、10
RAID 0:条带卷:
分散存储,并行放置硬盘;最少磁盘数2;提高读写能力,没有冗余能力;可用空间N*min(s1,s2…)。
RAID 1:镜像卷:
读性能没有提升,写能力略有下降;可用空间:1*min(s1,s2…);有冗余能力;最少磁盘数量2,数量太多也不好。
RAID 4:
最少三块磁盘,单块磁盘作为校验盘,使用异或机制,不允许一个以上损坏,访问压力较大。
RAID 5:
循环放置校验码;分为左对称和右对称;读写能力有提升,可用空间(N-1)*min(s1,s2…);有一块硬盘的冗余能力;最少磁盘数量3个。
RAID 6:
两块校验盘,最少磁盘数4;可用空间(N-2)*min(s1,s2…);有容错能力,读写能力提升;
RAID 10 :混合类型
相对01损坏可能性更小一些,读写能力提升,有容错能力,每组镜像最多只能坏一块;最少4个磁盘,可用空间N*min(s1,s2…)/2
JBOD:just a bunch of disks
将多块磁盘空间合并一个大的连续的空间使用。
3、实现软RAID:mdadm:模式化的工具:
mdadm [] raiddevice(/dev/md#) [] component-device(任意块设备)
直接支持的级别有1、4、5、6、10,其他组合类型可以间接实现;
模式:创建模式:-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、创建一个可用空间为1G的RAID1设备,要求其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、创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其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