文件系统是一种利用数据存储设备来保存计算机文件的文件系统,常见的包括fat32、(vfat)、ext2/3/4、iso9660、nfs、smb等

1.gpt与msdos区别

MSDOS

现在的PC架构,大多是沿用了数十年的主板BIOS+硬盘MBR分区的这种组合模式,所以这种模式的磁盘分区表类型就称为MSDOS,也称MBR。
MBR是主引导记录(Master Boot Record),也就是现有的硬盘分区表的存放地点,在1024扇区之内。

MBR格式的标准决定了MBR只支持在2TB以下的硬盘,如果硬盘超过2TB时,只能管理到2TB,剩下的空间将被浪费;并且每个磁盘最多只能有4个主分区(或3个主分区,1个扩展分区和无限制的逻辑分区)。

在linux下,fdisk命令只能用来操作MSDOS格式的分区表。

GPT

随着磁盘技术越来越先进,使用垂直磁化和巨磁阻磁头,出现了容量远超于传统磁盘的容量,所以为了克服BIOS+MBR的2TB、4分区限制,就出现了EFI+GPT的模式。

GPT,全局唯一标识分区表(GUID Partition Table)。GPT是EFI方案的一部分,但并不依赖于EFI主板,在BIOS主板的PC中也可使用GPT分区。

与MBR最大4个分区表项的限制相比,GPT对分区数量没有限制,GPT可管理硬盘大小达到了18EB。

GPT的分区信息是在分区中,而不象MBR一样在主引导扇区,至关重要的平台操作数据位于分区,而不是位于非分区或隐藏扇区

在linux下,对GPT格式分区表的操作是通过parted命令。

2.fdisk的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition #删除分区
l list known partition types #列出分区类型
m print this menu #列出帮助
n add a new partition #添加个分区
o create a new empty DOS partition table
p print the partition table #累出分区表
q quit without saving changes #不保存退出
s create a new empty Sun disklabel
t change a partition's system id #改变分区类型
u change display/entry units
v verify the partition table
w write table to disk and exit #保存并退出
x extra functionality (experts only)

3.parted的使用

1
2
3
$ parted -s /dev/sda mklabel gpt #创建GPT磁盘分区表
$ parted -s /dev/sda rm 1 #删除sda中的分区1
$ parted -s /dev/sda mklabel primary 0 100% #创建sda分区1,使用0-100%的空间

4.格式化硬盘创建文件系统

文件系统linux下常用的ext[2|3|4];windows的常见的fat32、(vfat);iso9660被用于CD、DVD与蓝光光盘;共享文件系统nfs、smb等。

1
$ mkfs -t ext[2|3|4] /dev/sda -L /data1 #创建文件系统,-L 设置卷标为data1

使用卷标或者UUID的好处是当磁盘从主板的一个插槽换到另外一个插槽中,kernel可能会重新分配一个设备号,但是卷标和UUID并不会改变,这样可以正确的挂载你需要的分区。

1
2
3
$ e2label /dev/sda1 #查看卷标
$ e2label /dev/sda1 data1 #设置或修改卷标
$ blkid /dev/sda1 #查看文件系统和UUID

5.挂载

1
2
3
4
5
6
7
8
9
mkdir /data1 #创建目录data1
mount /dev/sda1 /data1 #挂载分区sda1到目录data1上
mount -t ext4 /dev/sda1 /data1 #-t 指定文件系统
mount -L /data1 /data1 #-L 指定卷标 将卷标为data1的挂载到目录为data1上
mount -a #读取/etc/fstab文件进行自动挂载
mount -o ro -L /data1 /data1 #-o ro 只读挂载
mount -o loop /dev/cdrom /cdrom #挂载iso文件
umount /sda/sda1 #取消挂载sda1,同umount /data1 可以跟挂载目录
umount -a #读取/etc/fstab文件进行自动取消挂载

编辑/etc/fstab,此文件可以在系统开机后自动进行磁盘挂载

1
2
3
$ vim /etc/fstab
LABEL=/data1 /data1 ext4 defaults 0 0
#<file system> <dir> <type> <options> <dump> <pass>

  • file system: 要挂载的分区或存储设备

  • dir: file systems的挂载位置

  • type: 要挂载设备或是分区的文件系统类型

  • options: 挂载时使用的参数

    • auto - 在启动时或键入了 mount -a 命令时自动挂载
    • noauto - 只在你的命令下被挂载
    • ro - 以只读模式挂载文件系统
    • rw - 以读写模式挂载文件系统
    • defaults - 使用文件系统的默认挂载参数,例如 ext4 的默认参数为:rw, suid, dev, exec, auto, nouser, async
  • dump: dump 工具通过它决定何时作备份,1表示备份,没安装dump默认设置为0

  • pass: fsck 读取 pass 的数值来决定需要检查的文件系统的检查顺序,可选0、1、2,根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查