一.磁盘内部的相关知识

1、前言: 一些关于磁盘的英文

1
2
3
4
5
6
7
8
disk          #磁盘   
head          #磁头
sector         #扇区
track          #磁道
cylinder        #柱面
units          #单元快     
block          #数据块
iNode          #索引节点

2、磁盘内部的相关知识

  一般来说,一块磁盘有1个到数个盘片不等,其中每个盘片的有效盘面对应一个读写磁头,从上到下从0开始依次编号,不同的磁盘面上在逻辑上被化分为track、cylinder、sector。

  磁盘的一个盘面一般有有300-1024磁道(看不到),新式大容量的磁盘可能有更多,信息以脉冲串的形式记录在这些轨迹中,这些同心圆不是连续记录数据;扇区是从1开始计数,所有的盘面上同一个磁道的原型轨迹从上向下依次形成一个圆柱体,就称作柱面,从上到下,从0开始。 

2.1 磁盘的扇区

        操作系统是以扇区为单位将信息存储在磁盘上,一般情况下,每个扇区的大小是512字节,一个扇区有两个内容:存储数据地点的标识符和存储数据的数据段。

2.2 磁盘容量的计算方法

   1》存储容量=磁头数*磁道数(或柱面数)*每磁道的扇区数*每扇区的字节数

   2》存储容量=柱面大小(每磁道的扇区数*每扇区的字节数*磁头数)*柱面数(磁道数)

   注意:一块磁盘的磁道数和柱面数的数量是永远相等的;每个扇区的大小一样的大小

2.3磁盘的数据读写流程

   磁盘的读写一般是按柱面进行的,及磁头读写数据是首先在同一柱面内从“0”磁头开始进行操作,依次向下在同一个柱面的不同的不同磁头上进行操作,只在同一个柱面所有的磁头全部读写完毕后,磁头才转移到下一柱面。磁头是电子切换,磁道是步进电机切换。

二.磁盘分区的相关知识

1、硬盘的存储结构 

  一个硬盘的存储结构有主引导记录、分区表、分区结束标志及其他分区的引导信息及数据区信息,主引导扇区在整个硬盘是唯一的,也就是一个硬盘只有一个。

        

2、DPT(磁盘分区表)

地址偏移所占字节
00H1BytesState:分区状态,0=未激活,0x80=激活
01H1BytesStateHead:分区起始磁头号
02H2BytesStateSC分区起始扇区和柱面号,低字节的6位为扇区号:低字节高2位和高字节的8位为柱面号;
04H1Bytes分区文系统类型,如0x0b=FAT32,0x83=linux等,00表示此项未用
05H1BytesEendHead分区结束磁头号
06H2BytesEndSC:分区结束扇区和柱面号
08H4BytesRelative:线性寻址方式下分区相对扇区地址(对于基本分区即为绝对地址)
0CH4BytesSectors:分区大小(总扇区数)

3、主引导记录MBR

  硬盘的0磁头0磁道1扇区,是硬盘上的非常重要的位置。在这个扇区中,存放有硬盘的主引导记录MBR(Master Boot Record和硬盘的分区表DPT(Disk Partition table)),通过下面命令: 

   dd if=/dev/sda of=mbr.bin bs=512 count=1 查看硬盘的前512字节。

4、磁盘分区的理论知识

   1》磁盘分区的是指就是针对上述0磁道0扇区64bytes的分区表进行分区。

   2》一块硬盘的分区表仅有64bytes,仅支持4个分区表的信息(主分区+扩展分区)。

   3》磁盘分区的最小单位为柱面(cylinder)。

   4》扩展分区不能直接使用,还需要在扩展分区的基础上创建逻辑分区才行。

   5》扩展分区有自己的分区表,因此扩展分区下面的逻辑分区可以有多个。一块硬盘只能有一块扩展分区,这个扩展分区可以划分为多个逻辑分区,IDE硬盘支持的逻辑分区最大编号63(编号为5-63),而SATA硬盘最大编号为15(5-15)。

4.1 主分区Primary

   磁盘上必须存在的分区,一般为第一个分区,我们可以在这个主分区上安装操作系统,一个磁盘最多只能有四个主分区。主分区会在主引导扇区中生成DPT,每个分区表需要占用16bytes,硬盘在设计时只给分区表留下64bytes的存储空间

4.2 扩展分区Extended

   严格来说,扩展分区不能算一个正常的分区,而是一个连接,起到一个指向的作用。我们可以在扩展分区内建立逻辑分区(logocal),一块硬盘只能有一块扩展分区。

4.3逻辑分区logical

   不能在硬盘中单独直接划分逻辑分区,逻辑分区必须存在于扩展分区内,在扩展分区内可以划分多个逻辑分区,逻辑分区的编号从5开始。

4.4磁盘分区的注意事项

  1》任意多个主分区,但要求是(1-4)

  2》扩展分区和主分区组合。但要求(主分区和扩展分区之和为2-4)

  3》如果要分成4个磁盘分区的话PPPP或P(primart)PPPE(extended)

  4》通过fdisk分区就是再改16字节的分区表,与分区上的数据没有关系,调整分区大小,不会删除分区内的数据

4.5 硬盘分区的设备名

   在Linux,是通过设备名来访问设备的,设备名存放在/dev目录中,设备明的定义规则如下:

   系统的第一块IDE接口的硬盘名称为/dev/hda

   系统的第二块IDE接口的硬盘名称为/dev/hdb

   系统的第一块SCSI接口的硬盘名称为/dev/sda

   系统的第一块SCSI接口的硬盘名称为/dev/sdb

4.6 磁盘分区应当注意的 

   1》linux环境下没有盘符的概念,需要对磁盘设备进行操作,需要使用磁盘的设备名;读取磁盘的内容需要把创建在分区或逻辑卷上的文件系统挂载在指定目录上

   2》在Linux系统划分了分区之后还要在分区上建立文件系统

   3》最少有swap及/两个分区

   4》swap(交换分区)的作用:虚拟内存,swap分区的大小=1.5*物理内存。如果内打于8-16G。则就用8-16G。

   5》建议设置独立的/boot分区,Linux引导分区,存放系统引导文件,如Linux内核等,所有文件的大小一般只有几十m,因此该分区设置为100-200m,常见的生产线上一般服务器分区方式/boot,swap,/三个分区。

三.磁盘分区

1、磁盘查看命令

1
2
3
fdisk -l    ##系统中的所有磁盘设备
df  -T    ##系统正在挂载的磁盘设备
blkid      ##系统可以挂载的磁盘设备id


2、磁盘分区命令fdisk   

fdisk -d删除分区
fdisk -l列出系统可用分区
fdisk -n新建一个分区
fdisk -p打印分区
fdisk -q退出,不保存
fdisk -t修改分区功能的ID
fdisk -w保存更改到分区表中


1. swap分区查看

swap -s

Filename                                Type            Size    Used    Priority/dev/sda2                               partition       3933180 1468    -1


2.swap分区的建立


划分分区并修改分区id为swap:

1)fdisk /dev/vdb 建立分区

Device Boot      Start         End      Blocks   Id  System/dev/vdb1        2048       2050047     1024000   83  Linux


2)fdisk /dev/vdb

Command (m for help): tSelected partition 1
Hex code (type L to list all codes): l  ##列出所有id类型代码
Hex code (type L to list all codes): 8e ##把/dev/vdb1的分区类型修改为swap,swap类型代码为8e
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Command (m for help): wq


[root@localhost ~]# mkswap /dev/vdb1       ##格式化设备为swap文件系统格式
[root@localhost ~]# swapon -a /dev/vdb1    ##激活swap设备,使系统利用此设备
[root@localhost ~]# vim /etc/fstab    ##让此设备开机自动激活

/dev/vdb1       swap    swap    defaults        0       0

[root@server ~]# swapon -s        ##列出目前使用swap的设备有哪些


Filename                Type        Size    Used    Priority/dev/vdb1             partition    10484732    0     -1


当磁盘全部被占用,不能创建新分区时,可以用文件来代用分区                
[root@localhost ~]# dd if=/dev/zero of=/swapfile bs=1M count=1000  
此文件创建后的步骤和设备的步骤一致
mkswap /swapfile
swapon -a /swapfile
swapon -s


3. swap分区的删除

[root@localhost ~]# vim /etc/fstab
[root@localhost ~]# swapoff /dev/vdb1
[root@localhost ~]# swapoff /swapfile
[root@localhost ~]# rm -rf /swapfile
[root@localhost ~]# fdisk /dev/vdb


四.磁盘配额


目的:
为磁盘使用的用户分配额度,分区配额是针对于设备
过程:

1)新建分区,并进行xfs格式化

注:分区大小:500M

2)激活设备配额参数

mount -o usrquota /dev/vdb1 /westos/
chmod 777 /westos/
edquota -u student /dev/vdb1

Disk quotas for user student (uid 1000):  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/vdb1                         0          0      204800          0        0        0


3)结果如下:

[root@server ~]# su - student
Last login: Tue Nov  7 02:21:39 EST 2017 on pts/0
[student@server ~]$ dd if=/dev/zero of=/westos/swapfile  bs=1M count=250
dd: error writing ‘/westos/swapfile’: Disk quota exceeded
201+0 records in
200+0 records out

209715200 bytes (210 MB) copied, 0.235273 s, 891 MB/s


五.gtp分区


guid 磁蝶分割表(GUID Partition Table,缩写:GPT)其含义为“全局唯一标识分区表”
与MBR最大4个分区表项的限制相比,GTP对分区数量没有限制
windows最大仅支持128个GPT分区
GPT可管理硬盘大小达到了18Eb,满足企业最大支持容量.

六. 加密设备开机自动挂载

1) [root@localhost mapper]# vim /etc/fstab

 /dev/mapper/hongyeli    /mnt    xfs    defaults    0 0


2) [root@localhost mapper]# vim /root/passfile      

 chmod 600 /root/passfile

3) [root@localhost mapper]# vim /etc/crypttab 

      hongyeli    /dev/vdb1    /root/passfile##解密后设备管理文件    设备      加密字符存放文

4) [root@localhost mapper]# cryptsetup luksAddKey /dev/vdb1 /root/passfile 



3. 加密的清除

[root@localhost ~]# umount /mnt
[root@localhost ~]# cryptsetup close hongyeli
[root@localhost ~]# mkfs.xfs /dev/vdb1 -f     ##格式化为了破坏加密
[root@localhost ~]# vim /etc/fstab
[root@localhost ~]# vim /etc/crypttab