概述
Linux系统上,磁盘要正常的进行数据的存储,需要先进行分区,再进行格式化生成文件系统,最后挂载到某个目录下,才能进行正常的数据存取,本篇就介绍一下磁盘从分区到正常使用的几个步骤,具体分为以下几个部分:
1、磁盘的基础概念
2、磁盘的分区类型MBR、GPT
3、管理磁盘分区
4、管理文件系统
5、挂载设备
6、mount各挂载选项效果展示
第一章 磁盘的基础概念
1、磁盘接口类型
IDE(ata):并口,133MB/s
SCSI:并口,UltraSCSI320,320MB/s;UltraSCSI,640MB/s
SATA:串口,6Gbps (除以8则可以换算成MB/s)
SAS:串口,6Gps
USB:串口,480MB/s(USB3.0)
并口:同一线缆可以接多块设备
IDE:可接两个设备,主、从
SCSI:
宽带:可接16-1个设备
窄带:可接8-1个设备
串口:同一线缆只可以接一个设备
2、磁盘结构详解
磁头(head):一个磁盘可能有多个盘面组成,每个盘面上都需要有个读写的磁头,这样就可以通过磁头数量来获知盘面的数量了,早期一般为256个
盘面:存储数据的介质
磁道(track):每个盘面逻辑划分的一个个的同心圆,就成为磁道,磁盘刚出厂时,厂家会进行低级格式化,低格就是划分磁道,早期一般为1024个
扇区(sector):操作系统以扇区形式将信息存储在硬盘上,每个扇区包括512个字节的数据,早期一个磁道一般分为63个扇区
柱面(cylinder):所有盘面上的同一磁道构成一个圆柱,通常称做柱面
3、Linux设备类型:
设备文件存在的目的:是将设备关联至设备的驱动程序,是设备的访问入口
块设备:随机访问,数据交换单位是“块”
字符设备:顺序访问,数据交换单位是“字符”
通过设备号来区分设备类型和编号:
major:主设备号,区分设备类型,用于标明设备所需要的驱动程序
minor:次设备号,区分同种类型下的不同设备,是特定的访问入口
可通过mknod命令来手动创建设备文件
语法:mknod [OPTION]… NAME TYPE [MAJOR MINOR]
NAME:设备文件名
TYPE:指明是块设备(b)还是字符设备(c)
[major minor]:指明主次设备号,可省略,系统会自动识别并分配
选项:
-m MODE 在创建设备文件时,如果不想使用默认权限,直接指明其权限
例如:mknod /dev/testdev c 111 1
表示创建一个设备文件名为/dev/testdev的字符设备,主设备号为111,次设备号为1
可通过创建设备号与原有设备号一样的设备文件,然后将新建的设备文件挂载到别的目录,访问别的目录时,相当于就是访问了原有设备上的文件
4、硬盘的设备文件名: /dev/DEV_FILE
IDE: /dev/hd
SCSI, SATA, SAS, USB: /dev/sd
不同设备: a-z,如/dev/sda, /dev/sdb, …
同一设备上的不同分区: 1,2, …如:/dev/sda1, /dev/sda5
注意:CentOS 6和7统统将硬盘设备文件标识为/dev/sd[a-z]
第二章 分区类型MBR、GPT
1、为什么要分区:分区实际是整个磁盘的逻辑边界,用来存储可独立的文件系统
优化I/O性能
实现磁盘空间配额限制
提高修复速度
隔离系统和程序
安装多个OS
采用不同文件系统
2、MBR:Master Boot Record 主引导程序
MBR使用32位表示扇区数, 故单个分区大小不超过2T。按照柱面进行划分分区,一个柱面只能属于一个分区,现在由于引入了LBA机制,也支持一个柱面属于不同分区了
MBR分为三部分:注意,备份MBR只会备份主分区和扩展分区的信息,扩展分区中逻辑分区的信息并不存储于MBR中
前446byte:bootloader程序,引导启动操作系统的程序
64byte:文件系统分区表,每16个字节标识一个分区,一共只能有4个分区
2byte:标识MBR区域有效性标识,55AA标识有效,否则为无效
主分区和扩展分区的标识:1-4,逻辑分区:5+
3、GPT分区
GUID patition table 支持128个分区,使用64位,支持8Z(512Byte/block ) 64Z (4096Byte/block)
使用128位UUID 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位
需要UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动
第三章 管理磁盘分区
1、创建磁盘分区:
fdisk 创建MBR分区,也支持GPT,对于一块硬盘,最多只能管理15分区
gdisk 创建GPT分区
GNU parted 高级分区操作(创建、复制、调整大小等等)
partprobe-重新设置内存中的内核分区表版本
分区管理命令fdisk和gdisk
fdisk /dev/DEVICE
gfisk /dev/DEVICE 类似于fdisk 的用来管理GPT分区的工具
语法格式:fdisk [OPTION] DEVICE
选项:
-l 查看指定设备的分区信息
-u 通常与-l一起使用,表示显示分区信息时,以扇区的起始号表示分区,而不是默认的以柱面的起始号标识分区
子命令:
p 分区列表
t 更改分区类型
l 表示列出支持的分区类型列表
n 创建新分区
d 删除分区
w 保存并退出
q 不保存并退出
parted命令: parted的操作都是实时生效的,小心使用
用法: parted [选项]… [设备 [命令 [参数]…]…]
如:
parted /dev/sdb mklabel gpt|msdos 修改/dev/sdb分区类型为GPT|MBR类型
parted /dev/sdb print 显示/dev/sdb设备分区信息
parted /dev/sdb mkpart primary 1 200 (默认M) 在/dev/sdb设备上创建一个主分区,设备号为1,大小为200M
parted /dev/sdb rm 1 在/dev/sdb设备上删除分区号为1的分区
parted -l 类似fdisk -l 显示当前系统上所有设备的所有分区信息
2、同步分区表
在已经分区并且已经挂载其中某个分区的磁盘上创建新的分区,内核可能在创建完成后无法直接识别,这时就需要手动的让内核重新加载分区表
查看内核是否已经识别新的分区: cat /proc/partations
通知内核重新读取硬盘分区表:
新增分区用
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE
-f: force
删除分区用
partx -d –nr N /dev/DEVICE
centos6: –nr N-M
CentOS 5, 7: 使用partprobe,partprobe [/dev/DEVICE]
新增分区:
删除分区:
第四章 管理文件系统
1、什么是文件系统
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。
2、常见的文件系统:
Linux的文件系统:ext2、ext3、ext4、xfs、reiserfs、btrfs
光盘的文件系统:iso9660
网络文件系统:nfs、cifs
集群文件系统:gfs2、ocfs2
内核级分布式文件系统:ceph
windows文件系统:vfat、ntfs
伪文件系统:proc、sysfs、tmpfs、hugepagefs
Unix的文件系统:swap
用户空间的分布式文件系统:mogilefs、moosefs、glusterfs
RAW:未经处理或者未经格式化产生的文件系统
查前支持的文件系统: cat /proc/filesystems
3、文件系统分类
根据其是否支持"journal"(日志)功能:
日志型文件系统: ext3, ext4, xfs, …
非日志型文件系统: ext2, vfat
文件系统的组成部分:
内核中的模块: ext4, xfs, vfat
用户空间的管理工具: mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虚拟文件系统: VFS
4、文件系统管理工具
创建文件系统
mkfs命令: mkfs.FS_TYPE /dev/DEVICE
支持的类型:ext4、xfs、btrfs、vfat
也可写为: mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL': 设定卷标
创建ext系列文件系统专有命令mke2fs
语法:mke2fs [OPTIONS] device
选项:
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L 'LABEL'
-j 相当于 -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i #: 指明多少字节创建一个inode,此大小不应该小于block的大小
-N #:为数据空间创建个多少个inode
-I 一个inode记录大小128—4096
-m #: 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,…]:启用指定特性
-O ^FEATURE:关闭指定特性
5、文件系统标签:指向设备的另一种方法,与设备无关
blkid:块设备属性信息查看
语法:blkid [OPTION]… [DEVICE]
-U UUID: 根据指定的UUID来查找对应的设备
-L LABEL:根据指定的LABEL来查找对应的设备
e2label:管理ext系列文件系统的LABEL
语法:e2label DEVICE [LABEL]
findfs :查找分区
findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>
6、修改文件系统属性信息:tune2fs
tune2fs:重新设定ext系列文件系统可调整参数的值
-l:查看指定文件系统超级块信息; super block
-L 'LABEL':修改卷标
-m #:修预留给管理员的空间百分比
-j: 将ext2升级为ext3
-O: 文件系统属性启用或禁用, –O ^has_journal
-o: 调整文件系统的默认挂载选项,–o ^acl
-U UUID: 修改UUID号
dumpe2fs:
dumpe2fs [-h] device 显示ext系列文件系统上超级块的信息和各个块组的详细的属性信息。
加上-h 则表示只显示超级块的信息,和tune2fs -l 显示出来的信息一样
7、文件系统检测和修复:(危险操作,谨慎!要umount后操作分区)
因进程意外中止或系统崩溃等原因导致写入操作非正常终止时,可能会造成文件损坏;此时,应该检测并修复文件系统,建议离线进行,常发生于死机或者非正常关机之后,挂载为文件系统标记为“dirty”时。
ext系列文件系统专用工具:e2fsck
语法:e2fsck [OPTIONS] device
-y 对所有问题自动回答为yes
-f 强制,即使文件系统处于正常状态,也进行修复
各种文件系统通用的工具:fsck,实际是将未写完的文件删除
语法:fsck [OPTION] device
-t FSTYPE:指明文件系统类型
-y 无需交互式确认,自动修复所有错误
-r 交互式修复
8、blkid命令:查看文件系统相关属性
语法:blkid [OPTION] device
blkid device 显示指定设备的简单属性信息(UUID、卷标、文件系统类型等)
blkid -L LABEL 根据指定的LABLE 定位设备文件名
blkid -U UUID 根据指定的UUID 定位设备文件名
例如 blkid /dev/sda6
blkid -L MADATA
第五章 挂载设备
根文件系统之外的其他文件系统要想能够访问,必须要通过关联至根文件系统上的某个目录来实现,此关联操作即为“挂载”,此目录即为“挂载点”,挂载点用于作为另一个文件系统的访问入口
1、挂载点:用于作为另一个文件系统的访问入口
作为挂载点要求:
<1>事先存在
<2>应该使用未被或者不会被其他进程使用到的目录
<3>挂载点下如果原来有文件,挂载完成后,原来的文件将被隐藏
2、mount命令:(用法示例见第六章实例部分)
语法:mount [命令选项][-t TYPE][-o 挂载选项] device dir
命令选项:
-r 表示只读挂载
-w 表示读写挂载,默认就是读写挂载
-n 默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中,-n用于禁止此特性
-L LABLE 挂载时不以设备文件名指明设备,而是以卷标指明要挂载的设备
如:mount -L MYDATA /mnt/test
-U UUID 挂载时以UUID的方式指明设备
如:mount -U '0c50523c-43f1-45e7-85c0-a126711d406e' /mnt/test
-B, –bind: 绑定目录到另一个目录上
[-t TYPE] 用于指明要挂载的设备上的文件系统类型,多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类别
[-o 挂载选项] 挂载的选项,指明挂载时文件系统的特性
-o async 表示挂载的设备写入时进行异步操作
-o sync 表示挂载的设备写入时进行同步操作
-o atime 表示文件或目录在访问时更新其访问时间戳
-o noatime 表示文件或目录在访问时不更新其访问时间戳
-o diratime|noatime 表示目录在被访问时是否更新其访问时间戳
-o remount 表示重新挂载,自动先卸载再挂载
-o acl 表示支持使用facl功能
-o ro 表示只读挂载
-o rw 表示读写挂载
-o dev|nodev 表示此设备上是否允许创建设备文件
-o exec|noexec 表示是否允许运行此设备上的可执行程序文件
-o auto|noauto 表示此设备是否支持mount -a 自动挂载
-o user|nouser 表示是否允许普通用户挂载此文件系统
-o suid|nosuid 表示是否允许程序文件上的SUID和SGID权限生效
-o acl|noacl 表示是否允许设置acl权限
-o default 执行默认挂载选项,默认是启用rw、suid、dev、exec、auto、nouser、async、relatime这些选项
-o指明多个挂在选项时,多个挂载选项之间用,逗号分隔
当不指名-o的挂在选项时,默认执行的挂载选项是rw、suid、dev、exec、auto、nouser、async、relatime
一个使用技巧:可以实现将目录绑定至另一个目录上,作为其临时访问入口
例如:mount –bind /etc /mnt/test 表示将/etc目录绑定到/mnt/test目录下
查看当前系统所有已挂载的设备:
<1>mount
<2>cat /etc/mtab
<3>cat /proc/mounts
挂载本地的回环设备:(直接使用iso、img等镜像可用此方法,类似于虚拟光驱的作用)
mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POIN
3、卸载命令umount,注意:正在被进程访问到的挂载点,无法被卸载
查看挂载情况: findmnt MOUNT_POINT
查看正在访问指定文件系统的进程:
lsof MOUNT_POINT
fuser -v MOUNT_POINT
终止所有在正访问指定的文件系统的进程:fuser -km MOUNT_POINT
卸载:
umount DEVICE
umount MOUNT_POINT
4、设定除根文件系统意外的其他文件系统能够开机自动挂载:/etc/fstab
/etc/fstab的格式
6个字段:
<1>要挂载的设备:
支持 设备文件名、卷标(LABLE)、UUID、伪文件系统(如:sysfs、proc、tmpfs)这几种格式
<2>挂载点:
swap类型的设备的挂载点为swap
<3>文件系统类型
<4>挂载选项
default:使用默认挂载选项
如果要同时指明多个挂载选项,彼此间以逗号进行分割
如 default,acl,noatime,noexec
<5>转储频率
0:表示从不备份
1:表示每天备份一次
2:表示每隔天备份一次
<6>自检次序
0:表示不自检
1:表示首先自检,通常只能是根文件系统可用1
2:次级自检
编辑完该配置文件后,可用mount -a 自动挂载该文件中定义的所有支持自动挂载的设备
第六章 磁盘管理相关操作示例
1、备份mbr、恢复mbr
2、删除、恢复mbr分区中的bootloader
利用hexdump -C -n 512 /dev/sdb 可查看/dev/sdb磁盘上前512字节的内容
利用hexdump -C /testdir/mbr.bak 可查看之前备份出来的mbr的内容
破坏bootloader:dd if=/dev/zero of=/dev/sdb bs=1 count=446
由于没有破坏分区表信息,故分区信息依然可以显示
恢复bootloader:dd if=/testdir/mbr.bak of=/dev/sdb bs=1 count=446
3、删除、恢复mbr中分区表
删除分区表:dd if=/dev/zero of=/dev/sdb bs=1 count=62 seek=446 seek表示写入时跳过的字节数
恢复分区表:dd if=/testdir/mbr.bak of=/dev/sdb bs=1 count=62 skip=446 seek=446 skip表示读取时跳过的字节数
4、删除、恢复mbr中分区状态信息
删除分区状态标识信息 dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510 seek指定写入时跳过的字节数
恢复分区标识符信息:dd if=/testdir/mbr.bak of=/dev/sdb bs=1 count=2 skip=510 seek=510
5、mount挂载选项效果展示
<1>-r只读挂载,-w读写挂载,-o remount重新挂载
<2>-L “LABEL”用卷标挂载,-o ro 只读挂载;-o rw 读写挂载
<3>-B 将一个目录挂载到另一个目录,相当于给目录创建了另一个访问入口(注意删除一个目录中的内容,另一个目录中的内容也就没有了)
<4>-U UUID以UUID方式挂载,-o acl|noacl 设置启用acl和关闭acl功能
<5>-o exec|noexec允许或禁止可执行文件运行
<6>-o suid|nosuid 允许或禁止suid,sgid权限
<7>-o dev|nodev 是否禁用设备文件的使用
原创文章,作者:M20-1倪文超,如若转载,请注明出处:http://www.178linux.com/40225