Linux磁盘管理和文件系统
磁盘结构
硬盘的物理结构
- 盘片:硬盘有多个盘片,每盘片2面
- 磁头:每面一个磁头
硬盘的数据结构
- 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位
- 磁道:同一盘片不同半径的同心圆,是由磁头在盘片表面划出的圆形轨迹
- 柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成
硬盘存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数(512字节)
可以用柱面/磁头扇区来唯一定位磁盘上每一个区域
磁盘接口类型
- IDE、SATA、SCSI、SAS、光纤通道
硬盘的接口种类详解:
IDE:并口数据线连接主板与硬盘,抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被SATA所取代。
SATA:抗干扰性强,支持热插拔等功能,速度快,纠错能力强。
SCSI:小型机系统接口, SCSI硬盘广为工作站级个人电脑以及服务器所使用,资料传输时CPU占用率较低,转速快,支持热插拔等。
SAS:是新一代的SCSI技术,和SATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到6Gb/s
MBR与磁盘分区表示
主引导记录(MBR: Master Boot Record)
- MBR位于硬盘第一个物理扇区处
- MBR中包含硬盘的主引导程序和硬盘分区表
- 分区表有4个分区记录区,每个分区记录区占16个字节
- Linux中将硬盘、分区等设备均表示为文件
磁盘分区表示重点
Linux中将硬盘、分区等设备均表示为文件
例如:/dev/sdb5
sd表示SCSI设备 hd表示IDE设备
硬盘的顺序号,以字母a、b、c…表示分区的顺序号,以数字1、2、3…表示。主分区从1-4,第一个逻辑分区始终从5开始。
磁盘分区结构
- 硬盘中的主分区数目只有4个
- 主分区和扩展分区的序号限制在1~4
- 扩展分区再分为逻辑分区
- 逻辑分区的序号将始终从5开始
主启动记录(MBR)磁盘分区
MBR是主引导记录,位于第一块硬盘(/dev/sda)的第一个物理扇区处, MBR中包含硬盘的主引导程序和硬盘分区表。MBR总共512字节,前446字节是主引导记录,分区表保存在MBR扇区中的第447-510字节中。分区表有4个分区记录区,每个分区记录区占16字节。主启动记录(MBR)磁盘分区支持最大卷为2.2TB(超过2TB一般使用GPT 分区格式,见下文),每个磁盘最多有4个主分区,或3个主分区、1个扩展分区和在扩展分区里面分多个逻辑分区。
全局唯一标识分区表(GUID Partition Table,缩写:GPT)
GPT是一个实体硬盘的分区结构。它是可扩展固件接口标准的一部分,用来替代BIOS中的主引导记录分区表。 传统的主启动记录(MBR)磁盘分区支持最大卷为2.2TB,每个磁盘最多有4个主分区,或3个主分区、1个扩展分区和在扩展分区里面分多个逻辑分区。
与MBR分区方法相比,GPT具有更多的优点,因为它允许每个磁盘有多达128个分区,支持高达18EB(千兆兆字节)的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区 ID (GUID)。
1.若磁盘小于2TB,可用fdisk /dev/sdb 进行分区,即MBR 分区格式
2.若磁盘大于2TB,可用parted /dev/sdb 进行分区,因为MBR分区磁盘是不能大于2.2TB,所以超过2TB一般使用GPT 分区格式
文件系统类型
XFS文件系统
- 存放文件和目录数据的分区
- 高性能的日志型文件系统,特别擅长于处理大文件,可支持上百万TB的存储空间。
- CentOS 7系统中默认使用的文件系统
SWAP,交换文件系统
- 为Linux系统建立交换分区
- 一般设置为物理内存的1.5~2倍
Linux支持的其它文件系统类型
- EXT3、EXT4、FAT32、NTFS、LVM
检测并确认新硬盘
fdisk命令
- 查看或管理磁盘分区
fdisk -l [磁盘设备]
或
fdisk [磁盘设备 例如/dev/sdb]
交互模式中的常用指令
- m、p、n、d、t、w、q
交互模式中的常用指令详解
m:获取帮助菜单
n:新建分区
p:查看分区情况
d:删除分区
t:变更分区的类型
w:保存分区操作并退出
q:不保存分区操作并退出
磁盘分区信息名称解释
Device (设备) :分区的设备文件名称。
Boot:是否是引导分区。若是,则有"*"标识。
start:该分区在硬盘中的起始位置(柱面数)
End:该分区在硬盘中的结束位置(柱面数)
Blocks:分区的大小, 以Blocks (块)为单位,默认的块大小为1024字节。
Id:分区对应的系统ID号。例如, 83表示Linux中的XES分区或EXT4分区、8e表示LVM逻辑卷。
System:分区类型。
创建分区步骤
n 创建新分区
–>p 主分区、e 扩展分区、l 逻辑分区
–>设置分区: 1 (范围1-4,如按Enter键接受默认值)
–>设置柱面序列:直接按Enter键接受默认值
–>设置分区大小: +20G (指定大小为20GB,如按Enter键接受默认值表示所有空间)
–w 保存退出
变更硬盘(特别是正在使用的硬盘)的分区设置以后,建议最好将系统重启一次,或者执行"partprobe"命令使操作系统检测新的分区表情况。以防格式化分区时损坏硬盘中已有的数据。
partprobe /dev/sdb
创建文件系统
mkfs命令-创建文件系统
- Make Filesystem,创建文件系统(格式化)
mkfs -t 文件系统类型 分区设备
- 示例
[root@localhost~]#Is /sbin/mkfs*
/sbin/mkfs /sbin/mkfs.cramfs /sbin/mkfs.ext3 /sbin/mkfs.minix
/sbin/mkfs.btrfs /sbin/mkfs.ext2 /sbin/mkfs.ext4 /sbin/mkfs.xfs
[root@localhost~]# mkfs -t xfs /dev/sdb1
创建文件系统的过程即格式化分区的过程,可以用命令df -T查看当前文件格式
mkfs -t xfs /dev/sdbl mkfs.xfs /dev/sdb1
mkswap命令-创建交换文件系统
- make swap,创建交换文件系统
mkswap 分区设备
- 示例
[root@localhost ~]# mkswap /dev/sdb5
[root@localhost ~]# cat /proc/meminfo | grep SwapTotal
SwapTotal:8257532kB
[root@localhost ~]# swapon /dev/sdb5
[root@localhost ~]# cat /proc/meminfo | grep SwapTotal
SwapTotal:10354680kB
[root@localhost ~]# swapoff /dev/sdb5
创建交换文件系统步骤
创建swap之前, 目标分区应先通过fdisk工具将分区类型ID号设为82
fdisk /dev/sdb
-->t
-->5
-->82
mkswap /dev/sdb5
swapon /dev/sdb5
#启用新增加的交换分区
swapoff /dev/sdb5
#停用指定的交换分区
swapon -s
#查看每个分区的swap状态信息
free -m
#查看总的swap状态信息,m是以M(兆)为单位显示
挂载、卸载文件系统
mount命令
- 挂载文件系统、ISO镜像到指定文件夹
mount [-t 类型] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
umount命令
- 卸载已挂载的文件系统
umount 存储设备位置
umount 挂载点目录
磁盘挂载、卸载详解
挂载文件系统、ISO镜像到指定文件夹
mount [-t 类型] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
-t:用于指定文件系统类型,通常可以省略,由系统自动识别
-o:挂载参数列表,以英文逗号分隔;如用来描述特殊设备,用loop指定
示例:
mount / dev / cdrom / mnt
mount / dev / sdb1 / opt
mount -o loop Centos-7-x86 64-DVD-1611.iso /media/mnt
卸载已挂载的文件系统
卸载前提:挂载的设备或者目录没有被在使用中,要先退出挂载目录
umount [-lf]存储设备目录或者挂载点目录
-lf:强制卸载查看磁盘挂载情况
1.直接mount命令
2.df[选项]
-h:显示分区的容量单位
-T:显示文件系统的类型
-i:显示分区的inode号码数量
补充:查看磁盘使用情况
df命令
df [选项] [文件]
示例:
查看设备的UUID和文件系统类型
blkid [设备]
UUID是存储设备的设备标记,设备序列号。
挂载后的文件存储
存储文件不是存储在目录当中,而是存储在文件系统中,文件系统分区中
- 硬盘sdb1和新增加的sdb2,sdb2挂载点目录为data
- 首先在挂载点目录data(# cd/data)中创建文件abc.txt(touch abc.txt)
- 卸载挂载点目录,这时候进入data查看(ls)就没有abc.txt文件
- 现在,在data目录再创建文件123.txt,然后加载挂载点目录
- 这时候再进data目录查看只有abc.txt,没有123.txt
解释:sdb2挂载前,data目录再sdb1的根目录下,使用的是sdb1的文件系统,创建文件是存储在sdb1磁盘中;当挂载sdb2到data目录后,data这时候使用的是sdb2的文件系统,创建文件是存储在sdb2磁盘中。
所以存储文件不是存储在目录当中,而是存储在文件系统中,文件系统分区中,只是这个分区挂载到这个目录中。
磁盘分区操作实例
磁盘分区
这里以虚拟机操作新增40G的硬盘并分区(一个主分区,一个交换分区,两个逻辑分区),首先在虚拟机设置里添加一块40G的硬盘
# fdisk -l #查看磁盘分区 ; 原有一块硬盘sda,新增的显示为sdb
# fdisk /dev/sdb #进入交互模式后,就可以进行分区的操作了,这里可以用命令m获取帮助信息,里面有详细的操作命令
n #创建新分区;
p #选择分区类型,primary主分区,extended扩展分区,按Enter键默认值p即主分区
1 #选择分区号,按Enter键默认值1
Enter键默认即可 #选择起始扇区位置,按Enter键默认值2048
+20G #选择末尾扇区位置,这里设置的20G
#分区已设置为Linux类型,大小设为20G,可以用命令p查看分区大小。
n #这里继续分区并建立一个交换分区
p
2 (这里默认就以2开始)
Enter键默认
+4G #这里开始转换分区类型为交换分区,开始前可以用命令p查看分区ID(默认Linux83)等参数
t # t为变更分区的类型
2(默认2) #这里输入分区类型的代码,可以用命令L列出所有代码,交换分区为82
82 #变更分区类型为交换分区,可以用命令p查看分区ID已变为82
n #这里继续分区并建立一个扩展分区
e #建立扩展分区
3 (这里默认3开始)
Enter键默认
按Enter键默认 #这里剩余空间都给扩展分区,所以直接Enter键默认。注意,扩展分区不能直接使用,需要创建逻辑分区,这里创建两个逻辑分区
n #开始创建逻辑分区,现在就会多了logical逻辑分区的选项
l #建立逻辑分区,逻辑分区起始为5
Enter键默认
+10G #这里创建两个逻辑分区,每个10G,可以用命令p查看分区
n #继续创建逻辑分区
l #逻辑分区起始为5,这里就是分区6
Enter键默认
+10G(Enter键默认) #可能剩余空间不足10G,Enter键默认即可,可以用命令p查看分区
w #磁盘空间分配完成,保存退出,可以用命令fdisk -l查看磁盘分区。
创建文件系统,挂载分区
*现在并不能直接使用,需要下一步创建文件系统,这里用命令fdisk -l查看新建的分区里可以用于Linux系统的有第一个建立的主分区sdb1和最后建立的两个逻辑分区sdb5、sdb6
# mkfs -t xfs /dev/sdb1 #格式sdb1后就可以使用sdb1了,mkfs -t后可以按两下tab键会出现所有可用的文件类型
# mkdir /data #创建空目录作为挂载点
# mount /dev/sdb1 /data #将sdb1挂载到data目录,可以用df -hT查看挂载点信息
# cd /data #这时进入data目录就可以写入文件了
# mkfs -t xfs /dev/sdb5 #同理格式化或者使用# mkfs.xfs /dev/sdb5
#sdb5挂载及sdb6同理
创建交换文件系统
之前创建的交换分区为sdb2
# mswap /dev/sdb2 #创建交换文件系统
# swapon /dev/sdb2 #启用,可以使用#free -m或#swapon -s查看。如果要关闭,使用# swapoff /dev/sdb2
设置文件系统的自动挂载
/etc/fstab配置文件
- 包含需要开机后自动挂载的文件系统记录
[root@localhost~]#vi /etc/fstab
…//省略部分内容
/dev/sdb1 /mailbox xfs defaults 0 0
(分区) (挂载点) (文件系统类型)
当系统重启后,挂载的设备会自动卸载。所以设置文件系统的自动挂载增加相应的配置使系统能够开机后自动挂载相应的文件到指定的目录当中。
设置文件系统的自动挂载
Linux 操作系统在每次开机时,会自动读取/etc/fstab文件的内容,自动挂载所指定的文件系统。
vim /etc/fstab
/dev/sdb1 /opt xfs defaults 0 0
/dev/sr0 /mnt iso9660 defaults 0 0
第1字段:分区名或设备卷标名。
第2字段:文件系统的挂载点目录的位置。
第3字段:文件系统类型,如xfs、swap等。
第4字段:挂载参数,即mount‘-o‘’选项后可使用的参数。例如,defaults(默认参数)、rw(可读写)、ro(只读)、noexec(禁用执行程序)
第5字段:表示文件系统是否需要dump备份(dump是一个备份工具)。一般设为1时表示需要,设为0时将被dump忽略。
第6字段:该数字决定在系统启动时进行磁盘检查的顺序。0表示不进行检查,1表示优先检查,2表示其次检查。根分区应设为1,其他分区设为2。
实例
# vim /etc/fstab #修改配置文件
: #插入
/dev/sdb1 /data xfs defaults 0 0
/dev/sr0 /mnt iso9660 defaults 0 0
#设置自动挂载,对齐不对齐都可以
esc
wq #保存并退出
命令# mount -a 相当于/etc/fstab里面的挂载项自动挂载一遍