SDB:Partitioning
分区方案
Linux 至少需要一个分区,分配给 /,它是根文件系统。但通常会将不同的目录分配到单独的分区,例如 /home。您创建的不同分区通过将它们挂载到您选择的挂载点连接到 / 分区。Linux 中的分区方案取决于您的安装目的。对于标准的通用安装,您可以拥有一个 /、一个 /boot、一个 /home 和一个 swap 分区。但是,针对不同的目的有许多不同的设置,因此以下是一些可以作为单独分区存在的目录
/boot - 挂载在 /boot 上的分区包含操作系统内核以及启动过程中使用的文件。对于大多数用户,500MB 的启动分区就足够了。
swap - 通常应该等于系统上安装的 RAM 大小的两倍(参见第 3 节)。
/home - 将用户的家目录放在单独的分区上很有用。即使 root 分区损坏或被破坏,用户数据也有很大的机会仍然完好无损。相反,即使用户的 /home 目录已满,系统也可以继续运行。
/usr - 包含系统的库和数据的大部分内容。将 /usr 作为单独的分区可以更轻松地更新系统,如果您需要从头开始重新安装系统。
/opt - 如果您安装了第三方产品,您可能希望将 /opt 放在单独的分区中。这将使第三方应用程序在系统升级期间保持不变。
/srv - 如果您将系统用作服务器,请创建一个 /srv 分区,因为它包含 Web 和 FTP 服务器。
/tmp - 将 /tmp 放在单独的文件系统上会将临时文件限制为有限的大小,并避免备份它们。
/var - 由于日志文件保存在 /var 中,因此将其作为单独的磁盘分区是一个好主意。将 /var 留在小 root 分区的一部分,很容易使 root 填满并使机器停止。
分区表
MBR
MBR(主引导记录)位于硬盘的第一个扇区(512 字节)。它由 3 个部分组成
1 - 引导加载程序,位于前 446 字节。
2 - 分区表位于接下来的 64 字节中(每个主分区 16 字节的 4 个条目)。
3 - 最后 2 个字节包含引导记录签名(55 AA)。
MBR 限制为 2TB 驱动器大小。您可以拥有 4 个主分区,或 3 个主分区和一个扩展分区,您可以根据需要进一步对扩展分区进行分区(最多 24 个逻辑分区)。它用于具有 BIOS(基本输入/输出系统)的计算机。
MBR 分区
MBR 下使用的分区工具称为 fdisk。
首先,如果您不知道您的驱动器名称,可以像这样列出系统中的所有驱动器
如果您知道您的驱动器名称,请使用 fdisk 选择它以编辑其分区
Welcome to fdisk (util-linux 2.28). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help):
进入 fdisk 提示符后,建议您首先查看当前分区。以下示例显示了一个 15 GiB USB,其中包含两个分区 /dev/sdb1 和 /dev/sdb2
Disk /dev/sdb: 15 GiB, 16131293184 bytes, 31506432 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xc8e0e6ee Device Boot Start End Sectors Size Id Type /dev/sdb1 * 0 1638399 1638400 800M 0 Empty /dev/sdb2 13200 37775 24576 12M ef EFI (FAT-12/16/32)
如果要删除分区,请键入 d。如果要添加新分区,而不触碰现有分区,请键入 n。按下 n 后,您可以选择您想要的分区类型,主分区 (p) 或扩展分区 (e)。然后输入分区号(按 Enter 接受默认值)。接下来,您可以选择分区的第一个扇区(安全地接受默认值,因为 fdisk 会选择磁盘中最后一个分区之后的下一个扇区)。然后,对于最后一个扇区,如果希望分区占用磁盘上所有剩余空间,请接受默认值,或者指定以扇区或 KiB、MiB、GiB 等为单位的空间量。在所示示例中,创建了一个主分区并分配了 5GiB 的空间。
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p): p
Using default response p.
Partition number (3,4, default 3):
First sector (1638400-31506431, default 1638400):
Last sector, +sectors or +size{K,M,G,T,P} (1638400-31506431, default 31506431): +5G
Created a new partition 3 of type 'Linux' and of size 5 GiB.
现在,如果要更改分区类型,可以键入 t。然后指定要更改的分区号。之后,指定分区类型。在本例中,第 3 个分区更改为 Windows FAT32。
Partition number (1-3, default 3): Partition type (type L to list all types): L Partition type (type L to list all types): b Changed type of partition 'Linux' to 'W95 FAT32'.
在此示例中,剩余空间分配给扩展分区。该过程与主分区类似。创建后,您可以继续添加更多逻辑分区。
Partition type
p primary (3 primary, 0 extended, 1 free)
e extended (container for logical partitions)
Select (default e):
Using default response e.
Selected partition 4
First sector (12124160-31506431, default 12124160):
Last sector, +sectors or +size{K,M,G,T,P} (12124160-31506431, default 31506431):
Created a new partition 4 of type 'Extended' and of size 9.2 GiB.
Command (m for help): n
All primary partitions are in use.
Adding logical partition 5
First sector (12126208-31506431, default 12126208):
Last sector, +sectors or +size{K,M,G,T,P} (12126208-31506431, default 31506431): +3.2G
Created a new partition 5 of type 'Linux' and of size 3.2 GiB.
现在,USB 的分区表如下所示
Device Boot Start End Sectors Size Id Type /dev/sdb1 * 0 1638399 1638400 800M 0 Empty /dev/sdb2 13200 37775 24576 12M ef EFI (FAT-12/16/32) /dev/sdb3 1638400 12124159 10485760 5G b W95 FAT32 /dev/sdb4 12124160 31506431 19382272 9.2G 5 Extended /dev/sdb5 12126208 18827263 6701056 3.2G 83 Linux
完成分区创建后,您必须将分区表写入磁盘,方法是键入 w。
The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
如果您看到如下消息:WARNING: Re-reading the partition table failed with error 16: Device or resource busy,最可能的原因是磁盘上的某个分区仍然挂载。卸载分区(在本例中为 /dev/sdb),然后尝试运行以下命令将磁盘分区表与内核同步
现在分区已创建并将分区表写入磁盘,最后一步是在这些分区上写入文件系统。为此,使用 mkfs 命令以及文件系统名称(如果您未指定文件系统,mkfs 默认创建 ext2 文件系统)。在此示例中,将格式化两个分区(在本例中为 /dev/sdb3 和 /dev/sdb5),一个为 FAT32 分区,另一个为 ext4 分区。
GPT (GUID)
GPT(GUID)分区表存储在磁盘上的多个位置。它被称为 GUID 分区表,因为驱动器上的每个分区都有一个全局唯一标识符或 GUID。基于 GPT 的驱动器可以更大,其大小限制取决于操作系统及其文件系统。您可以拥有多达 128 个主分区,然后是扩展分区。在 GPT 分区中,备份分区表存储在磁盘末尾。GPT 用于具有 UEFI(统一可扩展固件接口)的计算机。在具有 BIOS 的计算机上,GPT 就像 MBR 一样(BIOS 将 GPT 视为具有单个 MBR 分区的驱动器)。
GPT 分区
MBR 下使用的分区工具称为 gdisk。
在此示例中,再次使用 15GiB USB。当前,USB 包含 MBR 分区表并具有单个分区。分区过程与 fdisk 类似。首先,建议您首先通过键入 gdisk -l 列出驱动器,以检查您的驱动器名称。
GPT fdisk (gdisk) version 0.8.8
Problem opening -l for reading! Error is 2.
The specified file does not exist!
要解决此问题,只需使用 fdisk 列出您的驱动器即可。
然后,使用 gdisk 选择驱动器。
GPT fdisk (gdisk) version 0.8.8 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 in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by typing 'q' if you don't want to convert your MBR partitions to GPT format! *************************************************************** Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to /dev/sdb. The operation has completed successfully.
现在,让我们再次选择 USB,以创建一些分区!在本例中,USB 将具有单个分区。要查看选项列表,请键入 ?,要创建新分区,请键入 n。安全地接受默认的第一个扇区。对于最后一个扇区,您可以指定以 KiB、MiB、GiB 等为单位的空间量(例如 +2G 表示 2GiB)。之后,键入 L 以列出文件系统类型及其代码。在本例中,选择的代码为 0700,即 exFAT 文件系统。之后键入 w 以写入分区表(如果您想先检查分区表,请键入 p)。
GPT fdisk (gdisk) version 0.8.8
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-31506398, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-31506398, default = 31506398) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 0700
Changed type of partition to 'Microsoft basic data'
Command (? for help): p
Disk /dev/sdb: 31506432 sectors, 15.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 1D24896C-7AA3-4713-80E0-7DAEA507DD0F
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 31506398
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 31506398 15.0 GiB 0700 Microsoft basic data
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
现在,分区完成并将分区表写入磁盘,最后一步是在分区上写入文件系统。为此,使用 mkfs 命令以及文件系统类型和分区名称(在本例中为 /dev/sdb1)。
mkexfatfs 1.2.4 Creating... done. Flushing... done. File system created successfully.
到目前为止,USB 上的 MBR 表已转换为 GPT。之后,USB 使用单个分区和 exFAT 文件系统进行分区。现在,让我们看看如何使用 gdisk 从 GPT 转换回 MBR。为此,首先使用 gdisk 选择驱动器。然后键入 x 以获取专家功能,然后键入 z 以销毁 GPT 数据结构。当提示是否清除 MBR 时,键入 Y 以擦除它并重新开始,或键入 N 以保留它。在后一种情况下,驱动器将最终具有单个 EFI 分区。之后,您可以启动 fdisk 并更改分区的类型。
GPT fdisk (gdisk) version 0.8.8 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help): x Expert command (? for help): z About to wipe out GPT on /dev/sdb. Proceed? (Y/N): Y GPT data structures destroyed! You may now partition the disk using fdisk or other utilities. Blank out MBR? (Y/N): N MBR is unchanged. You may need to delete an EFI GPT (0xEE) partition with fdisk or another tool.
现在您可以使用 fdisk 更改驱动器中的分区。
Welcome to fdisk (util-linux 2.28). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): p Disk /dev/sdb: 15 GiB, 16131293184 bytes, 31506432 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sdb1 1 31506431 31506431 15G ee GPT Command (m for help):
swap 分区类型
交换空间是硬盘交换分区或交换文件,您的计算机可以在其中“交换” (系统需要的内存超过物理可用内存) 暂时未使用的 RAM 中的数据,然后在需要时将数据“交换” (程序需要加载到 RAM 中的交换区域中的文件) 回到 RAM。通常,交换空间应等于系统上安装的 RAM 大小的两倍。有时会发生过多的交换或“抖动”,数据被交换出去然后很快又被交换回来等等。在这种情况下,系统难以找到可用内存并同时运行应用程序。在这种情况下,仅添加更多 RAM 才能帮助。虽然从不超出 RAM 更好(性能会受到交换的影响),但交换比让进程直接失败要好。
创建 swap 文件
要从文件创建交换区域,首先需要创建空文件,其大小等于您想要的交换空间大小。
在此示例中,将在 root 文件系统中创建一个名为 swapfile 的 1GB 文件,使用 dd 命令。
首先,您指定输入文件 if=/dev/zero(/dev/zero 是类 Unix 操作系统中的一个特殊文件,它会根据读取它的内容提供尽可能多的空字符(ASCII NUL,0x00)。它用于创建仅填充零的文件或内存页),然后使用 of=/path/to/where_you_want/to_store_swap 指定输出文件。bs=1M 表示您将一次读取和写入最多 1M(兆字节),而 count=1024 将重复写入 1024 次。
# dd if=/dev/zero of=/swapfile bs=1M count=1024
创建后,您需要使用 mkswap 命令将文件转换为交换文件
设置正确的权限
然后,要使计算机可以使用交换空间,请使用 swapon 命令
编辑 /etc/fstab 配置文件,添加交换文件的条目
如果您想禁用交换空间,可以使用 swapoff 命令
创建 btrfs 交换文件
在 btrfs 系统上创建 swapfile 与上述步骤差别不大,但如果操作不当,可能会给 snapper 带来一些意想不到的问题。以下步骤将帮助您正确创建 swapfile
首先创建一个 子卷
设置正确的权限,以便只有 root 用户可以访问它
在新建的 子卷 中创建一个空文件
为了避免问题,您必须禁用 CoW (Copy on Write),并且,虽然 openSUSE 默认情况下不启用压缩,但如果您启用了,也必须禁用它
使用您希望为 swap 设置的容量分配文件。通常是系统安装的 RAM 的一半或相同数量。在本例中,我们设置为 8GB,请根据您的需求调整值
进一步调整 root 用户对 swapfile 的访问权限
将文件转换为 swapfile
启用 swapfile
检查 swapfile 是否已启用
将您创建的 swapfile 添加到 fstab,以便在启动时启用它
创建 swap 分区
交换分区通常在系统安装期间创建。但是,如果您在安装期间没有创建用于交换的单独分区,则可以在之后创建它。根据您的系统,按照创建分区(第 2.1.1 和 2.2.1 点)的步骤操作,不要忘记将其设置为 Linux Swap 分区类型。创建后,您可以使用 mkswap 命令对其进行格式化,然后使用 swapon 和 swapoff 命令分别启用或禁用它。
删除 swap 分区
从系统使用中删除现有的交换分区需要在 3 个地方删除分区
1) 禁用交换空间
2) 从 /etc/fstab 中删除或注释掉条目。该文件包含操作系统在启动时挂载的卷和磁盘。
在本例中,fstab 文件包含两个交换文件,由它们的 UUID 标识。第一个以“3ae”开头的标识符被挂载,而第二个 UUID 以 9058 开头的文件已经被注释掉,这意味着操作系统忽略该记录。第三个是挂载为“root”并格式化为 butterFS 文件系统的分区。
UUID=3ae5826b-b3ef-4d7c-8ab2-8af2133c210c swap swap defaults 0 0 #UUID=9058a8e5-6703-40e4-8e57-ef880051540d swap swap defaults 0 0 UUID=f81c655a-894e-471f-b0a7-6f0cefb02510 / btrfs defaults 0 0
如果您以前没有使用过 VIM,请按 i 进入“编辑”模式,然后按 ESC 键返回命令模式。要保存文件,请进入命令模式 (ESC) 并键入“:wq”,表示“command” “write” 和 “quit”
3) 重建初始 ramdisk。THis w
4) 可能是 GRUB 仍然指向交换分区以恢复系统。将此未更改会使 systemd 在查找分区或文件上花费大量时间,从而大大延长启动时间。通过打开 GRUB CMD_Line 文件删除 resume 部分,在 vim 中打开文件
然后查找 GRUB_CMDLINE_LINUX_DEFAULT 行,如果您看到 resume 参数,请删除它,以便
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sdX splash=silent quiet showopts"
更改为这样
GRUB_CMDLINE_LINUX_DEFAULT="splash=silent quiet showopts"
使用“:wq”保存
5) 现在您需要将管理到 GRUB 命令行的更改应用于 GRUB,方法是输入以下行
6) 您可以重新启动系统。