创建分区和文件系统

总览

在本文中,了解磁盘分区和Linux文件系统。 学会:

  • 创建一个分区
  • 使用mkfs命令设置ext2,ext3,ext4,xfs,Reiser v3和vfat文件系统
  • 创建和管理交换空间

本文可帮助您为Linux Professional Institute的初级管理(LPIC-1)考试101的主题104中的目标104.1作准备。该目标的权重为2。

注意:本文包括截至2012年7月2日的LPI考试101:目标更改的材料。我们添加了有关ext4文件系统的基本信息。 我们还在gdisk命令和GUID分区表(GPT)上添加了一些基本信息。 新的代码清单和图形均在64位Fedora 17系统上完成。

先决条件

为了从本系列文章中获得最大收益,您应该具有Linux的基本知识以及可以在其上实践本文所介绍的命令的Linux系统。 有时,不同版本的程序会以不同的格式格式化输出,因此您的结果可能并不总是看起来完全像此处显示的清单和图一样。

您还应该熟悉我们的文章“ 学习Linux 101:硬盘布局 ”中的内容。

块设备和分区

我们的文章“ 学习Linux 101:学习Linux,101:硬盘布局 ”向您介绍了硬盘驱动器布局,分区以及fdiskgdisk命令用于查看分区信息的一些基本用法。 您了解了主引导记录(MBR),分区表,分区,包括主分区, 扩展分区和逻辑分区。 还向您介绍了GUID分区表(GPT),这是一种新格式,用于解决MBR布局固有的大小限制。 最后,你了解到Linux文件系统包含排列在目录磁盘或其他块存储设备上的文件 。 与许多其他系统一样,Linux系统上的目录可能包含称为子目录的其他目录。 该文章还讨论了指导您选择分区的注意事项。

注意:本文重点介绍与fdisk命令和使用MB布局进行分区有关的LPI要求。 它在创建ext4文件系统中包括一些gdisk命令信息。 有关GPT的更多信息,请参考较早的文章及其资源。

我们将从回顾块设备和分区开始,然后向您展示有关fdisk命令的更多信息,该命令用于在块设备上创建,修改或删除分区。 您还将了解mkfs命令的各种形式(mkfs代表make filesystem ); mkfs命令用于将分区格式化为特定的文件系统类型。

注意:除了LPI考试所需的工具和文件系统之外,您可能还会遇到或需要其他工具和文件系统。 在其他工具和文件系统中找到一些其他可用工具的简短摘要。

块设备

块设备是任何可以格式化为固定大小的块的存储设备的抽象层。 可以独立于访问其他块来访问各个块。 这种访问通常称为随机访问 。

随机访问的固定大小块的抽象层允许程序使用这些块设备,而不必担心基础设备是硬盘驱动器,软盘,CD,固态驱动器,网络驱动器还是某种类型的虚拟设备(例如内存文件系统。

块设备的示例包括系统上的第一个IDE硬盘驱动器(/ dev / sda或/ dev / hda)或第二个SCSI,IDE或USB驱动器(/ dev / sdb)。 使用ls -l命令显示/ dev条目。 每行输出的第一个字符是b ,代表设备,例如软盘,CD驱动器,IDE硬盘驱动器或SCSI硬盘驱动器; 和c表示字符设备,例如a或终端(tty)或空设备。 请参阅中的示例。

Linux块和字符设备
[ian@echidna ~]$ ls -l /dev/loop1 /dev/null /dev/sd[ab] /dev/sr0 /dev/tty0
brw-rw----. 1 root disk   7,  1 2010-06-14 07:25 /dev/loop1
crw-rw-rw-. 1 root root   1,  3 2010-06-14 07:25 /dev/null
brw-rw----. 1 root disk   8,  0 2010-06-14 07:25 /dev/sda
brw-rw----. 1 root disk   8, 16 2010-06-14 07:25 /dev/sdb
brw-rw----+ 1 root cdrom 11,  0 2010-06-14 07:25 /dev/sr0
crw--w----. 1 root root   4,  0 2010-06-14 07:25 /dev/tty0

隔断

对于某些块设备,例如软盘和CD或DVD光盘,通常将整个介质用作单个文件系统。 但是,对于大型硬盘驱动器甚至USB闪存盘,将可用空间划分或划分为几个不同的分区更为常见。

分区的大小可以不同,并且不同的分区上可能具有不同的文件系统,因此单个磁盘可以用于多种用途,包括在多个操作系统之间共享。 例如,我使用具有几种不同Linux发行版的测试系统,有时使用Windows®系统,它们共享一个或两个硬盘驱动器。

您会从文章“ 学习Linux 101:学习Linux,101:硬盘布局 ”中回想起,硬盘驱动器具有根据柱面,磁头和扇区定义的几何形状 。 尽管现代驱动器使用逻辑块寻址 ( LBA ),这使几何结构基本上不相关,但是用于分区的基本分配单元通常仍然是圆柱体。

显示分区信息

分区信息存储在磁盘上的分区表中 。 该表列出了有关每个分区的开始和结束的信息,有关其类型的信息以及是否将其标记为可引导。 要创建和删除分区,请使用专门为作业设计的程序来编辑分区表。 对于LPI考试,您需要了解fdisk程序,尽管这里可以使用其他几种工具,但是这里介绍了这一点。 我们将在本文结尾处提到一些内容。

带有-l选项的fdisk命令用于列出分区。 如果要查看特定驱动器上的分区,请添加设备名称,例如/ dev / sda。 请注意,分区工具需要root访问权限。 显示了我两个系统的主硬盘驱动器上的分区。

用fdisk列出分区
[root@attic4 ~]#fdisk -l /dev/sda

Disk /dev/sda: 640.1 GB, 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00064a1a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         127     1020096   83  Linux
/dev/sda2             128        1402    10241437+  82  Linux swap / Solaris
/dev/sda3   *       46340       56538    81920000   83  Linux
/dev/sda4            1403       46339   360956422    5  Extended
/dev/sda5            1403       10420    72437053+  83  Linux
/dev/sda6           10421       19344    71681998+  83  Linux
/dev/sda7           19345       28350    72340663+  83  Linux
/dev/sda8           28351       37354    72324598+  83  Linux
/dev/sda9           37355       46339    72171981   83  Linux

Partition table entries are not in disk order

[root@echidna ~]# fdisk -l /dev/sda

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9634        9730      779152+  83  Linux
/dev/sda3            9731      116679   859067842+   5  Extended
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux

笔记:

  1. 标头信息显示磁盘大小和几何形状。 大多数使用LBA的大型磁盘每个柱面有255个磁头,每个磁道有63个扇区,总共有16065个扇区,即每个柱面8225280字节。
  2. 在第二个示例中,第一个主分区(/ dev / sda1)被标记为bootable (或active )。 这使标准DOS PC主启动记录可以启动分区。 该标志对于LILO或GRUB引导加载程序没有任何意义。 第一个示例将GRUB用作引导加载程序,并且/ dev / sda3被标记为可引导这一事实很可能是我使用该驱动器的历史。
  3. “ 开始”和“ 结束”列显示每个分区的开始和结束柱面。 它们不能重叠,并且通常应该是连续的,没有中间空间。
  4. “ 块”列显示分区中1K(1024字节)的块数。 对于写入时使用的大多数磁盘,扇区大小为512字节,因此分区中的最大块数是柱面数(结束+ 1-开始)和扇区数的乘积的一半。每缸。 尾随的+号表示未使用分区中的所有扇区。
  5. Id字段指示分区的预期用途。 类型82是Linux交换分区,类型83是Linux数据分区。 大约定义了100种不同的分区类型。 第二个磁盘在包括Windows / XP在内的几个操作系统之间共享,因此存在Windows NTFS(可能还有FAT32)分区。

用fdisk分区

您刚刚看到了如何使用fdisk命令显示分区信息。 此命令还提供了一个菜单驱动的环境,用于编辑分区表以创建或删除分区。

警告事项

在开始修改分区之前,需要记住一些重要的事情。 如果不遵循这些准则,则可能会丢失现有数据

  1. 在开始操作之前,请备份重要数据 ,以及可能导致数据丢失的任何操作。
  2. 不要更改正在使用的分区 。 计划您的行动并仔细执行。 从CD,DVD或USB引导实时分发是一种确保不使用任何硬盘分区的好方法。
  3. 了解您的工具fdisk命令不会告诉您对磁盘的任何更改,除非您告诉您。 其他工具(包括parted )可以随时进行更改。
  4. 如果你弄错了就停下来 。 分区工具将写入分区表。 除非您使用的工具还具有移动,调整大小,格式化或以其他方式写入磁盘数据区域的功能,否则您的数据将不会被触及。 如果确实出错,请尽快停止并寻求帮助。 您可能仍然可以还原以前的分区表定义,从而恢复分区和数据。

启动fdisk

要以交互方式启动fdisk ,只需提供磁盘名称(例如/ dev / hda或/ dev / sdb)作为参数即可。 以下示例引导Knoppix实时DVD。 您将需要root权限,并且您将看到类似于的输出。

启动交互式fdisk
knoppix@Microknoppix:~$ su -
root@Microknoppix:~#fdisk /dev/sda

The number of cylinders for this disk is set to 121601.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):

大多数现代磁盘具有超过1024个柱面,因此您通常会看到中显示的警告。 键入m以显示可用的单字母命令列表,如所示。

fdisk中的帮助
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)

Command (m for help):

使用p命令显示该特定磁盘上的现有分区。 显示输出。

显示现有分区表
Command (m for help):p

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9634        9730      779152+  83  Linux
/dev/sda3            9731      116679   859067842+   5  Extended
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux

Command (m for help):

该特定磁盘是一个1TB磁盘,其Windows / XP分区不足80GB。 它是一个主分区,并且被标记为可启动,这在Windows系统中是典型的。

添加分区

现在让我们使用部分可用空间来添加一些分区。

  1. 我们将创建一个交换分区为/ dev / sda4。 这将是一个主分区,填充/ dev / sda1的末尾与/ dev / sda2的末尾之间的521柱面间隙。 甚至不要开始怀疑是什么疯狂的事情导致了这种差距的存在。 我故意创建了差距,因此可以写这篇文章。
  2. 我们将创建一个40GB的逻辑分区为/ dev / sda8。
  3. 最后,我们将创建一个小的2000MB逻辑分区,用于在Linux和Windows系统之间共享数据。 最终将其格式化为FAT32(或vfat)。 它将是/ dev / sda9。

创建分区

让我们从使用n命令开始创建一个新分区。 见。

创建我们的第一个分区
Command (m for help):n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
p
Selected partition 4
First cylinder (9112-121601, default 9112): 
Using default value 9112
Last cylinder, +cylinders or +size{K,M,G} (9112-9633, default 9633): +521

Command (m for help): p

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9634        9730      779152+  83  Linux
/dev/sda3            9731      116679   859067842+   5  Extended
/dev/sda4            9112        9633     4192965   83  Linux
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux

Partition table entries are not in disk order

Command (m for help):

我们将第一个圆柱作为默认值,并将圆柱数量指定为+521。 您可以看到我们的分区大约为4GB。 由于它是一个主分区,因此必须从1到4进行编号。 如果没有完成,一些工具会抱怨,并且fdisk警告我们分区表条目不再按磁盘顺序排列。

还要注意,我们为Linux数据分区的新分区分配了83类型。 可以将其视为分区预期用途的操作系统指标。 最终的用途应该与此相匹配,但是在这一点上,我们甚至还没有格式化分区,更不用说上面有任何数据了。 我们将首先创建其他分区,然后查看如何更改分区类型。

您可能已经注意到,当我们输入n子命令来创建新分区时,唯一的选择是'l'表示逻辑,'p'表示主分区。 您将仅看到其余可能的分区类型的选项。 如果驱动器还没有扩展分区,则将看到“ e”表示扩展。 还要注意,我们的扩展分区(/ dev / sda3)是类型5。

现在让我们定义40GB Linux分区和2000MB FAT32分区。 这次,我们将仅指定+ 40G和+ 2000M的大小,分别表示40GB和2000MB。 我们让fdisk为我们计算气缸数。 结果显示在中。

创建我们的数据分区
Command (m for help): n
First cylinder (53906-116679, default 53906): 
Using default value 53906
Last cylinder, +cylinders or +size{K,M,G} (53906-116679, default 116679): +40G

Command (m for help): n
First cylinder (59129-116679, default 59129): 
Using default value 59129
Last cylinder, +cylinders or +size{K,M,G} (59129-116679, default 116679): +2000M

Command (m for help): p

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9634        9730      779152+  83  Linux
/dev/sda3            9731      116679   859067842+   5  Extended
/dev/sda4            9112        9633     4192965   83  Linux
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux
/dev/sda8           53906       59128    41953716   83  Linux
/dev/sda9           59129       59384     2056288+  83  Linux

Partition table entries are not in disk order

Command (m for help):

更改分区类型

在离开fdisk之前,我们将更改swap和vfat分区的分区类型。 我们使用t子命令来设置分区类型。 我们将/ dev / sda4设置为82(Linux swap),将/ dev / sda9设置为9(FAT32)。 如果要查看支持的类型的完整列表,请输入L如中所见。

更改分区类型
Command (m for help):t
Partition number (1-9): 4
Hex code (type L to list codes): 82
Changed system type of partition 4 to 82 (Linux swap / Solaris)

Command (m for help): t
Partition number (1-9): 9
Hex code (type L to list codes): b
Changed system type of partition 9 to b (W95 FAT32)

Command (m for help):

保存我们的分区表

到目前为止,我们只是在对分区表进行内存内编辑。 我们可以使用q命令退出而不保存更改。 如果不是您想要的东西,则可以使用d命令删除一个或多个分区,以便重新定义它们。 如果对安装感到满意,请使用v命令验证您的设置,然后使用w命令写入新的分区表并退出。 请参阅。 如果再次运行fdisk -l ,您将看到Linux现在知道新分区了。 与某些操作系统不同,不一定总是需要重新引导才能看到更改。 例如,如果/ dev / hda3变为/ dev / hda2,则可能需要重新启动,因为原始的/ dev / hda2已删除。 如果需要重新启动,则fdisk应该告诉您这样做。

保存分区表
Command (m for help):v
999521580 unallocated 512-byte sectors

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
root@Microknoppix:~# fdisk -l /dev/sda

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9634        9730      779152+  83  Linux
/dev/sda3            9731      116679   859067842+   5  Extended
/dev/sda4            9112        9633     4192965   82  Linux swap / Solaris
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux
/dev/sda8           53906       59128    41953716   83  Linux
/dev/sda9           59129       59384     2056288+   b  W95 FAT32

Partition table entries are not in disk order

有关fdisk的更多信息

您可能会注意到,我们没有更改任何分区上的可引导标志。 就我们的磁盘而言,它仍然具有Windows Master Boot Record(MBR),因此将引导标记为可引导的第一个主分区(在本示例中为NTFS分区)。

LILO和GRUB都不使用可引导标志。 如果MBR中安装了其中任何一个,则它可以引导Windows / XP分区。 您也可以将LILO或GRUB安装到/ boot分区(/ dev / hda2)中,并将该分区标记为可引导,并从/ dev / hda1中删除可引导标志。 如果稍后将计算机恢复为仅Windows的计算机,则保留原始MBR可能会很有用。

如果需要,还可以使用fdisk固定分区表中的分区顺序。 这通常会更改分区号,因此您可能需要执行其他工作才能将系统还原到工作系统。 要进行此更改,请使用f子命令切换到专家模式,然后使用f子命令修复分区顺序,如图所示。 如果只想查看新的分区顺序而不更改它,可以使用q子命令退出,就像在本示例中所做的那样,而不是将更新的分区表写入磁盘。

固定分区表顺序。
Command (m for help): p

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9634        9730      779152+  83  Linux
/dev/sda3            9731      116679   859067842+   5  Extended
/dev/sda4            9112        9633     4192965   82  Linux swap / Solaris
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux
/dev/sda8           53906       59128    41953716   83  Linux
/dev/sda9           59129       59384     2056288+   b  W95 FAT32

Partition table entries are not in disk order

Command (m for help): x

Expert command (m for help): f
Done.

Expert command (m for help): r

Command (m for help): p

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9112        9633     4192965   82  Linux swap / Solaris
/dev/sda3            9634        9730      779152+  83  Linux
/dev/sda4            9731      116679   859067842+   5  Extended
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux
/dev/sda8           53906       59128    41953716   83  Linux
/dev/sda9           59129       59384     2056288+   b  W95 FAT32

Command (m for help): q

您现在已经看到了一种将分区添加到Linux工作站的方法。 文章“ 学习Linux,101:查找并放置系统文件 ”中介绍了您可能做出的其他选择。

文件系统类型

Linux支持几种不同的文件系统。 每个都有优点和缺点,还有自己的一套性能特征。 文件系统的一个重要属性是日记功能 ,它可以在系统崩溃后更快地进行恢复。 通常,选择日志文件系统时,优先选择非日志文件系统。 您可能还需要考虑您选择的文件系统是否支持Security Enhanced Linux (或SELinux)。 以下是LPI考试需要了解的类型的简要概述。 有关其他背景信息,请参见参考资料

ext2文件系统

开发ext2文件系统(也称为第二个扩展文件系统 )是为了解决Linux早期版本中使用的Minix文件系统的缺点。 多年来,它已在Linux上广泛使用。 ext2中没有日记功能,并且在很大程度上已被ext3和最近的ext4取代。

ext3文件系统

ext3文件系统为标准ext2文件系统增加了日记功能,因此是非常稳定的文件系统的演进。 在大多数情况下,它提供合理的性能,并且仍在改进中。 由于它在经过验证的ext2文件系统之上添加了日记功能,因此可以将现有的ext2文件系统转换为ext3,甚至在需要时可以再次转换回ext3。

ext4文件系统是对ext3的扩展,它通过增加存储限制和提高性能来满足越来越大的文件系统的需求。 为了保持ext3的稳定性,2006年6月决定将扩展扩展到新的文件系统ext4中。 ext4文件系统于2008年12月发布,并包含在2.6.28内核中。 ext3的一些更改是:

  • 文件系统最大为1 EB,文件最大为16 TB
  • 使用范围来代替块映射作为提高性能的一种方法
  • 日记校验和以提高可靠性
  • 更快的文件系统检查,因为在检查过程中可以跳过未分配的块。
  • 延迟分配和多块分配器可提高性能并减少文件碎片。
  • 时间戳更改可以提供更精细的粒度,新的创建日期(这将要求最终对许多其他库和实用程序进行更新才能完全有用)。 进一步的时间戳更改解决了2038年问题,该问题是由于将时间戳存储为带符号的32位整数而引起的。

ReiserFS文件系统

ReiserFS是基于B树的文件系统,具有非常好的整体性能,尤其是对于大量小文件。 ReiserFS的伸缩性也很好,并且具有日记功能。 它不再处于主动开发中,不支持SELinux,并且在很大程度上已被Reiser4取代。

XFS文件系统

XFS是带有日记功能的文件系统。 它具有强大的功能,并针对可伸缩性进行了优化。 XFS主动将传输中的数据缓存在RAM中,因此,如果您使用XFS,则建议使用不间断电源。

交换文件系统

交换空间必须经过格式化才能用作交换空间,但是通常不将其视为文件系统。

vfat文件系统

该文件系统(也称为FAT32 )未记录日志,缺少完整Linux文件系统实现所需的许多功能。 这对于在Windows和Linux系统之间交换数据很有用,因为Windows和Linux均可读取。 不要使用这个文件系统为Linux,除了Windows和Linux之间共享数据。 如果您将Linux归档文件解压缩或解压缩到vfat磁盘上,则会丢失权限,例如执行权限,并且会丢失可能已存储在归档文件中的任何符号链接。

ext3文件系统已经成熟,并在许多发行版中被用作默认文件系统。 ext4文件系统正在将其替换为多个发行版中的默认文件系统,包括Red Hat Enterprise Linux 6,Fedora 17和Ubuntu 12.10。 ReiserFS文件系统已在许多发行版(包括SUSE)中用作默认版本,但如今已很少使用。

创建文件系统

Linux使用mkfs命令创建文件系统,并使用mkswap命令创建交换空间。 所述mkfs命令实际上是一个前端到文件系统的特定几个命令,如mkfs.ext3在ext3, mkfs.ext4为EXT4和mkfs.reiserfs为ReiserFS的。

您的系统上已经安装了什么文件系统支持? 使用ls /sbin/mk*命令进行查找。 中显示了一个示例。

文件系统创建命令
[ian@echidna ~]$ ls /sbin/mk*
/sbin/mkdosfs      /sbin/mkfs.ext2     /sbin/mkfs.ntfs
/sbin/mke2fs       /sbin/mkfs.ext3     /sbin/mkfs.vfat
/sbin/mkfs         /sbin/mkfs.ext4     /sbin/mkfs.xfs
/sbin/mkfs.btrfs   /sbin/mkfs.ext4dev  /sbin/mkhomedir_helper
/sbin/mkfs.cramfs  /sbin/mkfs.msdos    /sbin/mkswap

您会注意到某些命令的各种形式。 例如,您通常会发现文件mke2fs,mkfs.ext2和mkfs.ext3相同,而mkreiserfs和mkfs.reiserfs也一样。 引导系统可能需要的文件系统通常将使用硬链接为同一文件提供不同的名称。 Linux中不能用于/文件系统的文件系统,例如vfat或msdos,可以改用符号链接。 文章“ 学习Linux,101:创建和更改硬链接和符号链接 ”将帮助您了解这些不同类型的链接。

所有mkfs命令都有一些常用选项。 根据-type选项中指定的文件系统类型,将特定于要创建的文件系统类型的选项传递到适当的创建命令。 我们的示例使用mkfs -type ,但是您可以直接使用其他形式而效果相同。 例如,您可以使用mkfs -type ext2mk2fsmkfs.ext2 。 对于特定文件系统的手册页,请使用适当的mkfs命令作为名称,例如man mkfs.ext3 。 下面的输出示例中显示的许多值都可以通过mkfs的选项进行控制。

现在,我们已经创建了所有分区,我们将重新启动Fedora 12系统并使用该系统格式化文件系统,而不是使用速度较慢的实时Knoppix DVD进行格式化。 当然,您可以根据需要继续使用Knoppix系统。 请记住,您需要root用户权限才能创建文件系统。

创建一个ext3文件系统

让我们使用mkfs命令将/ dev / sda8分区格式化为ext3,如所示。

创建一个ext3文件系统
[root@echidna ~]#mkfs -t ext3 /dev/sda8
mke2fs 1.41.9 (22-Aug-2009)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2624496 inodes, 10488429 blocks
524421 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
321 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

请注意,日记是使用ext3创建的。 如果希望将日志添加到现有ext2系统,请使用带有-j选项的tune2fs命令。

ext2,ext3和ext4文件系统的一个有用选项是带有名称的-L选项,该选项将标签分配给分区。 挂载文件系统时,可以使用它代替设备名称。 它提供了一定程度的隔离,以防止可能需要在各种控制文件中反映出来的更改。 要显示或设置现有ext2,ext3或ext3文件系统的标签,请使用e2label命令。 标签的最大大小限制为16个字符。

最近的发展是使用通用唯一标识符 ( UUID )而不是标签。 UUID是一个128位标识符,通常显示为32个十六进制数字和四个连字符。 格式化文件系统后,大多数Linux文件系统会自动生成UUID。 如图所示,使用blkid命令(不需要root权限)来查看刚刚格式化的分区的UUID。 UUID比标签更可能具有唯一性,并且对于热插拔设备(例如USB驱动器)特别有用。

使用blkid显示UUID
[ian@echidna ~]$blkid /dev/sda8
/dev/sda8: UUID="87040def-920e-4525-9c81-c585ddc46384" SEC_TYPE="ext2" TYPE="ext3"

创建一个ext4文件系统

暂时走出传统MBR布局,并使用GUID分区表(GPT)布局格式化USB闪存驱动器,以了解其工作原理。 然后使用gdisk命令在驱动器上创建Linux分区。 最后,使用mkfs命令在新分区上创建ext4文件系统。

使用gdisk ,查看典型的USB闪存驱动器(也称为USB拇指驱动器或USB密钥)。 它们通常带有跨越整个驱动器的FAT32文件系统,并且通常不进行分区。 显示gdisk如何显示尚未以GPT布局显示的驱动器的信息。

使用gdisk在非GPT磁盘上显示信息
[root@attic4 ~]#gdisk -l /dev/sdc
GPT fdisk (gdisk) version 0.8.4

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format.
***************************************************************

Warning! Main partition table overlaps the first partition by 2 blocks!
Try reducing the partition table size by 8 entries.
(Use the 's' item on the experts' menu.)

Warning! Secondary partition table overlaps the last partition by
33 blocks!
You will need to delete this partition or resize it in another utility.
Disk /dev/sdc: 62530624 sectors, 29.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): D7900F13-839B-49B2-9C43-4367528DC381
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 62530590
Partitions will be aligned on 32-sector boundaries
Total free space is 0 sectors (0 bytes)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              32        62530623   29.8 GiB    0700  Microsoft basic data

首先请注意,您必须以root身份运行gdisk或使用sudo ,具体取决于系统的设置方式。 其次,请注意gdisk希望将现有格式转换为GPT并警告您。 因为您使用了-l选项来简单列出分区,所以不会执行任何操作。

现在以交互方式运行gdisk 。 列出可用的命令,然后列出已知的分区类型,然后再创建新的空GUID分区表,最后创建Linux分区。 您将显示新信息,然后退出gdisk 。 显示互动。

使用gdisk创建GUID分区表(GPT)和分区
[root@attic4 ~]#gdisk /dev/sdc
GPT fdisk (gdisk) version 0.8.4

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format.
THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by typing 'q' if
you don't want to convert your MBR partitions to GPT format!
***************************************************************

Warning! Main partition table overlaps the first partition by 2 blocks!
Try reducing the partition table size by 8 entries.
(Use the 's' item on the experts' menu.)

Warning! Secondary partition table overlaps the last partition by
33 blocks!
You will need to delete this partition or resize it in another utility.

Command (? for help): ?
b	back up GPT data to a file
c	change a partition's name
d	delete a partition
i	show detailed information on a partition
l	list known partition types
n	add a new partition
o	create a new empty GUID partition table (GPT)
p	print the partition table
q	quit without saving changes
r	recovery and transformation options (experts only)
s	sort partitions
t	change a partition's type code
v	verify disk
w	write table to disk and exit
x	extra functionality (experts only)
?	print this menu

Command (? for help): l
0700 Microsoft basic data  0c01 Microsoft reserved    2700 Windows RE          
4200 Windows LDM data      4201 Windows LDM metadata  7501 IBM GPFS            
7f00 ChromeOS kernel       7f01 ChromeOS root         7f02 ChromeOS reserved   
8200 Linux swap            8300 Linux filesystem      8301 Linux reserved      
8e00 Linux LVM             a500 FreeBSD disklabel     a501 FreeBSD boot        
a502 FreeBSD swap          a503 FreeBSD UFS           a504 FreeBSD ZFS         
a505 FreeBSD Vinum/RAID    a800 Apple UFS             a901 NetBSD swap         
a902 NetBSD FFS            a903 NetBSD LFS            a904 NetBSD concatenated 
a905 NetBSD encrypted      a906 NetBSD RAID           ab00 Apple boot          
af00 Apple HFS/HFS+        af01 Apple RAID            af02 Apple RAID offline  
af03 Apple label           af04 AppleTV recovery      af05 Apple Core Storage  
be00 Solaris boot          bf00 Solaris root          bf01 Solaris /usr & Mac Z
bf02 Solaris swap          bf03 Solaris backup        bf04 Solaris /var        
bf05 Solaris /home         bf06 Solaris alternate se  bf07 Solaris Reserved 1  
bf08 Solaris Reserved 2    bf09 Solaris Reserved 3    bf0a Solaris Reserved 4  
bf0b Solaris Reserved 5    c001 HP-UX data            c002 HP-UX service       
ef00 EFI System            ef01 MBR partition scheme  ef02 BIOS boot partition 
fd00 Linux RAID            

Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N):  y

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-62530590, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-62530590, default = 62530590) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): p
Disk /dev/sdc: 62530624 sectors, 29.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): B321C1C5-795A-4836-9E16-D7D45DD8F3F2
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 62530590
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        62530590   29.8 GiB    8300  Linux filesystem

Command (? for help): q 

最后的任务是在新分区/ ev / sdc1上创建ext4文件系统。 使用mkfs-L选项,标记分区,并使用blkid命令显示GUID,就像对上面ext3分区所做的那样。 说明了这一点。

创建一个ext4分区
[root@attic4 ~]#mkfs -t ext4 -L IAN-USB32 /dev/sdc1
mke2fs 1.42.3 (14-May-2012)
Filesystem label=IAN-USB32
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1957888 inodes, 7816324 blocks
390816 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
239 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

[root@attic4 ~]# blkid /dev/sdc1
/dev/sdc1: UUID="b3a3c2bc-ea8d-40c6-967e-927006f55416" TYPE="ext4" LABEL="IAN-USB32"

要查看在创建ext4分区时可以指定的所有参数,请查阅mkfs.ext4的手册页。

创建一个XFS文件系统

现在,使用XFS文件系统重新格式化刚刚格式化为ext3的分区。 我们的Fedora 12系统使用SELinux(安全性增强Linux),因此我们应该使用-i参数指定比默认值256大的inode。 推荐值为512。请注意,如果XFS格式化程序在分区上找到已识别的文件系统,则会通知您。 还要注意,UUID由XFS格式重新分配。

创建一个XFS文件系统
[root@echidna ~]#mkfs -t xfs -i size=512 /dev/sda8
mkfs.xfs: /dev/sda8 appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
[root@echidna ~]# mkfs -t xfs -f -i size=512 /dev/sda8
meta-data=/dev/sda8              isize=512    agcount=4, agsize=2622108 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=10488429, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=5121, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@echidna ~]# blkid /dev/sda8
/dev/sda8: UUID="1b6798f2-f07f-4d5e-af06-2470df37ddb3" TYPE="xfs"

您可以使用-L选项为XFS系统添加名称。 可以将xfs_admin命令与-L选项一起使用,以将标签添加到现有XFS文件系统中。 使用xfs_admin-l选项显示标签。 与ext2,ext3和ReiserFS不同,XFS标签的最大长度为12个字符。

创建一个ReiserFS文件系统

使用带有-t reiserfs选项的mkfs命令或mkreiserfs命令来创建ReiserFS文件系统。 ReiserFS不支持SELinux,将被Resier4取代

您可以使用-l (或带有名称的--label选项)来标记ReiserFS系统。 您可以使用reiserfstune命令添加标签或在现有ReiserFS文件系统上显示标签。 标签的最大长度限制为16个字符。

您可能需要在系统上安装ReiserFS软件包才能使用ReiserFS,因为它可能不包括在默认安装中。 有关更多详细信息,请参见手册或信息页面。

创建一个vfat文件系统

现在,我们将在/ dev / sda9上创建FAT32(vfat)文件系统。

创建一个vfat文件系统
[root@echidna ~]#mkfs -t vfat /dev/sda9
mkfs.vfat 3.0.9 (31 Jan 2010)
[root@echidna ~]# blkid /dev/sda9
/dev/sda9: LABEL="" UUID="CF72-99A8" TYPE="vfat"

vfat文件系统的UUID比普通UUID短,因此,唯一性的可能性较小。 如果要使用标签,请使用dosfslabel命令。 DOS分区的标签长度​​限制为11个字符。

创建交换空间

现在,使用mkswap命令在/ dev / sda4分区上创建一些交换空间,如所示。

创建交换空间
[root@echidna ~]# mkswap /dev/sda4
Setting up swapspace version 1, size = 4192960 KiB
no label, UUID=8f5a3a05-73ef-4c78-bc56-0e9b1bcc7fdb

请注意,最新版本的mkswap向您显示生成的UUID。

与常规文件系统不同,交换分区不会挂载。 而是使用swapon命令启用它们。 Linux系统的启动脚本将负责自动启用交换分区。

其他工具和文件系统

以下工具和文件系统不是本考试LPI目标的一部分。 这个非常简短的概述涉及您可能会遇到的一些工具和文件系统。

分区工具

许多Linux发行版都包含cfdisksfdisk命令。 cfdisk命令使用ncurses库函数提供了比fdisk更多的图形界面,如所示。 sfdisk命令供程序员使用,可以编写脚本。 如果您知道自己在做什么,请使用它。

使用cfdisk
该屏幕截图显示了用于处理分区的cfdisk工具的图形界面

parted另一个流行的工具是分区表,它可以调整许多分区类型的大小和格式,以及创建和销毁它们。 尽管parted无法调整NTFS分区的大小,但ntfsresize可以。 qtparted工具使用Qt工具包提供图形界面。 它包括parted函数以及ntfsresize函数。

gparted工具是另一个为GNOME桌面设计的图形分区工具。 它使用GTK + GUI库,如中所示。 (请参阅参考资料 ,以获得同时qtpartedgparted链接。)

您可能必须安装上述软件包才能使用它们,因为它们可能不是默认安装的一部分。

使用gparted
该屏幕截图显示了用于分区的gparted工具的图形界面

前面您看到了gdisk命令,该命令与fdisk操作非常相似。 将gdisk命令用于GPT磁盘,将fdisk命令用于更传统的MBR布局。 partedgparted都可以处理GPT布局以及MBR布局,因此您可能会发现使用这些工具之一处理这两种类型更方便。

作为安装过程的一部分,许多发行版都允许您对磁盘进行分区,有时还可以缩小现有的Windows NTFS或FAT32分区。 请查阅安装文档以进行分发。

逻辑卷管理器

Linux的逻辑卷管理器(或LVM)使您可以将多个物理存储设备组合到一个卷组中 。 例如,您可以将分区添加到现有的卷组中,而不必为所需的文件系统分配足够大的连续空间。 文章“ 学习Linux 101:硬盘布局 ”提供了更多信息以及使用LVM创建文件系统的示例。

袭击

RAID(独立磁盘冗余阵列)是一种使用低成本磁盘提供可靠数据存储的技术,该磁盘的成本远低于高端系统上的磁盘。 RAID有几种不同类型,并且RAID可以通过硬件或软件来实现。 Linux支持硬件和软件RAID。

更多文件系统

除了上面讨论的文件系统之外,您可能还会遇到文件系统。

当前在IBM企业服务器中使用的IBM的日记文件系统(JFS)专为高吞吐量服务器环境而设计。 它适用于Linux,并包含在多个发行版中。 要创建JFS文件系统,请使用mkfs.jfs命令。

btrfs (B树文件系统)最初是由Oracle开发的,并已获得GPL许可。 它是一种用于Linux的新的写时复制文件系统,旨在实现高级功能,同时侧重于容错,修复和易于管理。 默认情况下可能未安装此程序,因此您可能必须安装一个软件包,例如btrfs-progs才能启用btrfs支持。

还有其他文件系统,例如经常在嵌入式设备上使用的cramfs文件系统。


翻译自: https://www.ibm.com/developerworks/opensource/library/l-lpic1-v3-104-1/index.html

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值