linux培训(第三期)
本期培训的内容有linux下的磁盘管理,LVM(逻辑卷管理),quota(磁盘配额)
1.磁盘管理
1.1,磁盘分区介绍
无论是什么操作系统分区是一项基本的必备知识,硬盘功能极为简单,它们被用来可靠的存储及检索数据。随着磁盘容量越来越大,磁盘管理变得越来越重要。
磁盘标识,在Linux中,每一个硬件设备都映射到一个系统的文件,对于硬盘、光驱等IDE或SCSI设备也不例外。
Linux把各种IDE设备分配了一个由hd前缀组成的文件;而对于各种SCSI设备,则分配了一个由sd前缀组成的文件。例如,第一个IDE设备,Linux就定义为hda;第二个IDE设备就定义为hdb;下面以此类推。而SCSI设备就应该是sda、sdb、sdc等。
分区,为了方便管理,提高磁盘的使用效率,需要将磁盘进行分区,就是将一个驱动器变成多个驱动器。
磁盘格式化,格式化又称“制作文件系统系统”,它是一个将信息写入驱动器,在未经格式化的驱动器的空白空间中建立秩序的过程。驱动器上极小的一部分可用空间被用来存储与文件系统有关的数据,这可以被视为管理费用。文件系统将剩余空间分割成小块的,大小统一的段,这些被称为块。
1.2,磁盘的命名规则
IDE设备命名如下:
/dev/hda 第一块IDE硬盘
/dev/hdb 第二块IDE硬盘
SCSI设备命名如下:
/dev/sda 第一块SCSI硬盘
/dev/sdb 第二块SCSI硬盘
1.3,分区工具介绍
* fdisk,是linux常用的分区工具。
Fdisk主要参数如下:
fdisk -l 查看磁盘信息
fdisk /dev/sda 对磁盘分区
*对大于2TB的磁盘进行分区
由于MBR分区表只支持2T磁盘,所以大于2T的磁盘必须使用GPT分区表,具体方法如下:
GPT格式的磁盘相当于原来MBR磁盘中原来保留4个partition table的4*16个字节,只留第一个16个字节,类似于扩展分区,真正的partition table在512字节之后,GPT磁盘没有四个主分区的限制。
但fdisk不支持GPT,我们可以使用parted来对GPT磁盘操作。
1.4实验
parted>
parted>select sdb 假设磁盘为sdb
parted>mklabel gpt 将MBR磁盘格式化为GPT
#parted>mklabel msdos 将GPT磁盘转化为MBR磁盘
parted>mkpart primary 0 100 划分一个起始位置为,大小为100M的主分区
parted>mkpart primary 100 200 划分一个起始位置为100M,大小为100M的主分区
#parted>mkpart primary 0 -1 将整块磁盘分成一个分区
parted>print 打印当前分区
parted>quit 退出
在parted里边不支持ext3的文件系统,所以如果要使用的话,要退出parted进行格式化。
1.5,其他常用的分区工具:
cfdisk
partx
qtparted
sfdisk
2, LVM(逻辑卷管理)
2.1,LVM介绍
在对磁盘分区的时候,我们需要对磁盘的分区大小进行规划,不但要考虑当前某个分区所需要的容量,还要考虑到该分区以后的数据增长量。因为如果估计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。
完美的解决方法应该是在不影响系统的正常运行的前提下可以自如对文件系统的大小进行调整,可以实现文件系统跨越不同磁盘和分区。linux提供了这样的解决方案就是LVM(逻辑卷管理)。
逻辑卷的实现原理:它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volume group),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。
LVM的一些基本概念
物理存储介质(The physical media)
这里指系统的存储设备:硬盘,如:/dev/hda、/dev/sda等等,是存储系统最低 层的存储单元。
物理卷(physical volume)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logical volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PE(physical extent)
每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。LE(logical extent)
逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
2.2创建和管理LVM
(1) 创建PV(物理卷)
通过pvcreate命令创建物理卷
#pvcreate /dev/sdb
或者使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是一样的,区别仅仅是LVM的分区类型为8e。然后通过pvcreate命令创建PV。
可以使用pvdisplay命令来查看组成LVM卷的物理卷。
(2)创建VG(卷组)
卷组就是由一个或者多个硬盘驱动器上的多个物理(PV)所构成的一个集合,可以把现有的PV创建到一个VG上。当需要过多的PV时,直接添加到VG上即可。
通过vgcreate命令创建卷组
#vgcreate testvg /dev/sdb1
(3)创建LV(逻辑卷)
创建逻辑卷的命令为lvcreate:
# lvcreate -L 50M –n testlv testvg
该命令就在卷组testvg上创建名字为testlv,大小为的逻辑卷,并且设备入口为/dev/testvg/testlv(testvg为卷组名,testlv为逻辑卷名)。如果希望创建一个使用全部卷组的逻辑卷,则需要首先察看该卷组的PE数,然后在创建逻辑卷时指定:
# vgdisplay testvg| grep "Total PE"
Total PE 45230
# lvcreate -l 45230 testvg -n testlv
(4)使用LVM
在lv上创建文件系统
#mkfs.ext3 /dev/testvg/testlv
挂载硬盘
#mount /dev/testvg/testlv /mnt
(5)扩张存储空间
#pvcreate /dev/sdb2
#vgextend testvg /dev/sdb2 增加pv到vg
#umont /mnt
#lvextend -L+50M /dev/testvg/testlv 扩张lv
#e2fsck -f /dev/testvg/testlv
#resize2fs /dev/testvg/testlv 扩张文件系统
#mount /dev/testvg/testlv /mnt
(6)缩小存储空间
#umount /mnt
#e2fsck -f /dev/testvg/testlv
#resize2fs /dev/testvg/testlv 50M
#lvresize -L 50M /dev/testvg/testlv
#mount /dev/testvg/testlv /mnt
3,磁盘配额
3.1磁盘配额介绍
在linux系统中,由于是多人多任务的环境,所以会有多人共同使用一个硬盘空间的情况发生,如果其中有少数几个使用者大量的占掉了硬盘空间的话,那势必压缩其它使用者的使用权力!因此管理员应该适当的开放硬盘的权限给使用者,以妥善的分配系统资源!
3.2磁盘配额的用途
quota比较常使用的几个情况是:
针对Web服务器,例如:每个人的网页空间的容量限制!
针对Mail服务器,例如:每个人的邮件空间限制。
针对File服务器,例如:每个人最大的可用网络硬盘空间。
3.3 quota相关概念
磁盘配额限制:针对用户占用磁盘大小限制与用户拥有的文件数数量限制;
软限制与硬限制:
soft:软限制,超出这个限制就会收到警告信息,要比hard小;
hard:硬限制,磁盘空间或文件数量的最大值,绝对不能超这个限制;
宽限时间:当用户使用空间大小或文件数量超过了soft limit,但还没达到hard limit时,这个宽限时间就会启动,当用户将空间大小或文件数量降低到soft limit之下时,那么宽限时间就会自动取消;
用户限制与组限制:Linux磁盘配额可以针对用户或组来进行配额。
3.4 quota相关命令
1)quota命令:作用显示磁盘已使用的空间与限制
[root@linux ~]# quota [-uvsl] [username]
[root@linux ~]# quota [-gvsl] [groupname]
参数:
-u:后面可以接username,表示显示出该使用者的quota限制值。若不接username,表示显示出执行者的quota限制值。
-g:后面可接groupname,表示显示出该群组的quota限制值。
-v:显示每个filesystem的quota值;
-s:可选择以inode或磁盘容量的限制值来显示;
-l:仅显示出目前本机上面的filesystem的quota值。
2) quotacheck命令:检查磁盘的使用空间与限制
[root@linux ~]# quotacheck [-avug] [/mount_point]
参数:
-a:扫瞄所有在/etc/mtab内,含有quota支持的filesystem,加上此参数,/mount_point可不必写,因为扫瞄所有的filesystem了嘛!
-u:针对使用者扫瞄档案与目录的使用情况,会建立aquota.user
-g:针对群组扫瞄档案与目录的使用情况,会建立aquota.group
-v:显示扫瞄过程的信息;
-M:『强制』进行quotacheck的扫瞄。
3)edquota命令:编辑用户或群组的quota
[root@linux ~]# edquota [-u username] [-g groupname]
[root@linux ~]# edquota -t <==修改恕限时间
[root@linux ~]# edquota -p username_demo -u username
参数:
-u:后面接账号名称。可以进入quota的编辑画面(vi)去设定username的限制值;
-g:后面接群组名称。可以进入quota的编辑画面(vi)去设定groupname的限制值;
-t:可以修改恕限时间(就是超过quota的soft limit 值后,还能使用硬盘的宽限期限)
-p:复制范本,将源用户的quota设置套用至其他用户或群组。如[root@linux ~]# edquota -p user1 -u user2
4) quotaon命令:开启磁盘空间限制
[root@linux ~]# quotaon [-avug]
参数:
-a 开启在/ect/fstab文件里,有加入quota设置的分区的空间限制。
-g 开启群组的磁盘空间限制。
-u 开启用户的磁盘空间限制。
-v 显示指令指令执行过程
5) quotaoff命令:关闭磁盘空间限制
[root@linux ~]# quotaoff [-avug]
参数:
-a 关闭在/etc/fstab文件里,有加入quota设置的分区的空间限制。
-g 关闭群组的磁盘空间限制。
-u 关闭用户的磁盘空间限制。
-v 显示指令执行过程
[root@linux ~]# repquota -a [-vug]
参数:
-a:直接到/etc/mtab搜寻具有quota标志的filesystem,并报告quota的结果;
-v:输出所有的quota结果,而非仅下达指令者自己的quota限值;
-u:显示出使用者的quota限值(这是默认值);
-g:显示出个别群组的quota限值。
3.5 quota实验
磁盘配额的步骤:
1) 创建两个用户
2) 修改/etc/fstab文件
3) 重新挂载文件系统
4) 创建配额文件
5) 设置配额限制
6) 开启配额限制
7) 设置开机启用quota配额
1)创建两个实验账户
-
[root@linux ~]# useradd -m user1
[root@linux ~]# useradd -m user2
[root@linux ~]#ls /home
user1 user2
2)修改/etc/fstab文件,让分区支持quota,本文针对/home做配额,在第4个字段后面加上“,usrquota,grpquota”,其中usrquota是针对用户进行限额,grpquota是针对组进行限额。
-
[root@linux ~]# vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-hda5 swap swap defaults 0 0
3)重新加载文件系统
有两种方法:一就是重新开机(reboot),建议使用;二就是重新挂载文件系统;我这里采用第二种.
-
[root@linux ~]#mount -o remount /dev/sda6
4)创建配额文件
-
[root@linux ~]# quotacheck -cumg /home
[root@rhel5 ~]# ls /home
aquota.group aquota.user user1 user2
5)设置配额限制
-
[root@linux ~]# edquota -u user1 //对user1用户进行配额限制设置
Disk quotas for user user1 (uid 502):
Filesystem blocks soft hard inodes soft hard
/dev/hda6 32 25000 30000 4 0 0
// 注意一下,/dev/hda6是那一个分区;blocks是这一个分区用了多少空间;soft就是前面说的软限制,再强调一下这个值一定要比hard值要小;这里的单位是 Kbytes,别搞错了。
(inodes soft hard )这后面的这一部分是针对文件数量来做限制的,由于不好控制,一般都是限制空间大小。
[root@linux ~]# edquota -p user1 -u user2 //装user1的配额设置复制给user2
[root@linux ~]# edquota -g qgroup
Disk quotas for group qgroup (gid 502):
Filesystem blocks soft hard inodes soft hard
/dev/hda6 64 55000 60000 8 0 0
[root@linux ~]# edquota –t //设置超出软限制后的宽限时间,这里给改成3天;
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hda6 3days 7days
[root@linux ~]# quota -vg qgroup //查询一下组配额设置有没有设置进去
Disk quotas for group qgroup (gid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda6 64 550000 600000 8 0 0
[root@linux ~]# quota -vu user1 user2 //查询一下用户配额设置有没有设置进去
Disk quotas for user user1 (uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda6 32 25000 30000 4 0 0
Disk quotas for user user2 (uid 503):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda6 32 25000 30000 4 0 0
6)启用quota的限额
-
[root@linux ~]# quotaon -avug
/dev/hda6 [/home]: group quotas turned on
/dev/hda6 [/home]: user quotas turned on
//看到上面有个 turned on 的出现,就是成功的意思!
7)设置开机启用quota配额
-
[root@linux ~]# vi /etc/rc.d/rc.local
/sbin/quotaon –avug //在后面加上这一句
8)显示更完整的quota结果报告
-
[root@linux ~]# repquota -aug