1.磁盘分类及特点
1.磁盘分类
机械硬盘(HDD):传统硬盘,为电脑主要的存储媒介之一。
由一个或者多个铝制或者玻璃制成的磁性碟片,磁头,转轴,控制电机,磁头控制器,数据转换器,接口和缓存等几个部分组成。
机械马达以固定的速度转动磁盘,然后再由机械臂的摆动,让磁头可以读取盘片上的磁性信息,这种工作原理的硬盘我们成为机械硬盘。
由于机械硬盘是依靠机械的运动来读写数据的,机械在长时间运转的过程中是会产生一定的损耗,所以机械硬盘虽然理论上寿命很长,但随着时间的变长,机械磨损变大,导致磁头定位的误差变大,从而影响到硬盘的速度,这个就是为什么老电脑开机缓慢,运行卡顿的原因了。
固态硬盘(SSD):由多个闪存芯片加主控以及缓存组成的阵列式存储,属于以固态电子存储芯片阵列制成的硬盘。
固态硬盘依靠主控芯片来将数据的二进制信息写入浮栅晶体管中,以这样的原理实现数据的读取和写入
固态硬盘在读取和写入数据的时候完全是依靠数字电路实现的,所以并没有机械硬盘的机械磨损,而且也没有在磁盘上定位读写的延迟,所以固态硬盘的数据读写效率是远远高于机械硬盘的。
但是也有一定的缺点,由于浮栅晶体管的设计原理,每次数据的读写,都会让浮栅晶体管所需要的电压更高,一定寿命以后,固态硬盘就会失效。并且固态硬盘如果发生了损坏,数据恢复的难度是大于机械硬盘的,所以为了可靠性,企业目前还是在大量使用机械硬盘的。
2.磁盘接口
个人PC机
IDE:并口,133MB/s
SATA:IDE串行化,串口(一代二代三代)6Gbps
USB:串口,480MB/s
IDE:并口数据线连接主板与硬盘,抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代
SATA:抗干扰性强,支持热插拔等功能,速度快,纠错能力强
服务器
SCSI:并口,640MB/s
SAS:SCSI串行化 ,串口6Gbps
并行:IDE、SISC
串口:SATA 、SAS 、USB
SCSI:小型机系统接口,SCSI硬盘广为工作站级个人电脑以及服务器所使用,资料传输时CPU占用率较低,转速快,支持热插拔等
SAS:是新一代的SCSI技术,和SATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到 6Gb/s
3.磁盘结构
磁头header:读取或写入数据,移动只能是径向方法,磁头是从0开始,磁头数==盘面数
磁道tracker:当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。最外面的是0磁道
扇区sector:扇区,是指磁盘上划分的区域。磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区,硬盘的读写以扇区为基本单位. 从1开始
柱面cylinder:硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面
(注:每个磁道有63个扇区,每个盘面有1024个磁道,每个磁盘最多有255个磁头,每个扇区最多能存储512个字节。柱面:每个盘面都有零磁道/扇区,每个盘片有两面,因此每个盘片有两个零磁道/扇区,每个磁盘有多个盘片,所以,磁盘的所有零磁道/扇区组成的立体为零柱面,其他柱面也是如此!)
4.MBR和GPT区别
MBR:MBR的意思是“主引导记录”,是IBM公司早年间提出的。它是存在于磁盘驱动器开始部分的⼀个特殊的启动扇区。这个扇区包含了已安装的操作系统信息,并⽤⼀⼩段代码来启动系统。如果你安装了Windows,其启动信息就放在这⼀段代码中——如果MBR的信息损坏或误删就不能正常启动Windows,这时候你就需要找⼀个引导修复软件⼯具来修复它就可以了。Linux系统中MBR通常会是GRUB加载器。MBR。当
⼀台电脑启动时,它会先启动主板⾃带的BIOS系统,bios加载MBR,MBR再启动Windows,这就是mbr的启动过程
GPT:GPT的意思是GUID Partition Table,即“全局唯⼀标识磁盘分区表”。他是另外⼀种更加先进新颖的磁盘组织⽅式,⼀种使⽤UEFI启动的磁盘组织⽅式。最开始是为了更好的兼容性,后来因为其更⼤的⽀持内存(mbr分区最多⽀持2T的磁盘),更多的兼容⽽被⼴泛使⽤,特别是苹果的MAC系统全部使⽤gpt分区。gtp不在有分区的概念,所有CDEF盘都在⼀段信息中存储。可以简单的理解为更先进但是使⽤不够⼴泛的技术
两者区别
因为兼容问题,gpt其实在引导的最开始部分也有一段mbr引导,也叫做“保护引导”,为了防止设备不支持uefi 区别内存支持:mbr最多支持2T,而gpt理论上是无限制的
分区:mbr最多支持四个主分区,gpt没有限制。如果你想跑多系统,mbr最多4个而gpt没有限制
5.raid介绍
RAID(Redundant Arrays of Independent Disks,RAID)廉价磁盘冗余阵列
RAID的特点
RAID可以透过一个技术(软件或者硬件),将较小的磁盘整合成一个较大 的磁盘装置,提高了I/O能力,还具有数据保护功能,所谓保护功能就是将一个数据多份的存在在不同的物理磁盘之上,这样避免了单块儿甚至多块儿磁盘故障而导致的数据丢失问题,当热这需要借助于RAID的级别来实现更加丰富的功能
RAID的实现方式
1.外接式磁盘阵列:通过扩展卡提供适配能力
2.内接式RAID:主板集成RAID控制器
3.Software RAID:软件方式实现的RAID功能
如何操作实现RAID
1.在安装操作系统之前通过BIOS进行设置此种方式主要目的在于将操作系统安装在RAID之上
2.在安装操作系统之后通过BIOS或软件进行设置此种方式主要目的在于将操作系统和其他专用分区(如数据盘)独立放开
6.RAID级别
RAID0(string条带模式)
要求:至少需要两块磁盘
优点:数据分散存储于不同磁盘上,在读写时可以实现并发,是所有RAID 级别中存储性能最高的;磁盘利用率100%,可用空间N*min(S1,S2,..)
缺点:没有容错功能,一旦其中一块磁盘挂掉全部数据将都会顺坏
RAID1(Mirroring 镜像卷)
要求:至少需要两块磁盘
优点:用过硬盘镜像数据实现数据冗余,保证数据的安全性,在两块盘上互为备份,当原始数据繁忙时,可以直接从镜像备份中读取数据;
缺点:是RAID级别中单位成本最高的,当其中一块磁盘挂掉时,系统可以直接切换到镜像盘上读写,并且不需要重组失效的数据,磁盘利用率50%
RAID5
原理:数据以块(chunk)为单位分散存储在各个硬盘上,RAID 5不对数据进行备份,而是把数据和与其对应的奇偶校验信息存储到组成的RAID5的各个磁盘上,并且将奇偶校验信息和对应的数据分别存储于不同的磁盘上,其中一块(只允许一块)挂掉时,利用剩下的数据和校验信息可以恢复数据
要求:需要3块及以上硬盘
优势:兼顾读写速度和数据安全,读写性能提升,其中一块磁盘挂掉时,可以保证数据不被损坏;(需要注意的是,只允许坏一块盘,并且坏盘要及时更换)磁盘利用率=[(n-1)/n] * 2/3
RAID1+0
先创建RAID 1,在RAID的基础上创建RAID 0
优点:数据安全性好,读写性能提升,有容错率:只要不是一个RAID 1上的2个硬盘同时损坏,都不影 响数据的正常读写,数据恢复快
缺点:写性能较RAID 0+1 差一些
RAID0+1
先创建RAID 0,在RAID 0 的基础上再创建RAID 1
优点:性能上考虑的话,RAID 0+1要更有优势一些,RAID 0+1写入速度更快一些,读取速度和RAID 1+0 一样,
缺点:一旦其中一块硬盘挂掉之后,一半的硬盘无法正常工作,如果2个条带上各坏一块,整个阵列将挂掉
raid级别 | 容量 | 性能 | 冗余 | 至少几块硬盘 |
raid0条带 | 所有硬盘总和 | 最快的 | 只要坏一块就报废 | 至少需要1块硬盘 |
raid1镜像 | 所有磁盘总和一般 | 写入较慢,读取速度相当于是1块硬盘速度 | 100% | 只有2块硬盘 |
raid 5 | 损失一块硬盘容量 | 读取速度ok,写入较慢 | 最多坏1块 | 至少3块硬盘 |
raid10 | 所有容量的一般 | 读写速度很快 | 可以损坏一半,但是不能在一组 | 至少4块硬盘,2的倍数增加 |
7.硬盘命名
在设备名称的定义规则如下, 其他的分区可以以此类推
系统的第一块SCSI接口的硬盘名称为/dev/sda
系统的第二块SCSI接口的硬盘名称为/dev/sdb
系统中分区由数字编号表示, 1~4留给主分区使用和扩展分区, 逻辑分区从5开始
有些存放数据的设备并不是直接硬件对应的设备文件,而是通过软件生成的块设备文件,例如lvm和软raid设备文件
物理硬盘 /dev/sd[a-z]
KVM虚拟化 /dev/vd[a-z] online
第一块磁盘
/dev/sda
第二块磁盘第一个分区
/dev/sdb1
第一块磁盘, 第一个分区
/dev/vda1
硬盘分区命名:
主分区和扩展分区 /dev/sda1 1-4
逻辑分区(mbr规则) /dev/sda5 从5开始
第3块硬盘的第1个主分区 /dev/sdc1
第6块硬盘的第1个逻辑分区 /dev/sdf5
注意:
MBR 方式只能分4个主分区, GPT 可分128个主分区
MBR 与GPT 之间互相转换会导致数据丢失
2.磁盘容量检查
使用df 命令查看磁盘容量,不加参数以k为单位
-i:查看inode使用情况
-h:以G或者T或者M人性化方式显示
-T:查看文件类型
-H:这里的1k等于1000字节而不是1024字节
-k:指定块大小等于1024字节来显示使用状况
-l:只显示本地文件系统使用状况
-m:以指定块大小等于1048576字节(1M)来显示使用状况
-t:只显示指定类型(TYPE)的文件系统
-a:列出包括BLOCK为0的文件系统
iotop显示当前磁盘读取速度
-o:只显示进行读写的进程信息
-p:只显示指定PID的信息
-u:显示指定的用户的进程的信息
-P:只显示进程,一般为显示所有的线程
-a:显示从iotop启动后每个线程完成了的IO总数
-k:以千字节显示
-t:在每一行前添加一个当前的时间
在运行iotop命令后按相应键位
使用left和right改变排序(方向键改变排序列),还可使用以下命令
r:反向排序,
o:切换至选项--only,
p:切换至--processes选项,
a:切换至--accumulated选项
q:退出
i:改变线程的优先级
使用df命令查看磁盘,下面分别介绍每列什么含义
[root@dmxsp ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 486M 0 486M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 472K 495M 1% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda1 40G 7.0G 31G 19% /
tmpfs 100M 0 100M 0% /run/user/0
Filesystem Size Used Avail Use% Mounted on
Filesystem:设备名称
Size:磁盘大小
Used:已用大小
Avail:可用大小
Use%:使用百分比
Mounted on:挂载点
使用lsblk查看分区情况
-a:显示所有设备
-b:以bytes方式显示设备大小
-d:不显示 slaves 或 holders
-e:排除设备 (default: RAM disks)
-f:显示文件系统信息
-h:显示帮助信息
-m:显示权限信息
-l:使用列表格式显示
-n:不显示标题
-o:输出列
-P:使用key="value"格式显示
-r:使用原始格式显示
-t:显示拓扑结构信息
[root@dmxsp ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
使用du 命令查看目录或者文件的容量,不加参数以k为单位
-s:列出总和
-h:人性化显示容量信息
-a:显示对所有文件的统计,而不只是包含子目录
3.磁盘分区
fdisk | 支持mbr分区格式,2tb以内磁盘 |
parted | 支持mbr,gpt |
gdisk | fdisk升级版,gpt disk (仅支持gpt格式) |
磁盘分区Fdisk
分区之前, 需要先给虚拟机添加一块磁盘
生产分区建议: 如无特殊需求, 直接使用整个磁盘即可, 无需分区
学习分区建议:1P+1E(3L) 2P+1E(2L) 3P+1E(1L) (仅适用于练习)
小于2TB存储磁盘, 可选分区工具fdisk
-v:打印 fdisk 的版本信息并退出.
-l:列出指定设备的分区表信息并退出。 如果没有给出设备,那么使用那些在 /proc/partitions (如果存在)提到的.
-u:以扇区数而不是以柱面数的形式显示分区表中各分区的信息. -s 分区 将分区的 大小 (单位为块)信息输出到标准输出
[root@dmxsp ~]# fdisk -l
Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 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: 0x000b884e Device Boot Start End Blocks Id System /dev/vda1 * 2048 83886046 41941999+ 83 Linux
[root@dmxsp ~]# fdisk /dev/vdb (云服务器)
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.
Command (m for help): m #输入m列出常用的命令
Command action
a toggle a bootable flag #切换分区启动标记
b edit bsd disklabel #编辑sdb磁盘标签
c toggle the dos compatibility flag #切换dos兼容模式
d delete a partition #删除分区
g create a new empty GPT partition table #创建新的空GPT分区表
G create an IRIX (SGI) partition table #创建IRIX(SGI)分区表
l list known partition types #显示分区类型
m print this menu #显示帮助菜单
n add a new partition #新建分区
o create a new empty DOS partition table #创建新的空白分区表
p print the partition table #显示分区表的信息
q quit without saving changes #不保存退出
s create a new empty Sun disklabel #创建新的Sun磁盘标签
t change a partition's system id #修改分区ID,可以通过l查看id
u change display/entry units #修改容量单位,磁柱或扇区
v verify the partition table #检验分区表
w write table to disk and exit #保存退出
x extra functionality (experts only) #拓展功能
创建主分区
Command (m for help): n #新建分区
Partition type:
p primary (0 primary, 0 extended, 4 free) #主分区
e extended #扩展分区
Select (default p): #选择主分区
Partition number (1-4, default 1): #默认回车
First sector (2048-41943039, default 2048): #默认扇区回车
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):+50M #分配50MB
查看分区表的信息
Command (m for help): p
Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0xbcb85590
Device Boot Start End Blocks Id System
/dev/vdb1 2048 104447 51200 83 Linux
创建扩展分区
Command (m for help): n #新建分区
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e #创建扩展分区
Partition number (2-4, default 2):
First sector (104448-41943039, default 104448):
Using default value 104448
Last sector, +sectors or +size{K,M,G} (104448-41943039, default 41943039): #默认划分所有空间给扩展分区
Using default value 41943039
Partition 2 of type Extended and of size 20 GiB is set
查看分区表的信息
Command (m for help): p
Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0xbcb85590
Device Boot Start End Blocks Id System
/dev/vdb1 2048 104447 51200 83 Linux
/dev/vdb2 104448 41943039 20919296 5 Extended
查询结果
-a:显示所有设备
-b:以bytes方式显示设备大小
-d:不显示 slaves 或 holders
-e<list>:排除设备 (default: RAM disks)
-f:显示文件系统信息
-h:显示帮助信息
-m:显示权限信息
-l:使用列表格式显示
-n:不显示标题
-o<list>:输出列
-P:使用key="value"格式显示
-r:使用原始格式显示
-t:显示拓扑结构信息
[root@dmxsp ~]# lsblk
创建逻辑分区
Command (m for help): n #新建分区
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l #创建逻辑分区
Adding logical partition 5
First sector (106496-41943039, default 106496):
Using default value 106496
Last sector, +sectors or +size{K,M,G} (106496-41943039, default 41943039): +100M #分配100MB空间
Partition 5 of type Linux and of size 100 MiB is set
查看分区表的信息
Command (m for help): p
Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0xa447d9e7
Device Boot Start End Blocks Id System
/dev/vdb1 2048 104447 51200 83 Linux
/dev/vdb2 104448 41943039 20919296 5 Extended
/dev/vdb5 106496 311295 102400 83 Linux
保存分区
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
检查磁盘是否是MBR分区方式
[root@dmxsp ~]# fdisk /dev/vdb -l | grep type
Disk label type: dos
更新内核硬盘分区表
使用fdisk分区完成后,需要查看一下内核分区信息是否和我们的操作一致
[root@dmxsp ~]# cat /proc/partitions
major minor #blocks name
253 0 41943040 vda
253 1 41941999 vda1
253 16 20971520 vdb
253 17 51200 vdb1
253 18 1 vdb2
253 21 102400 vdb5
parted 磁盘分区
p print 显示磁盘分区信息
mktable 创建 磁盘分区表 gpt/msdos
mkpart 创建磁盘分区 mkpart pri 0 100
rm 删除磁盘分区
q quit 退出
安装
[root@dmxsp ~]# yum -y install parted
[root@dmxsp ~]# parted /dev/vda
GNU Parted 3.1
Using /dev/vda
Welcome to GNU Parted! Type 'help' to view a list of commands.
磁盘分区Gdisk
大于2TB使用分区工具gdisk
安装gdisk
[root@dmxsp ~]# yum install gdisk -y
gdisk分区
[root@dmxsp ~]# gdisk /dev/vdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************
Command (? for help): n #创建新分区
Partition number (1-128, default 1):
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +500M #分配500M大小
Current type is 'Linux filesystem'
查看分区表的信息
Command (? for help): p
Disk /dev/vdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 1A9ECF41-73C2-4BFE-A958-13C20708104B
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 40918973 sectors (19.5 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 1026047 500.0 MiB 8300 Linux filesystem
保存分区
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y #y确认
OK; writing new GUID partition table (GPT) to /dev/vdb.
The operation has completed successfully.
检查磁盘是否是gpt格式
[root@dmxsp ~]# fdisk /dev/vdb -l | grep type
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk label type: gpt
刷新内核
[root@dmxsp ~]# partprobe /dev/vdb
磁盘格式化Mkfs
mkfs格式化磁盘,实质创建文件系统
-b:设定数据区块占用空间大小,目前支持1024、2048、4096 bytes每个块
-t:用来指定什么类型的文件系统,可以是ext4, xfs
-i:设定inode的大小
-N:设定inode数量,防止Inode数量不够导致磁盘不足
-L:预设该分区的标签label
[root@dmxsp ~]# mkfs.xfs /dev/vdb1
[root@dmxsp ~]# mkfs.ext3 /dev/vdb1
磁盘分区表
主分区:存放数据,一般一定要有
扩展分区: 用来给逻辑分区,创建空间
逻辑分区: 在扩展分区下面,进行创建,使用扩展分区空间
4.磁盘挂载Mount
mount可将指定设备中指定的文件系统加载到Linux目录下(也就是装载点)。可将经常使用的设备写入文件/etc/fstab,以使系统在每次启动时自动加载。mount加载设备的信息记录在/etc/mtab文件中。使用umount命令卸载设备时,记录将被清除
挂载分区前需要创建挂载点, 挂载点以目录形式出现,如何往挂载点目录写入数据, 实际上会写入到该分区挂载点建议是空目录, 不是也不影响挂载分区的使用
临时挂载磁盘
-t:指定文件系统挂载分区,如ext4, xfs
-a:读取/etc/fstab配置文件的所有分区
-o:指定挂载参数
-r:以只读方式加载设备
-v:执行时显示详细的信息
-V:显示版本信息
-w:以可读写模式加载设备,默认设置
-f:不实际加载设备。可与-v等参数同时使用以查看mount的执行过程
-F:需与-a参数同时使用。所有在/etc/fstab中设置的设备会被同时加载,可加快执行速度
fstab被损坏情况下,让只读文件系统可写(正常情况下不使用)
[root@dmxsp ~]# mount -o rw,remount /
挂载 /dev/vdb1至dmxsp目录
[root@dmxsp ~]# mount -t ext3 /dev/vdb1 dmxsp/
查看挂载信息
[root@dmxsp ~]# df
/dev/vdb1 487652 2351 459701 1% /root/dmxsp
永久挂载磁盘
使用blkid命令获取各分区的UUID
[root@dmxsp ~]# blkid |grep "vdb1"
/dev/vdb1: UUID="6787724b-4964-4e48-a73c-5009ede0a9d1" TYPE="ext3" PARTLABEL="Linux filesystem"
PARTUUID="26cfeabe-4f54-41aa-86b8-7bb74586c3dd"
使用UUID挂载磁盘sdb1分区至于db1, 临时挂载
[root@dmxsp ~]# mount UUID="6787724b-4964-4e48-a73c-5009ede0a9d1" dmxsp
也可以把下面这行写到/etc/fstab中,永久挂载, 开机自动挂载
[root@dmxsp ~]# tail -1 /etc/fstab
UUID="6787724b-4964-4e48-a73c-5009ede0a9d1" dmxsp/ ext3 defaults 0 0
[root@dmxsp ~]# tail -1 /etc/fstab
dmxsp/ xfs defaults 0 0
加载fstab配置文件, 同时检测语法是否有错误
[root@dmxsp ~]# mount -a
fstab配置文件介绍
[root@dmxsp ~]# tail -1 /etc/fstab
挂载参数 不检查 不备份 挂载点 文件类型
当其值设置为1时,将允许dump备份程序备份;设置为0时,忽略备份操作
其值是一个顺序。当其值为0时,永远不检查;而 / 根目录分区永远都为1。其它分区从2开始,数字越小越先检查,
如果两个分区的数字相同,则同时检查
UUID="6787724b-4964-4e48-a73c-5009ede0a9d1" dmxsp/ ext3 defaults 0 0
挂载参数, 可写fstab配置文件, 也可以mount时使用-o参数指定
参数 参数意义 系统默认值
async:系统每隔一段时间把内存数据写入磁盘中,
sync:时时同步内存和磁盘中数据;
suid,nosuid 允许/不允许分区有suid属性suid
rw,ro:可以指定文件系统是只读(ro)或可写(rw) rw
exec,noexec:允许/不允许可执行文件执行,不要挂载根分区exec
user,nouser:允许/不允许root外的其他用户挂载分区nouser
auto,noauto:开机自动挂载/不自动挂载auto
default:默认文件系统挂载设置 rw, suid, dev, exec,auto, nouser, async
卸载挂载磁盘
-f:强制卸载(对于无法访问的NFS系统)
-a:卸除/etc/mtab中记录的所有文件系统
-n:卸除时不要将信息存入/etc/mtab文件中
-r:若无法成功卸除,则尝试以只读的方式重新挂入文件系统
-l:懒惰的卸载。从文件系统层次分离文件系统,在不繁忙的情况下清理所有对文件系统的引用
-v:执行时显示详细的信息
-t:仅卸除选项中所指定的文件系统
使用站点目录卸载
[root@dmxsp ~]# umount dmxsp/
umount不能卸载的情况
[root@dmxsp ~]# umount /dev/vda1
umount: /: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
如上情况解决办法有两种, 切换至其他目录 或使用’-l’选项强制卸载
[root@dmxsp ~]# umount /dev/vda1 -l
5.虚拟磁盘SWAP
分区一般指定虚拟内存的大小为实际内存的1~1.5倍。如果实际内存超过8GB,可以直接划分16GB给虚拟内存即可,如果虚拟内存不够用的情况,须增加一个虚拟磁盘,由于不能给原有的磁盘重新分区,所以可以选择新建
free
命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存
-b:显示内存的单位为字节
-c:重复打印几次后退出
-k:显示内存的单位为 KB
-m:显示内存的单位为 M
-o:忽略缓冲区调节列
-t:总和信息
-s:<时间> 每隔指定时间执行一次命令,单位为s (-s 3 每3秒执行一次 )
-h:以可读形式显示容量,需要free -V显示版本大于3.3
-w:把 buffers 和 cache 分开展示
-V:版本信息
创建swapfile
[root@dmxsp ~]# dd if=/dev/zero of=/opt/newdisk bs=40k count=102400
102400+0 records in
102400+0 records out
4194304000 bytes (4.2 GB) copied, 34.2921 s, 122 MB/s
if:指定源 一般写/dev/zero
of:指定目标
bs:定义快大小
count:数量
格式化swap分区
-c:建立交换区前,先检查是否有损坏的区块
-f:在SPARC电脑上建立交换区时,要加上此参数
-v0:建立旧式交换区,此为预设值
-v1:建立新式交换区
-p<页大小>:使用指定的页大小
-L<标签> :指定一个标签,伺候的sawpon 可以使用这个标签
[root@dmxsp ~]# mkswap -f /opt/newdisk
Setting up swapspace version 1, size = 4095996 KiB
no label, UUID=49b0d925-bffc-4b70-87d8-0d7b7b4ab139
检测当前swap分区情况
[root@dmxsp ~]# free -m
total used free shared buff/cache available
Mem: 941 107 77 0 757 686
Swap: 0 0 0
total:列显示系统总的可用物理内存和交换空间大小
used:列显示已经被使用的物理内存和交换空间
free:列显示还有多少物理内存和交换空间可用使用
shared:列显示被共享使用的物理内存大小
buff/cache:列显示被 buffer 和 cache 使用的物理内存大小
available:列显示还可以被应用程序使用的物理内存大小
启动虚拟磁盘,并检查
-h:显示帮助信息
-V:显示版本信息
-s:显示简短的装置讯息
-a:自动启动所有SWAP装置
-p:设定优先权,在0-32767中间选一个数字。或在 /etc/fstab 里面加上 pri=[value] ([value/0-32767]),
在启动时会挂着他 swapon -a 来启动他们,而且有优先权设定
[root@dmxsp ~]# swapon /opt/newdisk
swapon: /opt/newdisk: insecure permissions 0644, 0600 suggested.
swapon: /opt/newdisk: read swap header failed: Invalid argument
(如果出现这个报错,只需要格式化一下就好了)
[root@dmxsp ~]# free -m
total used free shared buff/cache available
Mem: 941 115 67 0 758 677
Swap: 3999 0 3999
关闭虚拟磁盘,并检查
-a:关闭所有交换设备
-h:帮助信息
-V:版本信息
[root@dmxsp ~]# swapoff /opt/newdisk
[root@dmxsp ~]# free -m
total used free shared buff/cache available
Mem: 941 111 72 0 758 682
Swap: 0 0 0
永久生效
[root@dmxsp ~]# tail -1 /etc/fstab
/opt/newdisk swap swap defaults 0 0
6.磁盘故障
block满了:df -h,du -sh /* .....一层一层排查,确认再删除文件
inode满了:提示磁盘空间不足,df -h 没满:找出系统中比较大的目录或者去重统计系统中每个目录出现的次数
block满了(文件未完全删除) 文件硬链接数为0,进程调用数不为0:df -h查看磁盘空间满了,du -sh 排查的时候发现没满:
lsof |grep delete 找出对应的进程或服务,重启
block 满了
原因: 磁盘有大量的文件占用空间,导致空间不足
排查:
df -h
du -sh /* |sort -hr
du -sh /var/* |sort -hr
du -sh /var/log/* |sort -hr
最终确定到文件或目录确认后在删除
原因: 文件未删除干净(硬链接数为0,进程调用数不为0)
排查:
df -h
du -sh /* |sort -hr
确认,然后删除
文件删除原理:
硬链接数为0 rm
进程调用数为0 找出使用文件的进程/服务,关闭/重启
inode
原因: 磁盘上面有大量小文件,占用了大量的inode,最终 磁盘空间不足
排查:
找出系统中占地面积比较大的目录
find / -type d -size +1M |xargs ls -lhd
删除小文件