概述:

     本篇是上篇博客(http://1992tao.blog.51cto.com/11606804/1900034)的后续内容,价格主要介绍 /etc/fstab 配置文件的使用,swap交换分区的使用,以及各种在磁盘及文件系统管理中的常用命令。

====================================================================================================


/etc/fstab 配置文件

 1.使用方法及语法:

设定除根文件系统以外的其他文件系统能够开机时自动挂载:/etc/fstab

作用

  • /etc/fstab每行定义一个要挂载的文件系统及相关属性:

6个字段

要挂载的设备

    设备文件:

  • LABEL(LABEL="");

  • UUID(UUID="");

  • 伪文件系统,如:sysfs,proc,tmpfs等

挂载点

  • swap类型的设备的挂载点为swap;

文件系统类型

挂载选项

  • defaults:使用默认挂载选项;

  • 如果要同时指明多个挂载选项,彼此间逗号分隔;(如:default,acl,noatime,noexec)

转储频率

  • 0:从不备份;

  • 1:每天备份;

  • 2:每隔一天备份;

自检次序

  • 0:不自检;;

  • 1:首先自检,通常只能是根文件系统可用;

  • 2:次级自检

开机自动挂载定义在此文件中的所支持自动挂载的设备;

  • mount -a

如果对挂载的参数修改,要使其重新生效使用

  • mount -o remount MOUNT_POINT

注意:

  • /etc/fstab 设备名出错,自检非0,开机会导致无法启动;

  • 排错方法:mount -o remount,rw /

演示:

# 在 /etc/fstab 配置文件中添加使 /dev/sda3 开机自动挂载到 /mydata
[root@CentOS6 ~]# vim /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Nov  6 11:54:11 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg0-root    /                       ext4    defaults        1 1
UUID=493db72e-4b0d-4e2a-82fa-5e002f0bd667 /boot                   ext4    defaults        1 2
/dev/mapper/vg0-usr     /usr                    ext4    defaults        1 2
/dev/mapper/vg0-var     /var                    ext4    defaults        1 2
/dev/mapper/vg0-swap    swap                    swap    defaults        0 0
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
/dev/sda3		/mydata			ext3    defaults        0 0

# 挂载点事先一定要存在,所以创建挂载点
[root@CentOS6 ~]# mkdir /mydata

# 使用 mount -a 将自动挂载文件中的定义的自动挂载关系
[root@CentOS6 ~]# mount -a
[root@CentOS6 ~]# mount 
/dev/mapper/vg0-root 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)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda3 on /mydata type ext3 (rw)  # 已经挂载完成

[root@CentOS6 ~]# df
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg0-root  20511356  407732  19055048   3% /
tmpfs                   502068       0    502068   0% /dev/shm
/dev/sda1               194241   34097    149904  19% /boot
/dev/mapper/vg0-usr   10190136 2142576   7523272  23% /usr
/dev/mapper/vg0-var   20511356  480928  18981852   3% /var
/dev/sda3              5169700  141472   4765616   3% /mydata

===============================================================================
# 修改挂载的参数
[root@CentOS6 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Nov  6 11:54:11 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg0-root    /                       ext4    defaults        1 1
UUID=493db72e-4b0d-4e2a-82fa-5e002f0bd667 /boot                   ext4    defaults        1 2
/dev/mapper/vg0-usr     /usr                    ext4    defaults        1 2
/dev/mapper/vg0-var     /var                    ext4    defaults        1 2
/dev/mapper/vg0-swap    swap                    swap    defaults        0 0
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=MYDATA		/mydata			ext3    defaults,acl        0 0   # 设备文件使用卷标,并且挂载选项增加acl

# 重新挂载
[root@CentOS6 ~]# mount -o remount  /mydata
[root@CentOS6 ~]# mount
/dev/mapper/vg0-root 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)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda3 on /mydata type ext3 (rw,acl)  # 挂载生效

使用交换分区(swap)

 1.使用方法及语法:

使用场景及基本思路

  • swap,它类似于Windows的虚拟内存,分区时一般指定虚拟内存的大小为实际内存的2倍,如果你的实际内存超过了8G,那你划分16G给虚拟内存就足够日常交换了,如果真的遇到虚拟内存不够用的情况,就必须增加一个虚拟磁盘,因此我们不可能重新给磁盘分区;

  • 增加虚拟内存的基本思路:建立swapfile-->格式化swap格式-->启用虚拟磁盘。

  • 交换分区是系统RAM的补充

创建交换分区的命令:mkswap

启用交换分区:swapon

语法:

  • swapon [OPTION]... [DEVICE]

选项:

  • -a:激活定义在 /etc/fstab 文件中的所有swap设备;

  • -s:查看交换空间

  • -p PRIORITY:指定优先级

禁用交换分区:swapoff

语法:

  • swapon [DEVICE]

总结

swap基本设置步骤总结如下:

  1. 创建交换分区(fdisk -t 82 )或者文件(dd if=/dev/zero of=somefile bs=1M count=1024);

  2. 使用 mkswap 写入特殊签名; (mkswap device 或者 mkswap somefile)

  3. 在/etc/fstab文件中添加适当的条目;

  4. 使用swapon -a 激活交换空间;

  5. 使用swapon -s 查看交换空间;

swap的优先级

  • 用户可以给某个swap指定一个0到32767的优先级;

  • 如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一;

  • 先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数);

  • 优化性能:分布存放,高性能磁盘存放

4.Linux 磁盘、文件系统管理---交换分区及常用命令_du

演示:

1.交换分区的启用和禁用

[root@CentOS6 ~]# blkid /dev/sda6
/dev/sda6: UUID="5d8b9d9c-d2b1-411b-9b5d-55f58602dcbf" TYPE="swap" LABEL="swap_sda6" 

# 创建交换分区,并指明卷标
[root@CentOS6 ~]# mkswap -L MYDATA /dev/sda6
Setting up swapspace version 1, size = 2104476 KiB
LABEL=MYDATA, UUID=30d4d40a-c025-432f-ba18-fa91836556b5

[root@CentOS6 ~]# blkid /dev/sda6
/dev/sda6: UUID="30d4d40a-c025-432f-ba18-fa91836556b5" TYPE="swap" LABEL="MYDATA" 

# 未激活前内存及交换空间的使用情况
[root@CentOS6 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           980        169        810          0         17         56
-/+ buffers/cache:         95        885
Swap:         2047          0       2047
[root@CentOS6 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                               partition	2097148	0	-1

# 激活交换空间
[root@CentOS6 ~]# swapon /dev/sda6
[root@CentOS6 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           980        171        809          0         17         56
-/+ buffers/cache:         96        884
Swap:         4103          0       4103
[root@CentOS6 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                               partition	2097148	0	-1
/dev/sda6                               partition	2104476	0	-2

# 禁用交换空间
[root@CentOS6 ~]# swapoff /dev/sda6
[root@CentOS6 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                               partition	2097148	0	-1
[root@CentOS6 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           980        169        810          0         17         56
-/+ buffers/cache:         95        885
Swap:         2047          0       2047

2.swap交换分区完整的创建步骤:

 1)磁盘分区为swap交换分区;使用 mkswap 命令创建交换分区

# 磁盘分区 /dev/sda6 为交换分区
[root@CentOS6 ~]# fdisk -l /dev/sda

Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 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: 0x00093c28

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560   8e  Linux LVM
/dev/sda3            7859        8512     5252256   83  Linux
/dev/sda4            8513       10443    15510757+   5  Extended
/dev/sda5            8513        8905     3156741   83  Linux
/dev/sda6            8906        9167     2104483+  82  Linux swap / Solaris


# 使用 mkswap 命令创建swap文件系统,并写入卷标
[root@CentOS6 ~]# mkswap -L swap_sda6 /dev/sda6
Setting up swapspace version 1, size = 2104476 KiB
LABEL=swap_sda6, UUID=5d8b9d9c-d2b1-411b-9b5d-55f58602dcbf

[root@CentOS6 ~]# blkid /dev/sda6
/dev/sda6: UUID="5d8b9d9c-d2b1-411b-9b5d-55f58602dcbf" TYPE="swap" LABEL="swap_sda6"

 2)在/etc/fstab文件中添加适当的条目,并激活交换空间

[root@CentOS6 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Nov  6 11:54:11 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg0-root    /                       ext4    defaults        1 1
UUID=493db72e-4b0d-4e2a-82fa-5e002f0bd667 /boot                   ext4    defaults        1 2
/dev/mapper/vg0-usr     /usr                    ext4    defaults        1 2
/dev/mapper/vg0-var     /var                    ext4    defaults        1 2
/dev/mapper/vg0-swap    swap                    swap    defaults        0 0
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=MYDATA		/mydata			ext3    defaults,acl        0 0
/dev/sda6		swap			swap	defaults        0 0  # 添加条目

# 未激活前,交换空间及内存使用情况
[root@CentOS6 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           980        170        810          0         18         56
-/+ buffers/cache:         95        885
Swap:         2047          0       2047
[root@CentOS6 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                               partition	2097148	0	-1

# 激活交换空间
[root@CentOS6 ~]# swapon -a
[root@CentOS6 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                               partition	2097148	0	-1
/dev/sda6                               partition	2104476	0	-2  # 激活成功

[root@CentOS6 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           980        171        809          0         18         56
-/+ buffers/cache:         96        884
Swap:         4103          0       4103

3.创建swap文件增加虚拟内存

[root@CentOS6 ~]# dd if=/dev/zero of=/swapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 34.602 s, 31.0 MB/s

[root@CentOS6 ~]# mkswap -L TEST /swapfile 
mkswap: /swapfile: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1048572 KiB
LABEL=TEST, UUID=784c4394-b1cb-47a9-81de-284cc2ba8f95

[root@CentOS6 ~]# blkid /swapfile
/swapfile: LABEL="TEST" UUID="784c4394-b1cb-47a9-81de-284cc2ba8f95" TYPE="swap" 

[root@CentOS6 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                               partition	2097148	0	-1

# 激活swap交换分区,可以看到3个交换分区都已经存在
[root@CentOS6 ~]# swapon /dev/sda6
[root@CentOS6 ~]# swapon /swapfile 
[root@CentOS6 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                               partition	2097148	0	-1
/dev/sda6                               partition	2104476	0	-2
/swapfile                               file		1048572	0	-3

# 交换空间为3个总和
[root@CentOS6 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           980        906         74          0          4        784
-/+ buffers/cache:        118        862
Swap:         5127          0       5127

和磁盘空间相关的命令

 1.free

free

作用:

  • 内存空间及交换分区使用状态查看

用法:

  • free [OPTION]

选项:

  • -m: 以MB为单位;

  • -h:以人类适宜的方式查看

术语:

  • Mem:物理内存的使用情况;

  • Swap:交换分区的使用情况 ;

  • -/+ buffers/cache:表示物理内存在不考虑缓存和缓存占据空间时的使用情况

       buffers:缓冲,用来缓存写

       cache:  缓存,迎来缓存读

演示:

[root@CentOS6 ~]# free -h
             total       used       free     shared    buffers     cached
Mem:          980M       906M        73M       252K       4.8M       786M
-/+ buffers/cache:       115M       864M
Swap:         4.0G         0B       4.0G


 2.df命令

df

作用:

  • 查看磁盘设备的使用情况

语法:

  • df [OPTION]... [FILE]...

选项:

  • -l:仅显示本地文件的相关信息;

  • -H:以1000为单位;

  • -T :文件系统类型;

  • -h:human-readable;

  • -i:显示inode的使用状态而非block;

  • -P:以Posix兼容的格式输出

演示:

[root@centos7 ~]# df -Thi
文件系统       类型     Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda2      xfs        40M    8.4K     40M       1% /
devtmpfs       devtmpfs  119K     378    119K       1% /dev
tmpfs          tmpfs     123K       1    123K       1% /dev/shm
tmpfs          tmpfs     123K     490    122K       1% /run
tmpfs          tmpfs     123K      13    123K       1% /sys/fs/cgroup
/dev/sda3      xfs        20M     89K     20M       1% /usr
/dev/sda1      xfs       488K     329    488K       1% /boot
tmpfs          tmpfs     123K       1    123K       1% /run/user/0


 

 3.du命令

du

作用:

  • 查看某个目录或文件所占空间的大小

语法:

  • du [OPTION]... DIR

选项:

  • -h:human-readable

  • -s:summary

注意:

du -h 和 ls -l 的区别

  • ll-h 即为 ls -lh 是文件的实际大小;

  • du -sh 显示文件所占用的 block大小,并且用du命令查看文件大小的时候,当文件只有1个字节,也会占用 4KB (linux默认是4k)(1K=1024Byte)

4.Linux 磁盘、文件系统管理---交换分区及常用命令_/etc/fstab_02

演示:    

[root@centos7 ~]# du -hs /etc
25M	/etc

 4.losetup命令

losetup

作用:

  • 可以把文件关联到一个设备,从而用设备名代替文件名;

演示:

[root@centos7 ~]# dd if=/dev/zero of=/tmp/test bs=1M count=500
记录了500+0 的读入
记录了500+0 的写出
524288000字节(524 MB)已复制,16.2552 秒,32.3 MB/秒

# 为文件创建 ext4 文件系统
[root@centos7 ~]# mkfs.ext4 /tmp/test 
mke2fs 1.42.9 (28-Dec-2013)
/tmp/test is not a block special device.
无论如何也要继续? (y,n) y
Discarding device blocks: 完成                            
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=34078720
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

# 挂载到本地回环设备,可以看到 这里显示的是回环设备名,centos6 显示的是文件名
[root@centos7 ~]# mount -o loop /tmp/test /mnt
[root@centos7 ~]# df
文件系统          1K-块    已用     可用 已用% 挂载点
/dev/sda2      41922560  545328 41377232    2% /
devtmpfs         486140       0   486140    0% /dev
tmpfs            500664       0   500664    0% /dev/shm
tmpfs            500664    6840   493824    2% /run
tmpfs            500664       0   500664    0% /sys/fs/cgroup
/dev/sda3      20961280 3027236 17934044   15% /usr
/dev/sda1        496300  140512   355788   29% /boot
tmpfs            100136       0   100136    0% /run/user/0
/dev/loop0       487634    2318   455620    1% /mnt

# loaetup 可以查看对应的文件名
[root@centos7 ~]# losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         1  0 /tmp/test

# 把一个文件关联至本地回环设备,需要的话直接挂载此回环设备即可
[root@centos7 ~]# losetup /dev/loop10 /tmp/test
[root@centos7 ~]# losetup
NAME        SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0          0      0         1  0 /tmp/test
/dev/loop10         0      0         0  0 /tmp/test


总结:

 要想创建一个文件系统并使用,必须要经过三步:分区,格式化创建文件系统,挂载;

    1.系统分区时使用的命令是 fdisk ,

  • 注意命令选项,分区结束后输入 w 存盘退出,这是如果出现 wraning报警,说明要 同步内核分区列表,(CentOS 6 使用partx -a 或者partx -d --nr ;CentOS 7 使用partprobe 命令)

    2.格式化,创建文件系统

  • 这里要注意,创建文件系统的类型的命令,一般使用mkfs.命令即可,对于swap要使用mkswap命令,同时这些命令后可跟一些选项 -L 创建卷标,-b指定文件块大小,-m管理员预留空间等;

   3.挂载

  • 创建好的文件系统要想能够使用,就必须要挂载到根文件系统上的一个目录

  • 这里用到的命令就是:mount、swapon和umount

  • 注意命令的选项:mount -a,swapon -a(激活所有交换分区)

                                  mount -o remount(重新挂载)

  4.配置文件/etc/fstab

  • 要想将开机自动挂载,就要将挂载写到配置文件中,这里注意书写的格式                      





练习:

写一个脚本,完成如下功能:

   (1) 列出当前系统识别到的所有磁盘设备

  (2) 如磁盘数量为1,则显示其空间使用信息,否则,则显示最后一个磁盘上的空间使用信息

4.Linux 磁盘、文件系统管理---交换分区及常用命令_du_03