linux 磁盘管理

初识硬盘

机械 HDD 固态 SSD

/dev/sda /dev/sdb

HDD内部结构

机械硬盘(HDD)是一种存储设备,使用旋转磁盘和读/写磁头来存储和检索数据。以下是机械硬盘的基本结构:

  1. 盘片(Platters):机械硬盘通常由多个盘片组成,每个盘片都是一个圆形的金属或玻璃基板,上面涂有磁性材料。

  2. 磁头(Read/Write Heads):每个盘片都有两个磁头,一个用于读取数据,另一个用于写入数据。磁头位于盘片上方和下方,通过磁性浮动臂和驱动器来移动。

  3. 磁道(Tracks):盘片被划分为多个同心圆轨道,称为磁道。每个磁道可以存储一定量的数据。

  4. 扇区(Sectors):每个磁道被划分为多个扇区,每个扇区可以存储固定大小的数据块,通常为512字节。

  5. 主轴(Spindle):盘片通过主轴连接在一起,并由电机驱动主轴旋转。通常,硬盘的转速以每分钟转数(RPM)来表示,如5400 RPM、7200 RPM或10000 RPM。

  6. 磁头臂(Actuator Arm):磁头臂是一个可移动的机械臂,上面安装有磁头。它通过电机和控制器的控制,可以在盘片上移动磁头。

  7. 磁头定位器(Head Positioner):磁头定位器负责精确定位磁头在盘片上的位置。它使用电磁力将磁头臂移动到正确的磁道上。

  8. 控制器(Controller):硬盘的控制器是一个电子设备,负责控制硬盘的操作。它管理磁头的移动、数据的读写、错误检测和纠正等功能。

当计算机需要读取或写入数据时,控制器将指令发送给磁头臂和磁头,使其移动到正确的位置,并在磁道上读取或写入数据。机械硬盘的工作原理基于磁性材料的磁化和反磁化过程,通过改变磁场的方向来存储和检索数据。然而,由于机械硬盘使用机械部件进行数据访问,因此速度较慢,且容易受到物理冲击和震动的影响。

SSD的优势
SSD采用电子存储介质进行数据存储和读取的一种技术,拥有极高的存储性能,被认为是存储技术发展的未来新星。
内存直接当成硬盘使用
与传统硬盘相比,SSD固态电子盘具有以下优点:
第一,SSD完全的半导体化,不存在数据查找时间、延迟时间,数据存取速度快。
第二,SSD全部采用闪存芯片,经久耐用,防震抗摔,即使发生与硬物碰撞,数据丢失的可能性也能够降到最小。  
第三,得益于无机械部件及闪存芯片,SSD没有任何噪音,功耗低。 
第四,质量轻,比常规1.8英寸硬盘重量轻20-30克,使得便携设备搭载多块SSD成为可能。
硬盘尺寸
3.5寸  2.5寸 1.8寸

image-20191107225227973

从插拔方式

热插拔                     手机卡
非热插拔

从硬盘接口

IDE(已经淘汰---也叫ATA)
SATA (Serial ATA),是当前主流的一种硬盘接口  
SCSI(小型计算机的接口--很少了) 
SAS代替了scsi (Serial Attached SCSI),当前SAS接口居多

image-20191107230504198

IDE和SATA的区别:

1、接口不同,传输的速率不同。IDE根据规范,最高到133MB/s, 而SATA3.0,可达6Gb/S,速度差距巨大。
2、SATA支持热插拔。

SAS与SCSI的区别

1、接口不同;
2、SAS兼容SATA,SCSI不兼容SATA;

硬盘设备命名

物理硬盘:    /dev/sd[a-z]
​
KVM虚拟化:
/dev/vd[a-z](半虚拟化驱动)
/dev/sd[a-z](全虚拟化驱动)
从磁盘分区方式区分

分区的目的:

文件分类。将一块硬盘分成几个小块。用来根据使用存放不同的文件

一块硬盘最多可以分多少个分区 65535

MBR格式
分区命令:fdisk  
一共可以分14个分区(4个主分区,扩展分区,逻辑分区) 例如: 3主 + 1扩展(n逻辑)
MBR 小于2TB的硬盘。
一块硬盘最多分4个主分区。
一块硬盘可以直接划分4个主分区,也可以划分3个主分区和一个扩展分区,扩展分区下面可以划分多个逻辑分区
GPT格式
分区命令:gdisk(parted---rhel6)
一共可以分128个主分区
GPT大于小于2TB都可以。最大可以多大,超过目前硬件可以支撑的硬盘大小
#注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!因为转换格式要格式化硬盘

image-20191107231317541

查看磁盘信息

ll /dev/sd*  #查看磁盘信息
lsblk        #列出块状设备(磁盘) 即使磁盘被挂载也可查看

分区工具

fdisk    d 删除一个分区    g 将分区格式转换为GPT 
o 将分区格式转换为【DOS|MBR】  n  添加一个分区
p 打印分区表信息   w 保存并退出    q  退出
​
fdisk /dev/sdb
[root@qfedu.com ~]# fdisk -l /dev/sdb #查看磁盘分区信息
[root@qfedu ~]# fdisk /dev/sdb 
欢迎使用 fdisk (util-linux 2.23.2)。
​
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
​
Device does not contain a recognized partition table
使用磁盘标识符 0x5a666cd7 创建新的 DOS 磁盘标签。
#DOS磁盘标签就是MBR格式
m  查看帮助
n  新建分区
命令(输入 m 获取帮助): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
默认回车
设置主分区大小创建主分区,然后
Command (m for help): p  ---打印分区信息
创建扩展分区
Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
#注意:扩展分区将剩下的空间全部给了。一路回车即可
创建逻辑分区
Command (m for help): n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l   创建逻辑分区
Adding logical partition 5 
First sector (208896-20971519, default 208896): 
Using default value 208896
Last sector, +sectors or +size{K,M,G} (208896-20971519, default 20971519): +5G #指定大小
Partition 5 of type Linux and of size 5 GiB is set
Command (m for help): w   --保存退出
[root@qfedu.com ~]# partprobe /dev/sdb   #更新磁盘分区表,手动让内核更新分区表。不需要重启
[root@qfedu.com ~]# lsblk #查看磁盘设备

image-20191108095711673

修改磁盘标签类型

parted -s /dev/sdb1 mklabel 【gpt|msdos】

刷新分区表

partprode 分区准备

partprobe /dev/sdb
partprobe -l /dev/sdb
 

创建文件系统(格式化)centos7默认使用xfs

ext4  xfs   ntfs     fat32
mkfs.ext4  /dev/sdb1    #第二块串口硬盘的第一个分区。
[root@qfedu.com ~]# mkfs.ext4 /dev/sdb1   #格式化成ext4格式的文件系统
[root@qfedu.com ~]# mkfs.xfs /dev/sdc2   #格式化成xfs格式的文件系统

挂载mount

mkdir /mnt/disk1
mount -t ext4 /dev/sdb1 /mnt/disk1
[root@qfedu.com ~]# mkdir /mnt/disk1   #创建挂载目录
[root@qfedu.com ~]# mkdir /mnt/disks   #创建挂载目录
[root@qfedu.com ~]# mount  /dev/sdb1 /mnt/disk1/
[root@qfedu.com ~]# mount /dev/sdc2 /mnt/disks/
mount -a 自动挂载

查看挂载信息与磁盘使用空间

df -h
df -hT
mount
-T  打印文件系统类型
-h 人性化显示,磁盘空间大小

取消挂载

[root@qfedu.com ~]# umount /mnt/disks/
[root@qfedu.com ~]# umount -l /mnt/disk1/ #强行卸载,即使目录有资源被进程占用,也可以卸载
​

gdisk分区(先安装)

GPT 128个主分区
转格式的时候保证此分区,没有被系统占用。
[root@qfedu.com ~]# parted -s /dev/sdc mklabel gpt   #将/dev/sdc(MBR格式)转换成(GPT格式)
[root@qfedu.com ~]# parted -s /dev/sdc mklabel msdos  #将/dev/sda(GPT格式)转换成(MBR格式)
创建分区
[root@qfedu.com ~]# yum -y install gdisk  #安装分区工具
[root@qfedu.com ~]# gdisk -l /dev/sdc
[root@qfedu.com ~]# gdisk /dev/sdc
Command (? for help): n  --创建分区
Partition number (1-128, default 1): 
First sector (34-16777182, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-16777182, default = 16777182) or {+-}size{KMGTP}: +100M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):      ---直接回车
Command (? for help): p   --打印分区信息
Command (? for help): w    ---保存
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y   是否覆盖是
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.
[root@qfedu.com ~]# partprobe /dev/sdc  #刷新分区表
[root@qfedu.com ~]# gdisk -l /dev/sdc
[root@qfedu.com ~]# lsblk

image-20191108102214093

获取UUID

blkid /dev/sdb5

[root@qfedu.com ~]# blkid /dev/sdb1  #查看uuid和文件系统类型
lsblk -f    lsblk -lf
ll /dev/disk/by-uuid/

fstab开机自动挂载

/etc/fstab文件实现开机的时候自动挂载
/dev/sdb1: UUID="d1916638-bd0a-4474-8051-f788116a3a92" TYPE="ext4"
[root@qfedu.com ~]# vim /etc/fstab
参数解释:
第1列:挂载设备
(1)/dev/sda5  
(2)UUID=设备的uuid   rhel6/7的默认写法   同一台机器内唯一的一个设备标识
第2列:挂载点
第3列:文件系统类型
第4列:文件系统属性  
第5列:是否对文件系统进行磁带备份:0 不备份
第6列:是否检查文件系统:0 不检查

image-20191108154554145

[root@qfedu.com ~]# mount -a #自动挂载

实战二

[root@qfedu.com ~]# vim /etc/fstab
/dev/sdc2       /mnt/disks      xfs     defaults        0 0
[root@qfedu.com ~]# mount -a
/etc/rc.d/rc.local开机自动挂载
这个配置文件会在用户登陆之前读取,这个文件中写入了什么命令,在每次系统启动时都会执行一次。也就是说,如果有任何需要在系统启动时运行的工作,则只需写入 /etc/rc.d/rc.local 配置文件即可
[root@qfedu.com ~]# vim /etc/rc.d/rc.local #将挂载命令直接写到文件中
date >> /tmp/host_start.txt
mount /dev/sdb1 /mnt/disk1/
mount /dev/sdc1 /mnt/disk2/
[root@qfedu.com ~]# chmod +x /etc/rc.d/rc.local #添加执行权限
[root@qfedu.com ~]# reboot

扩展

Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除

一般来说,每个文件都有2个link计数器:i_count和i_link。i_count的意义是当前文件使用者(或被调用)的数量,i_link的意义是介质连接的数量(硬链接的数量);可以理解为i_count是内存引用计数器,i_link是磁盘的引用计数器。当一个文件被某一个进程引用时,对应i_count数就会增加;当创建文件的硬链接的时候,对应i_link数就会增加。对于删除命令rm而言,实际就是减少磁盘引用计数i_link。

文件系统分类

1.1分类
分类:
本地文件系统,不能在网络上用。
ntfs  xfs  ext2,ext3,ext4 fat32
网络文件系统,也可以在本地用。
nfs   glusterfs   hdfs   ceph
1.2概念
作用:
管理文件的一套系统。
文件的编辑,拷贝,粘贴,移动。
​
#理解inode:
inode :inoed块、i节点--索引节点。专门存储inode信息。也就是是文件的属性-(也叫元信息).它是文件或目录在磁盘里的唯一标识,linux读取文件首先要读取到这个索引节点,每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

inode的内容

文件的字节数
文件拥有者的User ID
文件的Group ID
文件的读、写、执行权限
文件的时间戳,共有三个:ctime,mtime,atime。
链接数,即有多少文件名指向这个inode
​
​

查看inode信息

[root@qfedu.com ~]# stat /etc/hosts
  File: ‘/etc/hosts’
  Size: 158             Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 16778306    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-07-28 19:11:48.781000069 +0800
Modify: 2013-06-07 22:31:32.000000000 +0800
Change: 2020-07-18 15:37:52.353025437 +0800
 Birth: -
 
[root@qfedu.com ~]# ls -i /etc/hosts  #-i:查看inode号
16778306 /etc/hosts
1.3.EXT
EXT 家族支持度最广:andirons
但创建文件系统(格式化)慢!
修复慢!
文件系统存储容量有限!
1.4.XFS

XFS 同样是一种日志式文件系統:
高容量,支持大存储
高性能,创建/修复文件系统快
格式化快

  • 13
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值