linux 磁盘管理
linux系统磁盘概念
磁盘的结构体系
01. 磁盘的物理结构 (外部结构 内部结构) 工作原理(先切换磁头 让磁头镜像运动)
02. 磁盘阵列说明 (raid0 raid1 raid5 raid10 raid01)
磁盘阵列如何配置
- 配置LVM L 逻辑 v 卷组 M 管理 逻辑卷管理 --> 实现可以随意调整磁盘分区大小
03. 磁盘分区概念
- 给容量较小的磁盘进行分区: 小于2T fdisk
- 给容量较大的磁盘进行分区: 大于2T parted
04. 磁盘格式化操作(创建文件系统)
05. 磁盘维护管理知识(如何使用磁盘 挂载使用)
磁盘层次结构详细说明--物理结构
磁盘的外部结构:
-
a 磁盘主轴 决定磁盘转速(rpm-round per minute)
-
家用磁盘转速 7200 rpm 5400 rpm
-
企业磁盘转速 15k rpm 10k rpm
-
b 磁盘盘片 用于存储数据
-
c 磁盘磁头 用于读取数据
-
d 磁盘接口 用于连接主板 用于连接阵列卡
磁盘的内部结构:
磁盘(Disk)
磁头(Head)
-
作用说明:用来写入和读取数据的
-
特点说明:盘面数量等于磁头数量
-
工作原理:采用径向运动读写数据
磁道(Track)
-
作用说明:用来存储用户数据
-
特点说明:由多个同心圆组成
存储计数:最外面同心圆为0磁道
工作原理:磁盘默认按照磁道寻找数据
重点原理:磁头径向运动为机械运动(寻道) 性能小于固态硬盘(芯片)
原理特点:磁头机械运动较慢
扇区(Sector)
- 作用说明:用来存储用户数据
- 特点说明:磁盘存储最小单位
- 存储计数:默认磁盘扇区从1扇区开始,扇区大小为512字节
- 系统存储最小单位是block
柱面(Cylinder)
-
作用说明:用来存储用户数据
-
特点说明:不同盘面上相同的磁道组成(圆柱体)
-
工作原理:磁盘默认按照柱面进行读写
-
重点原理:磁头之间的切换为电子切换
-
原理特点:磁头电子切换较快
单元块(Units)
-
作用说明:用来存储用户数据
-
特点说明:表示单个柱面大小
磁盘层次结构详细说明--磁盘阵列raid
阵列有什么用?
-
1) 提高磁盘存储效率
-
2) 提高磁盘存储安全
-
3) 提高磁盘存储容量
阵列的配置方法:
-
raid 0 存储数据效率高 存储安全性低
-
raid 1 存储数据效率低 存储安全性高 (存两份)
raid 5 存储数据效率较高 存储安全性较高 (a b c 是ab的校验,b坏了可以通过 a和c推出b)
说明: 至少有3块磁盘 raid5阵列中只能最多坏一块磁盘 损耗一块磁盘的容量
300G 300G 300G --> raid5 --> 600G
LVM 实现分区可以弹性缩融 和 扩容
磁盘层次结构详细说明--磁盘分区方法
预备知识:
系统启动引导记录--
-
MBR引导记录 用于引导磁盘空间小于2T
-
GPT引导记录 用于引导磁盘空间大于2T
分区方式
情况一:
- 可以划分4个主分区 /dev/sda /dev/sda1 .. sda4 mount /dev/sda1 /mnt
情况二:
-
可以划分3个主分区 /dev/sda /dev/sda1 .. sda3
-
可以划分1个扩展分区 扩展分区无法直接使用
-
需要在扩展分区基础上划分逻辑分区: /dev/sda5 /dev/sda6 ...
磁盘分区方法
第一个里程: 准备磁盘环境
准备了一块新的10G硬盘
第二个里程: 在系统中检查是否识别到了新的硬盘
检查是否有新的磁盘存储文件
ll /dev/sdb
第三个里程: 对磁盘进行分区处理(fdisk-- 进行分区处理 查看分区信息)
查看分区信息
fdisk -l
对指定的磁盘进行分区
- fdisk device
对一块磁盘进行分区
[root@oldboyedu ~]# 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 0x6c918c6d. Command (m for help): 可以对磁盘进行分区了 Command action d delete a partition ***** 删除分区 g create a new empty GPT partition table 创建一个新的空的GPT分区表(可以对大于2T磁盘进行分区) l list known partition types 列出可以分区的类型??? m print this menu 输出帮助菜单 n add a new partition ***** 新建增加一个分区 p print the partition table ***** 输出分区的结果信息 q quit without saving changes 不保存退出 t change a partition's system id 改变分区的系统id==改变分区类型(LVM 增加swap分区大小) u change display/entry units 改变分区的方式 是否按照扇区进行划分 w write table to disk and exit ***** 将分区的信息写入分区表并退出==保存分区信息并退出 开始分区: a 规划分4个主分区 每个分区1G 分区操作过程 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 First sector (2048-20971519, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +1G Partition 1 of type Linux and of size 1 GiB is set
情况二: 磁盘分区实践--磁盘大于2T
第一个里程: 准备磁盘环境 虚拟主机中添加一块3T硬盘 第二个里程: 使用parted命令进行分区 mklabel,mktable LABEL-TYPE create a new disklabel (partition table) 创建一个分区表 (默认为mbr) print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition 显示分区信息 mkpart PART-TYPE [FS-TYPE] START END make a partition 创建一个分区 quit exit program 退出分区状态 rm NUMBER delete partition NUMBER 删除分区 修改磁盘分区类型: mklabel gpt 分区方法: mkpart primary 0 2100G 第三个里程: 加载磁盘分区 partprobe /dev/sdc
格式化操作(创建文件系统)
ext3/4 centos6
xfs centos7 格式效率较高 数据存储效率提升(数据库服务器)
创建文件系统: 磁盘分区存储数据的方式
指定文件系统的格式
-
mkfs.xfs /dev/sdb1
-
mkfs -t xfs /dev/sdb2
文件系统的格式
使用 /dev/sdb1 创建一个 xfs 格式的文件系统
[root@oldboyedu /]# mkfs.xfs /dev/sdb2 meta-data=/dev/sdb2 isize=512 agcount=4, agsize=65536 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
磁盘层次结构--磁盘挂载应用
挂载文件系统
mount /dev/sdb1 /mnt/
检查确认
df -h
如何实现开机自动挂载
方法一: 将挂载命令放入/etc/rc.local
mount /dev/sdb1 /mnt
方法二: 在/etc/fstab文件中进行设置
UUID=e2fc8646-2b36-47cc-a35a-8c13208f4d0b / xfs defaults 0 0 UUID=34fc45ba-c38c-42bc-a120-90f9d5dd2382 /boot xfs defaults 0 0 UUID=62100743-6f8a-4f83-a37d-e2088c4830e2 swap swap defaults 0 0 挂载磁盘文件(存储设备) 挂载点 指定文件系统类型 挂载的参数 是否备份磁盘 是否检查磁盘 /dev/sdb1 /mount01 xfs defaults 0 0
如何调整swap分区大小
增加虚拟磁盘的基本思路是:建立 swapfile——>格式化为swap格式——>启用该虚拟磁盘
dd 模拟创建出指定大小的文件
-
dd if=/dev/zero of=/tmp/oldboy.txt bs=10M count=100
-
从哪取出数据 放到哪 占用1个block多少空间 总共使用多少个block
dd 命令的使用方法:
-
if 指定源(一般是写/dev/zero,它是UNIX系统特有的一个文件,它可以源源不断的提供0)
-
of 是指定目标文件
-
bs定义块的大小
-
count定义块的数量
查看现有 swap 容量
free -h
第一个历程: 将磁盘分出一部分空间给swap分区使用
dd if=/dev/zero of=/tmp/1G bs=100M count=10
第二个历程: 将指定磁盘空间作为swap空间使用
[root@oldboyedu tmp]# mkswap /tmp/1G Setting up swapspace version 1, size = 1023996 KiB no label, UUID=6dd70684-dec2-48cf-8fd9-f311548bbb4f
第三个历程: 加载使用swap空间
swapon /tmp/1G
查看扩充后的 swap 容量
free -h
释放新增加的 swap 分区
swapoff /tmp/1G rm /tmp/1G -f free -h
企业磁盘异常案例
磁盘满的原因
-
a 真正数据太大存储过多 block满了
-
b 存储了大量小问题 inode满了