磁盘结构,原理,MBR,文件系统,分区,swap,加密,raid,配额

来源:互联网 发布:京东淘宝网手机 编辑:程序博客网 时间:2024/06/06 20:10

一,磁盘的组成结构:
磁盘主要由盘片、机械手臂、磁头与主轴马达,而数据的写入其实是在盘片上面
这里写图片描述
图1—–传统磁盘结构
这里写图片描述
图2——传统磁盘剖面图
解析:图2中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(图践绿色部分)。扇区是磁盘的最小组成单元,通常是512字节。
图1展示了由一个个盘片组成的磁盘立体结构,一个盘片上下两面都是可读写的,图中紫色部分叫柱面(cylinder)
图1中磁盘是一个 3个圆盘6个磁头,7个柱面(每个盘片7个磁道) 的磁盘,图2中每条磁道有12个扇区,所以此磁盘的容量为6*7*12*512字节。
即:
存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数

  在老式磁盘中,尽管磁道周长不同,但每个磁道上的扇区数是相等的,越往圆心扇区弧段越短,但其存储密度越高。

二。磁盘的工作原理:
*磁盘利用特定的磁粒子的极性来记录数据
*在读取数据时,磁头将磁粒子的不同极性转换成不同的电脉冲信号,再利用数据转换器将这些原始信号变成电脑可以使用的数据。
*写数据时正好相反
三,磁盘分区:
分区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了BIOS系统下硬盘主引导记录(即Master Boot Record,一般简称为MBR)和引导记录备份的存放位置。

硬盘的分区由主分区、扩展分区和逻辑分区组成:主分区(注意扩展分区也是一个主分区)的最大个数是四个,其个数是由硬盘的主引导记录MBR(Master Boot Recorder)决定的,MBR存放启动管理程序(如GRUB)和分区表记录(分区记录表有64k组成,每16k可以存储一个磁盘分区信息,所以主分区最多是4个)。扩展分区下又可以包含多个逻辑分区 — 所以主分区范围是从1-4,逻辑分区是从5开始的。
这里写图片描述
主分区:也叫引导分区,最多可以创建4个。
扩展分区:是区别主分区的一个概念,实际上是看不到的。
逻辑分区;在扩展分区上面,可以创建多个逻辑分区
活动分区:就是当前活动的、操作系统可以启动的分区。

格式化是针对主分区和逻辑分区的。要格式化是因为这和操作系统管理文件系统有关系。没有格式化的分区就像一张白纸,要写入数据,必须对白纸打上“格子”,每个格子里面写一块。而操作系统只认这些格子。

四,主引导记录(MBR)和开机启动流程
1,COMS:记录各项硬件参数且嵌入在主板上面的存储器
2,BIOS:是写入到硬件上的一个软件程序。是在开机时计算机系统会主动执行的第一个程序了
3,简述系统启动流程:
开机后BISO首先完成开机自检,随后会在内存中映射一块空间,执行开机启动顺序的程序,检测到硬盘后,会去读取硬盘的第一个分区,硬盘中第一个分区即是MBR,共有512字节。其中446字节用来存储Bootloder程序(引导加载程序),64字节用来存储磁盘分区表信息,其中每16字节可以存储一个磁盘分区的信息,所以磁盘可以划分的主分区只能是4个。最后2字节用来存储MBR本身的信息,标记MBR是否有效。检测到MBR之后,BIOS的工作也就完成了,接下来是由MBR引导系统启动工作。接下来会在硬盘中检测硬盘中的内核信息,并加载内核文件,成功启动系统。
4,Bootloader的主要任务:
1.提供菜单:用户可以选择不同的开机选项,这也是多重引导的重要功能
2.载入内核文件:只戒指向可开机的的程序区段来开始操作系统
3.转交给其他loader:将引导加载功能转角给其他loader负责
5,注意:
引导程序除了可以安装在MBR之外,还可以安装在每个分区的引导扇区,这个特点支持了多重引导的功能。
五,磁盘分区的划分和文件系统介绍:
1。查看系统设备信息;
fdisk -l #显示系统中可以使用的设备信息
blkid #显示系统正在使用的设备id,也可以在此处看到各个设备的安装的文件系统。

2。文件系统的比较:
Ext2
第二扩展文件系统(简称 ext2 或者 ext2) 很多年前就已经成为 GNU/Linux 默认的文件系统了。ext2 代替了扩展文件系统(这是 “第二代” 的前身)。它纠正了它前身的一些错误并突破了一些限制。主要缺点就是不能经受系统突然崩溃(停电或者软件造成的崩溃)。一般说来,一旦系统再次重启,上次的崩溃会导致系统对文件系统的结构进行长时间检查并试图改正错误。而这些过程有时会导致问题部分被扩大并最终造成部分或全部已保存文件的丢失。
Ext3
是 ext2 的继任者。它兼容 ext2 并提高了对日志的支持。
使用日志解决了ext2问题
EXT4
ext4 是 Red Hat Enterprise Linux 6 的标准文件系统。它非常强大可靠 , 具有多项可以提高现代工作量处理性能的功能。
Ext4支持在线碎片整理
XFS
xfs 在 Red Hat Enterprise Linux 7 的标准文件系统其具备数据完全性 、性能稳定、扩展性强( 18eb )、传输速率高( 7G/s )

3,磁盘划分:
[root@disk ~]# fdisk -l
这里写图片描述
[root@disk ~]# fdisk /dev/vdb
Command (m for help): m ##帮助
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition ##删除分区
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
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
t change a partition’s system id ##修改分区功能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): ##默认位主分区
Using default response p
Partition number (1-4, default 1): 1 ##主分区id
First sector (2048-20971519, default 2048): ##此分区起始位置
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +100M ##分区大小
Partition 1 of type Linux and of size 100 MiB is set
Command (m for help): p

Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 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: 0x193488c3

Device Boot Start End Blocks Id System
/dev/vdb1 2048 206847 102400 83 Linux

Command (m for help): wq ##保存推出,如果安q表示放弃更改退出
[root@localhost mnt]# partprobe ##同步分区表
cat /proc/partitions ##查看系统识别的分区信息
这里写图片描述
[root@disk ~]# mkfs.xfs /dev/vdb1 #格式化xfs文件系统
[root@disk ~]# mount /dev/vdb1 /disk/ #挂载
[root@disk ~]# vim /etc/fstab #设置永久挂载
/dev/vdb1 /disk xfs defaults 0 0
设备 挂载点 文件系统类型
[root@disk ~]# mount -a #是/etc/fstab中记录的挂载策略生效

4,设置分区方式为gpt
GPT是一种新型磁盘模式,与我们常用的MBR磁盘相比更稳定,自纠错能力更强,一块磁盘上主分区数量不受(4个的)限制,支持大于2T的总容量及大于2T的分区(几乎没有上限,最大支持到128个分区,分区大小支持到256TB)。
[root@disk ~]# parted /dev/vdb
这里写图片描述

六,添加swqp交换分区
1,swap交换分区:
Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。

2,管理swap交换分区
使用 fdisk 创建两个新分区(/dev/vdb1,/dev/vdb2)。此外 , 在用 fdisk 保存更改之前 , 将分区类型更改为 “ 82 LinuxSwap”
blkid /dev/vdaN #确定 UUID
将新交换空间添加到 /etc/fstab :
UUID=uuid swap swap defaults 0 0
[root@disk ~]# mkswap /dev/vdb1 #添加swap分区
[root@disk ~]# swapon -a /dev/vdb1 #将激活新交换区(1和2均执行此步骤)
[root@disk ~]# swapon -s #将显示当前交换区的状态
这里写图片描述
[root@disk ~]# swapoff /dev/vdb1 #将停用该特定交换区
[root@disk ~]# swapon -a -p 0 /dev/vdb1 #调整两个交换区的优先级

设置开机swap分区生效:
vim /etc/fstab
(uuid=…swap swap defaults 0 0)
swapon –a //激活swap 检查: swapon -s

3.如果当前分区没有空间了,但依然需要添加一个swap分区,该如何操作?
答案是可以去其他分区上划分所需要的空间来扩展swap分区。
[root@disk ~]# dd if=/dev/zero of=/swapfile bs=1M count=1000 #从/dev/zero截取到/swapfile 每次截取1M,截取1000次
[root@disk ~]# du -sh /swapfile #查看文件大小
[root@disk ~]# file /swapfile #查看文件类型
[root@disk ~]# mkswap /swapfile #制作swap分区
[root@disk ~]# swapon -a /swapfile #激活swap分区
[root@disk ~]# swapon -s #查看swap分区状态
[root@disk ~]# chmod 600 /swapfile #修改/swapfile的权限,根据此处的建议。
这里写图片描述

七,加密系统分区;
磁盘加密保护:
1。为什么要给磁盘加密?
在此之前所用的加密都是:在文件上加密,安全性低,磁盘加密是直接在磁盘上加密,未曾指定文件系统之前,若要访问文件,就必须要密码,否则强行查看会破坏文件系统,就不能查看了。
由:磁盘——文件系统——文件——加密,转变成:磁盘——加密——文件系统——文件。
2。磁盘加密格式?
LUKS ( Linux 统一密钥设置 ) 是标准的设备加密格式。LUKS 可以对分区或卷进行加密。
3。磁盘加密操作
[root@disk ~]# fdisk /dev/vdb
[root@disk ~]# partprobe
[root@disk ~]# cryptsetup luksFormat /dev/vdb1 #对新分区进行加密,并设置密码
[root@disk ~]# cryptsetup open /dev/vdb1 svdb1 #打开加密的分区,需要密码,会将加密的分区解锁为/dev/mapper/svdb1

接下来是将解密分区格式化文件系统,并挂载使用

注意:下图磁盘加密不成功的原因在与密码过于简单,而且“YES“必须是大写。
这里写图片描述
设置了复杂的密码之后成功加密:
这里写图片描述
[root@disk mapper]# mkfs.xfs /dev/mapper/svdb1 #格式化文件系统
这里写图片描述
加密磁盘需要先卸载,再去关闭
这里写图片描述

4.设置开机自动挂载加密磁盘:
[root@localhost ~]# fdisk /dev/vdb
[root@disk ~]# vim /root/passwdfile
文件里写入磁盘解密密码
[root@disk ~]# chmod 600 /root/passwdfile
[root@disk ~]# cryptsetup luksAddKey /dev/vdb1 /root/passwdfile #让设备和密码文件关联
Enter any passphrase:
[root@disk ~]# vim /etc/crypttab #设置解密后分区的名字
hello /dev/vdb1 /root/passwdfile
[root@disk ~]# vim /etc/rc.d/rc.local #设置开机自动挂载
添加:mount /dev/mapper/hello /disk
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
[root@loca[root@localhost ~]# vim /etc/profile
添加:mount /dev/mapper/hello /disk
lhost ~]# reboot
使用df -h 命令可以查看到加密分区已经挂载到/disk
5.删除加密分区;
umount /disk
在/etc/rc.d/rc/local中取消开机挂载
清除/etc/crypttab里的内容
删除/root/passwdfile
关掉加密层:cryptsetup close hello
删除分区!fdisk /dev/vdb
partprobe

七,磁盘阵列(raid):
1。磁盘阵列:
为什么使用磁盘阵列?
上传和下载时有时候需要大量数据存储,可以改变硬盘的工作方式来达到大数据传输和下载的目的,raid0,上传时两个磁盘转动,raid1,下载时两块磁盘一起工作,两块磁盘有相同的数据,raid5是raid1和raid0的组合。一共需要三个磁盘,其中一个是为了顶替工作的两个中出错的那个。

目前 RAID技术大致分为两种:基于硬件的RAID技术和基于软件的RAID技术。其中在Linux下通过自带的软件就能实现RAID功能,这样便可省去购买昂贵的硬件 RAID 控制器和附件就能极大地增强磁盘的 IO 性能和可靠性。由于是用软件去实现的RAID功能,所以它配置灵活、管理方便。同时使用软件RAID,还可以实现将几个物理磁盘合并成一个更大的虚拟设备,从而达到性能改进和数据冗余的目的。当然基于硬件的RAID解决方案比基于软件RAID技术在使用性能和服务性能上稍胜一筹,具体表现在检测和修复多位错误的能力、错误磁盘自动检测和阵列重建等方面。

2。raid级别:
组成磁盘阵列的不同方式称为RAID级别(RAID Levels),常见的RAID Level 包括raid0, raid1, raid5, raid10。各level 对比如下:
这里写图片描述

3。配置软raid
两个bash,一个监测他的结果,一个进行操作
监测命令:watch -n 1 ‘cat /proc/mdstat’
(1)创建raid
[root@localhost mapper]# fdisk /dev/vdb #创建三个分区/dev/vdb1,/dev/vdb2/,/dev/vdb3
[root@localhost mapper]# mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3} #创建软raid
[root@localhost mapper]# mkfs.xfs /dev/md0 #格式化raid
这里写图片描述
root@localhost mapper]# mount /dev/md0 /disk
[root@localhost mapper]# mdadm -D /dev/md0 #查看md设备信息
这里写图片描述
图中可以看出磁盘阵列中有三个分区,一个空闲留作备用

(2)如果构成软raid的某一个磁盘怀掉了怎么办?
[root@localhost mapper]# mdadm -f /dev/md0 /dev/vdb1 #模拟磁盘坏掉了
mdadm: set /dev/vdb1 faulty in /dev/md0
[root@localhost mapper]# mdadm -r /dev/md0 /dev/vdb1 #删除坏掉的磁盘
mdadm: hot removed /dev/vdb1 from /dev/md0
[root@localhost mapper]# mdadm -D /dev/md0 #查看md设备信息
mdadm -a /dev/md0 /dev/vdb1 #安装修复好的raid
这里写图片描述
可以看见现在只有两个磁盘在软raid中

(3)如何彻底的删除软raid?
[root@localhost mapper]# umount /disk/ #卸载
[root@localhost mapper]# mdadm -S /dev/md0 #删除元数据
mdadm: stopped /dev/md0
[root@localhost mapper]# mdadm –zero-superblock /dev/vdb1
[root@localhost mapper]# mdadm –zero-superblock /dev/vdb2
[root@localhost mapper]# mdadm –zero-superblock /dev/vdb3
彻底删除raid
[root@localhost mapper]# mdadm -D /dev/md0
mdadm: cannot open /dev/md0: No such file or directory
查看不到了!

八。设置磁盘配额:
磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。因为磁盘空间有限。
磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。在服务器管理中此功能非常重要,但对单机用户来说意义不大。
[root@localhost mapper]# fdisk /dev/vdb
root@localhost ~]# mkfs.xfs /dev/vdb1
mount /dev/vdb1 /disk #将磁盘分区挂载在目录上
chmod 777 /pub
注意:应该先挂载再修改权限,如果先修改权限再挂载,挂载后的/pub的权限是/dev/vdb1的原本权限。
su - student
cd /disk
dd if=/dev/zero of=/pub/file bs=1M count=1000 #划分100M的文件file、
du -sh file #查看文件大小
df -h #查看/disk的挂载
quota #查看是否具有磁盘额度功能,此时没有
mount -o usrquota,grpquota /dev/vdb1 /disk #开启磁盘额度功能
quotaon -ugv /dev/vdb1 #激活额度功能
edquota -u student #指定开启额度的用户
显示如下:Disk quotas for user student(diu=1000)
Filesystem blocks soft hard inodes soft hard
/dev/vdb1 0 0 102400 0 0 0
blocks表示已用额度的大小,soft表示软件大小,hard表示总额度大小(100M)。inodes表示存文件的个数,sotf
表示软件个数
su - student
dd if=/dev/zero of=/pub/file bs=1M count=200
所分的总量大于用户额度,会报错!
这里写图片描述
repquota -a #查看配额
永久激活配额的方式:
vim /etc/fstab
/dev/vdb1 /disk xfs defaults,usrquota,grpquota 0 0
如何关闭配额?
先卸载,再重新挂载
先卸载,再重新挂载
umount /disk
mount /dev/vdb1/ /disk
su - student
这里写图片描述
此时不会显示错误!

原创粉丝点击