常见命令和使用流程
- fdisk/gdisk 磁盘分区
- mkfs 分区格式化
- mount 分区挂载到文件系统上
- df 查看文件系统和分区的情况
- lsblk 用于列出块设备信息
fdisk
fdisk 是一个在 Linux 系统中用于磁盘分区的工具,主要用于对磁盘进行分区、调整分区大小、查看分区信息等操作。以下是关于 fdisk 命令的详细解析:
1. 基本语法
bash复制
fdisk [选项] [设备]
- 选项:用于指定操作模式或特定功能。
- 设备:通常是磁盘设备文件,如
/dev/sda、/dev/sdb等。
2. 常用选项
-
-l:列出所有磁盘的分区信息。bash复制
fdisk -l该命令会显示所有磁盘的分区情况,包括分区大小、分区类型、挂载点等信息。
-
-u:指定分区大小的单位(默认为扇区)。bash复制
fdisk -u <设备>常用的单位有
sectors(扇区)、cylinders(柱面)等。 -
-w:指定分区表的文件名。bash复制
fdisk -w <文件名>可以将分区表保存到指定文件中,便于后续操作。
3. 交互模式
fdisk 的主要功能是通过交互模式完成的。运行 fdisk 命令后,会进入交互式界面,用户可以通过输入特定的指令来操作分区。
进入交互模式
bash复制
fdisk /dev/sdX
将 /dev/sdX 替换为实际的磁盘设备名称。
交互模式中的常用指令
-
m:显示帮助菜单。- 在交互模式下输入
m,会显示所有可用的命令及其说明。
- 在交互模式下输入
-
p:打印当前分区表。- 显示当前磁盘的分区信息,包括分区编号、起始扇区、结束扇区、分区类型等。
-
n:创建新分区。- 输入
n后,会提示用户选择分区类型(主分区或逻辑分区),并指定分区的起始扇区和结束扇区。 - 主分区:最多可以创建 4 个主分区。
- 扩展分区:用于创建逻辑分区,一个磁盘只能有一个扩展分区。
- 逻辑分区:在扩展分区中创建的分区。
- 输入
-
d:删除分区。- 输入
d后,会提示用户输入要删除的分区编号。
- 输入
-
t:更改分区类型。- 输入
t后,输入分区编号,然后选择新的分区类型(如83表示 Linux 分区,82表示 Linux 交换分区等)。
- 输入
-
w:写入分区表并退出。- 将修改后的分区表写入磁盘,并退出
fdisk。
- 将修改后的分区表写入磁盘,并退出
-
q:退出而不保存更改。- 如果不想保存对分区表的修改,可以输入
q退出。
- 如果不想保存对分区表的修改,可以输入
gdisk
gdisk 是一个用于管理 GPT(GUID 分区表)分区的命令行工具,它比传统的 fdisk 更适合大容量磁盘和现代分区需求。以下是 gdisk 命令的使用方法和功能详解:
查看分区信息
bash复制
sudo gdisk -l /dev/sdX
- 如果磁盘是 GPT 格式,会显示分区的详细信息,包括分区号、起始扇区、结束扇区、分区类型等。
- 如果磁盘是 MBR 格式,
gdisk会提示是否将其转换为 GPT 格式。
进入交互模式
bash复制
sudo gdisk /dev/sdX
进入交互模式后,可以通过以下命令进行操作:
p:打印分区表,显示当前磁盘的分区信息。n:创建新分区,需要指定分区号、起始扇区、结束扇区或分区大小(如 +10G 表示 10GB)。d:删除分区,输入分区编号即可删除。t:更改分区类型,输入分区编号和新的分区类型代码(如8300表示 Linux 文件系统,8200表示 Linux 交换分区)。w:写入更改并退出。q:退出而不保存更改。x:进入高级模式,提供更多高级功能。i:显示分区的详细信息。
将 MBR 转换为 GPT
如果磁盘是 MBR 格式,gdisk 会提示是否将其转换为 GPT 格式。输入 w 并回车即可完成转换。
示例用法
创建新分区
-
进入交互模式:
bash复制
sudo gdisk /dev/sdX -
输入
n创建新分区。 -
按提示选择分区号、起始扇区、结束扇区或分区大小(如 +10G)。
-
选择分区类型(默认为
8300,表示 Linux 文件系统)。 -
输入
w保存并退出。
删除分区
-
进入交互模式:
bash复制
sudo gdisk /dev/sdX -
输入
d删除分区。 -
输入要删除的分区编号。
-
输入
w保存并退出。
更改分区类型
-
进入交互模式:
bash复制
sudo gdisk /dev/sdX -
输入
t更改分区类型。 -
输入分区编号和新的分区类型代码(如
8300表示 Linux 文件系统,EF00表示 EFI 系统分区)。 -
输入
w保存并退出。
mkfs命令
mkfs(make file system)是 Linux 系统中用于在存储设备(如硬盘分区、USB 驱动器等)上创建文件系统的命令。它是一个前端工具,会根据指定的文件系统类型调用相应的工具来格式化设备。
基本语法
bash复制
mkfs [选项] [-t 文件系统类型] [设备文件] [块数]
常用选项
-t <文件系统类型>:指定要创建的文件系统类型,如ext4、xfs、btrfs、vfat等。-c:在创建文件系统之前检查设备上的坏块。-f:强制创建文件系统,即使目标设备上已存在文件系统。-L <标签>:为文件系统设置标签。-m <百分比>:设置为 root 用户保留的空间百分比(默认为 5%)。-v:显示详细信息。-V:显示版本信息。
支持的文件系统类型
ext2:较旧的文件系统,支持最大 4TB 分区。ext3:在ext2的基础上增加了日志功能。ext4:最新的扩展文件系统,支持更大的文件和卷大小。xfs:高性能的日志式文件系统,适合大容量存储。btrfs:现代的复制文件系统,支持快照和数据校验。vfat:用于兼容 Windows FAT32 文件系统。ntfs:用于兼容 Windows NTFS 文件系统。
使用示例
格式化为 ext4 文件系统
bash复制
sudo mkfs -t ext4 /dev/sdb1
或者直接使用:
bash复制
sudo mkfs.ext4 /dev/sdb1
检查坏块并格式化
bash复制
sudo mkfs -t ext4 -c /dev/sdb1
为文件系统设置标签
bash复制
sudo mkfs -t ext4 -L MyData /dev/sdb1
格式化为 FAT32 文件系统
bash复制
sudo mkfs.vfat -F 32 /dev/sdb1
格式化为 NTFS 文件系统
bash复制
sudo mkfs.ntfs /dev/sdb1
mount
mount 是 Linux 系统中用于挂载文件系统的命令。它将存储设备(如硬盘分区、USB 驱动器、光盘等)或网络文件系统(如 NFS)挂载到指定的目录(挂载点),使其可以被访问。以下是关于 mount 命令的详细解析。
mount 命令的详细解析。
1. 基本语法
bash复制
mount [选项] [设备] [挂载点]
- 设备:要挂载的存储设备或文件系统,例如
/dev/sda1、/dev/cdrom或网络路径。 - 挂载点:一个已经存在的目录,设备将被挂载到此目录下。
2. 常用选项
-
-a:挂载/etc/fstab文件中定义的所有文件系统。bash复制
sudo mount -a此选项常用于系统启动时自动挂载所有配置的文件系统。
-
-t <文件系统类型>:指定文件系统类型(如ext4、ntfs、vfat等)。bash复制
sudo mount -t ntfs /dev/sdb1 /mnt -
-o <挂载选项>:指定挂载选项,如ro(只读)、rw(读写)、noexec(不允许执行文件)等。bash复制
sudo mount -o ro /dev/sda1 /mnt -
-L <标签>:通过文件系统的标签挂载。bash复制
sudo mount -L MyData /mnt -
-U <UUID>:通过文件系统的 UUID 挂载。bash复制
sudo mount -U 1234-5678 /mnt
3. 常见用法
挂载本地分区
bash复制
sudo mount /dev/sda1 /mnt
将 /dev/sda1 分区挂载到 /mnt 目录。
挂载 USB 驱动器
bash复制
sudo mount /dev/sdb1 /media/usb
将 USB 驱动器的分区 /dev/sdb1 挂载到 /media/usb。
挂载 NTFS 分区
bash复制
sudo mount -t ntfs-3g /dev/sda2 /mnt
挂载 NTFS 文件系统分区到 /mnt,需要安装 ntfs-3g 工具。
挂载 ISO 文件
bash复制
sudo mount -o loop /path/to/image.iso /mnt
将 ISO 文件挂载为虚拟光驱。
挂载 NFS 共享
bash复制
sudo mount -t nfs server:/path/to/share /mnt
将 NFS 共享目录挂载到本地 /mnt。
4. 查看挂载信息
bash复制
mount
列出当前所有已挂载的文件系统。
或者使用更简洁的格式:
bash复制
df -h
显示已挂载文件系统的使用情况。
5. 自动挂载
为了在系统启动时自动挂载文件系统,可以将挂载信息添加到 /etc/fstab 文件中。格式如下:
<设备> <挂载点> <文件系统类型> <挂载选项> <dump> <pass>
例如:
UUID=1234-5678 /mnt ext4 defaults 0 2
UUID:设备的唯一标识符。挂载点:挂载目录。文件系统类型:如ext4、ntfs等。挂载选项:如defaults(默认选项,包括rw、suid、dev等)。dump:用于dump命令的备份选项,通常设置为0。pass:fsck检查顺序,0表示不检查,1表示根分区,2表示其他分区。
6. 卸载文件系统
使用 umount 命令卸载文件系统:
bash复制
sudo umount /mnt
或者通过设备名称卸载:
bash复制
sudo umount /dev/sda1
df
df 是 Linux 中用于显示文件系统磁盘空间使用情况的命令。它的全称是 disk filesystem,能够显示挂载的文件系统的总空间、已用空间、可用空间和使用百分比等信息。
df [选项] [文件或目录]
- 如果不指定文件或目录,
df会显示所有已挂载文件系统的信息。 - 如果指定文件或目录,
df会显示该文件或目录所在文件系统的磁盘使用情况。
常用命令
# 显示所有文件系统的磁盘使用情况
df
# 以易读的格式显示磁盘使用情况
df -h
通过 df 命令,你可以快速了解文件系统的磁盘使用情况,帮助排查磁盘空间不足等问题。结合 -h、-T 等选项,可以更直观地查看信息。
需要注意的是df只能看到已经挂载的文件情况,对于没有挂载的磁盘空间,是看不到的。
lsblk
lsblk(list block devices)是一个用于列出块设备信息的命令,它能够显示系统中所有块设备的详细信息,包括设备名称、挂载点、文件系统类型、大小等。lsblk 是一个非常实用的工具,可以帮助用户快速了解系统中存储设备的使用情况。
基本语法
bash复制
lsblk [选项]
常用选项
-a:显示所有设备,包括未挂载的设备。-d:仅显示设备信息,不显示分区信息。-e <设备号>:排除指定设备号的设备。-f:显示文件系统类型和挂载点。-i:仅显示指定类型的设备。-l:以列表形式显示设备信息。-m:显示设备的权限信息。-n:不显示标题。-o:指定要显示的列,例如NAME,SIZE,MOUNTPOINT,FSTYPE。-p:在设备名称前加上/dev/前缀。-r:以原始格式显示设备信息。-s:以树状结构显示设备信息。-t:显示设备的拓扑信息。
使用示例
列出所有块设备信息
bash复制
lsblk
输出示例:
复制
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 732M 0 part /boot
└─sda3 8:3 0 464.6G 0 part /
sdb 8:16 1 7.5G 0 disk
└─sdb1 8:17 1 7.5G 0 part /mnt/usb
显示文件系统类型和挂载点
bash复制
lsblk -f
输出示例:
复制
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 vfat EFI 1234-ABCD /boot/efi
├─sda2 ext4 BOOT 12345678-1234-1234-1234-123456789012 /boot
└─sda3 ext4 ROOT 23456789-2345-2345-2345-234567890123 /
sdb
└─sdb1 vfat USB 3456-7890 /mnt/usb
以列表形式显示设备信息
bash复制
lsblk -l
输出示例:
复制
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
sda1 8:1 0 512M 0 part /boot/efi
sda2 8:2 0 732M 0 part /boot
sda3 8:3 0 464.6G 0 part /
sdb 8:16 1 7.5G 0 disk
sdb1 8:17 1 7.5G 0 part /mnt/usb
显示指定列的信息
bash复制
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT
输出示例:
复制
NAME SIZE FSTYPE MOUNTPOINT
sda 465.8G
├─sda1 512M vfat /boot/efi
├─sda2 732M ext4 /boot
└─sda3 464.6G ext4 /
sdb 7.5G
└─sdb1 7.5G vfat /mnt/usb