1.创建分区
可用于组织和管理分区的工具不止一种。本节重点关注其中 3 种。
(1)fdisk
(2)gdisk
(3)GNU parted
创建磁盘分区时最麻烦的地方就是找出 Linux 系统中的物理硬盘。Linux 采用了一种标准格式来为硬盘分配设备名称,在进行分区之前,必须熟悉这种格式。
(1)SATA 驱动器和 SCSI 驱动器:设备命名格式为/dev/sdx,其中字母 x 具体是什么要根据驱动器的检测顺序决定(第一个检测到的驱动器是 a,第二个是 b,以此类推)。
(2)SSD NVMe 驱动器:设备命名格式为/dev/nvmeNn#,其中数字 N 具体是什么要根据驱动器的检测顺序决定(从 0 起始)。#是分配给该驱动器的名称空间编号(从 1 起始)。
(3)IDE 驱动器:设备命名格式为/dev/hdx,其中字母 x 具体是什么要根据驱动器的检测顺序决定(第一个检测到的驱动器是 a,第二个是 b,以此类推)。
2.fdisk 是一个交互式程序,允许你输入命令来逐步完成硬盘分区操作。要启动 fdisk,需要指定待分区的存储设备的名称,
同时还必须有超级用户权限(以 root 用户登录或使用 sudo 命令)。
# whoami
root
# fdisk /dev/sda
3.常用的 fdisk 命令
a 设置活动分区标志
b 编辑 BSD Unix 系统使用的标签
c 设置 DOS 兼容标志
d 删除分区
g 创建新的空 GTP 分区表
G 创建 IRIX(SGI)分区表
l 显示可用的分区类型
m 显示命令菜单
n 添加一个新分区
o 创建新的空 DOS 分区表
p 显示当前分区表
q 退出,不保存更改
s 为 Sun Unix 系统创建一个新标签
t 修改分区的系统 ID
u 修改显示单元
v 验证分区表
w 将分区表写入磁盘并退出
x 附加功能(仅供专家使用)
p 命令会显示指定存储设备当前的分区表:
下面的例子在/dev/sdb 硬盘上创建了一个新分区,在 8.2.2 节中会用到:
$ sudo fdisk /dev/sdb
4.gdisk
如果存储设备要采用 GUID 分区表(GUID partition table,GPT),就要用到 gdisk:
$ sudo gdisk /dev/sda
常用的 gdisk 命令
b 将 GTP 数据备份至文件
c 修改分区名称
d 删除分区
i 显示分区的详细信息
l 显示可用的分区类型
n 添加一个新分区
o 创建一个新的空 GUID 分区表(GPT)
p 显示当前分区表
q 退出,不保存更改
r 恢复和转换选项(仅供专家使用)
s 排序分区
t 修改分区的类型代码
v 验证磁盘
w 将分区表写入磁盘并退出
x 附加功能(仅供专家使用)
? 显示命令菜单
5.GNU parted
GNU parted 提供了另一种命令行界面来处理分区。不同于 fdisk 和 gdisk,GNU parted
中的命令更像是单词:
$ sudo parted
创建文件系统的命令行工具
mkefs 创建 ext 文件系统
mke2fs 创建 ext2 文件系统
mkfs.ext3 创建 ext3 文件系统
mkfs.ext4 创建 ext4 文件系统
mkreiserfs 创建 ReiserFS 文件系统
jfs_mkfs 创建 JFS 文件系统
mkfs.xfs 创建 XFS 文件系统
mkfs.zfs 创建 ZFS 文件系统
mkfs.btrfs 创建 Btrfs 文件系统
并非所有的文件系统工具都已经默认安装过。要想知道某个工具是否可用,可以使用 type命令:
$ type mkfs.ext4
mkfs.ext4 is /usr/sbin/mkfs.ext4
$
$ type mkfs.btrfs
bash: type: mkfs.btrfs: not found
$
所有的文件系统命令都允许通过不带选项的简单形式来创建默认的文件系统,但要求你拥有超级用户权限:
$ sudo mkfs.ext4 /dev/sdb1
为分区创建好文件系统之后,下一步是将其挂载到虚拟目录中的某个挂载点,以便在新分区中存储数据。
挂载点可以是虚拟目录中的任何位置。
$ mkdir /home/christine/part
$
$ sudo mount -t ext4 /dev/sdb1 /home/christine/part
[sudo] password for christine:
$
$ lsblk -f /dev/sdb
6.文件系统的检查与修复
fsck 命令可以检查和修复大部分 Linux 文件系统类型,包括本章早些时候讨论的那些文件系统。
该命令的格式如下:
fsck options filesystem
fsck 常用的命令行选项
-a 检测到错误时自动修复文件系统
-A 检查/etc/fstab 文件中列出的所有文件系统
-N 不进行检查,只显示要检查的内容
-r 出现错误时进行提示
-R 使用-A 选项时跳过根文件系统
-t 指定要检查的文件系统类型
-V 在检查时产生详细输出
-y 检测到错误时自动修复文件系统
7.LVM 布局
(1)物理卷(physical volume,PV)通过 LVM 的 pvcreate 命令创建。该命令指定了一个未使用的磁盘分区(或整个驱动器)由 LVM 使用。在这个过程中,LVM 结构、卷标和元数据都会被添加到该分区。
(2)卷组(volume group,VG)通过 LVM 的 vgcreate 命令创建。该命令会将 PV 加入存储池,后者随后用于构建各种逻辑卷,可以存在多个卷组。当你使用 vgcreate 将一个或多个 PV 加入 VG 时,也会同时添加卷组的元数据。被指定为 PV 的分区只能属于单个 VG。但是,被指定为 PV 的其他分区可以属于其他 VG。
(3)逻辑卷(logical volume,LV)通过 LVM 的 lvcreate 命令创建。这是逻辑卷创建过程的最终产物。LV 由 VG 的存储空间块组成。
首次设置逻辑卷的步骤如下。
(1) 创建物理卷。
(2) 创建卷组。
(3) 创建逻辑卷。
(4) 格式化逻辑卷。
(5) 挂载逻辑卷。
例
创建 PV
sudo pvcreate /dev/sdc1 /dev/sdd1 /dev/sde1
创建 VG
sudo vgcreate vg00 /dev/sdc1 /dev/sdd1
创建LV
sudo lvcreate -L 1g -v vg00
sudo lvdisplay /dev/vg00/lvol0
使用 Linux LVM
格式化和挂载 LV
对于 LV,无须执行任何特殊操作就可以在其上创建文件系统,然后再挂载到虚拟目录结构中:
$ sudo mkfs.ext4 /dev/vg00/lvol0
$ mkdir my_LV
$ sudo mount -t ext4 /dev/vg00/lvol0 my_LV
$ ls my_LV
8.扩大或收缩 LVM 的命令
Vgextend 将 PV 加入 VG
Vgreduce 从 VG 中删除 PV
lvextend 扩大 LV 的容量
lvreduce 收缩 LV 的容量