硬盘分区(disk partition)

项目名称:
存储管理、进程管理

项目需求:
1、在企业服务器上安装新硬盘,对磁盘进行分区、格式化、挂载处理
2、根据企业服务器数据业务的不同,采用不同的raid技术来保证数据的读写速度、数据安全
3、在企业的存储服务器上采用LVM逻辑卷技术来实现容量的动态调整
4、在服务器的运维工作中随机对系统进程进行分析和管理

项目测试:

原理概述:存储管理是系统中必不可少的技术,Linux系统中支持多种存储管理技术。在企业服务器中需要根据业务的不同来分别使用分区、raid、LVM逻辑卷等技术。

测试环境:Linux系统、ssh远程管理

项目实施:

操作指南:
磁盘分区管理
需求:服务器上装了一块新硬盘,需要能正常往硬盘上写入数据。

新硬盘的相关技术处理:
1、分区。对硬盘上的数据进行分类管理。类似于windows中的c、d、e盘。
2、格式化。在硬盘的分区上创建文件分配表。也称为创建文件系统。
3、挂载分区。将硬盘分区中的文件读到一个文件夹中。
准备:将Linux虚拟机用init 0正常关机,然后添加4块5G的硬盘。然后创建快照“4块硬盘”。

查看硬盘的型号:smartctl -a /dev/sda
查硬盘等块设备:lsblk(list block)

磁盘管理_第1张图片

---------sda1代号的意思
s是表示硬盘接口是SCSI(小型计算机接口)。
d表示disk磁盘。
a表示主板上第一个接口上的第一块硬盘。
1表示第一个分区

查所有的硬盘分区表:fdisk -l |grep sd

GPT分区管理:parted命令
GPT:是GUID(Globally Unique Identifier)Partition Table全局唯一标识分区表的缩写。
GPT分区表中只有主分区这个管理概念。允许创建128个主分区。GPT分区表可以用来管理总容量大于2TB以上的硬盘。硬盘的UUID号可用blkid来查。

GUID:全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。GUID标识符由随机产生的字母、数字混合
组成。
------------------ 。

要求:将2GB的硬盘sdb用GPT分区表进行管理,要求给sdb硬盘创建2个主分区,第1个主分区容量是1.5G,另一个主分区的容量使用所有剩余空间。
查块设备列表:lsblk
定义分区表标签(即格式):parted -s /dev/sdb mklabel gpt
创建第一个1.5G的主分区:parted -s /dev/sdb mkpart primary 1M 1.5G (primary 主要的)
创建第2个分区(使用所有的剩余空间-1)parted -s /dev/sdb mkpart primary '1.5 -1'
查看sdb硬盘的分区表信息lsblk

磁盘管理_第2张图片

parted命令的附加功能:
显示(print)sdb硬盘的分区表:parted /dev/sdb p
删除sdb硬盘的2号分区:parted -s /dev/sdb rm 2

mount挂载:将分区的文件系统内容读取到一个目录中。访问这个挂载点目录就等同于访问这个分区文件系统中的文件。其实windows中的c、d等盘符就是自动挂载的目录。例如,在windows中插入U盘后会被自动分配到一个盘符,这就是微软在后台做的一个mount自动挂载的程序。

要求:将sdb硬盘的第1个分区格式化成ext4文件系统,将第2个分区格式化成xfs文件系统。将第1个分挂载到/mnt/sdb1目录中,将第2个分挂载到/mnt/sdb2目录中。分别往分区的挂载点目录中写入一些数据。
格式化一号分区:mkfs.ext4 /dev/sdb1
格式化二号分区:mkfs.xfs /dev/sdb2
创建挂载点目录:mkdir -pv /mnt/sdb{1,2}
手动挂载:mount /dev/sdb1 /mnt/sdb1 ;
mount /dev/sdb2 /mnt/sdb2;
lsblk
磁盘管理
写入数据:touch /mnt/sdb1/{a.mp3,b.mp4}
cp -v /etc/host* /mnt/sdb2
递归(-R)显示目录中的文件名列表:ls -R /mnt

---------------------------
卸载挂载点:umount    /dev/sdb1   ;umount   /dev/sdb2
删除sdb1、sdb2分区:parted    -s    /dev/sdb1  rm   1
                                                                        parted   -s   /dev/sdb2   rm   2
或者   parted    -s   /dev/sdb   mklabel   msdos

---------------------------------------------------------------

MBR分区表管理

MBR:是主引导记录(main boot record)的s缩写。
MBR:是保存在硬盘的0磁道0柱面1扇区的位置,占用512字节(因为一个扇区默认的大小是512字节)。其中bootloader引导程序占用446字节,DPT(disk partition tabel)分区表占用64字节,magic占用2字节。

MBR的分区表特点:
0.只能管理总容量在2TB以内的硬盘。
1.最多只允许分4个主分区,因为DPT分区表总容量是64字节,每个分区占用16字节,即64/16=4
2.如果想分4个以上的分区,可采用分一个主分区(primary)和一个扩展分区(extend),然后在扩展分区只创建逻辑(logical)分区来实现。
3.主分区编号为1~4,第一个逻辑分区的编号默认为5.
4.只能在主分区和逻辑分区上格式化创建文件系统。并且只能在主分区和逻辑分区上写入文件。

硬盘分5个分区的方案(用MBR分区表)
方案一、1个主分区,一个扩展分区,4个逻辑分区。
方案二、3个主分区,一个扩展分区,2个逻辑分区。

MBR分区练习:将2GB的硬盘sdb用MBR分区表进行管理,要求给sdb硬盘创建1个容量为1.2G的主分区,再创建一个扩展分区容量为所有剩余空间。在扩展分区中创建2个逻辑分区,第1个逻辑分区容量为600M,第2个逻辑分区的容量为所有剩余空间。

cfdisk /dev/sdb
创建主分区:n新建==>p主分区==>1.2G回车==>beginning回车==>W(大写)保存==>yes回车
创建逻辑分区1:选free空闲空间==> n新建==>l逻辑分区==>600M回车==>beginning回车
创建逻辑分区2:选free空闲空间==> n新建==>l逻辑分区==>回车==>beginning回车==>W保存(这是大写的)==>yes回车==>q键退出
lsblk
磁盘管理


将sdb硬盘的第1个分区格式化成ext4文件系统,将第1、2个逻辑分区格式化成xfs文件系统。将第1个分挂载到/mnt/data目录中,将第1、2个逻辑分区分别挂载到/mnt/mysql、/mnt/web目录中。分别往分区的挂载点目录中写入一些数据。
格式化分区:mkfs.xfs /dev/sdb1
mkfs.ext4 /dev/sd5
mkfs.ext4 /dev/sd6
创建挂载点目录:mkdir -pv /mnt/{data,mysql,web}
手动挂载:mount /dev/sdb1 /mnt/data
mount /dev/sdb5 /mnt/mysql
mount /dev/sdb6 /mnt/web

lsblk
磁盘管理
写入数据:touch /mnt/data/{a.txt}
touch /mnt/mysql/{b.txt}
touch /mnt/web/{c.txt}
ls -R /mnt/
把sdb分区的文件系统卸载掉,删除sdc、sdd硬盘的分区表
umount /dev/sdb1
umount /dev/sdb5
umount /dev/sdb6
parted -s /dev/sdb mklabel msdos

fstab自动挂载

mount 手动挂载的缺点:当系统重启后,用户必须重新手动将分区的文件系统挂载到指定的目录。但是用户可以将mount手动挂载的命令写到/etc/rc.d/rc.local开机运行脚本文件中,系统在启动时会自动执行rc.local脚本中的命令。

fstab自动挂载配置文件:fstab是file system table文件系统表的缩写。是用来记录磁盘分区设备自动挂载信息的配置文件。系统启动时会读取/etc/fstab文件中的挂载配置信息,并自动挂载里面的设备。

查看/etc/fstab配置文件内容,熟悉fstab文件格式。
cat /etc/fstab 内容如下(可用man 5 fstab了解文件的格式)
分区设备 挂载点目录 文件系统类型(格式) 挂载选项 dump备份 fsck检查
/dev/mapper/centos-root / xfs defaults 0 0
UUID=8b947ec7-6d78-4121-8a4c-7aaabf3a221e /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0

格式说明:
第1列:分区设备,可以是磁盘的分区设备名、分区的UUID值、分区的label标签。UUID值、label标签可用blkid命令查。
第2列:挂载点目录,必须是已存在的空目录。
第3列:文件系统类型,也就是用mkfs、mkfs.ext4、mkfs.xfs格式化创建的文件系统格式。文件系统格式可以是ext4、、xfs、vfat、ntfs、iso9660、nfs、smb等。
第4列:挂载选项,通常是defaults默认,default代表的选项是rw可读可写,suid超级权限,dev设备,exec可执行,auto自动,nouser无用户,and async异步。选项还可以是ro只读、usrquota用户配额、grpquota组配额。
第5列:dump备份,即是否使用dump工具进行数据备份。0表示禁用,1表示启动。
第6列:fsck检查,即是否使用fsck工具进行磁盘扫描检查。0表示禁用,1表示启动。

要求将sdb硬盘的三个分区的文件系统卸载。并用lsblk或df -hT查看挂载信息。
查挂载信息:lsblk 或 df -hT
卸载分区的文件系统:umount -v /dev/sdb{1,5,6}
查挂载信息:lsblk 或 df -hT

采用fstab文件实现sdb硬盘三个分区的文件系统自动挂载。
第1步,在fstab配置文件中添加自动挂载设置。
vim /etc/fstab 在文件最后添加如下内容
#分区设备 挂载点 文件系统类型 挂载选项 dump备份 fsck检查
/dev/sdb1 /mnt/data ext4 defaults 0 0
/dev/sdb5 /mnt/mysql xfs defaults 0 0
/dev/sdb6 /mnt/web xfs defaults 0 0
第2步,用mount -av做自动挂载测试。用lsblk或df -hT显示已挂载的分区文件系统信息
mount -av
lsblk 或 df -hT
第3步,此步骤可以不做,仅用于验证效果。reboot重启linux系统,系统启动后,用lsblk或df -hT看sdb硬盘分区的文件系统是否自动挂载上了。
reboot 重启
lsblk

mount命令详解:
用法:mount [选项] 分区设备 挂载点
选项:
-a, --all 挂载 fstab 中的所有文件系统
-h, --help 显示此帮助并退出
-o, --options <列表> 挂载选项列表,以英文逗号分隔,选项用man mount查帮助手册
-r, --read-only 以只读方式挂载文件系统(同 -o ro)
-t, --types <列表> 限制文件系统类型集合,文件系统格式类型通常有ext4、xfs、vfat、ntfs、smb、nfs、swap、iso9660等
--source <源> 指明源(路径、标签、uuid)
--target <目标> 指明挂载点
-v, --verbose 打印当前进行的操作
-w, --rw, --read-write 以读写方式挂载文件系统(默认)

源(设备):
-L, --label <标签> 同 LABEL=

操作:
-B, --bind 挂载其他位置的子树(同 -o bind)
-M, --move 将子树移动到其他位置
-R, --rbind 挂载其他位置的子树及其包含的所有挂载

mount是例:执行如下功能的命令。
创建挂载点目录:mkdir -pv /tmp/{c..g}
显示磁盘块设备清单:lsblk
将/dev/sda1分区挂载到/tmp/c目录中:mount -t xfs /dev/sda1 /tmp/c
将/dev/sda1分区以只读方式挂载到/tmp/d目录中:mount -o ro /dev/sda1 /tmp/d

以uuid方式将/dev/sda1分区挂载到/tmp/e目录中:
blkid /dev/sda1;
mount UUID="8b947ec7-6d78-4121-8a4c-7aaabf3a221e" /tmp/e

给/dev/sda1分区设置label标签,以label标签的方式挂载sda1分区到/tmp/f目录中:

将/usr目录挂载到/tmp/g目录中(通常用于文件共享时):mount -B /usr /tmp/g


fdisk分区命令:
功能:对硬盘进行分区的查、增、删、改等操作。
用法:fdisk [选项] 磁盘设备
选项:-l 显示分区表信息

例:用lsblk显示磁盘块设备,用fdisk命令显示sdb硬盘的分区表信息
磁盘管理_第3张图片

例:用fdisk命令对sdb硬盘进行分区管理,要求创建一个1G的主分区,创建一个扩展分区使用所有剩余空间,在扩展分区中创建2个逻辑分区,第一个逻辑分区容量为300M,第2个逻辑分区使用所有剩余空间。每创建一个分区就用p查一下分区表信息。
管理sdb硬盘的分区表: fdisk /dev/sdb

fdisk的常用快捷键:
m:显示命令帮助
p 显示分区表信息(print)
n 新建一个分区(new)
d 删除一个分区(delete)
w 保存并退出(write)
q 不保存退出(quit)
l 显示(list)分区的文件系统类型标签代号
t 修改分区的文件系统类型(type)标签
a 激活(active),即给分区添加bootable允许引导的标记(通常用于boot引导程序的分区)
显示分区表信息: p ====
创建1G的主分区(primary):
命令(输入m获取帮助):n ====
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
select(default p):回车 ======
using default response p
分区号(1-4,默认 1):回车 =====
起始扇区(2048-4194303,默认为2048):回车 =====
将使用默认值2048
Last 扇区, +扇区 or +size{K,M,G} (2048-4194303,默认为 4194303):+1G ===
分区1已设置为LInux类型,大小设为1GiB

磁盘管理_第4张图片

创建扩展分区,使用所有剩余空间:
显示分区表信息:p ===
命令(输入 m 获取帮助):n ===
Partition type:
p primary 主分区(1 primary, 0 extended, 3 free)
e extended 扩展分区
Select (default p): e ===扩展分区
分区号 (2-4,默认 2):回车 ===
起始 扇区 (2099200-4194303,默认为 2099200):回车 ===
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-4194303,默认为 4194303):回车 ===
将使用默认值 4194303
分区 2 已设置为 Extended 类型,大小设为 1023 MiB

给第1个主分区添加bootable标记:
命令(输入 m 获取帮助):a ===
分区号 (1,2,5,6,默认 6):1 ===
命令(输入 m 获取帮助):p ===
设备 Boot Start End Blocks Id System
/dev/sdb1 * 2048 2099199 1048576 83 Linux

创建逻辑分区1,容量300M:
显示分区表信息:p ===
命令(输入 m 获取帮助):n ===
Partition type:
p primary 主分区(1 primary, 1 extended, 2 free)
l logical 逻辑分区(numbered from 5)
Select (default p): l ===逻辑分区
添加逻辑分区 5
起始 扇区 (2101248-4194303,默认为 2101248):回车 ===
将使用默认值 2101248
Last 扇区, +扇区 or +size{K,M,G} (2101248-4194303,默认为 4194303):+300M ===
分区 5 已设置为 Linux 类型,大小设为 300 MiB
显示分区表信息:p ===

创建逻辑分区2,容量为所有剩余空间:
操作方法请参照逻辑分区1的操作步骤。

保存分区表并退出:w
分别用lsblk和fdisk -l显示sdb硬盘的分区表信息:lsblk /dev/sdb ; fdisk -l /dev/sdb

磁头:负责在磁盘上完成读写定位操作的部件。系统读出255磁头数,并不是说硬盘里面真的有255个磁头,而是系统从逻辑上对磁头的一种管理方法。
磁道track:当磁头在某一固定位置时,盘片转1圈所形成的圆。
扇区sector:将磁道等分成一定大小的弧段,每扇区默认为512字节
柱面cylinders:同一半径多个磁道就形成了柱面。
block块:默认的一个块是4096字节(8扇区512字节),系统读文件时,一次最少会读取1个块。
硬盘容量=磁头数
扇区数柱面数512字节
在0磁头0柱面的第一个扇区保存着MBR(mater boot record)主引导记录与DPT(disk part table)分区表信息,2字节存magic编号。单个扇区容量为512bytes组成,主引导记录需要占用446bytes,分区表的为64bytes,而每记录一个分区信息需要16bytes,那么问题来了,好像只能记录4个分区信息?

MBR分区表的概念
primary主分区:主要的分区。
extend扩展分区:用来扩展管理逻辑分区的。
logical逻辑分区:扩展分区中的成员分区。逻辑分区的编号默认从5开始。

常见的MBR分区表方案:
1个主分区+1个扩展分区+多个逻辑分区。

swap交换分区
虚拟内存:将硬盘的一部分空间当作内存来使用。用来缓解物理内存不足的问题。
SWAP即交换分区是一种类似于Windows系统虚拟内存的功能,将一部分硬盘空间虚拟成内存来使用,从而解决内存容量不足的情况,因为SWAP毕竟是用硬盘资源虚拟的,所以速度上比真实物理内存要慢很多,一般只有当真实物理内存耗尽时才会调用SWAP。

硬盘已经没有剩余空间来创建swap分区时,在硬盘上创建一个swap文件来充当swap分区
dd if=/dev/zero of=/tmp/swap bs=1G count=2
说明:if是指定输入文件,of是指定输出文件,bs是指定基本容量大小,count是读写的总次数,swap文件的容量等于bs*count=2G
mkswap /tmp/swap(2、使用mkswap将/tmp/swap文件格式化为swap格式:)
swapon /tmp/swap(启用此文件)
swapon -s查看swap状态
free -h 查看内存状态
swapoff /tmp/swap (关闭此文件)
要想开机任然有效
vim /etc/rc.local
swapon /opt/swap

磁盘管理

磁盘管理_第5张图片