磁盘/硬盘/disk是一个东西,不同于内存的是容量比较大。
机械
机械硬盘即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。
固态
固态驱动器(Solid State Disk或Solid State Drive,简称SSD),俗称固态硬盘,固态硬盘是用固态电子存储芯片阵列而制成的硬盘
左侧为固态硬盘,右侧为机械硬盘
盘片 platter
一块硬盘有若干盘片,每个盘片有可以存储数据的上、下两盘面(Side)。这些盘面堆叠在主轴上高速旋转,它们从上至下从“0”开始依次编号。
磁道 track
每个盘面被划分成许多同心圆,这些同心圆轨迹叫做磁道;磁道从外向内从0开始顺序编号。
扇区 sector
将一个盘面划分为若干内角相同的扇形,这样盘面上的每个磁道就被分为若干段圆弧,每段圆弧叫做一个扇区。每个扇区中的数据作为一个单元同时读出或写入。硬盘的第一个扇区,叫做引导扇区。
柱面 cylinder
所有盘面上的同一磁道构成一个圆柱,称作柱面
kernel对不同接口硬盘命名方式,以RHEL7/centos7为例
IDE(并口)
SATA(串口)
主引导记录(MBR,Master Boot Record)是位于磁盘最前边的一段引导
全局唯一标识分区表(GUIDPartition Table,缩写:GPT)是一个实体硬盘的分区表的结构布局的标准。
GPT 支持大于2T的硬盘,支持128个分区
先关闭虚拟机电源
1、编辑虚拟机设置
2、增加磁盘
按默认点击下一步就可以添加成功
分区(MBR或者GPT) ----> 格式化/文件系统 Filesystem ----> 挂载mount
[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 1月 25 09:35 /dev/sda
brw-rw----. 1 root disk 8, 1 1月 25 09:35 /dev/sda1
brw-rw----. 1 root disk 8, 2 1月 25 09:35 /dev/sda2
brw-rw----. 1 root disk 8, 16 1月 25 09:35 /dev/sdb
brw-rw----. 1 root disk 8, 32 1月 25 09:35 /dev/sdc
brw-rw----. 1 root disk 8, 48 1月 25 09:35 /dev/sdd
注释:
- /dev/sdb
- /dev/sdc
- /dev/sdc
- 每一个都相当于购买的新磁盘。
lsblk
启动分区工具MBR
MBR:
[root@localhost ~]# fdisk /dev/sdb
进入会话模式
[root@localhost ~]# fdisk /dev/sdb
# 提示1
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 0x5925deea.
Command (m for help):
# 操作,敲击字母“n”键,新建分区
# 提示2
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
# 操作,敲击字母“p”键
# 说明:请选择主分区,或扩展分区
# 提示3
Select (default p): p
Partition number (1-4, default 1):
# 操作,敲击数字“1”键,选择分区号
# 提示4
First sector (2048-10485759, default 2048):
# 起始 扇区 (2048-10485759,默认为 2048):
# 扇区数量计算方法,此处是5G(5368709120Byte)硬盘。每个扇区是512Byte,1024*1024*1024*5/512=1048760,因为扇区从0号开始,因此最后一个扇区号是10485759。
# 2048:0-2047 扇区,是MBR分区表占用,合计1MB
# 操作,敲击回车键,选择磁盘开始的扇区
# 提示5
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
# 操作,输入分区大小“+2G” 后回车,实际环境根据磁盘划分,如4T磁盘,可以500G 一个分区。该项是选择磁盘分区结束的扇区,即分区大小
# 提示6
Partition 1 of type Linux and of size 2 GiB is set
# 说明,已经完成 2G 大小分区记录。但未生效
# 提示7
Command (m for help):
The partition table has been altered!
# 操作,输入w保存分区信息,自动退出分区工具
Calling ioctl() to re-read partition table.
Syncing disks.
# 刷新分区表
[root@localhost ~]# partprobe /dev/sdb
# 查看分区结果
[root@localhost ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 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: 0x5925deea
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
使用lsblk也可查看
第一个分区划分磁盘完毕,/dev/sdb1
[root@localhost ~]# mkfs.ext4 /dev/sdb1
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
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
后续新创建的分区,如sdb2
,sdb3
都要格式化
手动挂载
创建挂载点,一个分区一个挂载点
[root@localhost ~]# mkdir /mnt/disk1
[root@localhost ~]#mount -t ext4 /dev/sdb1 /mnt/disk1
df -hT
[root@server0 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sdb1 ext4 2G 6M 1.9G 3% /mnt/disk1
分区 文件系统 大小 占用 空闲 占比 挂载点
mount
[root@server0 ~]# mount
/dev/sdb1 on /mysql_data type xfs (rw,relatime,seclabel,attr2,inode64,noquoa)
/dev/sdb3 on /mnt/disk1/disk2/disk3/disk4 type ext4 (rw,relatime,seclabel,dta=ordered)
mount
看的是磁盘有没有特殊属性,看到的信息会比较多,可以使用mount|grep sdb1
查看具体某个分区的挂载情况
- 1.永久挂载fstab(见后文)
- 2.写入自启动文件,不要影响文件原先的内容
vim /root/.bashrc
mount -t ext4 /dev/sdb1 /mnt/disk1
如果创建磁盘分区数量超过4个,需要放弃一个主分区,选择创建扩展分区。
umount /dev/sdb4
fdisk /dev/sdb
# d 删除分区
# 4 第四个分区
# p 打印分区列表,查看删除结果
- n 创建分区
- e 扩展分区
- 回车
- 起始扇区
- 回车
- 磁盘的结尾 ,不要设置结尾,直接回车
扩展分区不可以被格式化,挂载,扩展分区只占用很小的空间,可能只有1M或者512B
- n
- 回车
- +200M
- p
输入l
是列出分区类型
partprobe /dev/sdb
在不断操作磁盘的情况下可能会报错,本次报错如下:
Error: Partition(s) 5, 6, 7 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
重启之后,完成分区
- n
- e
- 回车
- 回车
操作系统必须放在主分区
mount临时挂载就消失了。需要使用永久挂载
vim /etc/fstab
/dev/sdb1 /mnt/disk1 ext4 defaults 0 0
磁盘 挂载点 文件系统类型 默认选项 优先级 优先级
然后使用mount -a
使上述修改立即生效
基本磁盘有个最大的缺点就是无法调整大小,限制了使用场景。
LVM是管理磁盘的一种方式,性质与基本磁盘无异,但是可以随意扩张大小
后续会使用命令写满磁盘来测试,命令为:
dd if=/dev/zero of=/mnt/disk4/1.txt bs=1M count=1000
注意修改of
的路径为要写满的路径
流程:物理磁盘 --> 物理卷pv --> 卷组vg --> 逻辑卷lv
pvcreate —> vgcreate —> lvcreate
逻辑卷从卷组中获取空间,逻辑卷空间不足时,通过卷组扩容,卷组空间不足时,再通过物理卷扩容卷组
将物理磁盘,转换成物理卷-PV
pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created
pvscan
pvs
pvdisplay
vgcreate vg1 /dev/sdc
第一种方法,查看卷组的摘要信息。卷组名,物理卷数量,逻辑卷数量,大小等。
[root@localhost /]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 0 0 wz--n- <5.00g <5.00g
第二种方法,扫描卷组信息
[root@localhost /]# vgscan
Reading volume groups from cache.
Found volume group "vg1" using metadata type lvm2
第三种方法。显示卷组详细信息
[root@localhost /]# vgdisplay
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <5.00 GiB //重点观察
PE Size 4.00 MiB //重点观察
Total PE 1279 //重点观察
Alloc PE / Size 0 / 0
Free PE / Size 1279 / <5.00 GiB
VG UUID agjub2-XL3q-8QqW-dX0b-RBNt-Udoc-Y0Bwwc
lvcreate -L 200M -n lv1 vg1
lvcreate :创建逻辑卷
-L:大小 ,单位M,G
-n:卷名
vg1:组名
lvscan
查看LV
lsblk
从上一步可以看出,逻辑卷就类似一个磁盘分区,创建逻辑卷时已经指定了大小,这里就直接创建文件系统即可
mkfs.ext4 /dev/vg1/lv1
注意:/dev/卷组名/逻辑卷名 ,上边通过lsblk可以看到这个名称
mkdir /mnt/lv1
mount /dev/vg1/lv1 /mnt/lv1
查看挂载结果
df -hT
逻辑卷管理完毕,就可以向挂载点写入数据了
扩大卷组VG
vgextend
环境:/dev/vg1
容量由5G 扩容到 6G
步骤1:创建PV。而后使用第二步,将PV增加到VG中
pvcreate /dev/sdd
,sdd是1G容量
步骤2:扩展VG,同时包含方法1.
vgextend vg1 /dev/sdd
Volume group “vg1” successfully extended
查看VG
vgs
扩大LV lvextend
上一步可看到vg1有5.99G
增加200M空间,给lv1
lvextend -L +200M /dev/vg1/lv1
先观察文件系统当前容量。
df -Th
resize2fs /dev/vg1/lv1
再次观察df -hT 的分区大小,和上一次的对比一下,大小已经发生改变
作用: 提升’内存的容量,防止OOM(Out Of Memory)
推荐:设置交换分区大小为内存的2倍
生产:
实操中很多时候会关闭交换分区
free -mh
准备将/dev/sde磁盘,划分为1G分区为例
fdisk /dev/sde
一路enter即可
可选:划分分区后,将类型设置为82,实测改不改都可以
partprobe /dev/sde
查看分区lsblk
mkswap /dev/sde1
swapon /dev/sde1
可以看到swap分区已经变成了2G
swapon /dev/sde1
之后可以重新对该磁盘进行分区格式化提供给其他使用
vim /etc/fstab
将上图中的红框的这行注释掉,只要是swap类型的都注释掉即可。
有这个需求是在安装k8s时,k8s要求关闭swap分区