跳转到内容
新建笔记

Linux 存储命令

cd、df、dirs、du、edquota、eject、lndir、ls、mcd、mdeltree、mdu、mkdir、mlabel、mmd、mmount、mrd、mzip、pwd、quota、quotacheck、quotaoff、quotaon、repquota、rmdir、rmt、stat、tree、umount

以下是mount和umount命令的基本信息,以及中文支持的示例,整理成表格形式:

mount命令:

命令描述
mount挂载文件系统到指定挂载点
基本语法mount [选项] 设备 文件夹
选项-t: 指定文件系统类型
-o: 指定挂载选项
-n: 禁止更新/etc/mtab
-r: 以只读方式挂载
示例sudo mount /dev/sda1 /mnt
sudo mount -t ntfs -o ro /dev/sdb1 /mnt/ntfs
mount

umount命令:

命令描述
umount卸载已挂载的文件系统
基本语法umount [选项] 挂载点
选项-l: 允许立即释放挂载点上的资源
-f: 强制卸载,即使文件系统正在被使用
示例sudo umount /mnt
sudo umount -f /mnt

命令描述示例
mount挂载文件系统到指定的挂载点mount /dev/sdb1 /mnt
mount -a挂载 /etc/fstab 文件中列出的所有文件系统mount -a
mount -t type指定文件系统的类型mount -t ext4 /dev/sdb1 /mnt
mount -o options指定挂载选项,如读写权限、用户权限等mount -o rw,user /dev/sdb1 /mnt
mount --bind将一个目录挂载到另一个目录,创建目录的镜像mount --bind /source /destination
mount -r以只读模式挂载文件系统mount -r /dev/sdb1 /mnt
mount -u更新挂载点的状态信息mount -u /mnt
mount -l列出当前挂载的文件系统mount -l
umount卸载已挂载的文件系统umount /mnt
umount -a卸载所有已挂载的文件系统umount -a
umount -l强制卸载,即使文件系统忙碌umount -l /mnt

示例说明:

  1. 挂载设备 /dev/sdb1 到目录 /mnt:mount /dev/sdb1 /mnt
  2. 挂载 /etc/fstab 文件中列出的所有文件系统:mount -a
  3. 指定文件系统类型为 ext4 并挂载设备 /dev/sdb1 到目录 /mnt:mount -t ext4 /dev/sdb1 /mnt
  4. 指定挂载选项为读写和用户权限,并挂载设备 /dev/sdb1 到目录 /mnt:mount -o rw,user /dev/sdb1 /mnt
  5. 将目录 /source 挂载到目录 /destination,创建目录的镜像:mount --bind /source /destination
  6. 以只读模式挂载设备 /dev/sdb1 到目录 /mnt:mount -r /dev/sdb1 /mnt
  7. 更新挂载点 /mnt 的状态信息:mount -u /mnt
  8. 列出当前挂载的文件系统:mount -l
  9. 卸载已挂载的文件系统 /mnt:umount /mnt
  10. 卸载所有已挂载的文件系统:umount -a
  11. 强制卸载目录 /mnt,即使文件系统忙碌:umount -l /mnt

使用 --bind 选项和不使用的主要区别在于创建的挂载点之间是否存在镜像关系。

  1. 使用 --bind 选项:

    终端窗口
    mount --bind /source /destination
    • /destination 是 /source 的镜像。任何对 /source 中的更改都会反映在 /destination 中,反之亦然。
    • 这种方式创建了两个挂载点,但它们之间是数据的镜像关系。
  2. 不使用 --bind 选项:

    终端窗口
    mount /dev/sdb1 /mnt
    • 在这种情况下,/mnt 是 /dev/sdb1 的挂载点,但它不是 /dev/sdb1 的镜像。任何对 /mnt 中的更改都直接影响 /dev/sdb1,反之亦然。
    • 这种方式创建了一个挂载点,但没有像 --bind 那样创建数据的镜像。

总的来说,--bind 选项允许你在文件系统中创建一个目录或文件的镜像,这意味着两个挂载点之间的数据是同步的。在没有 --bind 的情况下,挂载点直接映射到原始的设备或目录,更像是简单的访问。选择使用哪种方式取决于你的需求,是否需要创建数据的镜像。

badblocks、cfdisk、dd、e2fsck、ext2ed、fdisk、fsck.ext2、fsck、fsck.minix、fsconf、hdparm、losetup、mbadblocks、mformat、mkbootdisk、mkdosfs、mke2fs、mkfs.ext2、mkfs、mkfs.minix、mkfs.msdos、mkinitrd、mkisofs、mkswap、mpartition、sfdisk、swapoff、swapon、symlinks、sync

当使用 dd 命令时,我们可以使用不同的参数和选项来实现不同的功能。以下是 dd 命令的详细教程:

参数/选项描述用法示例
if输入文件名,指定源文件if=input_file
of输出文件名,指定目的文件of=output_file
ibs输入块大小(字节数),指定一个块的大小ibs=bytes
obs输出块大小(字节数),指定一个块的大小obs=bytes
bs同时设置读入和输出的块大小,字节数bs=bytes
cbs转换缓冲区大小,字节数cbs=bytes
skip从输入文件开头跳过的块数skip=blocks
seek从输出文件开头跳过的块数seek=blocks
count仅拷贝的块数,块大小等于 ibs 指定的字节数count=num_blocks
conv用指定的参数转换文件conv=conversion
status=progress显示复制进度status=progress

换参数 (conv):

  • ascii:转换 ebcdic 为 ascii
  • ebcdic:转换 ascii 为 ebcdic
  • ibm:转换 ascii 为 alternate ebcdic
  • block:把每一行转换为长度为 cbs,不足部分用空格填充
  • unblock:使每一行的长度都为 cbs,不足部分用空格填充
  • lcase:把大写字符转换为小写字符
  • ucase:把小写字符转换为大写字符
  • swab:交换输入的每对字节
  • noerror:出错时不停止
  • notrunc:不截短输出文件
  • sync:将每个输入块填充到 ibs 个字节,不足部分用空(NUL)字符补齐

示例:

  1. 将一个设备的内容拷贝到另一个设备:

    终端窗口
    dd if=/dev/sdX of=/dev/sdY bs=4M status=progress
  2. 创建一个包含分区表的.img 文件:

    终端窗口
    dd if=/dev/zero of=full_image.img bs=1M count=512
    fdisk full_image.img # 使用 fdisk 在文件中创建分区表
  3. 从设备备份引导扇区:

    终端窗口
    dd if=/dev/sdX of=boot_sector_backup.img bs=512 count=1
  4. 使用 conv 参数进行转换:

    终端窗口
    dd if=input_file of=output_file conv=ucase

这些示例和参数组合提供了一些基本用法,根据具体需求可以灵活选择适当的参数。在使用 dd 时,请务必谨慎,确保指定正确的输入和输出文件,以避免意外数据损失。

fdisk 操作解释
a开关可启动标志
b编辑嵌套的 BSD 磁盘标签
c开关 DOS 兼容性标志
d删除分区
F列出未分区的空闲区
l列出已知分区类型
n添加新分区
p打印分区表
t更改分区类型
v检查分区表
i打印某个分区的相关信息
m打印此菜单
u更改显示/记录单位
x更多功能(仅限专业人员)
I从 sfdisk 脚本文件加载磁盘布局
O将磁盘布局转储为 sfdisk 脚本文件
w将分区表写入磁盘并退出
q退出而不保存更改
g新建一份 GPT 分区表
G新建一份空 GPT(IRIX)分区表
o新建一份的空 DOS 分区表
s新建一份空 Sun 分区表
f检查文件系统sudo fsck -f /

fdisk 分区操作教程:

(1)显示设备的分区表信息

要显示设备的分区表信息,可以使用以下命令:

终端窗口
fdisk -l /dev/sdb

(2)创建新分区

终端窗口
fdisk /dev/sdb

进入 fdisk 交互界面后,依次输入以下命令:

  • n (创建新分区,可以默认直接回车)
  • p (创建主分区,可以默认直接回车)
  • 1 (输入分区号,设置为 1,可以默认直接回车)
  • [起始扇区] (设置起始扇区,可以默认直接回车)
  • [结束扇区] (设置结束扇区,可以默认直接回车)
  • w (将分区表写入磁盘并退出)

(3) 删除分区

终端窗口
fdisk /dev/sdb

进入 fdisk 交互界面后,依次输入以下命令:

  • d (删除分区)
  • [分区号] (要删除的分区号)
  • w (将分区表写入磁盘并退出)

(4)创建分区、格式化系统、挂载分区

终端窗口
fdisk /dev/sdb
#设置分区类型
>> p #查看分区
>> t #t设置分区类型 > 选择分区 > l 查看分区类型 > 选择分区格式 > w 写入修改

执行后按n,然后一直回车到没有选项。接着,可以按照以下步骤进行格式化和挂载:

  • 格式化系统:

    终端窗口
    mkfs.xfs /dev/sdb1 # 设置文件系统为xfs,也可以设置为ext4
  • 创建挂载目录:

    终端窗口
    mkdir /ssd
  • 手动临时挂载:

    终端窗口
    mount /dev/sdb1 /ssd

    或永久挂载:

    终端窗口
    echo "/dev/sdb1 /ssd xfs defaults 0 0" >> /etc/fstab
    mount -a

注意事项:

  • 使用 fdisk 命令时,请小心操作,确保正确选择设备文件名。
  • 在对磁盘进行分区操作前,务必备份重要数据,以防止数据丢失。
  • 如果在命令行中出现bash: fdisk: command not found的错误提示,说明 fdisk 命令未安装,可以按照前述方式进行安装。

mkfs 命令用于创建文件系统。下面是一些常见的 mkfs 命令及其用法,这些命令用于在不同类型的分区上创建不同类型的文件系统。请注意,具体的命令可能会根据文件系统类型和系统配置而有所不同。

注意:使用 mkfs 命令会格式化文件系统并清除其中的所有数据,请谨慎操作。

命令描述示例
mkfs.ext4创建 ext4 文件系统sudo mkfs.ext4 /dev/sdX1
mkfs.ext3创建 ext3 文件系统sudo mkfs.ext3 /dev/sdX1
mkfs.ext2创建 ext2 文件系统sudo mkfs.ext2 /dev/sdX1
mkfs.xfs创建 XFS 文件系统sudo mkfs.xfs /dev/sdX1
mkfs.btrfs创建 Btrfs 文件系统sudo mkfs.btrfs /dev/sdX1
mkfs.vfat创建 FAT32 文件系统sudo mkfs.vfat /dev/sdX1
mkfs.ntfs创建 NTFS 文件系统sudo mkfs.ntfs /dev/sdX1

格式说明:

  • EXT4:只用于 Linux 系统的内部磁盘
  • NTFS:与 Windows 共用的磁盘
  • FAT:所有系统和设备共用的磁盘

Swap 是一种虚拟内存技术,用于将不常用的内存页面移到硬盘上,以释放物理内存供其他正在运行的程序使用。当系统的物理内存(RAM)不足以容纳所有运行的进程时,操作系统会使用 Swap 来提供额外的内存空间。

具体来说,Swap 的作用有以下几个方面:

  1. 提供额外内存空间: 当物理内存用尽时,操作系统将不活跃的内存页移到 Swap 区,以腾出物理内存供当前运行的进程使用。

  2. 支持内存回收: 操作系统通过将不常用的内存页移到 Swap 区来实现内存回收。这允许系统维持更多活跃进程而无需增加物理内存。

  3. 应对内存泄漏: 如果某个进程发生内存泄漏,占用大量内存而不释放,Swap 可以缓解物理内存的压力,避免系统因内存耗尽而崩溃。

Swap 可以是一个独立的分区,也可以是一个文件。在 Linux 系统中,Swap 分区通常在安装过程中创建,但用户也可以手动配置或更改 Swap 分区。

需要注意的是,虽然 Swap 提供了额外的内存空间,但由于硬盘速度相比内存较慢,使用 Swap 会导致性能下降。因此,过度使用 Swap 可能会影响系统响应速度。在设计系统时,应该合理规划物理内存大小,以尽量减少对 Swap 的需求。

命令描述示例
swapon -s显示当前启用的 Swap 分区信息swapon -s
free -h显示系统内存和 Swap 使用情况free -h
mkswap将分区或文件设置为 Swap 分区sudo mkswap /dev/sdX1
swapon启用指定的 Swap 分区sudo swapon /dev/sdX1
swapoff禁用指定的 Swap 分区sudo swapoff /dev/sdX1
sysctl临时调整系统参数,包括 Swappinesssudo sysctl vm.swappiness=30
swappiness永久调整 Swappiness 值在 /etc/sysctl.conf 或 /etc/sysctl.d/ 中添加 vm.swappiness=30
/etc/fstab永久配置系统挂载点,包括 Swap 分区添加 /dev/sdX1 swap swap defaults 0 0 到 /etc/fstab