linux 硬盘和文件系统
为磁盘设备分区
分区表有很多种,比较典型的一种叫主引导记录(Master Boot Record,以下简称MBR)。另 一种逐渐普及的是全局唯一标识符分区表(Globally Unique Identifier Partition Table,以下简称 GPT)。
下面是Linux系统中的各种分区工具。
- parted:一个文本命令工具,支持MBR和GPT。
- gparted:parted的图形版本。
- fdisk:Linux传统的文本命令分区工具,不支持GPT。
- gdisk:fdisk的另一个版本,支持GPT,但不支持MBR。
parted虽然也能够创建和操作文件系统,但是你最好不要使用它来操作文件系统,因为 这样会引发一些混淆。分区操作和文件系统操作还是有本质的不同。分区表划分磁盘的 区域,而文件系统侧重数据管理,因此我们使用parted分区,使用另外的工具来创建文件系统,parted的文档中也是这样建议的。
查看分区表
你可以使用命令parted -l查看系统分区表
$ parted -l
Model: ATA WDC WD3200AAJS-2 (scsi)
Disk /dev/sda: 320GB
Sector size (logical/physical): 512B/512B Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 316GB 316GB primary ext4 boot
2 316GB 320GB 4235MB extended
5 316GB 320GB 4235MB logical linux-swap(v1)
Model: FLASH Drive UT_USB20 (scsi)
Disk /dev/sdf: 4041MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 1000MB 1000MB myfirst
2 1000MB 4040MB 3040MB mysecond
parted命令显示的文件系统不一定是MBR中的系统ID。MBR系统ID只是一个数字,例如 83是Linux分区,82是Linux交换分区。因而parted自己来决定文件系统。如果你想知道 MBR中的系统ID,可以使用命令fdisk -l。
更改分区表
查看分区表相对更改分区表来说比较简单和安全,虽然更改分区表也不是很复杂,但还是有 一定的风险,所以需要特别注意以下两点。
- 删除分区以后,分区上的数据很难被恢复,因为你删除的是该文件系统最基本的信息。 所以最好事先对数据做备份。
- 确保你操作的磁盘上没有分区正在被系统使用。因为大多数Linux系统会自动挂载被删除的文件系统。
你可以用以下方式来查看对分区的更改。
- 使用udevadm查看内核消息更改。例如:udevadm monitor --kernel会显示被删除的分区和新创建的分区。
- 在/proc/partitions中查看完整的分区信息。
- 在/sys/block/device中查看更改后的分区系统接口信息,在/dev中查看更改后的分区设备。
文件系统
文件系统通常是内核和用户空间之间联系的最后一环,也就是通过ls
和cd
等命令进行交互的 对象。之前介绍过,文件系统是一个数据库,它将简单的块设备映射为用户易于理解的树状文件 目录结构。
文件系统类型
Linux
支持原生设计的并且针对Linux
进行过优化的文件系统,支持Windows FAT
这样的外来 文件系统,支持ISO 9660
这样的通用文件系统,以及很多其他文件系统。下面我们列出了常见的 文件系统,Linux
能够识别的那些我们在名称后加上了类型名称和括号。
- 第四扩展文件系统(以下简称ext4):是Linux原生文件系统的当前版本。第二扩展文件系 统(以下简称ext2)作为Linux的默认系统已经存在了很长时间,它源于传统的Unix文件 系统(如Unix File System - UFS和Fast File System - FFS)。第三扩展文件系统(以下简称 ext3)增加了日志特性(在文件系统数据结构之外的一个小的缓存机制),提高了数据的 完整性和启动速度。ext4文件系统在ext2和ext3的基础上不断完善,支持更大的文件和更 多的子目录个数。扩展文件系统的各个版本都向后兼容。例如,你可以将ext2和ext3挂载 为ext3和ext2,你也可以将ext2和ext3挂载为ext4,但是你不能将ext4挂载为ext2和ext3。
- ISO 9660(iso9660):是一个CD-ROM标准。大多数CD-ROM都是使用该标准的某个版本。
- FAT文件系统(msdos、vfat、umsdos):是微软的文件系统。msdos很简单,支持最基本的单字符MS-DOS系统。在新版本的Windows中如果要支持Linux,你应该使用vfat文件系统。umsdos这个系统很少用到,它在MS-DOS的基础上支持Linux和一些Unix特性,如符号链接。
- HFS+(hfsplus):是苹果Macintosh计算机的文件系统标准。
创建文件系统
和分区一样,用户空间进 程能够访问和操作块设备,所以你可以在用户空间中创建文件系统。mkfs工具可以创建很多种文件系统
mkfs -t ext4 /dev/sdf2
你只需要在增加新磁盘和修复现有磁盘的时候创建文件系统。一般是对没有数据的新分 区进行此操作,或者分区已有的数据你不再需要了。如果在已有文件系统上创建新的文 件系统,所有已有的数据将会丢失。
mkfs是一系列文件系统创建程序的前端界面,如mkfs.fs。fs是一种文件系统类型。当运行mkfs -t ext4时,实际上运行的是mkfs.ext4。
挂载文件系统
在Unix系统中,我们称挂载文件系统为mounting。系统启动的时候,内核根据配置信息挂载 root目录/。
要挂载文件系统,你需要了解以下几点。
- 文件系统所在设备(如磁盘分区,文件系统数据存放的位置)。
- 文件系统类型。
- 挂载点,也就是当前系统目录结构中挂载文件系统的那个位置。挂载点是一个目录,例如,你可以使用/cdrom目录来挂载CD-ROM。挂载点可以在任何位置,只要不直接在/下即可。
参考
[精通linux(第二版)](