本部分內容主要講述了高級文件系統的管理,包括設定文件系統配額,設定和管理軟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中依次生成??梢灾付?/span>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.www58058.com/41327