目录
1. 文件系统功能介绍
定义:是一个组织文件系统,硬盘是不能直接存放文件的,需要将硬盘格式化并且指定格式化后的文件系统,才可以存放数据。
只需要知道文件系统的作用即可,并且不同文件系统的存放方法、算法以及优化等方式都可能不同。
2. windows文件系统相关
2.1 windows文件系统查看
windows安装过程中,其自带的驱动会识别出来计算机的硬盘。windows硬盘分区,Windows挂载硬盘可以通过分配盘符和挂载到某一目录两种方式实现。
2.2 磁盘初始化方式
磁盘初始化主要有MBR和GPT两种,区别是MBR初始化的磁盘当想建立第四个主分区的时候(且所有主分区的最大值为2T),第四个分区会变成逻辑分区,会将剩下的所有空间划分成扩展分区,然后在扩展分区中划出一部分作为逻辑分区,而GPT的初始化则最多可以达到1024个主分区加扩展分区(GPT单个分区的最大值为18EB=1810241024T)。
MBR(主引导记录):是装有操作系统的第一个扇区,即如果磁盘选择以MBR方式进行初始化,那么其第一个扇区一定是512B,每个表项16字节,共64字节,也是因为这个原因,导致了MBR最多只能有四个分区。
3. Linux磁盘分区相关
3.1 查看Linux的磁盘设备文件
在vmworkstation workstation 15中,右击该虚拟机名称->设置
中,在打开的设置窗口中,点击添加->硬盘
可以直接添加硬盘。其中SATA和SCSI类型的硬盘都会被识别成/dev/sd*
,IDE(ATA)硬盘,在早期的Linux版本中会被识别成/dev/hd*
,例如第一块IDE硬盘会被识别为/dev/hda
,第二块IDE硬盘会被识别为/dev/hdb
,以此类推,SCSI/SATA硬盘同理。
对于SCSI和SATA来讲,第一块磁盘的第一个分区就是/dev/sda1
,第二块磁盘下的第二个分区就是dev/sdb2
,也就是说第n块硬盘下的第x个分区就是/dev/sdnx
,其中n表示a、b、…、z,x表示1、2…。以下面Linux系统查看到的信息为例:
在上图中,共有一块SATA/SCSI类型的硬盘,被识别为/dev/sda
,该硬盘被分为两个分区,分别为/dev/sda1
和/dev/sda2
,没有IDE类型的硬盘。
3.2 Linux手工分区
3.2.1 手工分区简介
Linux想使用磁盘的步骤是一样的,主要分为加硬盘->分区域->格式化->挂载
这几个步骤。对于服务器来说,磁盘从使用目的来说大概分为三种,第一种是用来存放操作系统的,此类硬盘应该只存放操作系统以及系统配置文件,剩下任何数据都不应该主动存放在此硬盘中;第二种是用来存放本地大文件,一般这种磁盘我们叫做本地存储盘;第三种是用来存放本地大文件,但是没有真正存放在本地,而是使用了网络存储(SAN->storage area network),一般这种磁盘我们叫做网络存储。
在Linux中,如果采用MBR分区,就是用fdisk
命令,如果采用GPT分区,则采用gdisk命令。
3.2.2 MBR手工分区
命令:
-
fdisk -l 磁盘名
:查看当前指定磁盘的分区情况
实例:
可以看到,sda磁盘被分为两个区,其中一个是sda1
,一个是sda2
分区,其中start列表示起始扇区,end列表示结束扇区,blocks表示总blocks数目。 -
fdisk 硬盘
:为一个交互式命令,该命令所有的操作都是先保存到内存中,等到最后使用w
提交时,才会真正生效。使用该命令时,会自动对硬盘进行初始化。
实例:
在进入交互式命令后,使用m
命令,可以调出帮助手册,其中常见参数说明如下:-
n
:添加一个新分区 -
l
:列出当前支持的分区种类 -
p
:列出当前状态所有分区 -
t
:修改当分区类型 -
d
:删除一个分区、
-
实例: 添加分区,这里是添加一个大小为2G且从2048个扇区开始的分区,最后使用w
来提交使操作生效。
注: 创建分区时,由于每个分区其扇区(sector)必须连续,所以最好从默认的扇区开始进行分区,不让中间有扇区被空下来(即被两个分区隔断)。
3.2.3 GPT手工分区
由于当硬盘的大小超过2T时,就不能使用MBR分区了,所以在Linux中使用fdisk命令对超过2T的磁盘进行格式化时就会报错,此时就必须使用GPT即gdisk
命令对磁盘进行格式化和分区。gdisk
命令的使用方法和fdisk
类似,其实现自动分区的方法也一样,都是通过提前将操作写入文件中然后通过输入重定向来完成。
实例: 创建GPT分区
3.2.4 扩展分区和逻辑分区
以MBR类型创建第四个分区时,会默认让再将所有剩余空间创建为一个扩展分区,这样就可以在扩展分区中再创建逻辑分区,相当于变相的解决MBR格式分区数量被限制的问题。 如果仍使用主分区,则必须将所有空间一次分配完,否则剩余的空间将会浪费掉。
3.3 Linux自动分区
可以使用输入重定向来实现让fdisk命令进行自动分区的操作,例如创建一个名为partion的文件,内容如下:
n
p
1
+1G
w
然后使用命令fdisk /dev/硬盘 < partion
就可以直接实现划分一个大小为1G,磁盘号为1的主分区。
4. 分区格式化与文件系统挂载
对于Linux分区来说,只有格式化之后才能使用,不格式化是无法使用的,Linux分区格式化之后就会变成文件系统,格式化的过程相当于对分区做了一个文件系统。
4.1 格式化Linux分区
Linux分区的文件系统通常有ext系列(ext2、ext3等)、xfs、btrfs等,一般来讲,Linux分区的文件系统目前还是常用ext4(该文件系统单个文件大小不能超过1T),不过centos7和rhel7开始,默认的安装文件系统就是xfs了。
格式化文件系统可以通过mkfs
命令来实现,例如:
mkfs.ext2 /dev/sda1 # 将sda硬盘下的第一个分区格式化为ext2
实例: 以实例添加的分区/dev/sdb1
为例,相应的格式化如下:
在格式化分区后,可以将磁盘读写的粒度放大(为格式化前,磁盘分区的读写是以sector(扇区)为单位的)。格式化后,会立刻将一部分空间作为inode节点空间(inode节点用来存放文件的元数据和该文件block的所在位置,元数据即文件的属性),将剩下的空间划定为block(用来存放文件内容),一个block包含了多个扇区(1bock=2^n 个扇区),即单个block越大(含的sector越多),则粒度越大,磁盘的读取效率越高,但是浪费的空间越多(因为一个block只能存储一个文件中的部分内容)。
完成格式化后,后面再操作文件时,就会直接通过inode来进行操作,而当文件系统的inode用完了,则将不管磁盘是否有剩余空间,都不能再向其中新建文件了。
4.2 Linux文件系统挂载
可以通过命令mount
来实现文件系统的挂载,格式为:
mount -t 文件系统类型 文件系统所在分区的路径 文件系统挂载点
如果是Linux原生的文件系统,则不需要使用-t参数进行指定,因为Linux可以自动识别出该文件系统,例如ext系列文件系统。
实例: 挂载上面新创建的sdb1至/mnt/point1
下
如果直接输入mount
命令,则列出的是当前系统的所有挂载情况。
查看当前系统的挂载点情况可以通过df命令完成,加-h
和-H
参数可以使结果更加易于阅读,-i
参数可以查看inode节点的使用情况。
4.3 Linux文件系统的持久性(持续性)挂载
上面所述的mount命令,只是临时挂载,当系统重启后,就需要重新挂载,如果想进行永久挂载,就需要将挂载信息写入/etc/fstab
文件中,由于该文件特别重要,所以编辑该文件时必须先进行备份,防止误操作。
该文件的格式如下:
- 第一列为文件系统所在分区路径
- 第二列为文件系统挂载点
- 第三列为文件系统类型
- 第四列为挂载参数
- 第五列和第六列通常为0,只有挂载一些特殊的文件系统时,才需要进行变动
实例: 将/dev/sdb1
永久挂载在/mnt/point1
中
- 打开
/etc/fstab
文件,写入如下内容,保存退出
- 输入
mount -a
命令将fstab文件中新增加的挂载记录自动挂载到Linux系统中,已挂载的且已在fstab文件中记录的,则会被自动忽略,通过下图可以看到,此时相应分区已经挂载成功:
完成上面两步后,再重启Linux系统,会看到新增加的记录已经被挂载了。
针对于.iso
文件的挂载,通过ll
命令可以看到/dev/cdrom
是一个指向/dev/sr0
的软连接,挂载时向fstab文件输入如下内容:
/dev/sr0 /mnt/iso iso9660 defaults 0 0
然后通过mount -a
命令就可以完成挂载了。
注: 在/dev/disk/by-uuid
下记录了所有硬件设备的uuid,而通过uuid也可以对设备进行挂载,用来代替文件系统所在分区的路径。而通过名称来进行挂载也是通过查找uuid来进行挂载的。具体如下:
5. 逻辑卷详解
5.1 逻辑卷简介
如果对磁盘直接使用fdisk分区,那么这种分区叫做Linux的标准分区,Linux的标准分区如果被格式化成文件系统后,挂载使用,那么一旦文件系统的空间满了,是无法扩容的,只能将数据备份到其他地方,然后创建一个容量更大的文件系统,再将数据放入该系统中,这种方法效率极低。而逻辑卷的出现,就解决了这种问题。
其解决方案具体为再分区时不直接格式化磁盘,而是将其加入到物理卷(PV Physical Volume)中,然后再在物理卷中创建卷组(VG Volume Group),在卷组中挂载逻辑卷(LG Logical Volume)。由于可以往物理卷中加入磁盘或者分区,所以理论上物理卷是无限大的,故此就可以创建无数个卷组,在一个卷组中可以创建多个逻辑卷。 每一个逻辑卷就相当于一个分区,通过将逻辑卷格式化为文件系统后进行挂载,就可以使用了。
当逻辑卷空间不够时,就可以通过向卷组请求空间来进行扩容,卷组空间不够就向物理卷请求空间, 从而解决了标准分区用满后不能直接扩容的问题。
5.2 物理卷的创建与删除
5.2.1 创建物理卷
首先,对磁盘进行分区(方法如上所述)(不分区也可以,创建物理卷时直接使用硬盘路径即可),然后通过命令pvcreate
命令来创建物理卷了,格式为pvcreate 分区所在路径/硬盘
实例: 创建物理卷
通过pvs
命令即可查看创建的物理卷,通过pvdisplay
命令可以查看物理卷的详细信息,格式为pvdisplay 物理卷所在路径
实例: 查看sdb详细信息
5.2.2 删除物理卷
通过pvremove
命令可以直接删除物理卷,格式为pvremove 物理卷所在路径
pvremove 物理卷所在路径
# 实例:删除sda1物理卷
pvremove /dev/sda1
== 实例:== 删除物理卷sdb
注: 如果物理卷已被卷组使用,则无法删除。
5.3 卷组的创建、扩容和删除
5.3.1 卷组的创建
通过vgcreate 卷组名 物理卷路径
来创建卷组,卷组中的最小单位是PE(Physical Extended),即物理扩展,可以通过-s
参数指定。
实例: 在磁盘sdb上面创建卷组vg1,且指定pe大小为8Mb
注: vgcreate最后指定的路径必须是在物理卷里,在较新的版本中,如果后面指定的路径不在物理卷里,会自动将后面的分区/磁盘加入物理卷中。
5.3.2 卷组的扩容
通过命令vgextend 卷组名 分区/磁盘所在路径
就可以实现对指定卷组的扩容,例如vgextend vg1 /dev/sdb
表示将物理卷中的sdb直接划入到卷组vg1中,从而实现了对对卷组vg1的扩容。
5.3.3 卷组的删除
通过命令vgremove 卷组名
就可以删除卷组了,和物理卷类似,当vg中有逻辑卷在使用时,vg是无法删除的。
5.4 逻辑卷的创建、扩容和删除
5.4.1 逻辑卷的创建
通过命令lvcreate -n 逻辑卷名 -L 逻辑卷大小 卷组名
来创建逻辑卷。
实例: 在卷组vg1中创建一个大小为20G、名为lv1的逻辑卷
注: 逻辑卷创建完成后,就可以直接格式化为文件系统使用了,如果卷组下面创建了一个新的逻辑卷,那么该逻辑卷就会自动在设备文件路径出现/dev/vgname/lvname
。如上面的lv1路径为:/dev/vg1/lv1
,其是一个软连接,指向/dev/dm*
,所以也就说明,dev下面的dm(device mapper)设备表示的就是逻辑卷。
通过lvs
可以查看逻辑卷的详情。
5.4.2 逻辑卷的扩容
通过命令lvextend 逻辑卷所在路径 -L 扩容大小
就可以实现对逻辑卷的扩容,例如lvextend /dev/vg1/lv1 -L 300M
表示将上面的逻辑卷lv1扩容300M(实际大小必为PE的整数倍)。扩容完成后再通过命令resize2fs 挂载点所在路径/逻辑卷所在路径
将扩充的容量加入到文件系统中,这样就可以使用了,针对例子,相应的命令为:resize2fs /dev/vg1/lv1
,执行完成后,就可以使用df命令查看相应的逻辑卷容量已经变化。
5.4.3 逻辑卷的删除
通过lvremove 逻辑卷所在路径
就可以直接删除逻辑卷,例如lvremove /dev/vg1/lv1
就可以直接删除上面创建的逻辑卷。
6. swap分区
swap分区也叫虚拟内存,其是在硬件内存资源不够的时候将磁盘部分容量当作内存来使用。创建swap分区时,主要有以下几步:
- 使用命令
fdisk
创建分区; - 使用命令
mkswap 分区所在路径
来格式化该分区; - 进入到
etc/fstab
文件中,按照格式swap文件系统的分区所在路径 swap swap defaults 0 0
添加创建的分区即可;然后使用命令swapon -a
来完成对swap分区的挂载操作。而命令swapoff -a
则可以卸载全部分区。还可以在命令后面直接加分区所在路径来挂载/卸载指定分区,例如swapon /dev/sdb1
表示挂载/dev/sdb1
swap分区。
7. Linux网络文件系统
Linux网络文件系统也叫nfs(network file system),在rhel中想要搭建网络文件系统,总共分为以下步骤:
- 首先要在客户端和服务端系统中从系统安装镜像中安装
nfs-utils
和vim
; - 在需要共享的服务器系统中编辑
etc/exports
文件,格式如下:
要共享的目录 要共享的网段(权限)
# 实例:将服务器上的/root/share_file目录共享到网段192.168.136.0网段,权限为读和写
/root/share_file 192.168.136.0/24(rw)
- 使用命令
systemctl restart nfs-server
重启nfs文件系统服务 - 在客户端创建网络文件系统的挂载点,这里创建
/mnt/nfs-client
目录; - 使用命令
mount -t nfs nfs服务端ip地址:/root/share_file /mnt/nfs_client
挂载共享的网络文件系统,如果要实现nfs的持久性挂载,也需要在/etc/fstab
文件中进行添加。
注: 也可以在服务端创建一个新的分区,然后将该分区先挂载到服务端,然后将服务端的挂载点分享出去,这样就可以控制分享出去的空间的大小(因为如果是真实目录,则共享出去的可用空间为该目录所在文件系统容量的大小)。
8. autofs按需挂载
想要使用该功能,先要先使用命令yum -y install autofs
来安装autofs(其安装包位于rhel的镜像中),其主要的配置文件为/etc/auto.master
,其默认内容如下:
/misc /etc/auto.misc
其中/misc
表示挂载点父目录;etc/auto.misc
表示该挂载点父目录相应的配置文件,当使用命令systemctl start autofs
启动autofs后,就会在相应目录下看到父目录(这里为根目录下的misc
目录)。
而/etc/auto.misc
文件中则记录了挂载什么样的设备,例如挂载cdrom设备,且将其挂载到temp目录下,则可以写为:temp -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
,这样,当autofs启动后,就会多出一个挂载点父目录,然后在父母录中使用命令ls 挂载点目录
后,就会将其自动挂载(其他命令也可以,只要能操作挂载点目录即可)。如果需要挂载其他设备,则可以按照如下格式,在/etc/auto.master
文件中按如下格式添加相应内容,然后以auto.misc文件为示例创建相应的配置文件即可。
# auto.master 格式(超时表示超过指定秒数无操作即自动卸载)
挂载点父目录 记录挂载信息的配置文件 --timeout 秒数
9. Linux的tuned调优
9.1 tuned简介
tuned是一项守护程序,它会使用udev来监控联网装置,并且根据选择的配置文件对系统设置进行静态和动态的微调。其中动态微调默认是禁用的,在/etc/tuned/tuned-main.conf
文件中,将dynamic_tuning
修改为1。
例如办公室工作站,大多数时间里,以太网接口是非活跃状态的,可能只会偶尔发送一些电子邮件等,对于这些负载,网络接口不需要一直满载运行,而tuned有一个针对网络设备的监控和微调插件,能够检测这种低活跃度,当活跃度较低时自动降低该设备的运行速度。
9.2 tuned的基本操作
tuned常用的命令如下:
- 安装tuned:
yum -y install tuned
- 启动tuned:
systemctl start tuned
(安装完后默认启动) - 设置tuned开机自启:
systemctl enable tuned
- 查看可用的已安装配置文件:
tuned-adm list
- 查看目前已激活的配置文件:
tuned-adm active
- 选择或激活某一项配置文件:
tuned-adm profile profile
例如:tuned-adm profile powersave
表示启用低功耗调优配置,用于最大化的节能,尽可能减少实际耗电量。 - 根据当前系统情况自动推荐相应的调优方向:
tuned-adm recommend
9.3 tuned的基本模式
tuned除了上面的powersave外,还有以下几种方式:
-
balanced
:默认的节电配置文件,其目的是为了在性能和节能之间找到平衡。其唯一的缺点是会增加延迟。 -
throughput-performance
:将服务器向高吞吐两优化的配置文件,会禁用节电机制且启用sysctl设置,提升磁盘和网络IO的吞吐性能,并且切换到deadline计划程序。CPU调控器被设定为performence。 -
latency-performance
:将服务器向低延迟优化的配置文件,他会禁用节电机制并启用sysctl设置,改善延迟。 -
network-latency
:用于低延迟网络微调的配置文件。 -
network-throughput
:用于微调网络吞吐量的配置文件 -
virtual-guest
:针对虚拟客机设计的配置文件,会降低虚拟内存的swap,增加磁盘的预读值。 -
virtual-host
:基于enterprise-storage的配置文件,会降低虚拟内存的sawppiness,增加磁盘预读值,并且启动更积极的脏页回写。 -
sap
:针对SAP软件进行最佳性能优化的配置文件。 -
desktop
:基于balanced文件,针对台式机电脑进行优化的配置文件,会额外启动autogroups计划程序。