【讲清楚,说明白!】磁盘管理

目录:
(一)硬盘结构介绍
(二)如何对分区进行管理
(三)对文件系统的管理
(四)管理swapredis


(一)硬盘结构介绍
(1.1)咱们的硬盘拆开后是由盘片构成的,咱们发现每一个盘片上都会有一层层的圆圈,两个圆圈中间的部分咱们称之为磁道,每个盘片都会被分红一块一块的,每一块咱们称之为扇区,每个扇区的大小为512字节(512B)。每个磁道由外到内分别是磁道0、磁道一、磁道2等,每个磁道上也会分红扇区0、扇区一、扇区2等,例如咱们的硬盘起始位置称为0磁道0扇区。组成硬盘的最小结构咱们称为“扇区”,组成文件系统的最小单位咱们称为“block”,因此扇区也是咱们在划分分区时的最小单位。
【讲清楚,说明白!】磁盘管理
(1.2)在咱们的硬盘中是由不少扇区构成的,例如咱们的第一个分区从2048扇区开始到6000扇区结束,接着咱们对分区进行格式化,默认的文件系统block的大小是4k,也就是8个扇区,所以系统默认为8个扇区组成一个block。
(1.3)如今咱们拥有一块硬盘,咱们假设一共有10000个扇区,我么一共分红4个分区,其中sda1分区从2048扇区开始到4000扇区结束、sda2分区从4001扇区开始到6000扇区结束、sda3分区从6001扇区开始到8000扇区结束、sda4分区从8001扇区开始到10000扇区结束。为了记录咱们系统中的分区划分的信息,在咱们硬盘的第一个扇区中记录了各类各样的信息,咱们称之为MBR,主引导记录,这第一个扇区的大小是512B,其结构为三部分构成:其中第一个部分占用了446个字节,即BootLoader引导加载器,主要的做用是将咱们的系统引导起来;第二部分占用了64个字节,此处为分区表,主要记录的就是咱们系统分区开始和结束的具体扇区的信息;第三个部分大小占用了2B,此处表示的结束符。
【讲清楚,说明白!】磁盘管理
(1.4)须要注意的是64B分区表主要记录的是主分区和扩展分区信息,不能记录其余的分区。在系统中主分区指的是直接从硬盘上划分,能够格式化使用的;扩展分区指的是直接从硬盘上划分,可是不能格式化使用的,可是在其上能够划分更多的分区;逻辑分区主要就是从扩展分区上进行划分的,不能直接从硬盘上直接进行划分的。
(1.5)同时系统要求分区只能有一个扩展分区,分区表每记录一个分区的信息会消耗16个字节,所以正常状况下64B的分区表最多只能划分64/16=4个分区。若是咱们但愿可以建立出更多的分区时,咱们须要经过建立扩展分区,而后在扩展分区建立逻辑分区解决,对于这样的分区方式咱们称之为MBR结构的硬盘,它的兼容性比较好,不适合硬盘容量大于2T的硬盘进行分区。对于大于2T大小的硬盘咱们通常使用GPT来进行管理,它是一种新的硬盘的管理方式,GPT它是能够划分128个主分区的。通常咱们是能够本身选择将硬盘划分为哪一种格式的,这个选择的过程,咱们称之为初始化磁盘标签。
(1.6)通常咱们在对MBR结构的硬盘操做的时候使用的是fdisk命令;当咱们对GPT格式的硬盘操做的时候,咱们使用的是gdisk命令;若是一块新的硬盘咱们并不清楚它的格式,咱们若是想要对这块硬盘进行操做,此时咱们就可使用parted命令,它既能够对MBR格式的硬盘进行操做,也能够对GPT格式的硬盘进行操做。服务器


(二)如何对分区进行管理
(2.1)图形化界面操做
(2.1.1)咱们在vms002主机上再从新添加一块20G的硬盘,而后开机进入系统当中。
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
(2.1.2)首先咱们在图形化的界面进行操做,咱们选择“工具”--“磁盘”,而后即可以看到咱们本身添加的20G的硬盘(图2-5),而后咱们即可以本身选择是经过MBR仍是GPT格式的硬盘进行分区(图2-6)。
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
(2.1.3)咱们选择MBR的方式进行格式化(图2-7),而后咱们开始划分分区,咱们自定义一个xfs类型的分区,建立2G的分区大小(图2-8)。
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
(2.2)
(2.2.1)以上咱们是经过图形化的界面方式对硬盘进行分区的,咱们也是可使用命令行的方式进行操做的,因为刚刚图形化界面的操做将硬盘格式化为GPT的格式了,因此咱们首先将vms002主机的GPT格式先删除掉,而后咱们再设置硬盘的格式为MBR,也能够设置格式类型为loop代表硬盘格式设置为未知类型。
# parted /dev/sdb mklabel gpt---将vms002主机的GPT格式先删除掉
# parted -s /dev/sdb mklabel msdos---使用-s参数指明直接修改硬盘类型不须要交互操做
# parted -s /dev/sdb mklabel loop---若是咱们不须要任何的格式类型,可使用loop
【讲清楚,说明白!】磁盘管理
(2.2.2)若是咱们但愿查看硬盘的全部分区信息,咱们可使用以下的命令操做。
# fdisk -l---能够显示咱们当前系统的全部硬盘的分区信息
# fdisk -l /dev/sda---查看/dev/sda分区的信息
# fdisk -l /dev/sdb---查看/dev/sdb分区的信息
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
(2.2.3)如今咱们须要对sdb分区来进行划分分区,咱们使用fdisk命令来进行操做,进入交互界面后,咱们若是须要获取帮助,咱们能够输入指令m(图2-14);若是咱们须要删除分区,能够输入指令d;若是咱们须要列出分区的类型,咱们能够输入指令l;若是咱们须要添加一块新的分区,能够输入指令n;若是咱们须要打印分区表,咱们能够输入指令P;若是咱们对交互界面的操做不保存并退出,咱们能够输入指令q;若是咱们但愿可以保存退出,咱们能够输入指令w。
# fdisk /dev/sdb---设置对sdb进行划分分区
【讲清楚,说明白!】磁盘管理
(2.2.4)咱们输入p能够打印当前的分区状况,接着咱们输入n能够建立一个新的分区,咱们知道主分区加扩展分区最多只能划分4个,咱们如今先建立一个分区,同时设置分区的大小为2G,咱们知道2G等于2*1024M等于2*1024*1024K等于2*1024*1024*2扇区,而系统中分区开始的位置是从2048扇区开始的,因此咱们设置的2G大小的扇区的结束位置应该在(2048+2*1024*1024*2-1)即4196351这个点的扇区的位置。
【讲清楚,说明白!】磁盘管理
(2.2.5)因为上面咱们计算扇区的方式很是的生涩难懂,通常是不会用到的,其实咱们还可使用更方便的方式进行添加,咱们直接添加一个2G大小的分区便可。
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
(2.2.6)接着咱们按照相同的方式划分出以下的两个主分区。
【讲清楚,说明白!】磁盘管理
(2.2.7)由于咱们已经划分了3个主分区,若是咱们还想继续再多划分3个分区,则此时咱们应该最后一个分区划分为扩展分区,而后在扩展分区上建立3个逻辑分区便可。
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
(2.3)
(2.3.1)咱们也能够在只建立2个主分区的状况下,将剩余的空间所有划分给逻辑分区使用。
【讲清楚,说明白!】磁盘管理
(2.3.2)而后在扩展分区上建立5个逻辑分区,每一个逻辑分区的大小为2G。
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
(2.3.3)每一个分区的用途是不同的,咱们看分区的ID列都是以数字表示的,有的分区是能够直接格式化使用的,例如Linux 83,可是有的分区时不能够直接格式化使用的,只能用来作其余用途,例如Extended 5。咱们在交互界面输入l便可查看全部分区类型的解释。
【讲清楚,说明白!】磁盘管理
(2.3.4)咱们将逻辑分区5-9都转换为了LVN类型的分区
【讲清楚,说明白!】磁盘管理
(2.3.5)若是咱们对以上的操做不想保存,那么咱们直接输入q退出便可,若是咱们对执行的操做时承认的而且须要保存,咱们输入w便可保存。咱们在非系统盘里,建立一个分区会自动同步到分区表,若是咱们在非系统盘里,每每不会自动同步分区表,所以这个时候咱们应该要使用partprobe手动同步分区表。
# partprobe /dev/sdb---咱们应该要使用手动同步分区表(RHEL 7系统)
# partx -a /dev/sdb---在RHEL 6系统中的分区同步方式
【讲清楚,说明白!】磁盘管理app


(三)对文件系统的管理
(3.1)建立完分区后咱们须要建立文件系统,即进行文件系统的格式化。咱们能够选择将文件系统格式化为xfs文件系统的类型,xfs文件系统支持大数据,xfs文件系统最大可支持256EB,单个文件最大可达8EB,基本ext4文件系统支持的功能,xfs文件系统都是支持的,可是xfs文件系统惟一的劣势是不支持文件系统的缩小。咱们使用mkfs命令,使用-t选项指明类型,使用-f选项指明直接操做,此时咱们便实现了将/dev/sdb1分区格式化为xfs文件系统了。
# mkfs -t xfs -f /dev/sdb1---指定sdb1分区的文件系统类型为xfs
【讲清楚,说明白!】磁盘管理
(3.2)以上的方式咱们能够对/dev/sdb1的分区进行格式化,咱们还能够按照下面的方式进行格式化操做(图3-2),若是咱们须要指定文件系统的最小单位block的大小,咱们也能够按照以下的方式操做(图3-3)。
# mkfs.xfs -f /dev/sdb1---指定sdb1分区的文件系统类型为xfs
# mkfs.xfs -f -b size=1024 /dev/sdb1---须要指定文件系统的最小单位block的大小
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
(3.3)接着咱们格式化完外分区后,在系统中建立一个aa的目录,并把分区sdb1分区挂载到aa目录下,此时咱们发现分区挂载到目录下面是成功的。
# mkdir /aa---建立一个aa的目录
# mount /dev/sdb1 /aa---把分区sdb1分区挂载到aa目录下
# df -hT---查看系统的分区挂载状况
【讲清楚,说明白!】磁盘管理
(3.4)若是咱们想要在系统启动后仍然可以挂载光盘,此时咱们应该在/etc/fstab文件中进行编辑,咱们若是须要防止磁盘的篡位的状况发生,咱们应该使用设备的UUID来进行编辑(图3-5和图3-6)。此时咱们发现使用“# mount -a”命令后,咱们发现此时系统已经将/dev/sdb1分区挂载到/aa目录中了(图3-7)。
# blkid---查看全部分区的UUID信息
# xfs_info /dev/sdb1---从新获取格式化后的分区信息
# xfs_admin -u /dev/sdb1---单独查看/dev/sdb1分区的UUID信息
# mount -a---其中-a表示的是auto,即将全部的信息所有从新挂载一次
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
(3.5)对于分区的UUID信息,咱们也是能够从新生成并绑定的,此时咱们先经过uuidgen命令生成一个新的UUID信息,而后将生成的UUID信息和/dev/sdb1分区从新进行绑定,并须要在/etc/fstab文件中修改UUID信息(图3-9),此时咱们才能够实现开机自动挂载分区的目标(图3-10)。
# uuidgen---从新生成一个新的UUID
# xfs_admin -U 092706ec-d3d3-4ce4-baaa-f77e9fc0a221 /dev/sdb1---咱们将生成的UUID信息和/dev/sdb1分区从新进行绑定
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理ide


(四)管理swap
(4.1)swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操做的程序,这些被释放的空间被临时保存到swap分区中,等到那些程序要运行时,再从swap分区中恢复保存的数据到内存中。
(4.2)在咱们的系统中交换分区的做用很重要,即便咱们系统的内存足够大,可是也是仍然须要到使用交换分区。而咱们的swap分区主要是在/proc/sys/vm目录下,其中swappiness的值为30表示的是当咱们的物理内存的使用率达到(100%-swappiness%)即70%的时候,此时咱们的系统将开始使用交换分区,因此当咱们须要对服务器进行优化的时候,咱们就能够经过修改swappiness的值,例如修改成0,这样就能够实如今系统的内存消耗完毕后才开始使用交换分区。
【讲清楚,说明白!】磁盘管理
(4.3)另外,也并不是是系统就能把“物理内存+swap”所有使用完毕,真正能分配出去的内存是由“CommitLimit=物理内存*overcommit_ratio+swap”决定。例如如今咱们系统中实际的内存空间是100G,咱们交换分区的大小设置的是2G,而系统中overcommit_ratio参数的值为50%,所以系统可用的内存空间的大小为100*0.5+2即为52G,若是咱们如今运行一个redis的进程须要消耗60G的内存,此时咱们会想固然地认为系统的内存是100G足够去运行这个redis程序,可是实际运行后咱们发现后台的日志老是会有OOM killed的报错提示,这就是因为系统的overcommit_ratio参数设置不合理而致使咱们系统中实际的可用内存只有52G,因此才会出现缓冲区溢出的问题。
(4.4)经验总结:通常咱们的系统中交换分区的设置方式遵循以下的规则:
物理内存<=2G---swap为1.5~2倍
物理内存为4G---swap为4G
物理内存为4~16G---swap>=8G
物理内存为16~32G---swap为16G
物理内存>=32G---swap为32G
(4.5)咱们若是须要查询当前的系统有多少的交换分区,则咱们能够按照以下的两种方式查看
# swapon -s---查看当前系统的交换分区的信息(方法一)
# cat /proc/swaps---查看当前系统的交换分区的信息(方法二)
【讲清楚,说明白!】磁盘管理
(4.6)若是咱们的交换分区不够用了,咱们是能够添加交换分区的,因为咱们在建立分区的时候将/dev/sdb2分区设置为swap类型(图4-4),因此咱们还须要在系统中将此/dev/sdb2分区格式化为swap类型(图4-5),而系统在使用交换分区的时候是根据权限的大小来判断交换分区的使用优先级的,数值越大优先级越高,例如-1是大于-2的,因此sda2是优先于sda1使用的。
# fdisk -l /dev/sdb---查看系统中/dev/sdb分区设置的类型
# mkswap /dev/sdb2---将/dev/sdb2分区格式化为swap类型
# swapon /dev/sdb2---将/dev/sdb2分区激活
# swapon -s---查看当前系统swap分区的使用状况
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
(4.7)例如咱们如今想要修改提升/dev/sdb2的优先级,咱们能够经过以下的方式操做
# swapoff /dev/sdb2---首先将/dev/sdb2的swap分区关闭掉
# swapon -p 3 /dev/sdb2---而后修改提升/dev/sdb2的优先级并开启生效
【讲清楚,说明白!】磁盘管理
(4.8)若是咱们但愿系统在重启后仍然可以挂载swap分区,咱们能够在/etc/fstab文件中进行设置挂载swap分区,而且设置优先级为3(图4-7),而后咱们须要记住使用“# swapon -a”命令将全部的swap交换分区生效(图4-8)。
【讲清楚,说明白!】磁盘管理
【讲清楚,说明白!】磁盘管理
(4.9)以上咱们使用的是建立一个分区的方式来添加交换分区的,但实际上有时候咱们系统中没有多余的分区的时候,其实咱们仍是能够经过文件的方式来添加交换分区的,咱们可使用dd命令建立一个500M的文件,而后将此文件建立为swap交换分区的格式,并进行挂载使用。
# dd if=/dev/zero of=/swapfile bs=1M count=500---建立一个500M的文件
# chmod 400 /swapfile---设置咱们建立的文件的权限为400
# mkswap /swapfile---将/swapfile分区格式化为swap类型
# swapon /swapfile---将/swapfile分区激活
# swapon -s---查看当前系统swap的挂载状况
【讲清楚,说明白!】磁盘管理工具

—————— 本文至此结束,感谢阅读 ——————oop