Linux文件系统和磁盘管理
文章目录
- Linux文件系统和磁盘管理
- 文件系统
- 资源虚拟化
- 文件系统的概念
- 文件系统的类型
- 文件系统的结构
- 文件系统的区别
- 文件系统的简单操作
- df
- du
- 磁盘的分割、格式化与挂载
- 分割 fdisk
- 磁盘格式化 mkfs
- 挂载
- mount 的用法
- mount 的查看
- umount
- /etc/fstab 将永久生效
- 磁盘配额 Quota
- 作用和分类
- 相关命令
- quotacheck
- quota
- quotaon
- repquota
- edquota
- xfs_quota
- 实验
- rhel6 quota实验
- rhel7 quota实验
- 逻辑卷管理 LVM
- 作用
- 原理
- 步骤
- 实验
- Linux文件系统和磁盘管理作业
文件系统
资源虚拟化
Linux操作系统内核由6个部分组成:
- 进程调度与管理
- 主存管理和虚存管理
- VFS和文件管理
- 设备管理
- 网络接口和通信
- 用来实现资源抽象
- 资源分配和资源共享等功能。
文件系统的概念
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。
具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
文件系统的类型
查看系统支持的文件系统
ls /lib/modules/$(uname -r)/kernel/fs
系统目前已加载到内存中支持的文件系统
more /proc/filesystems
文件系统的结构
索引式文件系统(indexed allocation)
文件系统内的信息主要有:
- superblock:记录filesystem的整体信息,包括 inode/block的总量、使用量、剩余量, 以及文件系统的格式等;
- inode:记录文件属性,一个文件占一个inode,同时记录该文件数据所在的block 号码;
- block:实际记录文件的内容,若档案太大时,会占用多个 block
文件系统的区别
rhel6
[root@rhel6 ~]# mkfs
mkfs mkfs.ext2 mkfs.ext4 mkfs.msdos
mkfs.cramfs mkfs.ext3 mkfs.ext4dev mkfs.vfat
rhel7
[root@rhel7 ~]# mkfs
mkfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs
mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
EXT4 Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4。Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能,不向下兼容ext3。
XFS 针对海量小文件的存储及超大文件的存储有一些有时,但 EXT 系统相对稳定。XFS 是 Silicon Graphics,Inc. 于 90 年代初开发的文件系统。它至今仍作为 SGI 基于 IRIX 的产品(从工作站到超级计算机)的底层文件系统来使用。现在,XFS 也可以用于 Linux。XFS 的 Linux 版的到来是激动人心的,首先因为它为 Linux 社区提供了一种健壮的、优秀的以及功能丰富的文件系统,并且这种文件系统所具有的可伸缩性能够满足最苛刻的存储需求。
文件系统的简单操作
df
实例:
- 使用-h选项以KB以上的单位来显示,可读性高
[#3#root@rhel6 ~]#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_rhel6-LogVol01 17G 3.0G 13G 19% /
tmpfs 499M 72K 499M 1% /dev/shm
/dev/vda1 477M 58M 390M 13% /boot
/dev/mapper/vg_rhel6-LogVol00 380M 2.3M 354M 1% /home
- 查看全部文件系统:
[#4#root@rhel6 ~]#df -a
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg_rhel6-LogVol01 17535796 3127044 13494936 19% /
proc 0 0 0 - /proc
sysfs 0 0 0 - /sys
devpts 0 0 0 - /dev/pts
tmpfs 510368 72 510296 1% /dev/shm
/dev/vda1 487652 58631 399325 13% /boot
/dev/mapper/vg_rhel6-LogVol00 388480 2335 361569 1% /home
none 0 0 0 - /proc/sys/fs/binfmt_misc
du
实例:
- 查看指定目录所占空间
[#9#root@rhel6 ~]#du -s /var/
140252 /var/
[#10#root@rhel6 ~]#du -sh /var/
137M /var/
- 查看指定目录下的所有文件,包括隐藏文件
[#16#root@rhel6 ~]#du -h /tmp
8.0K /tmp/pulse-oCBy0hGD1JT6
4.0K /tmp/.X11-unix
4.0K /tmp/.esd-0
4.0K /tmp/virtual-root.JyC7Qb
8.0K /tmp/orbit-gdm
4.0K /tmp/.ICE-unix
8.0K /tmp/pulse-q5sECpImz7Ju
48K /tmp
[#15#root@rhel6 ~]#du -ha /tmp
4.0K /tmp/pulse-oCBy0hGD1JT6/pid
0 /tmp/pulse-oCBy0hGD1JT6/native
8.0K /tmp/pulse-oCBy0hGD1JT6
0 /tmp/.X11-unix/X0
4.0K /tmp/.X11-unix
0 /tmp/.esd-0/socket
4.0K /tmp/.esd-0
4.0K /tmp/virtual-root.JyC7Qb
4.0K /tmp/.X0-lock
0 /tmp/orbit-gdm/linc-6c2-0-7846478690c68
0 /tmp/orbit-gdm/bonobo-activation-register-75c59b1ecf3edd6ad04cfcfd00000056.lock
4.0K /tmp/orbit-gdm/bonobo-activation-server-75c59b1ecf3edd6ad04cfcfd00000056-ior
0 /tmp/orbit-gdm/linc-6e5-0-3bda60586d2f0
0 /tmp/orbit-gdm/linc-6bb-0-2bf2fd0bb015c
0 /tmp/orbit-gdm/linc-6e1-0-44f3459db98f9
0 /tmp/orbit-gdm/linc-6d9-0-26db8cdee8dec
0 /tmp/orbit-gdm/linc-6e0-0-7f7b8d4664593
0 /tmp/orbit-gdm/linc-6e4-0-540f978681aee
0 /tmp/orbit-gdm/linc-6d4-0-3a04cbe9566
0 /tmp/orbit-gdm/linc-6d5-0-75caf0f81ab48
8.0K /tmp/orbit-gdm
0 /tmp/.ICE-unix/1723
4.0K /tmp/.ICE-unix
4.0K /tmp/pulse-q5sECpImz7Ju/pid
0 /tmp/pulse-q5sECpImz7Ju/native
8.0K /tmp/pulse-q5sECpImz7Ju
48K /tmp
磁盘的分割、格式化与挂载
新增一颗硬盘时 , 该怎么做 :
- 对磁盘进行分割 , 以建立可用的分区 partition ;
- 对该 partition 进行格式化 ( format ), 以建立系统可用的文件系统 filesystem;
- 若想要仔细一点 , 则可对刚刚建立好的 filesystem 进行检验 ;<fsck, badblocks>
- 在 Linux 系统上 , 需要建立挂载点 ( 目录 ), 并将他挂载上来。
- 如果 ll /dev/ 新建的分区不存在,则使用 partx -a /dev/vdb 让新建的分区被读取生效,或者重启电脑
分割 fdisk
fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区。它采用传统的问答式界面。
语法 fdisk(选项)(参数)
选项
- -b<分区大小>:指定每个分区的大小;
- -l:列出指定的外围设备的分区表状况;
- -s<分区编号>:将指定的分区大小输出到标准输出上,单位为区块;
- -u:搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址;
- -v:显示版本信息。
参数 设备文件:指定要进行分区或者显示分区的硬盘设备文件。
[#20#root@rhel6 ~]#fdisk -lDisk /dev/vda: 21.5 GB, 21474836480 bytes
16 heads, 63 sectors/track, 41610 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d166bDevice Boot Start End Blocks Id System
/dev/vda1 * 3 1018 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/vda2 1018 5179 2097152 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/vda3 5179 41611 18361344 8e Linux LVM
Partition 3 does not end on cylinder boundary.Disk /dev/vdb: 10.7 GB, 10737418240 bytes
16 heads, 63 sectors/track, 20805 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000Disk /dev/mapper/vg_rhel6-LogVol01: 18.4 GB, 18379440128 bytes
255 heads, 63 sectors/track, 2234 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000Disk /dev/mapper/vg_rhel6-LogVol00: 419 MB, 419430400 bytes
255 heads, 63 sectors/track, 50 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
[#21#root@rhel6 ~]#fdisk /dev/vdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x23c41712.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)WARNING: DOS-compatible mode is deprecated. It's strongly recommended toswitch off the mode (command 'c') and change display units tosectors (command 'u').Command (m for help): m <== 输入 m 后 , 就会看到底下这些指令介绍
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition <== 删除一个分区
l list known partition types
m print this menu
n add a new partition <== 新增一个分区
o create a new empty DOS partition table
p print the partition table== 在屏幕上显示分割表
q quit without saving changes<== 不储存离开 fdisk 程序
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit<== 将刚刚的动作写入分割表
x extra functionality (experts only)
Command (m for help): pDisk /dev/vdb: 10.7 GB, 10737418240 bytes
16 heads, 63 sectors/track, 20805 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x23c41712Device Boot Start End Blocks Id SystemCommand (m for help): n
Command actione extendedp primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-20805, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-20805, default 20805):
Using default value 20805Command (m for help): pDisk /dev/vdb: 10.7 GB, 10737418240 bytes
16 heads, 63 sectors/track, 20805 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x23c41712Device Boot Start End Blocks Id System
/dev/vdb1 1 20805 10485688+ 83 LinuxCommand (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.
[#22#root@rhel6 ~]#ls /dev|grep vdb
vdb
vdb1
[root@rhel7 ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x8366bb08.Command (m for help): pDisk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x8366bb08Device Boot Start End Blocks Id SystemCommand (m for help): n
Partition type:p primary (0 primary, 0 extended, 4 free)e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519):
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is setCommand (m for help): pDisk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x8366bb08Device Boot Start End Blocks Id System
/dev/vdb1 2048 20971519 10484736 83 LinuxCommand (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.
磁盘格式化 mkfs
- rhel6实例:查看支持的文件系统;将/dev/vdb1格式化成ext4文件系统
[#23#root@rhel6 ~]#mkfs
mkfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev mkfs.msdos mkfs.vfat
[#24#root@rhel6 ~]#mkfs.ext4 /dev/vdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621422 blocks
131071 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
- rhel7实例:查看支持的文件系统;将/dev/vdb1格式化成xfs文件系统
[root@rhel7 ~]# mkfs
mkfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs
mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
[root@rhel7 ~]# mkfs.xfs /dev/vdb1
meta-data=/dev/vdb1 isize=256 agcount=4, agsize=655296 blks= sectsz=512 attr=2, projid32bit=1= crc=0
data = bsize=4096 blocks=2621184, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
挂载
/etc/fstab
/etc/filesystems: 系统指定的测试挂载文件系统类型 ;
/proc/filesystems:Linux 系统已经加载的文件系统类型。
mount 的用法
-
标准用法
mount -t ext4 /dev/vdb1 /mnt/vdb1
-
远程挂载
mount ip:/xx /xx
mount 172.25.254.250 : /content /mnt
<== 远程挂载案例 -
其他选项:
A.-o loop 挂载镜像文件
- 用法: mount -o loop 被挂载的文件 挂载点
- 例如: mount -o loop rhel-server-6.5-x86_64-dvd.iso /test
B.-o ro 以只读方式挂载
- 用法: mount -o ro 被挂在的设备 挂载点
- 例如: mount -o ro /dev/vdb1 /test
C.-o remount 重新挂载
-
用法: mount -o remount 被挂载的设备 挂载点
-
例如: mount -o remount,rw,auto / <== 重新挂载根目录
mount -o remount,ro newdir <== 重新挂载为只读
D.-t iso9660 挂载CD/DVD
- 用法: mount -t iso9660 被挂载的设备 挂载点
- 例如: mount -t iso9660 /dev/dvdrom /media/dvdrom
mount 的查看
df -h
mount <== 查看设备和目录挂载点的关系
[#27#root@rhel6 ~]#mount
/dev/mapper/vg_rhel6-LogVol01 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/vda1 on /boot type ext4 (rw)
/dev/mapper/vg_rhel6-LogVol00 on /home type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
umount
umount [-fn] 设备文件名与挂载点
umount /mnt
注意事项:
- 对某个挂载点使用多次 mount ,会把之前的内容隐藏起来,只能看到最后一次挂载的设备文件里的内容
- 不要在挂载点里面执行 umount 命令,会报错
- 尽量不要在挂载点里执行 mount 挂载命令
- mount 命令为临时生效
/etc/fstab 将永久生效
是否需要检测:非 0 代表检测,数字越小优先级越高
修改后保存,通过 mount -a
让配置生效
磁盘配额 Quota
如前面介绍章节讲到的类 Unix 系统最初设计理念就让许多人一起使用,多任务的操作系统,但是硬件的资源是固定有限 的,如果出现个小破坏份子不断的创建文件或下载电影,那么硬盘空间总有一天会被占满的吧,这时就需要 quota服务 帮助我们为每个用户限制可以使用的硬盘空间,一旦超出预算就不再允许他们使用。
作用和分类
quota 的磁盘配额可以限制用户的硬盘可用空间或最大创建文件数量,并且还有软/硬限制的区别:
- 软限制:当达到软限制时会提示用户,但允许用户在规定期限内继续使用。
- 硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。
相关命令
quotacheck
quotacheck命令通过扫描指定的文件系统,获取磁盘的使用情况,创建、检查和修复磁盘配额(quota)文件。执行quotacheck指令,扫描挂入系统的分区,并在各分区的文件系统根目录下产生quota.user和quota.group文件,设置用户和群组的磁盘空间限制。
语法 quotacheck(选项)(参数)
选项
- -a:扫描在/etc/fstab文件里,有加入quota设置的分区;
- -d:详细显示指令执行过程,便于排错或了解程序执行的情形;
- -g:扫描磁盘空间时,计算每个群组识别码所占用的目录和文件数目;
- -R:排除根目录所在的分区;
- -u:扫描磁盘空间时,计算每个用户识别码所占用的目录和文件数目;
- -v:显示指令执行过程。
参数 文件系统:指定要扫描的文件系统。
quota
quota命令用于显示用户或者工作组的磁盘配额信息。输出信息包括磁盘使用和配额限制。
语法 quota(选项)(参数)
选项
- -g:列出群组的磁盘空间限制;
- -q:简明列表,只列出超过限制的部分;
- -u:列出用户的磁盘空间限制;
- -v:显示该用户或群组,在所有挂入系统的存储设备的空间限制;
- -V:显示版本信息。
参数 用户或者工作组:指定要显示的用户或者工作组。
quotaon
quotaon命令用于激活Linux内核中指定文件系统的磁盘配额功能。
语法 quotaon(选项)(参数)
选项
- -a:开启在/ect/fstab文件里,有加入quota设置的分区的空间限制;
- -g:开启群组的磁盘空间限制;
- -u:开启用户的磁盘空间限制;
- -v:显示指令指令执行过程。
参数 文件系统:指定要激活磁盘配额功能的文件系统。
repquota
repquota命令以报表的格式输出指定分区,或者文件系统的磁盘配额信息。
语法 repquota(选项)(参数)
选项
- -a:列出在/etc/fstab文件里,有加入quota设置的分区的使用状况,包括用户和群组;
- -g:列出所有群组的磁盘空间限制;
- -u:列出所有用户的磁盘空间限制;
- -v:显示该用户或群组的所有空间限制。
参数 文件系统:要打印报表的文件系统或者对应的设备文件名。
edquota
edquota 命令用于超级用户编辑其他用户的 quota 配额限制
格式为: “ edquota [参数] [用户]”。
参数 作用
- -u 编辑用户的配额限制。
- -g 编辑用户组的配额限制。
- -r 通过 RPC 协议编辑远程的配额。
xfs_quota
xfs_quota 命令用于管理 XFS 文件系统的 quota 硬盘配额
格式为: “ quota [参数] 配额 文件系统 ” 。
参数 作用
- -c 命令 以交换式或参数的形式设置要执行的命令。
- -p 设置提示或报错信息的程序名称,默认为 xfs_quota。
- -x 专家模式,能够对 quota 做更多复杂的配置。
实验
rhel6 quota实验
划分分区/dev/vdb2,格式化成ext4文件系统,并挂载在student家目录下使用,限制磁盘软限制为 3M、磁盘硬限制为 6M、文件软限制为 20 个且文件硬限制为 30 个
- 挂载时需要加上 -o usrquota,grpquota 选项 :mount -o usrquota,grpquota /dev/vdb2 /home/student
- /etc/skel 需要的文件需要复制到家目录下 :cp .bash* .gnome2 .mozilla -r /home/student
- 修改家目录权限 :chown student.student /home/student ;setenforce 0
- 检测:quotacheck -cugm /home/student/ 检测结果 : aquota.group aquota.user <== 只有 root 用户有读写权限
- 激活 :quotaon /home/student
- 打印磁盘配额的报告 :repquota /home/student
- 编辑edquota student
[root@rhel6 ~]# mount -o usrquota,grpquota /dev/vdb2 /home/student
[root@rhel6 ~]# ll /home/student
total 16
drwx------. 2 root root 16384 Jul 1 15:56 lost+found
[root@rhel6 ~]# cd /etc/skel
[root@rhel6 skel]# cp .bash* .gnome* .moz* -r /home/student
[root@rhel6 skel]# ll /home/student -a
total 42
drwxr-xr-x. 5 root root 4096 Jul 1 16:00 .
drwxr-xr-x. 4 root root 1024 Jul 2 2015 ..
-rw-r--r--. 1 root root 18 Jul 1 16:00 .bash_logout
-rw-r--r--. 1 root root 176 Jul 1 16:00 .bash_profile
-rw-r--r--. 1 root root 124 Jul 1 16:00 .bashrc
drwxr-xr-x. 2 root root 4096 Jul 1 16:00 .gnome2
drwx------. 2 root root 16384 Jul 1 15:56 lost+found
drwxr-xr-x. 4 root root 4096 Jul 1 16:00 .mozilla
[root@rhel6 skel]# chown student. /home/student -R
[root@rhel6 skel]# setenforce 0
[root@rhel6 skel]# quotacheck -cugm /home/student
[root@rhel6 skel]# ll /home/student
total 32
-rw-------. 1 root root 6144 Jul 1 16:03 aquota.group
-rw-------. 1 root root 6144 Jul 1 16:03 aquota.user
drwx------. 2 student student 16384 Jul 1 15:56 lost+found
[root@rhel6 skel]# quotaon /home/student
[root@rhel6 skel]# repquota /home/student
*** Report for user quotas on device /dev/vdb2
Block grace time: 7days; Inode grace time: 7daysBlock limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
student -- 48 0 0 9 0 0 [root@rhel6 skel]# edquota student
edquota: WARNING - /dev/vdb2: cannot change current inode allocation
[root@rhel6 skel]# edquota student
[root@rhel6 skel]# repquota /home/student
*** Report for user quotas on device /dev/vdb2
Block grace time: 7days; Inode grace time: 7daysBlock limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
student -+ 48 3072 6144 9 3 6 7days[root@rhel6 skel]# quota student
Disk quotas for user student (uid 500):Filesystem blocks quota limit grace files quota limit grace/dev/vdb2 48 3072 6144 9* 3 6 7days
[root@rhel6 skel]# su - student
[student@rhel6 ~]$ touch file{1..10}
vdb2: write failed, user file limit reached.
touch: cannot touch `file1': Disk quota exceeded
touch: cannot touch `file2': Disk quota exceeded
touch: cannot touch `file3': Disk quota exceeded
touch: cannot touch `file4': Disk quota exceeded
touch: cannot touch `file5': Disk quota exceeded
touch: cannot touch `file6': Disk quota exceeded
touch: cannot touch `file7': Disk quota exceeded
touch: cannot touch `file8': Disk quota exceeded
touch: cannot touch `file9': Disk quota exceeded
touch: cannot touch `file10': Disk quota exceeded
rhel7 quota实验
root用户:
- 查看内核是否支持 quota 功能: dmesg | grep quota
- 查看 quota 程序包是否已经安装: rpm -q quota
- 查看 boot 目录是否支持 quota 功能(noquota 表示暂时不支持): mount|grep boot
- 让/boot 目录支持 quota 功能: vim /etc/fstab 属性中添加usrquota
- 重启主机后即可生效: reboot
- 查看 boot 目录是否支持 quota 功能(usrquota 表示已经支持): mount|grep boot
- 创建一个用于 quota 实验的用户 tom: useradd tom && echo uplooking|passwd tom
- 需要允许其他用户对/boot 目录写入文件操作: chmod -Rf o+w /boot
- 使用 xfs_quota 命令设置对 tom 用户在/boot 目录的磁盘配额,具体要求如下:
使用 quota 专家模式限制磁盘软限制为 3m、磁盘硬限制为 6m、文件软限制为 3 个且文件硬限制为 6 个。 获取当前/boot 目录上的 quota 配额限制
xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=3 ihard=6 tom' /boot
xfs_quota -x -c report /boot
切换至 tom 用户: su - tom
- 正常创建了一个为 5M 的文件: dd if=/dev/zero of=/boot/tom bs=5M count=1
- 创建 8M 文件时强制终止并报错了: dd if=/dev/zero of=/boot/tom bs=8M count=1
- 查看当前用户的 quota 限制(显示硬盘配额已占满): quota
切换至root用户:exit
- 编辑 tom 的配额限制,将硬盘的硬限制修改为 8m(8192k): edquota -u tom
切换至 tom 用户: su - tom
- 再来创建 8m 的文件就不会有问题了: dd if=/dev/zero of=/boot/tom bs=8M count=1
[root@rhel7 ~]# dmesg|grep quota
[ 0.836809] VFS: Disk quotas dquot_6.5.2
[root@rhel7 ~]# rpm -q quota
quota-4.01-11.el7.x86_64
[root@rhel7 ~]# mount|grep boot
/dev/vda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
[root@rhel7 ~]# vim /etc/fstab
UUID=abbadca9-0a0d-453f-b713-d3d978cd6909 /boot xfs defaults,usrquota 1 2
[root@rhel7 ~]# reboot
[root@rhel7 ~]# mount|grep boot
/dev/vda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,usrquota)
[root@rhel7 ~]# useradd tom
[root@rhel7 ~]# passwd tom
Changing password for user tom.
New password:
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.
[root@rhel7 ~]# chmod -Rf o+w /boot
[root@rhel7 ~]# ll -d /boot
dr-xr-xrwx. 3 root root 4096 Jun 27 03:59 /boot
[root@rhel7 ~]# xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=3 ihard=6 tom' /boot
[root@rhel7 ~]# xfs_quota -x -c report /boot
User quota on /boot (/dev/vda1)Blocks
User ID Used Soft Hard Warn/Grace
---------- --------------------------------------------------
root 120384 0 0 00 [--------]
tom 0 3072 6144 00 [--------][root@rhel7 ~]# su - tom
Last login: Fri Jul 1 02:51:33 EDT 2016 on pts/0
[tom@rhel7 ~]$ dd if=/dev/zero of=/boot/tom bs=5M count=1
1+0 records in
1+0 records out
5242880 bytes (5.2 MB) copied, 0.0270144 s, 194 MB/s
[tom@rhel7 ~]$ dd if=/dev/zero of=/boot/tom bs=8M count=1
dd: error writing ‘/boot/tom’: Disk quota exceeded
1+0 records in
0+0 records out
6291456 bytes (6.3 MB) copied, 0.218067 s, 28.9 MB/s
[tom@rhel7 ~]$ quota
Disk quotas for user tom (uid 1001):Filesystem blocks quota limit grace files quota limit grace/dev/vda1 6144* 3072 6144 6days 1 3 6
[tom@rhel7 ~]$ exit
logout
[root@rhel7 ~]# edquota -u tom
Disk quotas for user tom (uid 1001):Filesystem blocks soft hard inodes soft hard/dev/vda1 8192 3072 8192 1 3 6
[root@rhel7 ~]# xfs_quota -x -c report /boot
User quota on /boot (/dev/vda1)Blocks
User ID Used Soft Hard Warn/Grace
---------- --------------------------------------------------
root 120384 0 0 00 [--------]
tom 6144 3072 8192 00 [6 days][root@rhel7 ~]# su - tom
Last login: Fri Jul 1 02:58:22 EDT 2016 on pts/0
[tom@rhel7 ~]$ dd if=/dev/zero of=/boot/tom bs=8M count=1
1+0 records in
1+0 records out
8388608 bytes (8.4 MB) copied, 0.267325 s, 31.4 MB/s
[tom@rhel7 ~]$ exit
logout
逻辑卷管理 LVM
逻辑卷管理 (Logical Volume Manager)
作用
当用户根据实际情况需要对分区增加、减小等调整时,经常会受到硬盘 “ 灵活性 ” 的限制,很不方便。
逻辑卷管理器则是在磁盘分区与文件系统之间添加的逻辑层,提供一个抽象的卷组,使得管理者可以忽略底层磁盘布局, 从而实现对分区的灵活动态调整,这毫不夸张,所以红帽 RHEL7 系统已经默认启用了 LVM(Logical Volume Manager) 机制。
原理
将物理分区做成 pv ;将 pv 组合成 vg ;再从 vg 分出 lv 分区 -->pv–>vg–>lv
- 物理卷(PV,Physical Volume ): 整个硬盘设备或使用 fdisk 命令建立的硬盘分区。
- 卷组(VG,Volume Group ) :由一个或多个物理卷(PV)组成的整体
- 逻辑卷(LV,Logical Volume ):从卷组(VG)出切割出的空间来用于创建文件系统,大小由 PE 的个数决定。
步骤
实验
实验:linear 目前用户的映射目标为linear型,线性型,/dev/vdb1 pv1 100M;/dev/vdb2 pv2 100M;/dev/vdb3 pv 3 100M----->myvg 300M----->lv1-linear 20M;lv2-linear 60M现在lv1-linear不够用了,需要拓展60M的空间,lv2-linear也不够用了,需要拓展30M的空间,如何做才能提高读写速度?
root@iscsi1-f15 ~]# dmsetup table|grep my
myvg-lv1--linear: 0 40960 linear 252:21 2048
myvg-lv1--linear: 40960 32768 linear 252:21 165888
myvg-lv1--linear: 73728 90112 linear 252:22 2048
myvg-lv2--linear: 0 122880 linear 252:21 43008
myvg-lv2--linear: 122880 65536 linear 252:22 92160
–------------------------------------------------------------------------
[root@iscsi1-f15 ~]# dmsetup table|grep myvg
myvg-lv1--linear: 0 73728 linear 252:25 2048
myvg-lv1--linear: 73728 90112 linear 252:25 75776
myvg-lv2--linear: 0 122880 linear 252:25 165888
myvg-lv2--linear: 122880 65536 linear 252:25 288768
[root@iscsi1-f15 ~]# fdisk /dev/vdb --->vdb[123] 100M
[root@iscsi1-f15 ~]# pvcreate /dev/vdb[123]
[root@iscsi1-f15 ~]# vgcreate myvg /dev/vdb[123]
[root@iscsi1-f15 ~]# lvcreate -L 20M myvg -n lv1-linear
[root@iscsi1-f15 ~]# lvcreate -L 60M myvg -n lv2-linear
[root@iscsi1-f15 ~]# mkfs.ext4 /dev/myvg/lv1-linear
[root@iscsi1-f15 ~]# mkfs.ext4 /dev/myvg/lv2-linear
[root@iscsi1-f15 ~]# mount /dev/myvg/lv1-linear /opt/lv1
[root@iscsi1-f15 ~]# mount /dev/myvg/lv2-linear /opt/lv2
[root@iscsi1-f15 ~]# lvextend -L +60M /dev/myvg/lv1-linear
[root@iscsi1-f15 ~]# lvextend -L +30M /dev/myvg/lv2-linear
[root@iscsi1-f15 ~]# resize2fs /dev/myvg/lv1-linear
[root@iscsi1-f15 ~]# resize2fs /dev/myvg/lv2-linear
[root@iscsi1-f15 ~]# dmsetup table|grep my
myvg-lv1--linear: 0 40960 linear 252:21 2048
myvg-lv1--linear: 40960 32768 linear 252:21 165888
myvg-lv1--linear: 73728 90112 linear 252:22 2048
myvg-lv2--linear: 0 122880 linear 252:21 43008
myvg-lv2--linear: 122880 65536 linear 252:22 92160
–------------------------------------------------------------------------
[root@iscsi1-f15 ~]# fdisk /dev/vdb --->vdb4 500M vdb5 500M
[root@iscsi1-f15 ~]# partx -a /dev/vdb
[root@iscsi1-f15 ~]# pvcreate /dev/vdb[45]
[root@iscsi1-f15 ~]# vgextend myvg /dev/vdb[45]
[root@iscsi1-f15 ~]# pvmove /dev/vdb1 /dev/vdb4
[root@iscsi1-f15 ~]# pvmove /dev/vdb2 /dev/vdb4
[root@iscsi1-f15 ~]# pvmove /dev/vdb4 /dev/vdb5
[root@iscsi1-f15 ~]# dmsetup table|grep myvg
myvg-lv1--linear: 0 73728 linear 252:25 2048
myvg-lv1--linear: 73728 90112 linear 252:25 75776
myvg-lv2--linear: 0 122880 linear 252:25 165888
myvg-lv2--linear: 122880 65536 linear 252:25 288768
Linux文件系统和磁盘管理作业
- 分别在rhel6和rhel7上划分/dev/vdb磁盘,要求,/dev/vdb1大小为1G,/dev/vdb2大小为2G;创建对应操作系统默认的文件系统,rhel6默认ext4,rhel7默认xfs。
- rhel6上将/dev/vdb2挂载在student家目录下使用,限制磁盘软限制为 3M、磁盘硬限制为 6M、文件软限制为 20 个且文件硬限制为 30 个
- rhel7上完成:
root用户:
1. 查看内核是否支持 quota 功能:2. 查看 quota 程序包是否已经安装:3. 查看 boot 目录是否支持 quota 功能(noquota 表示暂时不支持):4. 让/boot 目录支持 quota 功能:5. 重启主机后即可生效:6. 查看 boot 目录是否支持 quota 功能(usrquota 表示已经支持):7. 创建一个用于 quota 实验的用户 tom:8. 需要允许其他用户对/boot 目录写入文件操作:9. 使用 xfs_quota 命令设置对 tom 用户在/boot 目录的磁盘配额,具体要求如下:
使用 quota 专家模式限制磁盘软限制为 3m、磁盘硬限制为 6m、文件软限制为 3 个且文件硬限制为 6 个。 获取当前/boot 目录上的 quota 配额限制
切换至 tom 用户:
- 正常创建了一个为 5M 的文件:
- 创建 8M 文件时强制终止并报错了:
- 查看当前用户的 quota 限制(显示硬盘配额已占满):
切换至root用户:
- 编辑 tom 的配额限制,将硬盘的硬限制修改为 8m(8192k):
切换至 tom 用户:
- 再来创建 8m 的文件就不会有问题了:
- rhel6和rhel7上完成lvm逻辑卷管理,要求:
1)/dev/vdb1 100M;/dev/vdb2 100M;/dev/vdb3 100M;/dev/vdb4 100M2) 将/dev/vdb[1,2,3,4]做成pv3)/dev/vdb1,/dev/vdb2组成vgtest300M4)从vgtest中划分50M的lvtest15)将lvtest1挂载到/mnt下使用6)拓展lvtest1至200M7)拓展lvtest1至400M8)缩小lvtest1至50M