目录(持续更新)

第2章-磁盘及文件系统管理

第一节 磁盘基本概念

单盘片 多盘片 每个盘配磁头 转速越高 性能越好 7200 5400

固态硬盘只是存储芯片 速度快500M/S

机械硬盘基本概念

柱面 cylinder 所有盘片某一圈的集合

扇区 sector 中心到边缘的扇形区

磁头 head 每个磁头大概512字节

磁盘在linux中表示

所有设备都被抽象为文件 保存在/dev下

设备名字一般为 hd[a-z] sd[a-z] (a-z为分区号)

如: hda,hdb,sda,sdb

IDE设备的名称为 hd[a-z],SATA,SCSI,SAS,USB 等设备名称为sd[a-z]

硬盘1 /dec/sda

硬盘2 /dev/sdb

硬盘3 /dev/sdc

分区概念

将磁盘逻辑分区 方便管理

linux中是 设备名称+分区号

硬盘1的第1分区 /dev/sda1

硬盘1的第2分区 /dev/sda2

硬盘2的第1分区 /dev/sdb1

硬盘2的第2分区 /dev/sdb2

主流分区机制为 MBR 和 GPT

MBR(Master Boot Record)是传统的分区机制

应用于绝大多数使用BIOS的PC设备 EFI代替BIOS

MBR支持32bit和64bit系统

MBR支持分区数量有限

MBR仅仅支持不超过2T的硬盘 ,超过2T的硬盘则只能用2T

MBR共512字节

前446字节为引导代码

接下来4×16字节为分区表

接下来两个字节为 55h AAh

MBR分区

主分区 最多四个主分区

扩展分区 扩展分区会占用一个主分区位置 用于承载逻辑分区 无法直接使用

逻辑分区 linux最多支持63个IDE分区和 15个SCSI分区

/dev/sda
/dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4
/dev/sda
/dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4
/dev/sda5------ /dev/sda6------ /dev/sda7

GPT(GUI Partition Table)是一个较新的分区机制 解决了MBR了很多缺点

支持超过2T的磁盘

向后兼容MBR

必须在支持UEFI的硬件上才能使用

必须用64bit系统

Mac和linux系统都能支持GPT分区格式

Windows7 64bit ,WindowsServer2008 64bit支持GPT

第二节 使用fdisk进行磁盘分区

FDISK分区工具来自IBM的老牌分区工具 支持大多系统

几乎所有linux的发行版都有fdisk 包括linux rescue模式下也能使用

fdisk是个针对MBR的工具 如果需要用GPT则无法使用fdisk 大于2T的磁盘无法使用

fdisk只有超级用户权限才能用

使用fdisk -l可以显示所有磁盘的信息

使用fdisk /dev/sda可以列出所有安装的磁盘及其分区信息

进入交互命令

m 帮助

n 创建分区

p 列出分区

t 修改号

w 保存修改

按下N创建分区

e 扩展分区

p 主分区

按下p创建主分区

输入分区号

或输入大小 +2G

按下N创建分区

e 扩展分区

p 主分区

按下e创建扩展分区

无需输入 直接确认

按下N创建分区

l 逻辑分区 (永远从5开始)

p 主分区

按下l创建逻辑分区

输入分区号

或输入大小 +2G

按下T修改分区ID

输入类型数字

L 列出类型

按83linux为正常分区 按82swap为交换分区

按下W保存写入并退出

有时分区后需要用partprobe命令 让内核更新分区信息

查看: /proc/partitions 查看分区信息

第三节 linux文件系统

需要创建文件系统才能用 过程称为格式化 没有经过此过程的为裸设备raw

常见的文件系统有fat32 NTFS ext3 ext4 xfs HFS 等

系统之间的区别 : 日志 支持分区大小 支持单个文件大小

win下主流为NTFS

linux主流为ext4

linux支持的系统 ext nfs iso9660 gfs jfs vfat fat(msdos)

mke2fs 用来创建文件系统

mke2fs -t ext4 /dev/sda3 将第一块硬盘的第三个主分区格式化为ext4文件格式

常用参数:

-b +大小 指定文件系统块大小 每次读写系统块的大小 4K就是4096字节

-c 建立文件系统时检查坏损快

-L label 指定卷标 磁盘取名

-j 建立文件系统日志 ext4带日志 无需使用

mkfs亦可以创建文件系统 单相比mke2fs比较简单 但是支持的参数比较少 不能精细化控制

mkfs.ext3 /dev/sda3 将第一块硬盘的第三个主分区格式化为ext3文件格式

mkfs.ext4 /dev/sda3 将第一块硬盘的第三个主分区格式化为ext4文件格式

mkfs.vfat /dev/sda3 将第一块硬盘的第三个主分区格式化为vfat文件格式

dumpe2fs查看分区文件的系统信息

dumpe2fs /dev/sda2

日志

带有日志的系统有较强的稳定性

日志两阶段提交 将准备执行的事计入日志 然后操作 执行之后删除

E2LABEL对文件系统打标签

e2label /dev/sdb1 查看系统标签

e2label /dev/sdb1 LINUX 打上LINUX标签

FSCK用来检查修复损坏的文件系统

fsck /dev/sdb1 检查系统()检查前需要卸载

使用 -y 参数不提示且修复

fsck自动判断文件系统类型 如果损坏比较严重 建议加上 -t 参数

对于识别文件的损坏数据有些找不到记录,将会计入lost+found目录

系统启动都校验磁盘

第四节 linux文件系统挂载管理

磁盘创建好文件系统之后 挂载后才能使用

win和mac都是自动挂载 一旦创建好之后自动挂载

linux需要手工挂载

/dev/sda2 到 /mnt

mount挂载格式化的磁盘分区

mount /dev/sda1 /mnt/ 将第一块磁盘的第一主分区挂载到 /mnt目录下

-t 指定系统类型 默认自动识别

-o 指定挂载选项

ro rw 只读 还是 读写

mount -o remount,ro /dev/sdb1 /mnt/

将sdb1以只读形式重新挂载到/mnt目录

sync 代表不用缓存 将所有操作直接写入磁盘

async 代表使用缓存 默认是async

noatime 每次访问文件是不更新文件访问时间

atime 每次访问文件是都更新文件访问时间

remount 重新挂载文件系统

mount -o remount,sync /dev/sdb1 /mnt/

将sdb1以不用缓存写入形式重挂载到/mnt目录

mount -o remount,ro,noatime /dev/sdb1 /mnt/

将sdb1以 只读形式 且 访问时不更新文件时间形式 重新挂载到/mnt目录

umount用来卸载已经挂载的文件系统 相当于win中的弹出

umount 文件系统/挂载点

umount /dev/sda3 即 umount /mnt/

如果出现报错,则说明文件系统正在被使用,无法卸载

可用fuser查看哪些进程在使用该文件系统

fuser -m /mnt

可用lsof查看哪些文件被打开了

lsof /mnt

自动挂载

配置文件/etc/fstab来定义需要自动挂载的文件系统

fstab中每一行代表一个挂载的配置

格式如下

/dev/sda3 /mnt ext4 defaults 0 0

要挂载的设备 挂载点 格式 挂载选项 dump和fsck相关选项

要挂载的设备也可以使用label进行识别 label可以取代第一路径

label=卷标 /mnt ext4 defaults 0 0

要挂载的设备 挂载点 格式 挂载选项 dump和fsck相关选项

mount -a命令会挂载所有fstab中定义的自动挂载项