本章介绍硬盘简介、硬盘数据存储形式、如何在企业生产服务器增加硬盘、对硬盘进行分区、初始化、挂载等。
1 计算机硬盘简介
硬盘是计算机次要存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成,碟片外笼罩有铁磁性资料,硬盘外部由磁道、柱面、扇区、磁头等部件组成,如图所示:
Linux零碎中硬件设施相干配置文件寄存在/dev下,常见硬盘命名:/dev/hda、/dev/sda、/dev/sdb、/dev/sdc、/dev/vda。不同硬盘接口,在零碎中辨认的设施名称不一样。
IDE硬盘接口在Linux中设施名为/dev/hda,SAS、SCSI、SATA硬盘接口在Linux中设施名为sda,高效云盘硬盘接口会辨认为/dev/vda等。
文件贮存在硬盘上,硬盘的最小存储单位叫做Sector(扇区),每个Sector贮存512字节。操作系统在读取硬盘的时候,不会一一Sector的去读取,这样效率非常低,为了晋升读取效率,操作系统会一次性间断读取多个Sector,即一次性读取多个Sector称为一个Block(块)。
由多个Sector组成的Block是文件存取的最小单位。Block的大小常见的有1KB、2KB、4KB,Block在Linux中常设置为4KB,即间断八个Sector组成一个Block。
能够通过如下办法查看Linux分区的Block大小:
[root@superman-vm01 ~]# stat /boot | grep "IO Block"
Size: 4096 Blocks: 8 IO Block: 4096 directory
[root@superman-vm01 ~]#
例如创立一个一般文件,文件大小为10Bytes,而默认设置Block为4K,如果有1万个小文件,因为每个Block只能寄存一个文件,如果文件的大小比Block大,会申请更多的Block,相同如果文件的大小比默认Block小,仍会占用一个Block,这样残余的空间会被节约掉。
- 1万个文件实践只占用空间大小:10000×10=100000Bytes=97.65625MBytes;
- 1万个文件实在占用空间大小:10000x4096Bytes=40960000Bytes=40000MBytes=40GB;
- 依据企业理论需要,此时能够将Block设置为1K,从而节俭更多的空间。
2 硬盘Block及Inode详解
通常而言,操作系统对于文件数据的寄存包含两个局部:文件内容、权限及文件属性。操作系统文件寄存是基于文件系统,文件系统会将文件的理论内容存储到Block中,而将权限与属性等信息寄存至Inode中。
在硬盘分区中,还有一个超级区块 (SuperBlock) ,SuperBlock会记录整个文件系统的整体信息,包含Inode、Block总量、应用大小、残余大小等信息,每个inode与block都有编号对应,不便Linux零碎疾速定位查找文件。
- Superblock:记录文件系统的整体信息,包含inode与block的总量、应用大小、残余大小, 以及文件系统的格局与相干信息等;
- Inode:记录文件的属性,权限,同时会记录该文件的数据所在的block编号;
- Block:存储文件的内容,如果文件超过默认Block大小,会主动占用多个Block。
因为每个inode与block都有编号,而每个文件都会占用一个inode ,inode内则有文件数据搁置的block号码。如果可能找到文件的inode,就能够找到该文件所搁置数据的block号码,从而读取该文件内容。
操作系统进行格式化分区时,操作系统主动将硬盘分成两个区域。一个是数据Block区,用于寄存文件数据;另一个是Inode Table区,用于寄存inode蕴含的元信息。
每个inode节点的大小,能够在格式化时指定,默认为128Bytes或256Bytes,/boot分区Inode默认为128Bytes,其它分区默认为256Bytes,查看Linux零碎Inode办法如下:
[root@superman-vm01 ~]# stat /boot | grep "Inode"
Device: 801h/2049d Inode: 64 Links: 5
[root@superman-vm01 ~]#
3 硬链接介绍
个别状况下,文件名和inode编号是一一对应的关系,每个inode号码对应一个文件名。但UNIX/Linux零碎多个文件名也能够指向同一个inode号码。这意味着能够用不同的文件名拜访同样的内容,对文件内容进行批改,会影响到所有文件名。但删除一个文件名,不影响另一个文件名的拜访。这种状况就被称为硬链接(hard link)。
创立硬链接的命令为:ln superman1.txt superman2.txt,其中superman1.txt为源文件,superman2.txt为指标文件。如上命令源文件与指标文件的inode号码雷同,都指向同一个inode。inode信息中有一项叫做”链接数”,记录指向该inode的文件名总数,这时会减少1,变成2,如图7-3所示:
同样删除一个superman2.txt文件,就会使得superman1.txt inode节点中的”链接数”减1。如果该inode值减到0,表明没有文件名指向这个inode,零碎就会回收这个inode号码,以及其所对应block区域,如图所示:
实用小技巧:硬链接不能跨分区链接,硬链接只能对文件失效,对目录有效,也即是目录不能创立硬链接。硬链接源文件与指标文件共用一个inode值,从某种意义上来,节俭inode空间。不论是独自删除源文件还是删除指标文件,文件内容始终存在。同时链接后的文件不占用零碎多余的空间。
4 软链接介绍
除了硬链接以外,还有一种链接-软链接。文件superman1.txt和文件superman2.txt的inode号码尽管不一样,然而文件superman2.txt的内容是文件superman1.txt的门路。读取文件superman2.txt时,零碎会主动将访问者导向文件superman1.txt。
无论关上哪一个文件,最终读取的都是文件superman1.txt。这时,文件superman2.txt就称为文件superman1.txt的”软链接”(soft link)或者”符号链接(symbolic link)。
文件superman2.txt依赖于文件superman1.txt而存在,如果删除了文件superman1.txt,关上文件superman2.txt就会报错:”No such file or directory”。
软链接与硬链接最大的不同是文件superman2.txt指向文件superman1.txt的文件名,而不是文件superman1.txt的inode号码,因而文件superman1.txt的inode链接数不会发生变化,如图所示:
实用小技巧:软链接能够跨分区链接,软链接反对目录同时也反对文件的链接。软链接源文件与指标文件Inode不雷同,从某种意义上来说,会耗费inode空间。不论是删除源文件还是重启零碎,该软链接还存在,然而文件内容会失落,一旦新建源同名文件名,软链接文件恢复正常。
5 Linux下磁盘实战操作命令
企业实在场景因为硬盘长年大量读写,常常会呈现坏盘,须要更换硬盘。或者因为磁盘空间有余,需增加新硬盘,新增加的硬盘须要通过格式化、分区能力被Linux零碎所应用,虚拟机CentOS 7 Linux模仿实在服务器增加一块新硬盘,不须要关机,直接插入用硬盘即可,个别硬盘均反对热插拔性能。企业中增加新硬盘的操作流程如下:
5.1 fdisk分区命令参数
罕用参数包含m、n、p、e、d、w。
b 编辑bsd disklabel;
c 切换dos兼容性标记;
d 删除一个分区;
g 创立一个新的空GPT分区表;
G 创立一个IRIX(SGI)分区表;
l 列出已知的分区类型;
m 打印帮忙菜单;
n 增加一个新分区;
o 创立一个新空DOS分区表;
p 打印分区表信息;
q 退出而不保留更改;
s 创立一个新的空的Sun磁盘标签;
t 更改分区的零碎ID;
u 更改显示/输出单位;
v 验证分区表;
w 将分区表写入磁盘并退出;
x 额定性能。
5.2 检测辨认的硬盘设施
新增加硬盘被辨认为/dev/sdb,如果有多块硬盘,会顺次辨认成/dev/sdc、/dev/sdd等设施名称,如图所示:
fdisk -l
5.3 创立磁盘分区
基于新硬盘/dev/sdb设施,创立磁盘分区/dev/sdb1,如图所示:
fdisk /dev/sdb
5.4 创立/dev/sdb1分区办法
fdisk /dev/sdb,而后按n-p-1-Enter键-Enter键-Enter键-w,最初执行fdisk -l|head -10,如图(a)、图(b)所示:
(a)fdisk /dev/sdb创立/dev/sdb1分区
(b) fdisk –l查看/dev/sdb1分区
5.5 格式化分区
mkfs.xfs /dev/sdb1格式化磁盘分区,如图所示:
5.6 挂载分区
/dev/sdb1分区格式化后,应用mount命令挂载到/data/目录,并退出/etc/fstab开机启动,如图所示:
# 创立/data/数据目录
mkdir /data
# 挂载/dev/sdb1分区至/data/目录
mount /dev/sdb1 /data
# 查看磁盘分区详情
df -h
# 开机主动挂载(永恒挂载)
echo "/dev/sdb1 /data xfs defaults 0 0" >>/etc/fstab
6 基于GPT格局磁盘分区
MBR分区规范决定了MBR只反对在2TB以下的硬盘,为了反对能应用大于2T硬盘空间,需应用GPT格局进行分区。创立大于2TB的分区,需应用parted工具。
在企业实在环境中,通常一台服务器有多块硬盘,整个硬盘容量可能为10T,须要基于GTP格局对10T硬盘进行分区,操作步骤如下:
# 新建/dev/sdb的磁盘标签类型为GPT
parted /dev/sdb mklabel gpt
# 将/dev/sdb整个空间分给同一个分区
parted /dev/sdb mkpart primary 0 100%
# 疏忽正告
ignore
# 格式化分区
mkfs.xfs /dev/sdb1
# 创立挂载目录
mkdir /data
# 长期挂载
mount /dev/sdb1 /data
# 开机主动挂载(永恒挂载)
echo "/dev/sdb1 /data xfs defaults 0 0" >>/etc/fstab
6.1 检测辨认的硬盘设施
fdisk -l
如图所示,假如/dev/sdb 为10T硬盘,应用GPT格局来格式化磁盘:
6.2 设置分区类型为GPT格局
6.2.1 非交互方式
执行命令:parted -s /dev/sdb mklabel gpt和parted /dev/sdb mkpart primary 0 100%如图所示:
6.2.2 交互方式
parted命令行也能够进行分区,如图(a)、(b)、(c)所示:
parted > select /dev/sdb > mklabel gpt > mkpart primary 0 -1 > print > quit
6.3 格式化磁盘
基于mkfs.xfs /dev/sdb格式化磁盘,如图所示:
6.4 挂载分区
创立挂载目录并挂载:
7 Mount命令工具
Mount命令工具次要用于将设施或者分区挂载至Linux系统目录下,Linux零碎在分区时,也是基于mount机制将/dev/sda分区挂载至系统目录,将设施与目录挂载之后,Linux操作系统方可进行文件的存储。
7.1 Mount命令参数详解
如下为企业中Mount命令罕用参数详解:
mount [-Vh]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
-V: 显示mount工具版本号;
-l: 显示已加载的文件系统列表;
-h: 显示帮忙信息并退出;
-v: 输入指令执行的详细信息;
-n: 加载没有写入文件/etc/mtab中的文件系统;
-r: 将文件系统加载为只读模式;
-a: 加载文件/etc/fstab中配置的所有文件系统;
-o: 指定mount挂载扩大参数,常见扩大指令:rw、remount、loop等,其中-o相干指令如下:
-o atime: 零碎会在每次读取文档时更新文档工夫;
-o noatime: 零碎会在每次读取文档时不更新文档工夫;
-o defaults: 应用预设的选项 rw,suid,dev,exec,auto,nouser等;
-o exec 容许执行档被执行;
-o user、-o nouser: 使用者能够执行 mount/umount的动作;
-o remount: 将已挂载的零碎分区从新以其余再次模式挂载;
-o ro: 只读模式挂载;
-o rw: 可读可写模式挂载;
-o loop 应用loop模式,把文件当成设施挂载至系统目录。
-t: 指定mount挂载设施类型,常见类型nfs、ntfs-3g、vfat、iso9660等,其中-t相干指令如下:
iso9660 光盘或光盘镜像;
msdos Fat16文件系统;
vfat Fat32文件系统;
ntfs NTFS文件系统;
ntfs-3g 辨认移动硬盘格局;
smbfs 挂载Windows文件网络共享;
nfs Unix/Linux文件网络共享。
7.2 企业罕用Mount案例
Mount罕用案例如下:
7.2.1 挂载/dev/sdb1分区至/data/目录
mount /dev/sdb1 /data
7.2.2 挂载cdrom光盘至/mnt目录
mount /dev/cdrom /mnt
7.2.3 挂载/dev/sdb1移动硬盘至/data目录
mount -t ntfs-3g /dev/sdb1 /data
留神:如果提醒未知的文件系统类型“ntfs”,请执行”yum install -y ntfs-3g“装置ntfs-3g软件包。
7.2.4 从新以读写模式挂载/零碎
mount -o remount,rw /
7.2.5 将CentOS-7-x86_64-DVD-1810.iso镜像文件挂载至/mnt目录
mount -t iso9660 -o loop CentOS-7-x86_64-DVD-1810.iso /mnt
7.2.6 将U盘/dev/sdd1挂载至/mnt/目录
mount -t vfat /dev/sdb1 /mnt
7.2.7 将近程192.168.1.182:/data目录挂载至本地/data目录
mount -t nfs 192.168.1.182:/data/ /data
欢送关注我的微信公众号【超哥的IT私房菜】获取更多技术干货!
有什么吐槽或反馈意见,间接通知我!
我会解决您说的问题,进一步更好的服务您哦!
舒适提醒:如呈现二维码生效也可间接增加微信号:ysc13803862469!
发表回复