Linux基础介绍【第九篇】,linux基础第九篇


服务器添加3块磁盘的体系结构

 

注意:

1、linux系统的特性是将系统不用的物理内存缓存起来,因此,859不是系统的真是内存。

2、系统真正可用内存是921。

3、buffers为写入缓冲区,sync将缓冲区数据写入磁盘。

4、cache为读取数据的缓冲区。

5、硬盘是机械的,无论是写入还是读取都太慢了,所以读取和写入都是用来缓存技术。

6、门户架构网站都会采用缓存技术,来让用户写入读取尽可能不接触磁盘。

磁盘的内部结构

磁盘的内部结构主要包括:盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几个部分。

磁头组件及磁头驱动装置

1、磁头组件。它由读写磁头、传动手臂、传动轴三部分组成。

磁盘读取数据的工作原理是利用特定的磁粒子的极性来记录数据。磁头在读取数据时,将磁粒子的不同极性转换成不同的电脉冲信号,再利用数据转换器将这些原始信号变成电脑可以使用的数据,写的操作正好与此相反。

2、磁头驱动装置。磁盘的寻道是靠移动磁头,而移动磁头则需要该装置驱动才能实现(机械操作)。磁头驱动装置由电磁线圈电机、磁头驱动小车、防震动装置构成,高精度的轻型磁头驱动装置能够对磁头进行正确的驱动和定位,并能在很短的时间内精确定位系统指令指定的磁道。

3、磁盘片。盘片是磁盘存储数据的真正载体,磁盘盘片大多采用金属薄膜材料(或有机玻璃材料),这种金属薄膜较软盘的不连续颗粒载体具有更高的存储密度、高剩磁及高矫顽力等优点。

4、主轴组件。主轴组件包括如轴承和驱动电机等。磁盘主轴的转数是衡量磁盘读写性能的重要参考之一。例:SAS15K,SATA10K。

5、前置控制电路。前置电路控制磁头感应的信号、主轴电机调速、磁头驱动和伺服定位等,由于磁头读取的信号微弱,将放大电路密封在腔体内可以减少外来信号的干扰,提高操作指令的准确性。

企业生产工作中磁盘的选型

当前服务器市场,主流磁盘为SAS、SATA、SSD硬盘。

企业级SAS硬盘

企业里常见的SAS硬盘是15000转/分。当前主流300G、600G、1T,从具体的业务需求及性价比考虑,工作中多用300-600G的SAS硬盘。用于提供生产线上的普通对外提供服务的业务服务器。例如,生产线上的数据库业务、存储业务、图片业务及相关高并发业务(web http、cache服务),总的来说,如果没有特殊业务需求,SAS磁盘是生产环境首选的磁盘配置。

企业级SATA硬盘

企业级SATA硬盘7200-10000转/分,常见的容量为1T、2T、4T和6T,优点是经济实惠,容量大,从具体的业务需求及性价比考虑,工作中多用SATA磁盘做线下不提供服务的数据存储或者并发业务服务不是很大的业务应用,比如站点程序及数据库、图片的线下备份等。特性容量性价比高,一般2T的SATA磁盘较佳。

磁盘选购要点:

1、线上业务用SAS磁盘。

2、线下的业务用SATA磁盘,磁带库。

3、线上高并发、小容量的业务用SSD磁盘。

4、根据数据的访问热度,智能分析分层存储。

注意:千万不能用SATA磁盘来做在线高并发服务的数据存储或数据库业务。

磁盘相关名词解释

英文

中文

disk

磁盘

head 

磁头

sector 

扇区

track 

磁道

cylinder 

柱面

units

单元块(一个柱面的大小)

block

数据块

inode 

索引节点

在磁盘不工作的时候,磁头停靠在靠近主轴接触盘片的表面,即线速度最小的地方,这里是一个不存放任何数据的特殊区域,称为启停区或着陆区(landing zone),启停区以外就是数据区。

在磁盘的最外圈,离主轴最远的磁道称为"0"磁道,磁盘数据的存放就是从最外圈"0"磁道开始的。"0"磁道非常重要,系统的引导程序就在0柱面0磁道1扇区的前446bytes。

磁道

每个盘片有两个面,都可记录信息。盘片表面以盘片中心为圆心,用于记录数据的不同半径的圆形磁化轨迹就称为磁道。

磁盘在格式化时被划分成许多同心圆,这些同心圆的轨迹叫做磁道(track)。磁道由盘面从外向内依次从0开始顺序编号。

柱面

所有的盘面上同一个半径的磁道的圆形轨迹从上到下依次会成一个圆柱体,就称作柱面(cylinder),每个圆柱上的磁头由上而下从"0"开始编号。

柱面数=一个盘面的磁道数

扇区

盘面有圆心向四周画直线,不同的磁道被直线分成许多扇形(弧形)的区域,每个弧形的区域叫做扇区,每个扇区大小为512字节。

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

扇区的第一个主要部分是标识符。标识符就是扇区头标,包括组成扇区三维地址的三个数字,扇区所在的磁头(或盘面)、磁道(或柱面号)以及扇区在磁道上的位置即扇区号。投标中还包括一个字段,其中有显示扇区是否能可靠存储数据,或者是否已发现某个故障因而不宜使用的标记。有些磁盘控制器在扇区头标中还记录有指示字,可在原扇区出错时指引磁盘转到替换扇区或磁道。最后,扇区头标以循环冗余校验(CRC)值作为结束,以供控制器检验扇区头标的读出情况,确保准备无误。

扇区的第二个主要部分是存储数据的数据段,可分为数据和保护数据的纠错码(ECC)。在初始准备期间,计算机用512个虚拟信息字节(实际数据的存放地)和与这些虚拟信息字节相应的ECC数字填入这个部分。

磁道柱面扇区总结

磁盘最基本的组成部分是由坚硬的金属材料制成的涂以磁性介质的盘片(有很多层),不同容量磁盘的盘片数不等。

1、一块磁盘有2-14个盘片,每个盘片有两个面,每个面对应一个读写磁头,用磁头号来区分盘面,即盘面数就是磁头数,盘片数*2=磁头数(盘面数)。

2、不同盘面的磁道被划分为多个扇形区域,每个区域就是一个扇区(sector)。

3、同一个盘面,以盘片中心为圆心,每个不同半径的圆形轨迹就是一个磁道(track)。

4、不同盘面相同半径的磁道组成一个圆柱面就是柱面(cylinder)。

5、一个柱面包含多个磁道(这些磁道半径相同),一个磁道包含多个扇区。

6、数据信息记录可表示为:某磁头、某磁道(柱面)、某扇区。

磁盘容量计算

方法一:

磁盘容量=512*扇区数*磁道数*磁头数

每个磁道的大小=512*扇区数

一个盘面的大小=512*扇区数*磁道数

方法二:

磁盘容量=柱面数*柱面大小

柱面数=磁道数

柱面大小=磁道大小*磁头数

磁道大小=512*扇区数

磁头数:255 heads,扇区数:63sectors/track,柱面数:25cylinders。

磁盘大小=512*扇区数*磁道数*磁头数=512*255*63*25=205632000 bytes

机械磁盘读写原理

1、磁盘是按照柱面为单位读写数据的,即先读取同一个盘面的某一个磁道,读完之后,如果数据没有读完,磁头也不会切换其他的磁道,而是选择切换磁头,读取下一个盘面的相同半径的磁道,直到所有盘面的相同半径的磁道读取完成之后,如果数据还没有读写完成,才会切换到其他不同半径的磁道,这个切换磁道的过程称为寻道。

2、不同磁头间的切换是电子切换,而不同磁道间的切换需要磁头做径向运动,这个径向运动需要步进电机调节,这个动作是机械的切换。

磁盘分区

磁盘存储逻辑结构

一个硬盘的存储结构包括主引导记录、分区表、分区结束标志,及其它分区的引导信息及数据区信息。

主引导扇区在整个硬盘里是唯一的,也就是一个硬盘只能有一个,下面是0磁道1扇区的放大图示。

16字节分区表的内容

字节数

说明

1bytes

state:分区状态,0=未激活,0x80=激活。

1bytes

startHead:分区起始磁头号

2bytes

startSC:分区起始扇区和柱面号,低字节的低6位为扇区号,高2位为柱面号的第9,10位,高字节为柱面号的低8位。

1bytes

type:分区类型,如0x0B=FAT32,0x83=linux等,00表示此项未用

1bytes

endHead:分区结束磁头号

2bytes

endSC:分区结束扇区和柱面号

4bytes

Relative:线性寻址方式下分区相对扇区地址(对于基本分区即为绝对地址)

4bytes

sectors:分区大小(总扇区数)

备份与恢复MBR

磁盘分区

1、磁盘分区的实质就是针对0磁头0磁道1扇区的前446字节后面接下来的64bytes的分区表进行设置,即主要是划分起始以及结束磁头号,及扇区号和柱面号。

2、分区工具有fdisk(适合小于2T的磁盘分区),parted(适合大于2T的磁盘分区,可以对小于2T的磁盘分区),fdisk首选,只有大于2T时才会选parted。

3、一块磁盘的分区表仅有64bytes大小,每个分区表要占用16字节,因此一块磁盘仅支持四个分区表信息,即主分区+扩展分区的总量不超过4个。

4、磁盘分区是按照柱面(cylinder)来划分的。

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

6、扩展分区有自己的分区表,因此扩展分区下面的逻辑分区可以有多个。

磁盘在使用前一般需要进行分区,当然如果不分区直接格式化使用也可以,但这不是常见情况。磁盘分区有主分区、扩展分区和逻辑分区。一块硬盘最多可以有4个分区表信息(磁盘本身限制),其中一个主分区的位置可以用一个扩展分区替换,且一块硬盘只能有一个扩展分区(操作系统限制),在这个扩展分区中可以划分多个逻辑分区(IDE磁盘分区编号大概5-63),SATA(编号5-15)。

一台服务器6块600G的磁盘,raid5后,总大小3T,次数无法装系统。解决办法是做raid5后,不要直接重启装系统,而是再raid界面,继续分一个小的虚拟磁盘vd 200G,用这个200G的虚拟磁盘装系统,装完系统后再把剩余的2.8T通过parted分区。

主分区primary

主分区是磁盘上必须存在的分区,一般为磁盘的第一个分区。在一个磁盘上最多只能有4个主分区。

一个磁盘想分6个分区,主分区和扩展分区的数量:

1p+1e,2p+1e,3p+1e。

扩展分区Extended

扩展分区就像一个虚拟出来的一个小硬盘一样,但是不同的是没有MBR,而只有扩展分区表,而且这个扩展分区表示没有64bytes的限制的,所以可以在扩展分区上划分多个逻辑分区。一块磁盘只能存放一个扩展分区,并且扩展分区不能直接存放数据,扩展分区受限于操作系统。

逻辑分区logical

不能在磁盘中单独直接划分逻辑分区(fdisk),逻辑分区必须存在于扩展分区内。在扩展分区内可以划分多个逻辑分区,逻辑分区的编号从数字5开始。在这个扩展分区内可以划分多个逻辑分区(IDE磁盘大概编号可以是5-63)。

磁盘分区注意事项

1、任意多个主分区,但要求1<=主分区数量<=4。

例如,一个硬盘可以分为4个主分区、3个主分区、2个主分区、1个主分区。

2、扩展分区可以和主分区组合,但要求2<=(主分区+扩展分区)<=4。

例如:3个主分区+1个扩展分区、2个主分区+1个扩展分区或1个主分区+1个扩展分区。当总分区的数量大于4个的时候,必须提前分一个扩展分区。

3、如果要分成四个磁盘分区的话,那么分区方式可以为p+p+p+p或p+p+p+e。

注意:

由于MBR及磁盘分区表大小的限制,如果对磁盘分配了4p或3p+e后,即使磁盘还有剩余未分的空间,那么这部分空间也无法分区使用了(因为无分区可分了,分区表空间已经被沾满)。因此,在做分区规划时,如果业务需要,在分区之前就已经明确要超过4个分区,就可以选择3p+e的分区方式,并且在最后一个扩展分区要将所有的剩余空间都分配给这个扩展分区。当然,也可以采用1p+1e、2p+1e的分区方式,其实就是主分区不能分完,保留不分。

说明:

1、扩展分区不是一个真正的可用分区,建立完扩展分区后,还需要在扩展分区上面建立逻辑分区才可以使用。

2、对于主分区和逻辑分区在一本的数据存储使用上是没有区别的(对于大多数的数据存储),在安装操作系统时第一个分区要选主分区。

3、分区数字编号1-4留给主分区或扩展分区使用,逻辑分区编号只能从5开始,即使1-4分区号有剩余,也不会分配给逻辑分区。

4、对硬盘分区,实际上就是修改硬盘的分区表(partition table),也就是说可以通过fdisk分区实际上就是在修改64字节的分区表,分区对应的数据没有关系。因此,理论上调整分区大小,不会删除分区内的数据。

分区方案

方案一:集群结构中的某个节点,数据有多份或者不重要。

/boot 100MB linux引导程序

swap 物理内存的1.5倍,当内存大于等于8G时,给8G即可。

/ 剩余硬盘大小

方法二:数据库及存储,有大量重要数据

/boot 100MB

/ 50-200G

swap 物理内存的1.5倍,当内存大于等于8G时,给8G即可。

/data 剩余硬盘大小,放数据库及存储数据。

方案三:门户级别或大网站

/boot 100MB

swap 物理内存的1.5倍,当内存大于等于8G时,给8G即可。

/ 50-200G

剩余空间保留,不再进行分区,将来分给别的需要的部门。

硬盘分区的设备名

在linux系统中,是通过设备名来访问设备的,设备名存放在"/dev"目录中。

设备名称的定义规则如下,其他的分区依次类推:

系统的第一块IDE接口的硬盘:/dev/hda

系统的第二块IDE接口的硬盘:/dev/hdb

系统的第一块SCSI接口的硬盘:/dev/sda

系统的第二块SCSI接口的硬盘:/dev/sdb

SATA、SAS都是sd开头。

每个分区则使用磁盘名称加对应的数字编号表示:

系统的第一块IDE接口硬盘的第一个分区:/dev/hda1

系统的第一块IDE接口硬盘的第五个分区:/dev/hda5

系统的第二块SCSI接口硬盘的第一个分区:/dev/sdb1

系统的第二块SCSI接口硬盘的第五个分区:/dev/sdb5

注意:

1、分区数字编号1-4留给主分区或扩展分区使用,逻辑分区编号只能从5开始。

2、IDE硬盘设备名均以/dev/hd开头,不同硬盘编号依次是/dev/hda/、/dev/hdb、/dev/hdc…。

3、SCSI/SAS/SATA/USB接口硬盘的设备名均以/dev/sd开头。不同硬盘编号依次是/dev/sda、/dev/sdb、/dev/sdc…。

4、特别注意,SAS/SATA为当前互联网生产环境主流硬盘接口,SSD固态硬盘,由于是电子设备,性能很高,也逐渐被应用。

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

6、在linux系统上划分了分区之后,还要在分区上创建文件系统。

文件系统类型

文件系统是对一个存储设备上的数据和元数据进行组织的一种机制。文件系统是在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区上组织文件的方式和方法,常见文件系统如ext2、ext3、ext4、NTFS、FAT、FAT32等。文件系统是组织存储文件或数据的方法,目的是易于查询和存取数据。因此,如果磁盘上没有文件系统也就无法存储数据了,因此,在磁盘分区后能够使用之前必须建立对应的文件系统才行。

文件系统是基于存储设备的,比如硬盘或光盘,并且包含文件物理位置的维护,文件系统也可以说是虚拟数据或网络数据存储的方法,比如NFS、MFS、GFS。目前unix、linux的文件系统有很多种实现,例如:UFS(基于BSD的unix文件系统)、ext2、ext3、ext4、zfs、xfs和reiserfs等。

注意:

1、文件系统是对一个存储设备上的数据和元数据进行组织的一种机制。

2、分区必须格式化创建文件系统才能存放数据。

3、一个分区只能有一种文件系统。

4、linux下常见文件系统ext2、ext3、ext4、zfs、xfs(CentOS7)和reiserfs(单独安装)。windows下常见文件系统NTFS、FAT32。

文件系统的选择

SAS、SATA银盘文件系统选择:

1、reiserfs:大量小文件业务首选reiserfs(100k以内)

2、xfs:有的门户的数据块mysql业务。

4、ext4:视频下载、流媒体、数据库、小文件业务。

5、ext2:没有日志,CDN网站加速服务。

常用应用:

CentOS5.x系统:默认ext3。

CentOS6.x系统:默认ext4。

CentOS7.x系统:默认xfs。

SSD文件系统选择

ext4、reiserfs可以作为SSD文件系统,但未对SSD做优化,不能充分发挥SSD性能,并影响SSD使用时间。

btrfs对SSD作了优化,mount通过参数启用。但btrfs仍处于试验阶段,生产环境谨慎使用。

jffs32、nilfs2、yaffs是常用的flash file system,在嵌入式环境广泛应用,建议使用。

在linux中制作文件系统

用类似如下命令在linux中制作并优化reiserfs文件系统:

/sbin/mkreiserfs /dev/sda2

用类似如下命令在linux中制作xfs文件系统:

mkfs -t xfs -f /dev/sda2

注意:ext3fs其实是简单的激活了记账的ext2fs。当创建该文件系统时,对mke2fs使用-j选项:

/sbin/mke2fs -j /dev/sda2

查看目前支持的文件系统

文件系统内部

超级块:记录文件系统的控制与管理信息(Group0以前的信息)。

1、block和inode的个数和大小,及其已用和未用的数量。

2、文件系统的载入时间、最近一次写入数据时间、最近一次执行fsck进行磁盘检查的时间等。

3、有效位:0已载入,1位载入。

组描述:记录本块组从何处开始

块位示图:使用位示图记录哪些块已用哪些块未用。

inode位示图:使用位示图记录inode的使用情况。

inode区:各个inode组成的区域,每个inode都有一个唯一编号。

数据块区:各个block组成的区域,用于存储文件数据。

磁盘分区

添加一块磁盘创建6个分区

1p+1e(5L):/dev/sdb1,/dev/sdb5,/dev/sdb6,/dev/sdb7,dev/sdb8,dev/deb9

分区:设置分区表

格式化:创建文件系统

查看磁盘信息

 

 

 

 

 

 

 

最后分区情况

列出类型

 

通知linux分区表的变化(否则需要重启系统才能看到变化)

查看结果

文件系统的简单操作

磁盘与目录的容量:

df:列出文件系统的整体磁盘使用量。

du:评估文件系统的磁盘使用量(常用于评估目录所占容量)。

1、将容量结果以易读的容量格式显示出来:df -h。

2、将/etc下面的可用的磁盘容量以易读的容量格式显示:df -h /etc。

3、将目前各个分区当做可用的inode数量列出:df -ih。

4、检查根目录下面每个目录所占用的容量:du -sm/*。

连接文件:ln

1、hard link(硬链接实际链接):只是在某个目录下新建一条文件名链接到某inode号码的关联记录而已。

2、symbolic link(符号链接,快捷方式):再创建一个独立的文件,而这个文件会让数据的读取指向它链接的那个文件夹的文件名。

3、将/etc/passwd复制到/tmp下面,并且查看inode与block

磁盘格式化:mkfs -t ext3 /dev/sda6

磁盘检查:fsck、badblocks

fsck -C -f -t ext3 /dev/sda6,卸载状态检查。

badblocks -sv /dev/sda6

磁盘挂载与卸载

1、挂载ext2、ext3文件系统

mount /dev/sda6 /mnt

df –h

2、挂载cd或dvd光盘

mkdir /media/cdrom

mount -t iso9660 /dev/cdrom /media/cdrom #-t iso9660这个是光盘的格式

mount /dev/cdrom /media/cdrom #系统自己去测试挂载

df

3、格式化与挂载软盘

mkfs -t vfat /dev/fd0

mkdir /media/floppy

mount -t fat /dev/fd0 /media/floppy

df

4、挂载U盘

mkdir /tmp/flash

mount -t vfat -o iocharset=cp950 /dev/sda1 /tmp/flash

df

5、文件卸载umount

umount /dev/sda6

umount /media/cdrom

umount /tmp/flash

umount /dev/fd0

umount /tmp/home

强制卸载:umount –lf 挂载点

强制卸载nfs案例:

umount:/mnt:device is busy解决办法

当无法卸载nfs挂载目录时,原因及解决办法:

1、可能当前目录就是挂载的nfs目录(/mnt)

解决办法:退出挂载的目录/mnt,再执行卸载。

2、比如nfs server挂了,nfs client会出问题(df -h窗会死掉口)

最好的强制卸载方法umount -lf /mnt。

相关内容

    暂无相关文章