《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 images 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 �C buffers �C 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