Linux学习笔记12—磁盘管理

 

1、查看磁盘或目录的容量node

一、  df命令linux

做用:查看已挂载磁盘的总容量、使用容量、剩余容量等,能够不加任何参数,默认是按k为单位显示的安全

参数:bash

-I : 查看inodes使用情况服务器

-h: 使用合适的单位显示,例如 ‘G’app

-k: 以K 为单位显示async

-m: 以 M 为单位显示工具

注意:/dev/shm为内存挂载点,若是你想把文件放到内存里,就能够放到/dev/shm/目录下测试

二、  du命令ui

做用:用来查看某个目录或文件所占空间大小.

格式:du [-abckmsh] [文件或者目录名] 经常使用的参数有:

-a: 所有文件与目录大小都列出来; 若是不加任何选项和参数只列出目录(包含子目录)大小。

若是du不指定单位的话,默认显示单位为K.

“-b” 列出的值以bytes为单位输出。

“-k” 以KB为单位输出,和默认不加任何选项的输出值是同样的。

“-m” 以MB为单位输出

“-h” 系统自动调节单位,例如文件过小可能就几K,那么就以K为单位显示,若是大到几G,则就以G为单位显示。

“-c” 最后加总,最后显示文件的总用量。

“-s” 只列出总和,不显示具体的详细信息。

三、  fdisk命令

做用:是Linux下硬盘的分区工具,只能划分小于2T的分区。

格式:fdisk [-l ] [设备名称] 选项只有一个。

“-l” 后边不跟设备名会直接列出系统中全部的磁盘设备以及分区表,加上设备名会列出该设备的分区表。

注意:

“fdisk” 若是不加 “-l” 则进入另外一个模式,在该模式下,能够对磁盘进行分区操做。

分区经常使用的几个选项:

‘m’ 会列出经常使用的命令:

“p” 打印当前磁盘的分区状况。

‘n’ 创建一个新的分区。

‘w’ 保存操做。

‘q’ 退出。

‘d’ 删除一个分区

(在linux中最多只能建立4个主分区,那若是你想多建立几个分区如何作?很容易,在建立完第三个分区后,建立第四个分区时选择扩展分区。)这时候再分区和之前有区别了,再也不选择是主分区仍是扩展分区了,而是直接定义大小。当分完三个主分区后,第四个扩展分区须要把剩余的磁盘空间所有划分给扩展分区,否则的话剩余的空间会浪费,由于分完扩展分区后,再划分新的分区时是在已经划分的扩展分区里来分的)

若是把第一个分区分为扩展分区,而且把所有空间都分给扩展分区的话,再继续分区的话,会提示的分区类型为主分区仍是逻辑分区(logical), 用 ‘l’ 表示逻辑分区,逻辑分区的id是从5开始的,由于前四个id为主分区或者扩展分区。

2、格式化磁盘分区

一、 mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4
这几个命令的做用都同样。
mke2fs 经常使用选项
‘-b’ 分区时设定每一个数据区块占用空间大小,目前支持1024, 2048 以及4096 bytes每一个块。若是超过4096则设备不能正常挂载。
‘-i’ 设定inode的大小
‘-N’ 设定inode数量,有时使用默认的inode数不够用,因此要自定设定inode数量。
‘-c’ 在格式化前先检测一下磁盘是否有问题,加上这个选项后会很是慢
‘-L’ 预设该分区的标签label
‘-j’ 创建ext3格式的分区,若是使用mkfs.ext3 就不用加这个选项了
‘-t’ 用来指定什么类型的文件系统,能够是ext2, ext3 也能够是 ext4.
例如:
Mke2fs –t ext4 /dev/sda1等价于mkfs.ext4 /dev/sda1
二、 e2label 命令
做用:用来查看或修改分区的标签

3、磁盘的挂载/卸载

在挂载某个分区前须要先创建一个挂载点,这个挂载点是以目录的形式出现的。一旦把某一个分区挂载到了这个挂载点(目录)下,那么再往这个目录写数据使,则都会写到该分区中。这就须要你注意一下,在挂载该分区前,挂载点(目录)下必须是个空目录。其实目录不为空并不影响所挂载分区的使用,可是一旦挂载上了,那么该目录下之前的东西就不能看到了。只有卸载掉该分区后才能看到。

一、  mount 命令

格式:mount 选项 挂载的硬盘  挂载位置

做用:若是什么都不加则能够查看当前系统已经挂载的全部分区,以及分区文件系统的类型,挂载点和一些选项等信息,因此你若是想知道某个分区的文件系统类型直接用该命令查看便可

经常使用选项:

-a: 把/etc/fstab中出现的全部磁盘分区挂载上

-t: 选项用来指定挂载的分区类型,默认不指定会自动识别

-o: 选项用来指定挂载的分区有哪些特性,即 “/etc/fatab” 配置文件中第四列的那些选项

二、/etc/fstab

一、  该文件是系统启动时须要挂载的各个分区。第一列就是分区的标识,能够写成分区LABEL/分区的UUID/分区名;第二列是挂载点;第三列是分区格式;第四列是mount的一些挂载参数,通常状况下,直接写defaults便可;第五列数字表示是否被dump备份,是的话这里就是1,不然就是0;第六列是开机时是否自检磁盘。1,2都表示检测,0表示不检测,在Redhat/CentOS中,这个1,2还有个说法,/ 分区必须设为1,并且整个fstab中只容许出现一个1,这里有一个优先级的说法。1比2优先级高,因此先检测1,而后再检测2,若是有多个分区须要开机检测那么都设置成2吧,1检测完了后会同时去检测2。

二、  第四列经常使用参数介绍

“auto/noauto” : 开机自动挂载/不自动挂载;

“default” : 按照大多数永久文件系统的缺省值设置挂载定义,它包含了rw, suid, dev, exec, auto, nouser, async

“ro” : 按只读权限挂载 ;

“rw” : 按可读可写权限挂载 ;

“exec/noexec” : 容许/不容许可执行文件执行,但千万不要把根分区挂载为noexec,那就没法使用系统了,连mount命令都没法使用了,这时只有从新作系统了;

“user/nouser” : 容许/不容许root外的其余用户挂载分区,为了安全考虑,请用nouser ;

“suid/nosuid” : 容许/不容许分区有suid属性,通常设置nosuid ;

“usrquota” : 启动使用者磁盘配额模式,磁盘配额相关内容在后续章节会作介绍;

“grquota” : 启动群组磁盘配额模式;

三、  blkid 命令

做用:获取各分区的UUID:

经过UUID或者LABEL 挂载磁盘分区;这样能够避免由于硬盘拆下以后在从新接入而接入错误的位置的时候出现的问题

若是想让某个分区开机后就自动挂载,有两个办法能够实现:

u  在 /etc/fstab 中添加一行;

u  把挂载命令写到 /etc/rc.d/rc.local 文件中去,阿铭会常常把想要开机启动的命令加到这个文件中。系统启动完后会执行这个文件中的命令,因此只要你想开机后运行什么命令通通写入到这个文件下面吧,直接放到最后面便可,阿铭把挂载的命令放到该文件的最后一行了:

四、  umonut 命令

做用:卸载挂载的磁盘

注意:后边能够跟挂载点,也能够跟分区名(/dev/hdb1), 可是不能够跟LABEL和UUID.

若是卸载的时候是在当前目录下是不能卸载成功的,可是加上参数 –l  以后就能够卸载成功;或者切换到其余的目录也能够卸载成功

4、创建一个swap文件增长虚拟内存

基本的思路就是:创建swapfile -> 格式化为swap格式 -> 启用该虚拟磁盘。

一、打开终端,切换到root用户,输入:free -m查看内存状态

[root@lxt lxt]# free -m
             total       used       free     shared    buffers     cached
Mem:           498        357        141          0         27        162
-/+ buffers/cache:        167        331
Swap:         1023          0       1023

二、输入df -B M(或df -m)查看各分区当前使用状况

[root@lxt lxt]# df -B M
文件系统               1M-块        已用     可用 已用% 挂载点
/dev/mapper/vg_lxt-lv_root
                        12875M     4059M     8162M  34% /
/dev/sda7                 194M       14M      170M   8% /boot
tmpfs                     250M        1M      249M   1% /dev/shm
(fdisk -l可查看磁盘分区状况)

三、选择一个较大的分区,创建分区文件:

[root@lxt lxt]# dd if=/dev/zero of=/swapadd bs=1024 count=524288
524288+0 records in
524288+0 records out
536870912 bytes (537 MB) copied,13.0709 秒,41.1 MB/秒

以上命令在根目录新建一个名为swapadd,大小为512M的虚拟内存文件;if 指定指定源,基本上除了 “/dev/zero” 外基本上不会写别的,而/dev/zero 是UNIX系统特有的一个文件,它能够提供源源不断的 “0”;“of” 指定目标文件, “bs” 定义块的大小, “count” 定义块的数量,这两个参数的多少决定了目标文件的大小,目标文件大小 = bs x count.

四、移动该文件到空间较大的其余分区:

[root@lxt lxt]# mkdir /mnt/swap
[root@lxt /]# mv swapadd /mnt/swap

五、执行如下命令启用虚拟内存并重启电脑

[root@lxt /]# mkswap /mnt/swap/swapadd
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=a5c8b651-6f64-4414-bb5f-580b742acfce
[root@lxt /]# swapon /mnt/swap/swapadd

查看内存:

[root@lxt /]# free -m
             total       used       free     shared    buffers     cached
Mem:           498        492          6          0         15        302
-/+ buffers/cache:        174        323
Swap:         1535          0       1535

六、若是不须要使用新增的虚拟内存,则输入:
swapoff -v /mnt/swap/swapadd

5、磁盘配额

磁盘配合其实就是给每一个用户分配必定的磁盘额度,只容许他使用这个额度范围内的磁盘空间。在linux系统中,是多用户多任务的环境,因此会有不少人共用一个磁盘的状况。针对每一个用户去限定必定量的磁盘空间是有必要的,这样才显得公平。随着硬件成本的下降,服务器上的磁盘资源彷佛再也不刻意的去限制了,因此磁盘配额也就无关紧要了,可是你也须要了解一下这部份内容,用到时必须会操做。
在linux中,用来管理磁盘配额的东西就是quota了。若是你的linux上没有quota,则须要你安装这个软件包 quota-3.13-5.el5.RPM (其实版本是多少无所谓了,关键是这个软件包)。quota在实际应用中是针对整个分区进行限制的。好比,若是咱们限制了/dev/sdb1这个分区,而/dev/sdb1 是挂载在/home 目录下的,那么/home 全部目录都会受到限制。
quota 这个模块主要分为quota quotacheck quotaoff quotaon quotastats edquota setquota warnquota repquota这几个命令,下面就分别介绍这些命令。
命令 : quota
“quota” 用来显示某个组或者某个使用者的限额。
语法:quota [-guvs] [user,group]
“-g” 显示某个组的限额
“-u” 显示某个用户的限额
“-v” 显示的意思
“-s” 选择inod或硬盘空间来显示
命令 : quotacheck
“quotacheck” 用来扫描某一个磁盘的quota空间。
语法:quotacheck [-auvg] /path
“-a” 扫描全部已经mount的具备quota支持的磁盘
“-u” 扫描某个使用者的文件以及目录
“-g” 扫描某个组的文件以及目录
“-v” 显示扫描过程
“-m” 强制进行扫描
命令 : edquota
“edquota” 用来编辑某个用户或者组的quota值。
语法:edquota [-u user] [-g group] [-t]
“-u” 编辑某个用户的quota
“-g” 编辑某个组的quota
“-t” 编辑宽限时间
“-p” 拷贝某个用户或组的quota到另外一个用户或组
当运行 edquota -u user 时,系统会打开一个文件,你会看到这个文件中有7列,它们分别表明的含义是:
“Filesystem” 磁盘分区,如/dev/sdb5
“blocks” 当前用户在当前的Filesystem中所占用的磁盘容量,单位是Kb。该值请不要修改。
“soft/hard” 当前用户在该Filesystem内的quota值,soft指的是最低限额,能够超过这个值,但必需要在宽限时间内将磁盘容量下降到这个值如下。hard指的是最高限额,即不能超过这个值。当用户的磁盘使用量高于soft值时,系统会警告用户,提示其要在宽限时间内把使用空间下降到soft值之下。
“inodes” 目前使用掉的inode的状态,不用修改。
命令 : quotaon
“quotaon” 用来启动quota,在编辑好quota后,须要启动才能是quota生效
语法:quotaon [-a] [-uvg directory]
“-a” 所有设定的quota启动
“-u” 启动某个用户的quota
“-g” 启动某个组的quota
“-s” 显示相关信息
命令 : quotaoff
“quotaoff” 用来关闭quota, 该命令经常使用只有一种状况 quotaoff -a 关闭所有的quota.
以上讲了不少quota的相关命令,那么接下来阿铭教你如何在实践应用中去作这个磁盘配额。整个执行过程以下:
首先先确认一下,你的/home目录是否是单独的挂载在一个分区下,用df 查看便可。若是不是则须要你跟我一块儿作。不然这一步便可省略。

/home并无单独占用一个分区。因此须要把/home目录挂载在一个单独的分区下,由于quota是针对分区来限额的。下面阿铭把 /dev/sdb5 挂载到/home 目录下, 编辑 /etc/fstab 把刚才添加的那行修改成:

保存 /etc/fstab 后,运行 mount -a 命令挂载所有的分区。

此时的 /home 为一个单独分区了。

1.创建测试帐户

首先创建一个test用户,则同时创建了一个test组。其中uid和gid都为511 ,而后又创建一个test1帐号,使其加入test组,查看/etc/passwd文件发现test和test1用户的gid都为511.

[root@localhost ~]# useradd test
[root@localhost ~]# grep test /etc/passwd
test:x:511:511::/home/test:/bin/bash
[root@localhost ~]# useradd -g 511 test1
[root@localhost ~]# grep test1 /etc/passwd
test1:x:512:511::/home/test1:/bin/bash

2.打开磁盘的quota功能

默认linux并无对任何分区作quota的支持,因此须要咱们手动打开磁盘的quota功能,你是否记得,在前面内容中分析/etc/fstab文件的第四列时讲过这个quota选项(usrquota, grpquota),没错,要想打开这个磁盘的quota支持就是须要修改这个第四列的。用vi编辑/etc/fstab 编辑刚才加的那一行,以下:

UUID=c61117ca-9176-4d0b-be4d-1b0f434359a7     /home        ext4    defaults,usrquota,grpquota     0 0

保存 /etc/fstab 后,从新挂载/home分区。

[root@localhost ~]# umount /home/
[root@localhost ~]# mount -a
[root@localhost ~]# mount
/dev/sda3 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)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb5 on /home type ext4 (rw,usrquota,grpquota)

使用 mount 命令能够查看到 /home 分区已经加上了 “usrquota,grpquota” 两个配额相关的参数。

3.扫描磁盘的使用者使用情况,并产生重要的aquota.group与aquota.user

这一步就须要用到quotacheck了,aquota.group与aqouta.user分别是组以及用户磁盘配额须要的配置文件。若是没有这两个文件,则磁盘配额是不会生效的。

[root@localhost ~]# quotacheck -augv

可能会有一些错误信息,不要管它。看一看你的/home分区下是否多了两个文件(aquota.group, aquota.user)

[root@localhost ~]# ll /home/
总用量 44
-rw------- 1 root  root  7168 5月  12 02:07 aquota.group
-rw------- 1 root  root  8192 5月  12 02:07 aquota.user
drwxr-xr-x 2 root  root  4096 5月  12 00:11 dir1
drwx------ 2 root  root 16384 5月  11 23:18 lost+found
drwx------ 3 test  test  4096 5月  12 01:59 test
drwx------ 3 test1 test  4096 5月  12 02:00 test1

若是有了,则能够进入下一步了。

4.启动quota配额

[root@localhost ~]# quotaon -av
/dev/sdb5 [/home]: group quotas turned on
/dev/sdb5 [/home]: user quotas turned on

5. 编辑用户磁盘配额

先来设定test帐户的配额,而后直接把test的配额拷贝给test1便可。这里就须要用到edquota了。

[root@localhost ~]# edquota -u test

将下面内容

/dev/sdb5                        20          0          0          5        0        0

修改成:

/dev/sdb5                        20          20000          30000          5        0        0

其中单位是Kb,因此soft 值大约为20Mb,hard值为30Mb,保存这个文件,保存的方式跟vi一个文件的方式同样的。下面将test的配额复制给test1.

[root@localhost ~]# edquota -p test test1

下面继续设定宽限时间:

[root@localhost ~]# edquota -t

将7days 改成 1days

/dev/sdb5                     1days                  1days

下面查看一下test以及test1用户的配额吧。

[root@localhost ~]# quota -uv test test1
Disk quotas for user test (uid 511):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb5      20   20000   30000               5       0       0
Disk quotas for user test1 (uid 512):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb5      20   20000   30000               5       0       0

6.编辑组磁盘配额

[root@localhost ~]# edquota -g test

修改成:.

/dev/sdb5                        40          40000          50000         10        0        0

设定组test的soft配额值为40M,hard值为50M。下面查看组test的配额。

[root@localhost ~]# quota -gv test
Disk quotas for group test (gid 511):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb5      40   40000   50000              10       0       0

7.设定开机启动

前面已经讲到启动磁盘配额的命令是 quotaon -aug 因此要想开机启动,只需将这条命令加入到 /etc/rc.d/rc.local文件便可。

[root@localhost ~]# echo "quotaon -aug" >> /etc/rc.d/rc.local

参考文档:

http://www.apelearn.com/study_v2/

相关文章
相关标签/搜索