《Linux系统管理》

(1)磁盘和文件系统管理;

(2)RAID, LVM; btrfs; 

(3)程序包管理:rpm, yum(dnf)

(4)Linux的网络管理; 

(5)进程和作业管理:htop, glances, tsar;

(6)sed和awk;

(7)Linux系统的开机启动流程;

(8)内核基础知识,内核定制编译;

(9)系统安装:kickstart, pxe


一、作业(练习)内容:

1、复习本次课程所讲的内容;

2、总结整理磁盘管理及文件系统管理中设计的各种命令的使用,并附注一定的示例;

3、创建一个10G的文件系统,类型为ext4,要求开机可自动挂载至/mydata目录


二、完成时间:

2015年9月15日之前。


三、完成步骤:

《Linux磁盘管理和文件系统管理》


目录:


(一)Linux磁盘管理

1.硬盘介绍

2.常见接口类型

3.如何磁盘分区

4.常用分区工具使用

(二)Linux文件系统管理

1.Linux文件系统介绍

2.Linux文件系统管理

 1)创建文件系统

 2)文件系统属性查看及调整工具

 3)文件系统检测

 4)对文件系统进行挂载和使用

 5)交换分区的使用

 6)设置开机挂载

3.文件系统的连接文件

练习:

创建一个10G文件系统,类型为ext4,要求开机可自动挂载至/mydata目录;

系统版本:CentOS 6.x/7 x86_64


(一)Linux磁盘管理

1.硬盘介绍

1)硬盘:就是计算机和服务器上用来存储数据的。

2)硬盘组成:由许多的盘片、机械手臂、磁头和主轴马达所组成的。而数据的写入基实是在盘片上面。盘片上面又可分出扇区和柱面两种单位,其中扇区每个为512bytes。

3)种类:

    硬备用有固态硬盘(SSD)、机械硬盘(HDD)、混合硬盘(HDD一块基于传统机械硬盘诞生出来的新硬盘);SSD采用闪存颗粒来存储,HDD采用磁性碟片来存储,混合硬盘是把磁性硬盘和闪存集成到一起的一种硬盘。

4)基本参数

  (1)容量

        硬盘容量以兆字节(MB/MiB)、千兆字节(GB/Gib)或百万字节(TB/Tib)为单位,

        常见换算式为:1TB=1024,1GB=1024MB而1MB=1024KB。

  (2)转速

        是硬盘内内电机主轴的旋转速度,也就是硬盘盘片在一分钟内所能完成的最大转数。

  (3)平均访问时间

        是指磁头从起始位置到达目标磁道位置,并且从目标磁盘上找到要读写的数据扇区所需的时间。

  (4)传输速率

        指硬盘读写数据的速度,单位为兆字节每秒(MB/s)。硬盘数据传输速率又包括了内部数据传输率和外部数据传输率。

        内部专输率,也称持续转输率,它反映了硬盘缓冲区未用时的性能。主要依赖于硬盘的旋转速度。

        外部传输率:也称为突发传输率或接口传输率,它标称的是系统总线和碍盘缓冲区之间的转输率,与硬盘接口类型和硬盘缓存的大小有关。

   (5)缓存

        缓存是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部接口和外部接口之间的缓冲器。


2.常见接口类型

ATA      是用传统的40-pin并口数据线连接主板与硬盘的,外部接口速度最大为133MB/s,将被SATA所取代。

IDE      即电子集成驱动器

SATA     采用串行连接方式。

SATA II  是SATA的升级版,从SATA的150MB/s提高到300MB/s.

SATA III 主要是传输速度翻番达到6Gbps.

SCSI     主要应用于中、高端服务器和高档工作站中。

SAS      即串行连接SCSI,是新一代的SCSI技术。

(#此内容摘自百度百科:硬盘

3.磁盘分区

1)磁盘分区介绍

(1)磁盘的第一个分区主要记录了两个重要的信息:

  主引导分区(MBR):可以安装引导加载程序的地方,有446bytes。

  分区表(partion table):记录整块硬盘分区的状态,有64bytes。

  分区表:

    其实所谓的“分区”只是针64bytes的分区表进行设置而已。

    硬盘默认的分区表仅能写入四组分区信息。

    这四种分区信息我们称为主(primary)或扩展(extended)分区。

    分区的最小单位为柱面(cylinder).

  主分区、扩展分区与逻辑分区的特性:

    (1)主分区和扩展分区最多可以有四个(硬盘的限制)

    (2)扩展分区最多只能有一个(操作系统的限制)

    (3)逻辑分区是由扩展分区持续切割分来的分区

    (4)能够被格式化后作为数据访问的分区为主分区和逻辑分区。扩展分区无法格式化。

    (5)逻辑分区的数量依操作系统而不同,在Linux系统中,IDE硬盘最多有59个逻辑分区(5-63),SATA硬盘则有有11个逻辑分区(5号到15号)。

(2)识别硬盘设备:/dev/sda

    标记不同的硬备:/dev/sd[a-z]

    标记同一设备上的不同分区:/dev/sd[a-z][1-n]

       1-4:主或扩展分区标识

       5+:逻辑分标区标识

最简单的分区方法:仅分区根目录和内存交换空间即可。


4.常用分区工具使用

fdisk,parted,sfdisk

1)fdisk工具的使用

fdisk -l       #查看磁盘设备

fdisk /dev/sda #对sda磁盘设备进行操作

  分区管理子命令:

p: 显示

n: 创建

d: 删除

t: 修改分区ID

l: 列出所有支持ID类型

w: 保存退出

q: 放弃修改并退出

m: 获取帮助

示例:添加一个硬盘,并添加一个主分区,扩展分区,逻辑分区。

(1)使用fdisk -l 查看添加的分区
[root@localhost ~]# fdisk -l
Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 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: 0x0000ef2f
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    21997567    10485760   83  Linux
/dev/sda3        21997568    42969087    10485760   83  Linux
/dev/sda4        42969088   251658239   104344576    5  Extended
/dev/sda5        42971136    47067135     2048000   82  Linux swap / Solaris
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
(2)对新添加的硬盘/dev/sdb进行分区
[root@localhost ~]# fdisk /dev/sdb
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 0xa7225c08.
Command (m for help): m   ##查看帮助
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   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
   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): n  ##新建一个分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p    ##新建主分区
Partition number (1-4, default 1): 1 ##选择第1个分区
First sector (2048-41943039, default 2048):     ##分区的起始位置
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G  ##给定分区大小为5G
Partition 1 of type Linux and of size 5 GiB is set
Command (m for help): n    ##新建分区
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e    ##为扩展分区,默认所有容量给扩展,一路回车。
Partition number (2-4, default 2): 
First sector (10487808-41943039, default 10487808): 
Using default value 10487808
Last sector, +sectors or +size{K,M,G} (10487808-41943039, default 41943039): 
Using default value 41943039
Partition 2 of type Extended and of size 15 GiB is set
Command (m for help): n    ##新建分区
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l        ##创建逻辑分区
Adding logical partition 5
First sector (10489856-41943039, default 10489856): 
Using default value 10489856
Last sector, +sectors or +size{K,M,G} (10489856-41943039, default 41943039): +5G  ##大小为5G。
Partition 5 of type Linux and of size 5 GiB is set
Command (m for help): p        ##查看分区后的信息。
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0xa7225c08
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    41943039    15727616    5  Extended
/dev/sdb5        10489856    20975615     5242880   83  Linux
Command (m for help): w    ##保存分区信息。
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
2)创建完成之后,查看内核是否已经识别新的分区:
[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name
   8        0  125829120 sda
   8        1     512000 sda1
   8        2   10485760 sda2
   8        3   10485760 sda3
   8        4          1 sda4
   8        5    2048000 sda5
   8        6   20971520 sda6
   8        7   10485760 sda7
   8        8   20971520 sda8
   8       16   20971520 sdb
   8       17    5242880 sdb1
   8       18          1 sdb2
   8       21    5242880 sdb5
  11        0    4209664 sr0
有三个命令可以让内核重读磁盘分区表:
CentOS 5.x:partprobe [DEVICE]
CentOS 6.x,7.x:
    partx 
    kpartx
partx 命令:告诉内核去识别、登记某个硬盘上的分区信息。
-a 登记某块盘上的所有分区信息,如果某个分区信息有记录,就会报错。
-d 删除内核中关于某磁盘的所有分区的记录(不是卸载)
-d --nr m-n 删除从第m-n分区的记录
-l 列出某磁盘上的分区情况。
[root@localhost ~]# partx -a --nr 5 /dev/sdb
[root@localhost ~]# cat /proc/partitions
[root@localhost ~]# partx -a --nr 5 /dev/sdb
partx: /dev/sdb: error adding partition 5[root@localhost ~]# partx -l /dev/sdb
# 1:      2048- 10487807 ( 10485760 sectors,   5368 MB)
# 2:  10487808- 41943039 ( 31455232 sectors,  16105 MB)
# 5:  10489856- 20975615 ( 10485760 sectors,   5368 MB)

(二)Linux文件系统管理

1.Linux文件系统介绍

   Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。

VFS:Virtual File System 虚拟文件系统:整个Linux的系统都是通过虚拟文件系统的内核功能去读取文件系统的。

    Linux:ext2, ext3, ext4, reiserfs, xfs, btrfs, swap

    光盘:iso9660

    Windows: fat32(vfat), ntfs

    Unix: ffs, ufs, jfs, jfs2

    网络文件系统:nfs, cifs

    集群文件系统:ocfs2, gfs2

    分布式文件系统:ceph, 

    moosefs, mogilefs, hdfs, gfs, glusterfs

    非日志型文件系统(传统文件系统):ext2

    日志型文件系统:ext3


2.Linux文件系统管理

 1)创建文件系统

(1)说明:格式化,即为创建文件系统。

    要使用某种文件系统,要满足两个条件:    

      在内核中:要支持此种文件系统

      用户空间:要有文件系统管理工具

(2)创建文件系统工具:

a)mkfs 命令(make filesystem)

格式:mkfs -t type DEVICE

   或:mkfs.type DEVICE

b)ext系统文件系统的专用管理工具:

mke2fs 命令

格式:mke2fs -t {ext2|ext3|ext4} DEVICE

    -b BLOCK:1024,2048,4096 #设置BLOCK大小。

    -L 'LABAL' #设定卷标


blkid 命令

格式:blkid DEVIE  #查看LABEL,UUID,TYPE

示例:添加一个分区后,创建ext4文件系统,并通过mke2fs设定block和LABEL,并查看。

[root@LiuHui ~]# mkfs.ext4 /dev/sdb1  #创建文件系统
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
655776 inodes, 2622603 blocks
131130 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments per group
8096 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 22 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@LiuHui ~]# cat /proc/partitions  #查看分区后是否被内核识别 
major minor  #blocks  name
   8        0   20971520 sda
   8        1     204800 sda1
   8        2    1024000 sda2
   8        3   19741696 sda3
   8       16   20971520 sdb
   8       17   10490413 sdb1
[root@LiuHui ~]# mke2fs -L 'MyTest1' /dev/sdb1 #设置卷标
[root@LiuHui ~]# blkid /dev/sdb1    #查看设定卷标
/dev/sdb1: LABEL="MyTest1" UUID="b5445ce5-3182-402f-b6e8-df7140c9fe6a" TYPE="ext2"

 2)文件系统属性查看及调整工具

e2label 命令:显示和设置新的卷标

格式:e2label DEVICE [new-label]

示例:

[root@LiuHui ~]# e2label /dev/sdb1
MyTest1
[root@LiuHui ~]# e2label /dev/sdb1 LiuHui
[root@LiuHui ~]# e2label /dev/sdb1
LiuHui

tune2fs 命令:显示ext系列文件系统的属性

常用选项:

    -l:显示超级块中的信息;显示整个文件的属性及布局等相关信息

    -L 'LABEL':修改卷标

    -m #: 调整预留给管理员的管理空间百分比

    -j: ext2 --> ext3

    -O:文件系统属性的启动或关闭 

    -o:文件系统默认挂载选项的启用或关闭

示例:

[root@LiuHui ~]# tune2fs -l /dev/sdb1  #显示超级块中的信息
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   LiuHui
Last mounted on:          <not available>
Filesystem UUID:          b5445ce5-3182-402f-b6e8-df7140c9fe6a
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              655776
Block count:              2622603
Reserved block count:     131130
Free blocks:              2575671
Free inodes:              655765
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      640
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8096
Inode blocks per group:   506
Filesystem created:       Fri Aug 28 03:38:26 2015
Last mount time:          n/a
Last write time:          Fri Aug 28 04:09:38 2015
Mount count:              0
Maximum mount count:      35
Last checked:             Fri Aug 28 03:38:26 2015
Check interval:           15552000 (6 months)
Next check after:         Wed Feb 24 03:38:26 2016
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:          256
Required extra isize:     28
Desired extra isize:      28
Default directory hash:   half_md4
Directory Hash Seed:      7ae58900-8ddc-4b19-8b10-5aaf7cf5b7fa
[root@LiuHui ~]# tune2fs -L 'MyTest' /dev/sdb1    #修改卷标
tune2fs 1.41.12 (17-May-2010)
[root@LiuHui ~]# tune2fs -l /dev/sdb1    #查看
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   MyTest
Last mounted on:          <not available>

dumpe2fs 命令

常用选项:

    -h :仅列出superblock的数据,不会列出其他的区段内容。


 3)文件系统检测

(1)fsck 命令 :用于检查并且试图修复文件系统中的错误。当文件系统发生错误变化,可用fsck指令尝试加以修复。

格式:fsck [选项] [参数]

选项:

常用选项:

    -a :自动修复错误,不询问任何问题。

    -r:交互式修改错误

    -f:强制检测


-A 依照/etc/fatab配置文件的内容,检查文件内所列的全部文件系统。

-N 不执行指令,仅列出实际执行会进行的动作。

-P 当搭配“-A” 参数使用时,则会同时检查所有的文件系统。

-R 当搭配“-A”参数使用时,则会略过/目录的文件系统不予检查。

-s 依序执行检查作业,而非同时执行。

-t <文件系统类型> 指定要检查的文件系统类型。

-T 执行fack指令时,不显示标题信息。

-V 显示指令执行过程。

-y 自动回答为 yes。

fdisk -l 查看设备号

 运行fsck -y /dev/sdb1 修复磁盘

参数

文件系统:指定要查看信息的文件系统。


(2)e2fsck 命令 :ext系列文件系统专用的检测修复工具;

e2fsck执行后的传回值及代表意义如下:

0 没有任何错误发生。

1 文件系统发生错误,并且已经修正。

2 文件系统发生错误,并且已经修正。

4 文件系统发生错误,但没有修正。


示例:检查/dev/sdb1是否有问题,如发现问题便自动修复:

e2fsck -a -y /dev/sdb1


 4)对文件系统进行挂载和使用

(a)挂载文件统

挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件系统访问入口的行为,称为挂载;

解除此关联关系的过程:卸载;

注意:挂载点在挂载后,其内部原有的文件会被暂时隐藏;建立使用空目录做为挂载点;


mount 命令:通过读取/etc/fstab文件来显示当前系统所有已经挂载的设备;

  mount -a :挂载/etc/fstab 文件中的所有支持自动挂载的文件系统;

格式:mount [options] [-o options] DEVICE MOUNT-POINT

  [options]     :为命令选项

  [-o options]  :为挂载选项

  DEVICE:要挂载的设备

    (1)设备文件:/dev/sdb3

    (2)卷标:-L 'LABEL'

    (3)UUID: -U "UUID"

    (4)伪文件系统名称

  MOUNT-POINT:挂载点

常用选项:

    -t type:文件系统类型

    -r:以“只读”方式挂载此文件系统

    -w:以“读写”方式挂载此文件系统

    -n:每个文件系统在挂载时都会自动更新/etc/mtab文件,-n 用于禁止此功能;

        此时,如果想查看挂载的所有文件系统:cat /proc/mounts

    -a:自动挂载所有支持自动挂载的设备;

    -B:绑定目录至另一个目录上;

 -o 挂载选项

    async:异步模式

    sync:同步模式

    atime/noatime:是否更新访问时间戳:

    diratime/nodiratime:是否更新目录的访问时间戳;

    auto/noauto:是否允许此设备被自动挂载;

    exec/noexec:是否允许执行此文件系统上应用程序;

    dev/nodev:是否支持在此设备上使用设备文件;

    suid/nosuid: 是否支持suid特殊权限

    remount :重新挂载

    ro 只读挂载

    rw 可读写挂载

    user/nouser:是否允许普通挂载此设备;

    acl:是否支持此设备上使用facl;

示例1:挂载本地光盘

[root@LiuHui ~]# mount /dev/cdrom  /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@LiuHui ~]# ls /mnt
CentOS_BuildTag  p_w_picpaths    repodata
EFI              isolinux  RPM-GPG-KEY-CentOS-7
EULA             LiveOS    RPM-GPG-KEY-CentOS-Testing-7
GPL              Packages  TRANS.TBL

示例2:挂载ISO镜像到/var/www/html/os/CentOS-6.5-x86_64目录

mount -t iso9660 -o loop /data/CentOS-6.7-x86_64-bin-DVD1.iso  /var/www/html/os/CentOS-6.7-x86_64


示例3:挂载nfs网络文件系统

mount -t nfs 192.268.1.168:/data /data1

示例4:挂载格式好的硬盘

[root@LiuHui ~]# mkdir /data1
[root@LiuHui ~]# mount /dev/sdb1 /data1
[root@LiuHui ~]# df -h /dev/sdb1
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       4.8G   20M  4.6G   1% /data1

(b)卸载文件系统

umount: 卸载命令

  #umount DEVICE

  #umount MOUNT_POINT

示例:卸载

[root@LiuHui ~]# umount /mnt  == umount /dev/cdrom

(c)查看

查看正访问指定挂载点进程:

 #fuser -v /data1/
[root@LiuHui data1]# fuser -v /data1/
                     USER        PID ACCESS COMMAND
/data1/:             root       2615 ..c.. bash

终止所有正在访问指定的挂载点的进程:

 #fuser -km /data1/

 5)交换分区的使用


(a)查看交换分区方式:top,free命令

  free命令:可以显示当前系统末使用和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

查看memory和swap的使用状态

-m 以M为单位显示

-g 以G为单位显示

示例:

CentOS 7:
[root@LiuHui ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            979         119         632           6         226         693
Swap:          1999           0        1999
[root@LiuHui ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:              0           0           0           0           0           0
Swap:             1           0           1

CentOS 6.7:
[root@LiuHui sbin]# free -m
             total       used       free     shared    buffers     cached
Mem:           981        913         67          0         88        553
-/+ buffers/cache:        272        709 
Swap:         1999          0       1999
第一部分Mem行说明:
total:内存总数;
used :已经使用的内存数;
free :空闲的内存数;
shared:当前已经废弃不用;
buffers Buffer:缓存内存数;
cached Page:缓存内存数。
关系:total = used+free
第二部分(-/+ buffers/cache)解释: 
(-buffers/cache) used内存数:第一部分Mem行中的 used – buffers – cached 
(+buffers/cache)free内存数: 第一部分Mem行中的 free + buffers + cached

(b)如何通过swap文件扩充交换空间的大小

示例:

[root@LiuHui ~]# free -m   
             total       used       free     shared    buffers     cached
Mem:           981        913         67          0         88        553
-/+ buffers/cache:        271        709 
Swap:         1999          0       1999 
[root@LiuHui ~]# dd if=/dev/zero of=/myswap bs=1M count=1000  #划分空间
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 33.2985 s, 31.5 MB/s
[root@LiuHui ~]# mkswap /myswap    #格式成交换分区的格式
mkswap: /myswap: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1023996 KiB
no label, UUID=d99627aa-3d6e-4a7c-bfd9-eb584ed19b6b
[root@LiuHui ~]# swapon /myswap     #使格式的swap生效
[root@LiuHui ~]# free -m    #查看增加的swap分区
             total       used       free     shared    buffers     cached
Mem:           981        909         72          0         69        662
-/+ buffers/cache:        177        804 
Swap:         2999          0       2999

 6)设置开机挂载


文件系统相关挂载配置文件:/etc/fstab

[root@LiuHui ~]# cat /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Mon Aug 24 23:35:21 2015
#
# 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/vg_mytestc6-LogVol03 /                       ext4    defaults        1 1
UUID=3f0d9a05-673f-4541-9c84-0e9eed05012b /boot          ext4    defaults        1 2
/dev/mapper/vg_mytestc6-LogVol01 /usr                    ext4    defaults        1 2
/dev/mapper/vg_mytestc6-LogVol02 /var                    ext4    defaults        1 2
/dev/mapper/vg_mytestc6-LogVol00 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

第一列为设备号或该设备的卷标 

第二列为挂载点 

第三列为文件系统 

第四列为文件系统参数 

第五列为是否可以用demp命令备份。0:不备份,1:备份,2:备份,但比1重要性小。设置了该参数后,Linux中使用dump命令备份系统的时候就可以备份相应设置的挂载点了。 

第六列为是否在系统启动的时候,用fsck检验分区。因为有些挂载点是不需要检验的,比如:虚拟内存swap、/proc等。0:不检验,1:要检验,2要检验,但比1晚检验,一般根目录设置为1,其他设置为2就可以了


示例:在/etc/fstab中添加自动挂载

/dev/sdb1    /data1    ext4    defaults    0 0  
/dev/sdb6    swap      swap    defaults    0 0

3.文件系统的连接文件

硬链接(类似快照)

    两个路径指向同一个inode,inode号相同

    不对对目录进行

    不能跨分区进行

    指向同一个inode 的多个不同路径,创建文件的硬链接会增加indode的引用计数;删除硬链接仅是删除其一个访问路径,直到最后一个路径被删除;

ln 命令:添加链接

格式:ln [-s] 被连接源文件 连接目标文件

    加-s 即创建软连接

示例:

[root@LiuHui tmp]# touch test.txt  #创建测试文件
[root@LiuHui tmp]# ll
total 0
-rw-r--r--. 1 root root 0 Sep 13 22:07 test.txt
[root@LiuHui tmp]# ln test.txt hard.test.txt    #添加一个硬链接
[root@LiuHui tmp]# ll    #查看硬连接数变为2
total 0
-rw-r--r--. 2 root root 0 Sep 13 22:07 hard.test.txt
-rw-r--r--. 2 root root 0 Sep 13 22:07 test.txt
[root@LiuHui tmp]# echo 11111 > test.txt     #向源文件增加数据
[root@LiuHui tmp]# cat test.txt 
11111
[root@LiuHui tmp]# cat hard.test.txt     #查看连接目标文件也被写入数据
11111
[root@LiuHui tmp]# ln test.txt hard2.test.txt #再增加一个硬链接
[root@LiuHui tmp]# ll        #查看硬链接数变为3
total 12
-rw-r--r--. 3 root root 6 Sep 13 22:07 hard2.test.txt
-rw-r--r--. 3 root root 6 Sep 13 22:07 hard.test.txt
-rw-r--r--. 3 root root 6 Sep 13 22:07 test.txt
[root@LiuHui tmp]# rm test.txt     #删除源文件,
rm: remove regular file ‘test.txt’? y
[root@LiuHui tmp]# cat hard2.test.txt     #查看连接目标文件,对数据无影响。
11111    
[root@LiuHui tmp]# cat hard.test.txt 
11111
[root@LiuHui tmp]# ll        #硬链接数减1
total 8
-rw-r--r--. 2 root root 6 Sep 13 22:07 hard2.test.txt
-rw-r--r--. 2 root root 6 Sep 13 22:07 hard.test.txt

符号连接(类似快捷方式),又称软链接

格式:ln -s 源文件 链接目标文件

    可以跨文件系统,可以对目录创建符号链接。

    删除源文件,符号链接将失效。

    源文件的inode与链接文件不同。

示例:

[root@LiuHui tmp]# touch test.txt  #创建测试文件
[root@LiuHui tmp]# ll
total 0
-rw-r--r--. 1 root root 0 Sep 13 22:20 test.txt
[root@LiuHui tmp]# ls -i
33554563 test.txt
[root@LiuHui tmp]# ln -s test.txt sym.test.txt    #创建符号链接.
[root@LiuHui tmp]# ls -i        #查看inode节点号不一样
33576579 sym.test.txt  33554563 test.txt
[root@LiuHui tmp]# echo 1111 > test.txt     #添加数据
[root@LiuHui tmp]# cat test.txt     #查看数据
1111
[root@LiuHui tmp]# cat sym.test.txt 
1111
[root@LiuHui tmp]# rm -f test.txt     #删除源文件
[root@LiuHui tmp]# ls
sym.test.txt
[root@LiuHui tmp]# ll
total 0
lrwxrwxrwx. 1 root root 8 Sep 13 22:20 sym.test.txt -> test.txt
[root@LiuHui tmp]# cat sym.test.txt     #删除源文件后,创建的符号连接失效
cat: sym.test.txt: No such file or directory

练习:

1.创建一个10G文件系统,类型为ext4,要求开机可自动挂载至/mydata目录;

(1)创建一个分区,大小为10G
[root@LiuHui ~]# fdisk /dev/sdb
Command (m for help): n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (10489856-41943039, default 10489856): 
Using default value 10489856
Last sector, +sectors or +size{K,M,G} (10489856-41943039, default 41943039): +10G
Partition 5 of type Linux and of size 10 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0xa7225c08
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    41943039    15727616    5  Extended
/dev/sdb5        10489856    31461375    10485760   83  Linux
Command (m for help): w   
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
(2)格式化为ext4文件系统
[root@LiuHui ~]# mkfs.ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 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
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 
(3)创建空目录,设置开机自启动
[root@LiuHui ~]# mkdir /mydata
[root@LiuHui ~]# vim /etc/fstab 
-bash: vim: command not found
[root@LiuHui ~]# vi /etc/fstab 
[root@LiuHui ~]# e2label /dev/sdb5
[root@LiuHui ~]# blkid /dev/sdb5    #查看UUID
/dev/sdb5: UUID="4dae0efb-204a-4428-b4ed-b6c43a8f3add" TYPE="ext4" 
(4)通过UUID为被挂载的设备进行自动挂载
[root@LiuHui ~]# vi /etc/fstab
[root@LiuHui ~]# tail -1 /etc/fstab 
UUID=4dae0efb-204a-4428-b4ed-b6c43a8f3add /mydata       ext4  defaults  0 0
(5)验证挂载并查看挂载的结果
[root@LiuHui ~]# mount -a
[root@LiuHui ~]# df -h /dev/sdb5
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb5       4.8G   20M  4.6G   1% /mydata