乐趣区

关于云计算:Linux云计算06Linux磁盘管理

本章介绍硬盘简介、硬盘数据存储形式、如何在企业生产服务器增加硬盘、对硬盘进行分区、初始化、挂载等。

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

退出移动版