Linux09 磁盘管理和fstab配置文件
目录
磁盘体系结构
系统的安装部署过程
# 第一个历程:进入系统引导界面进行配置
引导项说明:
1.安装centos7系统
2.测试光盘镜像并按安装系统
3.排错模式(修复系统 重置系统密码)
补充:centos7系统网卡名称
默认系统的网卡名称为 eth0 eth1 --centos6
默认系统的网卡名称为 ens33 ens34 --cnetos7
如何调整网卡名称:
选择安装centos--tab键 -- net.ifnames=0 biosdevname=0
如何对Linux系统进行分区:
1.通用分区方案
c盘==/boot 引导分区 200M
swap 交换分区 当内存不够用的时候,将硬盘中的空间充当内存使用
内存<8G,将以交换分区大小=内存大小的1.5倍,内存1G--swap1.5G
内存>=8G 建议交换分区大小=8G
==/ 根分区 剩余全部空间
2.数据信息比较重要的分区方案
/boot 200M
swap <8G 1.5G内存大小
>=8G 8G
/ 20G~200G
/data 剩余空间大小
3.灵活分区方案
/boot 200M
swap <8G 1.5G内存大小
>=8G 8G
/ 20G~200G
剩余空间不分 # 系统装完之后,根据业务需要再分剩下的空间
系统安全配置(关闭)
system-kdump 将宕机前系统中的内存异常信息进行保存,可以根据此文件排查宕机原因
system-security policy 系统的安全策略配置
磁盘概念
一、磁盘的结构体系
1.磁盘的物理结构(外部结构 内部结构) 工作原理(先切换磁头,让磁头径向运动)
2.磁盘阵列说明(raid0 raid1 raid5 raid10 raid01)
磁盘阵列如何配置
配置LVM L 逻辑 V 卷组 M 管理 逻辑卷管理 --> 实现可以随意调整磁盘分区大小
3.磁盘分区概念
给容量较小的磁盘进行分区:小于2T fdisk
给容量较大的磁盘进行分区:大于2T parted
4.磁盘格式化操作(创建文件系统)
5.磁盘维护管理知识(如何使用磁盘 挂载使用)
二、磁盘层次结构详细说明--物理结构
磁盘的外部结构:看得见的结构信息
组成部分:
a 磁盘主轴 决定磁盘转速(rpm-round per minute)
家用磁盘转速 7200 rpm 5400 rpm
企业磁盘转速 15K rpm 10k rpm
b 磁盘盘片 用于存储数据
c 磁盘磁头 用于读取数据
d 磁盘接口 用于连接主板 用于连接阵列卡
磁盘的内部结构:看不见的结构信息
组成部分:
a 磁盘(disk)
b 磁头(head)
作用说明:用来写入和读取数据的
特点说明:盘面数量等于磁头数量
工作原理:采用径向运动读写数据
c 磁道(track)
作用说明:用来存储用户数据
特点说明:由多个同心圆组成
存储计数:最外面同心圆为0磁道
工作原理:磁盘默认按照磁道寻找数据
重点原理:磁头径向运动为机械运动(寻道) 性能小于固态硬盘(芯片)
原理特点:磁头机械运动较慢
d 扇区(sector)
作用说明:用来存储用户数据
特点说明:磁盘存储最小单位
储存计数:默认磁盘扇区从1扇区开始,扇区大小为512字节
系统存储最小单位是block
e 柱面(Cylinder)
作用说明:用来存储用户数据
特点说明:不同盘面上相同的磁道组成(圆柱体)
工作原理:磁盘默认按照柱面进行读写
重点原理:磁头覟的切换为电子切换
原理特点:磁头电子切换较快
f 单元块(Units)
作用说明:用来存储用户数据
特点说明:表示单个柱面大小
磁盘层次结构--磁盘阵列raid
阵列有什么作用?
1)提高磁盘存储效率
2)提高数据存储的安全性
3)提高磁盘存储容量
阵列的配置方法:
raid 0 存储数据效率高,存储安全性低
raid 1 存储数据效率低,存储安全性高
raid5 存储数据效率较高(相对raid1),存储安全性较高(相对raid0)
说明:至少由3块磁盘,raid5阵列中只能最多坏一块磁盘
买了3块300G的硬盘做成raid5阵列,最多可以存储600G的数据
300G 300G 300G -->raid5 --> 600G 损耗一块磁盘的容量
raid10 数据安全保障提高 数据存储效率提高 磁盘容量将会损耗 需要成对添加磁盘
raid01 数据安全保障提高 数据存储效率提高 磁盘容量将会损耗 需要成对添加磁盘
LVM:logical volume management,将多块硬盘整合为一块 LVM是实现分区弹性缩容和扩容
raid0:
raid1:
raid5:
raid01:
磁盘层次结构--磁盘分区
# 磁盘分区概述
1.系统启动引导记录(mbr:主引导记录)
记录所在位置:0磁头 0磁道 1扇区(512字节)
记录占用空间:446字节
2.系统分区类型说明
主分区(primary;64字节),最多4个主分区,每隔分区占用16字节
扩展分区(extend:16字节),最多只能存在一个,无法存储数据信息
逻辑分区(logical),可以有多个逻辑分区,用于存放数据信息
3.系统分区命名说明
按磁盘类型命名:SAS/SATA/SCSI
第一块:/dev/sda
第二块:/dev/sdb
第三块:/dev/sdc
按分区数量命名
主分区和扩展分区
第一分区:/dev/sda1
第二分区:/dev/sda2
第三分区:/dev/sda3
逻辑分区
第一分区:/dev/sda5
第二分区:/dev/sda6
# 磁盘分区方法
# 情况一:磁盘分区实践--磁盘小于2T
第一个历程:准备磁盘环境
准备了一块新的10G硬盘
第二个历程:在系统中检查是否识别到了新的硬盘
检查是否有新的磁盘存储文件 # ll /dev/sdb
第三个历程:
对磁盘进行分区处理(fdisk-- 进行分区,查看分区信息)
d: 删除分区
g:创建一个新的空的GPT分区表(可以对大于2T磁盘进行分区)
l:列出可以分区的类型
m:输出帮助菜单
n:新建增加一个分区
p:输出分区的结果
q:不保存退出
t:改变分区的系统id==改变分区类型(LVM 增加swap分区大小)
u:改变分区的方式 是否按照扇区进行划分
w:将分区的信息写入分区表并退出==保存分区信息并退出
需求:划分2个主分区 划分2个逻辑分区
sdb1 2G
sdb2 2G
sdb5 3G
sdb6 1G
第四个历程:保存退出(w),让系统可以加载识别分区信息
让系统能能够加载识别分区文件 # ll /dev/db* 可能新硬盘的分区表没加载出来
partprobe /dev/sdb
# 情况二:磁盘分区实践--磁盘大于2T
第一个历程:准备磁盘环境
虚拟主机中添加一块3T硬盘
第二个历程:使用parted命令进行分区
mklabel,mktable LABEL-TYPE 创建一个分区表(默认为mbr)
print [devices|free|list,all|NUMBER] 显示分区信息
mkpart PART-TYPE [FS-TYPE] START END 创建一个分区
quit 退出分区状态
rm NUMBER 删除分区
修改磁盘分区类型:mklabel gpt
分区方法:
mkpart primary 0 2100G
mkpart primary 2100G 2200G
第三个历程:加载磁盘分区
partprobe /dev/sdc
第四个历程:退出(quit),让系统可以加载识别分区信息
partprobe /dev/sdc
磁盘层次结构--格式化操作(创建文件系统)
mkfs.xfs /dev/sdb1
或: mkfs -t xfs /dev/sdb2
创建文件按系统:磁盘分区存储数据的方式
ext3/4 centos6
xfs centos7 格式化效率较高 数据存储效率提升(数据库服务器)
磁盘层次结构--磁盘挂载应用
mount /dev/sdb1 /mount01
mount /dev/sdb2 /mount02
检查确认:
df -h
/dev/sdb1 1014M 33M 982M 4% /mount01
/dev/sdb2 1014M 33M 982M 4% /mount02
如何实现开机自动挂载?
方法一:将挂载点命令放入/etc/rc.local
tail -2 /etc/rc.local
mount /dev/sdb1 /mount01
mount /dev/sdb2 /mount02
重启机器,发现分区sdb1,sdb2并没有挂载上,原因:/etc/rc.local(链接文件)对应的原文件/etc/rc.d/rc.local没有执行权限;
chmod a+x /etc/rc.d/rc.local
系统卡机加载rc.local流程:
加载/etc/rc.local --> /etc/rc.d/rc.local --> 以绝对路径方式执行 /etc/rc.d/rc.local
方法二:载/etc/fstab文件中进行设置
/dev/mapper/rhel-root / xfs defaults 0 0
/dev/sda1 /boot xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
挂载磁盘文件(存储设备) 挂载点 指定文件系统类型 挂载的参数(defaults是rw) 是否备份磁盘 是否检查磁盘
mount -o ro/rw 已分区文件路径 目录 # 挂载文件系统为只读或者读写权限,如果挂载为只读权限,即使目录有写权限,也不能在该目录写文件,而且目录的原有文件在挂在后将消失,所以要提前备份哦。。。
磁盘长见问题
1)磁盘满的情况 No space left on device
a.存储的数据过多了
模拟磁盘空间不足
dd if=/dev/zero of=/tmp/zhang.txt bs=1G count=10
(1)block块不足了
解决方式:
(1)删除没用的数据
(2)找出大的没用的数据
find / -type f -size +400M # 找出根目录下文件大小超过400M的
du -sh /* | sort -h # sort -h选项表示按照文件K,M,G的大小排序
(2)inode 存储空间不足(出现了大量的小文件) # df -i 发现被挂载的目录对应的磁盘分区的inode号已经被使用100%了
如恶化调整swap分区大小
第一个历程:将磁盘分出一部分空间给swap分区使用
dd if=/dev/zero of=/tmp/1G bs=100M count=10
第二个历程:将指定磁盘空间作为swap空间使用
mkswap /tmp/1G
# 内存突然占满,临时启用/tmp/1G 的1G硬盘空间作为临时内存空间使用
swapon /tmp/1G # 启用swap分区
# 当内存够用的时候,再关闭这1G 的swap分区并删除
swapoff /tmp/1G
rm -rf /tmp/1G
磁盘相关命令总结
fdisk --磁盘分区工具
parted --磁盘分区工具
partprobe 通知系统磁盘的分区信息变化,更新内核的硬盘分区表信息
tune2fs 调整ext2 ext3 ext4文件系统参数 关闭磁盘分区的自动检功能
mkfs 格式化创建文件系统
dumpe2fs 导出ext2/ext3/ext4文件系统参数
resize2fs 导出ext2 ext3 ext4文件系统大小
fsck 磁盘检查命令,-a参数可以自动恢复
dd 转换或复制文件
od 查看二进制文件信息(od -xa)
mount 挂载文件系统
unmount 卸载文件系统
df 报告文件系统磁盘空间的使用情况
mkswap 创建交换分区
swapon 激活交换分区
swapoff 关闭交换分区
sync 刷新文件系统缓冲区 # 手动将内存中的数据刷新到硬盘,不用等待缓冲区的数据定时定量刷到硬盘
iotop 查看系统的磁盘读写速度,显示出进程使用swap的情况
磁盘管理
在磁盘的 0磁道 0扇区 存放的时MBR,独立于操作系统之外的。
MBR:主引导记录(512bytes)
Master Boot Record
Main Boot Record
446bytes:BootLoader,程序
64bytes:
16bytes:标识一个分区,最多只能建立4个主分区 想创建更多分区,第4个分区可以作为扩展分区,扩展分区存放的是指针,指针指向一个更大的存储空间,再在这个存储空间划分存储分区(逻辑分区)。
2bytes:Magic Number
标记MBR是否有效
文件连接
硬链接:/backup/a/m.txt /backup/b/n.txt 像这种m.txt和n.txt直接指向同一个inode的不同路径,他们彼此之间就可以称之为硬链接。
1.只能对文件创建,不能应用于目录;
2.不能跨文件系统;
3.创建硬链接会增加文件被链接的次数;
符号链接:
1.可应用于目录;
2.可以跨文件系统;
3.不会增加被链接文件的链接次数;
4.其大小为指定的路径所包含的字符个数;
du 目录名:显示一个目录或文件系统整体所占空间的大小(文件所占用的磁盘的大小)
du -s : 显示这个目录及这个目录中的子文件各占用的磁盘大小
du -sh : 可以对所占尺寸的大小进行单位换算
df:查看文件系统对磁盘空间的使用率
-h # 单位换算
-i # 以inode号使用百分比显示磁盘的使用率
-P # 因为文件名太长会换行显示,加上-P参数,可以不换行显示
df -P -i
设备文件:
b:按块为单位,随机访问的设备;
c:按字符为单位,线性访问;
b:硬盘
c:键盘
/dev # ls -al /dev 的第5列和第6列代表:主设备号、次设备号,保存在inode中,不占用额外的磁盘空间。 引用一个设备时通过主设备号和次设备号引用的。
主设备号 (major number):用于标识设备类型
次设备号(minor number):表示同一种类型中不同设备
mknod (设备文件的创建)
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
-m MODE
硬盘设备的设备文件名:
IDE,ATA:hd
SATA:sd
SCSI:sd
USB:sd
a,b,c...来区分同一种类型下的不同设备
IDE:
第一个IDE口:主、从
/dev/hda,/dev/hdb
第二个IDE口:主、从
/dev/hdc,/dev/hdd
sda,sdb,sdc,...
hda: 一个磁盘最多又4个主分区,或者3个主分区和1个扩展分区;扩展分区可以划分若干个逻辑分区,即使主分区小于4个,逻辑分区的编号也只能从5开始
hda1:第一个主分区
hda2:
hda3:
hda4:
hda5:第一个逻辑分区
查看 当前系统识别了几块磁盘:
fdisk -l # 所有已识别的设备
fdisk -l [/dev/to/some_device_file]
fidsk -l /dev/sda # 指定看sda这个已被识别的设备
管理磁盘分区:
Linux支持的文件系统:
文件系统是一种让我们在磁盘上创建文件管理的一种软件,属于内核中应该提供的基本功能;我们要把某个设备格式化成某个类型的文件系统,管理文件系统的软件(程序)在用户空间里面,是一个用户进程;用户进程可以实现将某个硬盘的分区格式化(高级格式化)为内核支持的某一中文件类型;
格式化:低级格式化是用来创建磁道的;高级格式化,是用来创建文件系统的
高级格式化:
mkfs -t ext3 # mkfs是一个格式化命令,格式化成ext3的类型
创建文件系统需要用户的命令,介个内核制定的来完成
fdisk /dev/sda
p:显示当前硬件的分区,包括没保存的改动
n:创建新分区
e(extented):扩展分区
p(physical):物理分区
d:删除一个分区
w:保存退出
q:不保存退出
t:修改分区类型
L:
l:显示所支持的所有分区类型
文件系统
文件系统是一种让我们在磁盘上创建
cp -r /etc/* /backup
tune2 -j /dev/sda7
4.调整其预留百分比为3%;
tune2fs -m 3 -L DATA /dec/sda7
5. 已重新挂在的方式挂载此文件系统为不更新访问时间戳,并验证其效果;
stat /backup/inittab
cat /backup/inittab
stat
mount -o remount,noatime /backup
cat
stat
6.对此文件系统强行做一次检测;
e2fsck -f /dev/sda7
7.删除复制而来的所有文件,并将此文件系统重新挂在为同步(sync);而后再次复制/etc、目录中的所有文件至此挂载点,体验其性能变化;
rm -rf /backup/*
mount -o remount,sync /backup
cp -r /etc/* /backup
swap分区:
虚拟内存:
free # 查看当前系统的物理内存和交换空间的使用情况,默认单位是字节
free -m # 更换单位为M
buffers(缓冲):防止过慢的接收数据的设备遭受到冲击,中间加的缓冲
cached(缓存):为了重复使用
partprobe /dev/sda # 让内核重新识别分区 一般创建新的分区之后要使用该命令,不然fdisk找不到新的分区
用fdisk命令,调整分区类型为82
创建交换分区:
mkswap /dev/sda8
-L LABEL # 指定卷标
free -m 发现交换分区还没启用,需要挂载才能使用
swapon /dev/sda8
-a:启用所有的定义在/etc/fstab文件中的交换设备
swapoff /dev/sda8
回环设备
loopback,使用软件来模拟实现硬件
创建一个镜像文件,120G
dd if=/etc/inittab of=/root/inittab #类似cp if(input file)指定要拷贝的文件,of(output),要复制到目录及文件名
dd和cp的不同:
dd:按照数据流进行的复制,可以只拷贝文件的几个字节
cp:复制整个文件
使用本地回环设备创建交换分区:
if=数据来源
of=数据存储目标
ba=1 # block size 指定以多少字节为一个单位去复制
count=2 # 表示一共复制多少个这样的字节
表示以一个字节为单位,一共复制两个字节
seek=#:创建数据文件时,跳过的空间大小
dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1 # 指定从从/dev/sda拷贝数据,但是没有指定文件,所以是从sda磁盘的开头位置开始复制,复制的是MDR。 有需要的话,可以通过这个命令将磁盘的MBR进行备份,如果在磁盘的MBR损坏的时候我们可以用下面一个命令将其覆盖回来。
dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1
dd if=/dev/zero of=/var/swapfile2 seek=1023 bs=1M count=1024 # 跳过了前1023M,实际创建的这个swap只有1M 可以使用 du -sh /var/swapfile 查看
dd if=/dev/zero/ of=/var/swapfile bs=1M count=1024
ls -al /barswapfile
mkswap /var/swapfile
free -m
swapon /var/swapfile
free -m
mount命令,可以挂在iso镜像
mount DEVICE MOUNT_POINT
mount -o loop /root/rhci-5.8-1.iso /media # 挂载本地回环设备
wget ftp://192.168.1.8/pub/isos/rhci-5.8-1.iso
fstab配置文件
文件系统的配置文件/etc/fstab
os在初始化时,会自动挂载此文件中定义的每个文件系统
fstab文件中每列第具体含义:
要挂载的设备 挂载点 文件系统类型 挂载选项 转储频率 文件系统检测次序
转储频率(多长时间对此文件系统进行一次完全备份 0不备份 1每天备份 2每隔一天备份)
文件系统检测次序(只有根可以为1,0表示不检查)
mount -a # 挂载fstab中所指定的所有文件系统
mount -n # 挂载时不更新/etc/mtab文件;
当取消某个设备的挂载的时候,如果有人登录到这个文件系统,会导致卸载的时候报错:device is busy. 这时候可以使用fuser查看是什么用户正在使用该文件系统:
如果没有fuser命令,可以使用 yum install psmisc -y 进行安装
fuser : 验证
-v # 显示是哪个用户正在访问
fuser -v /var/test
-k # 杀掉访问当前文件的进程
fuser -k /var # 用户会被踢出系统
-m # 如果这个文件是个挂载点需要杀掉的话,需要加-m选项,
fuser -km MOUNT_POINT:终止正在访问此挂载点的所有进程
fuser -km /mnt/test
unmount /mnt/test # 现在就可以正常卸载了
cat /proc/filesystem:查看当前内核所支持文件系统类型
练习:
1.创建一个5G分区,文件系统为ext3,卷标为MYDATA,块大小为1024,预留管理空间为磁盘分区的3%,要求开机后可以自动挂载至/data目录,并且自动挂载的设备要使用卷标进行引用;
2.创建一个本地回环文件/var/swaptemp/swapfile来用于swap,要求大小为512MB,卷标为SWAP-FILE,且开机自动启用此交换设备;
mkdir /var/swaptemp
dd if =/dev/zero of=/var/swaptemp/swapfile bs=1M count=512
mkswap LABLE=SWAP-FILE /var/swaptemp/swapfile
/etc/fstab
/var/swaptemp/swapfile swap swap defaults 0 0
3. 上述第一问,如何让其自动挂载的同时启用ACL功能;
/etc/fstab
LABLE='MYDATA' /data ext3 defaults,acl 0 0