Linux-磁盘管理
磁盘管理
- 磁盘管理
- 磁盘分区基础知识
- 1.常见分区类型及作用
- 2.分区划分建议
- 3.分区工具
- 4.注意事项
- 磁盘分区信息查看、挂载、卸载
- **1. 查看磁盘分区信息**
- **`lsblk`**
- **`fdisk -l`**
- **`df -h`**
- **`parted`**
- 列表对比 lsbk、fdisk、df、parted
- **1. `lsblk` 示例输出**
- **2. `fdisk -l` 示例输出**
- **3. `df -h` 示例输出**
- **4. `parted -l` 示例输出**
- **总结**
- **2. 挂载磁盘**
- **`mount`**
- **3. 卸载磁盘**
- **`umount`**
- **4. 自动挂载磁盘配置**
- 磁盘文件及目录占用管理
- **1. 基本用法**
- **2. 常用参数**
- **3. 示例用法**
- **3.1 查看当前目录的磁盘使用情况**
- **3.2 查看指定目录的总大小**
- **3.3 查看所有文件和目录的大小**
- **3.4 查看大于指定大小的文件或目录**
- **3.5 排除特定文件或目录**
- **4. 高级用法**
- **4.1 找出占用空间最大的文件或目录**
- **4.2 找出占用空间最大的前 10 个文件或目录**
- **4.3 查找特定文件系统中的大文件**
- **5. 注意事项**
- **6. 总结**
- 磁盘检查与修复
- **1. `fsck` 的功能**
- **2. 使用场景**
- **3. 常见参数**
- **4. 使用方法**
- **手动检查文件系统**
- **在系统启动时自动检查**
- **5. 注意事项**
- **6. 示例**
- **检查并修复分区**
- **查看分区是否有错误**
- **强制检查文件系统**
- **7. 总结**
- 磁盘与分区备份
- **1. 确定需要备份的内容**
- **2. 选择备份方法**
- **2.0 `rsync` 命令**
- **1. `rsync` 语法格式**
- **2. 常用参数及其作用**
- **3. 示例用法**
- **3.1 本地同步**
- **3.2 远程同步**
- **3.3 排除特定文件或目录**
- **3.4 删除目标目录中多余的文件**
- **3.5 模拟同步操作**
- **3.6 压缩传输**
- **3.7 保留文件权限和所有者**
- **3.8 跨文件系统同步**
- **2.1 使用 `rsync ` 进行备份**
- **2.2 使用 `tar` 进行备份**
- **2.3 使用 `dd` 进行全盘备份**
- **3. 验证备份**
- **4. 选择备份存储位置**
- **5. 自动化备份**
- **6. 注意事项**
- **7. 总结**
- 磁盘分区创建
- 1. **使用 `fdisk` 进行分区**
- **步骤 1:检查硬盘设备**
- **步骤 2:启动 `fdisk`**
- **步骤 3:创建分区**
- **步骤 4:格式化分区**
- **步骤 5:挂载分区**
- 2. **使用 `parted` 进行分区**
- **步骤 1:检查硬盘设备**
- **步骤 2:启动 `parted`**
- **步骤 3:创建分区表(可选)**
- **步骤 4:创建分区**
- **步骤 5:保存并退出**
- **步骤 6:格式化分区**
- **步骤 7:挂载分区**
- 3. **使用 `gparted` 进行分区**
- **步骤 1:安装 `gparted`**
- **步骤 2:启动 `gparted`**
- **步骤 3:选择硬盘**
- **步骤 4:创建分区表(可选)**
- **步骤 5:创建分区**
- **步骤 6:应用操作**
- **步骤 7:挂载分区**
- 4.注意事项
- 磁盘配额管理
- **1. 启用磁盘配额**
- **1.1 安装 `quota` 软件包**
- **1.2 编辑 `/etc/fstab` 文件**
- **1.3 重新挂载文件系统**
- **1.4 运行 `quotacheck` 命令**
- **1.5 启用配额服务**
- **2. 设置用户和用户组的磁盘配额(软硬限制)**
- **2.1 设置用户配额**
- **2.2 设置用户组配额**
- **2.3 复制配额设置**
- **2.4 设置软限制和硬限制之间的宽限期**
- **3. 查看用户(组)磁盘使用情况**
- **3.1 查看用户配额和使用情况**
- **3.2 查看用户组配额和使用情况**
- **3.3 查看所有用户的配额和使用情况**
- **4. 启用和禁用磁盘配额**
- **4.1 启用磁盘配额**
- **4.2 禁用磁盘配额**
磁盘管理
磁盘分区基础知识
在 Linux 安装过程中,分区划分是一个非常重要的步骤。合理的分区划分可以提高系统的性能、安全性和可维护性。以下是一些常见的分区及其作用,以及分区划分的建议:
1.常见分区类型及作用
-
根分区(
/
)- 作用:这是 Linux 系统的核心分区,所有其他分区都挂载在这个分区下。它包含了操作系统的核心文件、目录结构和基本的系统工具。
- 建议大小:至少需要 10GB 左右,但根据系统用途(如桌面、服务器等)可能需要更多空间。对于桌面系统,20GB 左右是比较合适的;对于服务器系统,可能需要 30GB 或更多。
- 文件系统:通常使用
ext4
或xfs
。
-
交换分区(
swap
)- 作用:当物理内存不足时,系统会将一些不常用的内存数据移动到交换分区,从而释放内存空间供其他程序使用。交换分区是虚拟内存的一部分。
- 建议大小:一般来说,交换分区的大小可以是物理内存的 1 到 2 倍。例如,如果物理内存为 4GB,交换分区可以设置为 4GB 到 8GB。不过,对于现代系统,如果物理内存足够大(如 16GB 以上),交换分区可以适当减小,甚至可以不设置。
- 文件系统:交换分区没有文件系统,它是一个专门用于虚拟内存的分区。
-
用户主目录分区(
/home
)- 作用:用于存储用户的数据和配置文件。将
/home
分区单独划分可以更好地保护用户数据,即使系统分区出现问题,用户数据也不会丢失。 - 建议大小:根据用户存储需求来定。对于普通桌面用户,可以分配 50GB 到 100GB;对于需要存储大量文件(如多媒体文件、开发项目等)的用户,可能需要更大的空间。
- 文件系统:通常使用
ext4
或xfs
。
- 作用:用于存储用户的数据和配置文件。将
-
引导分区(
/boot
)- 作用:存储引导加载程序(如 GRUB)所需的文件,包括内核映像和启动配置文件。引导分区是系统启动时首先访问的分区。
- 建议大小:通常 500MB 到 1GB 就足够了。
- 文件系统:通常使用
ext4
。
-
其他可选分区
/var
分区:用于存储系统运行时产生的可变数据,如日志文件、邮件等。如果系统需要存储大量日志或邮件,可以单独划分/var
分区。/tmp
分区:用于存储临时文件。如果系统需要频繁处理大文件,可以单独划分/tmp
分区。/usr
分区:用于存储用户程序和库文件。对于一些大型软件安装较多的系统,可以单独划分/usr
分区。
2.分区划分建议
-
桌面系统
/
:20GB/home
:剩余空间(根据硬盘大小)swap
:物理内存的 1 到 2 倍/boot
:500MB(可选,如果使用 LVM 或加密分区则必须单独划分)
-
服务器系统
/
:30GB/home
:根据用户数据需求分配/var
:10GB(如果需要存储大量日志或邮件)/tmp
:5GB(可选)swap
:物理内存的 1 到 2 倍/boot
:500MB(可选,如果使用 LVM 或加密分区则必须单独划分)
3.分区工具
在 Linux 安装过程中,通常会使用分区工具来划分分区。常见的分区工具包括:
fdisk
:传统的分区工具,支持 MBR 分区表。parted
:支持 MBR 和 GPT 分区表,功能更强大。gparted
:图形界面的分区工具,操作更直观。
4.注意事项
- 分区表类型:对于大于 2TB 的硬盘,建议使用 GPT 分区表,因为它支持更大的硬盘容量和更多的分区。
- 文件系统选择:
ext4
是最常用的文件系统,性能稳定且兼容性好;xfs
在处理大文件时性能更好。 - 备份数据:在分区之前,请确保备份重要数据,因为分区操作可能会导致数据丢失。
磁盘分区信息查看、挂载、卸载
1. 查看磁盘分区信息
lsblk
lsblk
是一个非常直观的命令,用于列出所有可用的块设备(包括硬盘、分区等)及其挂载信息。
-
基本用法:
lsblk
输出示例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 232.9G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 128M 0 part /boot └─sda3 8:3 0 232.3G 0 part / sdb 8:16 0 465.8G 0 disk └─sdb1 8:17 0 465.8G 0 part /mnt/newdisk
-
参数:
-f
:显示文件系统类型。lsblk -f
-o
:自定义输出列,例如:lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT
fdisk -l
fdisk
是一个分区工具,fdisk -l
用于列出所有磁盘的分区信息。
-
基本用法:
sudo fdisk -l
输出示例:
Disk /dev/sda: 232.9 GiB, 250059350016 bytes, 488397168 sectors Disk model: Samsung SSD 860 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: gpt Disk identifier: 12345678-1234-1234-1234-123456789012Device Start End Sectors Size Type /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 1547263 496640 240M Linux filesystem /dev/sda3 1547264 488397167 486849904 232.3G Linux filesystemDisk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors Disk model: WDC WD5000AAKX-0 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: gpt Disk identifier: 87654321-4321-4321-4321-210987654321Device Start End Sectors Size Type /dev/sdb1 2048 976773167 976771120 465.8G Linux filesystem
-
参数:
-l
:列出所有磁盘的分区信息。-u
:指定单位,例如-uM
显示以 MB 为单位。
df -h
df
命令用于查看文件系统的磁盘使用情况。检查挂载状态
-
基本用法:
df -h
输出示例:
Filesystem Size Used Avail Use% Mounted on /dev/sda3 232G 45G 177G 20% / /dev/sda1 512M 3.4M 509M 1% /boot/efi /dev/sdb1 466G 50G 403G 11% /mnt/newdisk
-
参数:
-h
:以人类可读的格式显示大小(例如 GB、MB)。
通过以上命令和参数,你可以轻松地查看磁盘分区信息、挂载和卸载磁盘,并配置自动挂载。
parted
parted
是一个功能强大的分区工具,也可以用来查看分区信息。
-
基本用法:
sudo parted -l
输出示例:
Model: Samsung SSD 860 (scsi) Disk /dev/sda: 250GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags1 1049kB 538MB 537MB fat32 EFI System Partition boot, esp2 538MB 786MB 248MB ext43 786MB 250GB 249GB ext4Model: WDC WD5000AAKX-0 (scsi) Disk /dev/sdb: 500GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags1 1049kB 500GB 500GB ext4
-
参数:
-l
:列出所有磁盘的分区信息。-s
:静默模式,不提示用户输入。
列表对比 lsbk、fdisk、df、parted
好的!以下是对比 lsblk
、fdisk
、df
和 parted
的功能和特点的表格,不包含示例输出:
特性/功能 | lsblk | fdisk | df | parted |
---|---|---|---|---|
主要用途 | 查看块设备的层次结构和挂载信息 | 查看和管理磁盘分区信息,包括创建、删除、调整分区大小等 | 查看文件系统的磁盘使用情况(已用空间、可用空间等) | 查看和管理磁盘分区信息,支持 GPT 和 MBR 分区表,功能强大 |
输出信息 | - 磁盘和分区的层次结构 - 设备名称、大小、分区类型、挂载点等 - 文件系统类型(使用 -f 参数)- 自定义输出列(使用 -o 参数) | - 磁盘的详细信息(如型号、大小、扇区大小等) - 分区表信息(如分区号、起始扇区、大小、类型等) - 支持 GPT 和 MBR 分区表 | - 文件系统的挂载点 - 总容量、已用空间、可用空间 - 使用率百分比 - 文件系统类型(可选) | - 磁盘的详细信息(如型号、大小、扇区大小等) - 分区表信息 - 支持 GPT 和 MBR 分区表 - 可视化分区布局 |
是否需要超级用户权限 | 通常不需要,但某些详细信息可能需要 sudo | 需要 sudo 权限来查看和修改分区信息 | 不需要,但查看某些特殊文件系统可能需要 sudo | 需要 sudo 权限来查看和修改分区信息 |
是否支持 GPT | 是,支持 GPT 和 MBR 分区表 | 是,支持 GPT 和 MBR 分区表 | 不直接支持分区表类型,但可以显示分区的文件系统信息 | 是,支持 GPT 和 MBR 分区表 |
是否支持自定义输出 | 是,通过 -o 参数可以自定义输出列(如 NAME,SIZE,FSTYPE,MOUNTPOINT ) | 不支持自定义输出,但可以通过 fdisk -l 查看详细信息 | 不支持自定义输出,但可以通过 -h 参数以人类可读的格式显示大小 | 不支持自定义输出,但可以通过交互式界面查看详细信息 |
是否支持交互模式 | 不支持,仅用于查看信息 | 支持交互模式,可在 fdisk 界面中进行分区操作 | 不支持,仅用于查看文件系统使用情况 | 支持交互模式,可在 parted 界面中进行分区操作 |
输出格式 | 树状结构,层次清晰,适合快速查看磁盘和分区关系 | 列表格式,详细显示分区表信息 | 列表格式,显示文件系统的使用情况 | 列表格式或交互式界面,支持多种操作 |
使用场景 | - 快速查看系统中所有磁盘和分区的挂载状态 - 检查新插入的磁盘或分区 - 确认分区的文件系统类型 - 简洁直观的输出适合快速浏览 | - 创建、删除、调整分区大小 - 查看分区表类型(GPT 或 MBR) - 修复分区表问题 - 适用于需要详细分区操作的场景 | - 检查磁盘空间使用情况 - 监控文件系统的使用率 - 优化存储空间分配 - 适用于需要了解文件系统使用情况的场景 | - 创建、删除、调整分区大小 - 查看分区表类型(GPT 或 MBR) - 支持大容量硬盘 - 提供更丰富的分区操作选项 |
常见参数 | -f (显示文件系统类型)-o (自定义输出列)-l (列出所有设备) | -l (列出所有磁盘的分区信息)-u (指定单位)-t (指定分区表类型) | -h (以人类可读的格式显示大小)-T (显示文件系统类型)-i (忽略伪文件系统) | -l (列出所有磁盘的分区信息)-s (静默模式)-a (对齐分区) |
1. lsblk
示例输出
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 232.9G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 128M 0 part /boot
└─sda3 8:3 0 232.3G 0 part /
sdb 8:16 0 465.8G 0 disk
└─sdb1 8:17 0 465.8G 0 part /mnt/newdisk
-
NAME
:设备名称,例如sda
、sda1
等。 -
MAJ:MIN
:主设备号和次设备号,用于标识设备。 -
RM
:是否可移动设备(1
表示可移动,0
表示不可移动)。 -
SIZE
:设备大小。 -
RO
:是否只读(1
表示只读,0
表示可读写)。 -
TYPE
:设备类型,例如disk
(磁盘)、part
(分区)。 -
MOUNTPOINT
:设备的挂载点。 -
sda
是一个磁盘设备,主设备号为8
,次设备号为0
。 -
它是一个不可移动设备(
RM=0
),大小为232.9G
。 -
它不是只读的(
RO=0
),类型是disk
,没有挂载点(因为它是一个磁盘,而不是分区)。 -
sda1
是sda
的第一个分区,主设备号为8
,次设备号为1
。 -
它是一个不可移动设备(
RM=0
),大小为512M
。 -
它不是只读的(
RO=0
),类型是part
(分区),挂载点是/boot/efi
。 -
sda2
是sda
的第二个分区,主设备号为8
,次设备号为2
。 -
它是一个不可移动设备(
RM=0
),大小为128M
。 -
它不是只读的(
RO=0
),类型是part
,挂载点是/boot
。 -
sda3
是sda
的第三个分区,主设备号为8
,次设备号为3
。 -
它是一个不可移动设备(
RM=0
),大小为232.3G
。 -
它不是只读的(
RO=0
),类型是part
,挂载点是/
(根目录)。 -
sdb
是另一个磁盘设备,主设备号为8
,次设备号为16
。 -
它是一个不可移动设备(
RM=0
),大小为465.8G
。 -
它不是只读的(
RO=0
),类型是disk
,没有挂载点。 -
sdb1
是sdb
的第一个分区,主设备号为8
,次设备号为17
。 -
它是一个不可移动设备(
RM=0
),大小为465.8G
。 -
它不是只读的(
RO=0
),类型是part
,挂载点是/mnt/newdisk
。
2. fdisk -l
示例输出
$ sudo fdisk -l
Disk /dev/sda: 232.9 GiB, 250059350016 bytes, 488397168 sectors
Disk model: Samsung SSD 860
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: gpt
Disk identifier: 12345678-1234-1234-1234-123456789012Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 1547263 496640 240M Linux filesystem
/dev/sda3 1547264 488397167 486849904 232.3G Linux filesystemDisk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: WDC WD5000AAKX-0
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: gpt
Disk identifier: 87654321-4321-4321-4321-210987654321Device Start End Sectors Size Type
/dev/sdb1 2048 976773167 976771120 465.8G Linux filesystem
-
/dev/sda
是一个磁盘设备,大小为232.9 GiB
。 -
磁盘总字节数为
250059350016
,总扇区数为488397168
。 -
磁盘型号是
Samsung SSD 860
。 -
扇区大小为
512
字节。 -
逻辑扇区大小和物理扇区大小都是
512
字节。 -
最小和最优的 I/O 大小都是
512
字节。 -
分区表类型是
GPT
(GUID 分区表)。 -
磁盘的唯一标识符是
12345678-1234-1234-1234-123456789012
。 -
Device
:分区设备名称。 -
Start
:分区的起始扇区。 -
End
:分区的结束扇区。 -
Sectors
:分区的扇区总数。 -
Size
:分区大小。 -
Type
:分区类型。 -
/dev/sda1
是第一个分区,起始扇区是2048
,结束扇区是1050623
。 -
分区大小为
512M
,类型是EFI System
(用于启动的 EFI 系统分区)。 -
/dev/sda2
是第二个分区,起始扇区是1050624
,结束扇区是1547263
。 -
分区大小为
240M
,类型是Linux filesystem
(Linux 文件系统)。 -
/dev/sda3
是第三个分区,起始扇区是1547264
,结束扇区是488397167
。 -
分区大小为
232.3G
,类型是Linux filesystem
。
3. df -h
示例输出
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 232G 45G 177G 20% /
/dev/sda1 512M 3.4M 509M 1% /boot/efi
/dev/sdb1 466G 50G 403G 11% /mnt/newdisk
-
Filesystem
:文件系统所在的设备。 -
Size
:文件系统的总大小。 -
Used
:已使用的空间大小。 -
Avail
:可用的空间大小。 -
Use%
:已使用空间的百分比。 -
Mounted on
:文件系统的挂载点。 -
/dev/sda3
是一个文件系统,总大小为232G
。 -
已使用空间为
45G
,可用空间为177G
。 -
已使用空间占比为
20%
,挂载点是/
(根目录)。 -
/dev/sda1
是一个文件系统,总大小为512M
。 -
已使用空间为
3.4M
,可用空间为509M
。 -
已使用空间占比为
1%
,挂载点是/boot/efi
。 -
/dev/sdb1
是一个文件系统,总大小为466G
。 -
已使用空间为
50G
,可用空间为403G
。 -
已使用空间占比为
11%
,挂载点是/mnt/newdisk
。
4. parted -l
示例输出
$ sudo parted -l
Model: Samsung SSD 860 (scsi)
Disk /dev/sda: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number Start End Size File system Name Flags1 1049kB 538MB 537MB fat32 EFI System Partition boot, esp2 538MB 786MB 248MB ext43 786MB 250GB 249GB ext4Model: WDC WD5000AAKX-0 (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number Start End Size File system Name Flags1 1049kB 500GB 500GB ext4
-
磁盘型号是
Samsung SSD 860
,连接类型是scsi
。 -
/dev/sda
是一个磁盘设备,总大小为250GB
。 -
逻辑扇区大小和物理扇区大小都是
512
字节。 -
分区表类型是
GPT
(GUID 分区表)。 -
磁盘没有特殊标志。
-
Number
:分区编号。 -
Start
:分区的起始位置。 -
End
:分区的结束位置。 -
Size
:分区的大小。 -
File system
:分区的文件系统类型。 -
Name
:分区的名称。 -
Flags
:分区的特殊标志。 -
分区编号为
1
,起始位置是1049kB
,结束位置是538MB
。 -
分区大小为
537MB
,文件系统类型是fat32
。 -
分区名称是
EFI System Partition
,标志是boot, esp
(表示这是一个用于启动的 EFI 系统分区)。 -
分区编号为
2
,起始位置是538MB
,结束位置是786MB
。 -
分区大小为
248MB
,文件系统类型是ext4
。 -
分区编号为
3
,起始位置是786MB
,结束位置是250GB
。 -
分区大小为
249GB
,文件系统类型是ext4
。
总结
-
lsblk
:- 输出特点:以树状结构显示磁盘和分区的层次关系,直观清晰。
- 适用场景:快速查看磁盘和分区的挂载状态,适合日常检查。
-
fdisk -l
:- 输出特点:详细显示磁盘和分区的物理信息,包括分区表类型、扇区大小等。
- 适用场景:分区管理操作,如创建、删除分区,修复分区表等。
-
df -h
:- 输出特点:显示文件系统的磁盘使用情况,包括已用空间、可用空间和使用率。
- 适用场景:监控磁盘空间使用情况,优化存储分配。
-
parted -l
:- 输出特点:详细显示磁盘和分区信息,支持 GPT 和 MBR 分区表,输出格式清晰。
- 适用场景:分区管理操作,支持大容量硬盘,提供更丰富的分区操作选项。
2. 挂载磁盘
mount
mount
命令用于将分区挂载到指定的挂载点。
-
基本用法:
sudo mount /dev/sdX1 /mnt/mountpoint
其中
/dev/sdX1
是分区设备名称,/mnt/mountpoint
是挂载点目录。 -
参数:
-t
:指定文件系统类型,例如:sudo mount -t ext4 /dev/sdX1 /mnt/mountpoint
-o
:指定挂载选项,例如:sudo mount -o ro /dev/sdX1 /mnt/mountpoint
ro
:只读模式。rw
:读写模式(默认)。noexec
:不允许执行文件。defaults
:使用默认选项。
3. 卸载磁盘
umount
umount
命令用于卸载已挂载的分区。
-
基本用法:
sudo umount /mnt/mountpoint
或者:
sudo umount /dev/sdX1
-
参数:
-l
:延迟卸载,如果分区正在使用中,不会立即卸载,而是等待文件关闭后再卸载。sudo umount -l /mnt/mountpoint
-f
:强制卸载,即使分区正在使用中也会尝试卸载。sudo umount -f /mnt/mountpoint
4. 自动挂载磁盘配置
为了在系统启动时自动挂载分区,需要将挂载信息添加到 /etc/fstab
文件中。
-
编辑
/etc/fstab
:sudo nano /etc/fstab
-
添加挂载信息:
在文件末尾添加以下内容:/dev/sdX1 /mnt/mountpoint ext4 defaults 0 2
/dev/sdX1
:分区设备名称。/mnt/mountpoint
:挂载点目录。ext4
:文件系统类型。defaults
:默认挂载选项。0
:是否备份(0
表示不备份,1
表示备份)。2
:启动时检查顺序(0
表示不检查,1
表示根分区,2
表示其他分区)。
-
使用 UUID 挂载:
为了更稳定,建议使用分区的 UUID 来挂载。可以通过以下命令获取 UUID:lsblk -f
然后在
/etc/fstab
中使用 UUID:UUID=12345678-1234-1234-1234-123456789012 /mnt/mountpoint ext4 defaults 0 2
磁盘文件及目录占用管理
du
(Disk Usage)是 Linux 和类 Unix 系统中用于显示文件和目录磁盘使用情况的命令。它可以帮助用户了解文件系统中各个文件和目录占用的空间大小,从而进行磁盘空间管理和优化。
1. 基本用法
du
命令的基本语法如下:
du [选项] [文件或目录]
如果不指定文件或目录,默认会显示当前目录及其子目录的磁盘使用情况。
2. 常用参数
以下是一些常用的 du
命令参数及其功能:
-h
:以人类可读的格式显示大小(例如 KB、MB、GB)。du -h
-s
:仅显示总计大小,而不显示子目录或文件的大小。du -s /path/to/directory
-a
:显示所有文件和目录的大小,包括子目录中的文件。du -a /path/to/directory
-
-c
:在最后显示总计大小。du -c /path/to/directory
-
-k
:以 KB 为单位显示大小(默认单位)。du -k /path/to/directory
-
-m
:以 MB 为单位显示大小。du -m /path/to/directory
-
-x
:仅评估当前文件系统,忽略挂载的其他文件系统。du -x /path/to/directory
-
-t
:仅显示大于指定大小的文件或目录。du -h -t 100M /path/to/directory
--exclude
:排除指定的文件或目录。du -h --exclude="*.log" /path/to/directory
3. 示例用法
3.1 查看当前目录的磁盘使用情况
du -h
输出示例:
4.0K ./file1.txt
8.0K ./subdir
12K .
4.0K
:file1.txt
文件占用 4.0 KB。8.0K
:subdir
目录占用 8.0 KB。12K
:当前目录总共占用 12 KB。
3.2 查看指定目录的总大小
du -sh /path/to/directory
输出示例:
1.2G /path/to/directory
-s
:仅显示总计大小。-h
:以人类可读的格式显示。
3.3 查看所有文件和目录的大小
du -ah /path/to/directory
输出示例:
4.0K /path/to/directory/file1.txt
8.0K /path/to/directory/subdir
12K /path/to/directory
-a
:显示所有文件和目录的大小。-h
:以人类可读的格式显示。
3.4 查看大于指定大小的文件或目录
du -h -t 100M /path/to/directory
输出示例:
120M /path/to/directory/largefile1
200M /path/to/directory/largefile2
-t 100M
:仅显示大于 100 MB 的文件或目录。
3.5 排除特定文件或目录
du -h --exclude="*.log" /path/to/directory
输出示例:
4.0K /path/to/directory/file1.txt
8.0K /path/to/directory/subdir
12K /path/to/directory
--exclude="*.log"
:排除所有.log
文件。
4. 高级用法
4.1 找出占用空间最大的文件或目录
可以结合 sort
命令找出占用空间最大的文件或目录:
du -ah /path/to/directory | sort -h
sort -h
:按人类可读的格式排序。
4.2 找出占用空间最大的前 10 个文件或目录
du -ah /path/to/directory | sort -h | tail -n 10
tail -n 10
:显示最后 10 行(即占用空间最大的 10 个文件或目录)。
4.3 查找特定文件系统中的大文件
如果只想查找某个文件系统中的大文件,可以使用 -x
参数:
du -ahx / | sort -h
-x
:仅评估当前文件系统,忽略挂载的其他文件系统。
5. 注意事项
- 单位换算:
du
默认以 KB 为单位显示大小,但可以通过-h
或-m
等参数以更易读的格式显示。 - 文件系统限制:某些文件系统(如 NTFS 或 FAT32)可能不支持某些
du
参数。 - 权限问题:如果某些目录或文件需要超级用户权限才能访问,可能需要使用
sudo
来运行du
命令。
6. 总结
du
是一个非常实用的命令,可以帮助用户了解文件和目录的磁盘使用情况。通过合理使用其参数,可以快速定位占用空间较大的文件或目录,从而进行磁盘空间管理。
磁盘检查与修复
fsck
(File System Consistency Check)是一个用于检查和修复文件系统错误的工具,广泛用于 Linux 和其他类 Unix 系统。它可以帮助修复因系统崩溃、意外断电、硬件故障或文件系统损坏导致的问题。以下是对 fsck
的详细介绍,包括其功能、使用方法和常见参数。
1. fsck
的功能
- 检查文件系统:
fsck
会扫描文件系统,检查其结构是否完整,包括目录结构、文件元数据、块分配等。 - 修复错误:如果发现错误,
fsck
会尝试自动修复这些问题。它可以修复丢失的文件、修复损坏的目录、恢复未正确关闭的文件系统等。 - 维护文件系统健康:定期运行
fsck
可以帮助维护文件系统的健康,避免数据丢失和系统崩溃。
2. 使用场景
- 系统启动时自动检查:在系统启动时,
fsck
会自动检查挂载的文件系统。如果文件系统标记为“脏”(即上次未正常关闭),fsck
会尝试修复它。 - 手动检查和修复:用户可以手动运行
fsck
来检查和修复文件系统。这在怀疑文件系统损坏时非常有用。 - 定期维护:定期运行
fsck
可以帮助发现并修复潜在问题,特别是在服务器或重要系统中。
3. 常见参数
-n
:在检查时,对所有问题都回答“不”(即不进行自动修复)。这主要用于查看文件系统是否有错误,而不进行实际修复。sudo fsck -n /dev/sdX1
-y
:对所有问题都回答“是”(即自动修复所有问题)。这在需要快速修复文件系统时非常有用,但可能会覆盖一些数据。sudo fsck -y /dev/sdX1
-a
:自动修复所有可以自动修复的问题(与-y
类似,但更保守)。sudo fsck -a /dev/sdX1
-f
:强制检查文件系统,即使它看起来是干净的。sudo fsck -f /dev/sdX1
-t
:指定要检查的文件系统类型(如ext4
、xfs
等)。sudo fsck -t ext4 /dev/sdX1
-v
:详细模式,显示详细的检查和修复过程。sudo fsck -v /dev/sdX1
4. 使用方法
手动检查文件系统
- 卸载文件系统:
在检查文件系统之前,必须先卸载它,以避免数据损坏。sudo umount /dev/sdX1
- 运行
fsck
:
使用fsck
检查和修复文件系统。
或者使用特定参数:sudo fsck /dev/sdX1
sudo fsck -y /dev/sdX1 # 自动修复所有问题 sudo fsck -n /dev/sdX1 # 查看问题但不修复
在系统启动时自动检查
- 系统启动时,
fsck
会自动检查挂载的文件系统。如果文件系统标记为“脏”,fsck
会尝试修复它。 - 如果需要强制在启动时检查某个文件系统,可以在
/etc/fstab
文件中设置pass
参数为2
(对于根分区设置为1
)。/dev/sdX1 /mnt/mountpoint ext4 defaults 0 2
5. 注意事项
- 备份重要数据:在运行
fsck
之前,建议备份重要数据,以防止意外数据丢失。 - 只在卸载状态下运行:
fsck
只能在文件系统未挂载的状态下运行。如果文件系统已挂载,运行fsck
可能会导致数据损坏。 - 谨慎使用
-y
参数:虽然-y
参数可以自动修复问题,但它可能会覆盖一些数据。建议先使用-n
参数查看问题,然后再决定是否修复。 - 定期检查:定期运行
fsck
可以帮助发现并修复潜在问题,特别是在服务器或重要系统中。
6. 示例
检查并修复分区
# 卸载分区
sudo umount /dev/sdX1# 检查并修复分区
sudo fsck -y /dev/sdX1
查看分区是否有错误
# 卸载分区
sudo umount /dev/sdX1# 查看分区是否有错误
sudo fsck -n /dev/sdX1
强制检查文件系统
# 卸载分区
sudo umount /dev/sdX1# 强制检查文件系统
sudo fsck -f /dev/sdX1
7. 总结
fsck
是一个强大的工具,用于检查和修复文件系统错误。它可以帮助维护文件系统的健康,避免数据丢失和系统崩溃。在使用 fsck
时,务必先卸载文件系统,并谨慎选择参数,以确保数据安全。
如果在使用 fsck
时遇到问题,可以查看 fsck
的输出信息,或者查阅相关文档和社区资源。
磁盘与分区备份
在使用 fsck
检查和修复文件系统之前,进行备份操作是非常重要的,因为 fsck
的某些操作可能会导致数据丢失或覆盖。以下是一些备份操作的步骤和建议,以确保在运行 fsck
之前数据的安全性。
1. 确定需要备份的内容
在开始备份之前,需要明确哪些数据是重要的,需要备份。通常包括:
- 用户数据:如
/home
目录下的用户文件。 - 系统配置文件:如
/etc
目录下的配置文件。 - 关键服务数据:如数据库文件、Web 服务器数据等。
2. 选择备份方法
根据需要备份的数据量和备份目标,选择合适的备份方法。常见的备份方法包括:
2.0 rsync
命令
rsync
是一个非常强大的文件同步工具,广泛用于备份、迁移和同步文件和目录。它支持本地和远程同步,具有高效的数据传输和增量备份功能。以下是 rsync
的语法格式、常用参数及其作用的详细介绍。
1. rsync
语法格式
rsync
的基本语法如下:
rsync [选项] [源文件或目录] [目标文件或目录]
2. 常用参数及其作用
以下是 rsync
的常用参数及其作用,以列表形式展示:
参数 | 作用 |
---|---|
-a | 归档模式,等同于 -rlptgo ,递归同步并保留文件权限、属性、链接等。 |
-r | 递归同步目录。 |
-l | 保留符号链接。 |
-p | 保留文件权限。 |
-t | 保留文件的时间戳。 |
-g | 保留文件的用户组。 |
-o | 保留文件的所有者。 |
-v | 详细模式,显示同步过程中的详细信息。 |
-n | 模拟模式,仅显示将要执行的操作,但不实际执行。 |
-u | 跳过目标文件比源文件新的文件。 |
-z | 在传输过程中对数据进行压缩。 |
-e | 指定远程同步时使用的远程 shell 程序(如 ssh )。 |
-i | 显示每个文件的详细变化信息。 |
-x | 不跨文件系统同步,即跳过挂载的其他文件系统。 |
-b | 在覆盖文件之前进行备份,备份文件会加上 ~ 后缀。 |
--backup-dir | 指定备份文件的目录。 |
--delete | 删除目标目录中在源目录中不存在的文件。 |
--exclude | 排除指定的文件或目录。 |
--include | 包含指定的文件或目录。 |
--progress | 显示同步进度。 |
3. 示例用法
3.1 本地同步
将 /home/user/data
目录同步到 /backup/data
:
rsync -av /home/user/data/ /backup/data/
3.2 远程同步
将本地目录同步到远程服务器:
rsync -av -e ssh /home/user/data/ user@remote_host:/backup/data/
3.3 排除特定文件或目录
同步时排除 .cache
和 .tmp
目录:
rsync -av --exclude='.cache' --exclude='.tmp' /home/user/data/ /backup/data/
3.4 删除目标目录中多余的文件
同步时删除目标目录中在源目录中不存在的文件:
rsync -av --delete /home/user/data/ /backup/data/
3.5 模拟同步操作
仅显示将要执行的操作,但不实际执行:
rsync -avn /home/user/data/ /backup/data/
3.6 压缩传输
在传输过程中对数据进行压缩:
rsync -avz /home/user/data/ /backup/data/
3.7 保留文件权限和所有者
确保同步时保留文件权限和所有者:
rsync -av --perms --owner --group /home/user/data/ /backup/data/
3.8 跨文件系统同步
跳过挂载的其他文件系统:
rsync -avx /home/user/data/ /backup/data/
2.1 使用 rsync
进行备份
-
备份
/home
目录:sudo rsync -av --exclude='.*' /home/ /path/to/backup/home_backup
-a
:归档模式,递归同步并保留文件权限和属性。-v
:详细模式,显示同步过程中的详细信息。--exclude='.*'
:排除隐藏文件(如.cache
等)。
-
备份
/etc
目录:sudo rsync -av /etc/ /path/to/backup/etc_backup
2.2 使用 tar
进行备份
tar
是一个常用的归档工具,可以将文件和目录打包成一个归档文件。
-
备份
/home
目录:sudo tar -czvf /path/to/backup/home_backup.tar.gz /home/
-c
:创建新的归档文件。-z
:使用 gzip 压缩。-v
:详细模式,显示归档过程中的详细信息。-f
:指定归档文件的路径和名称。
-
备份
/etc
目录:sudo tar -czvf /path/to/backup/etc_backup.tar.gz /etc/
2.3 使用 dd
进行全盘备份
如果需要备份整个磁盘,可以使用 dd
命令。但请注意,dd
是一个低级工具,操作不当可能会导致数据丢失。
- 备份整个磁盘:
sudo dd if=/dev/sdX of=/path/to/backup/disk_backup.img bs=4M
if=/dev/sdX
:输入文件(源磁盘设备)。of=/path/to/backup/disk_backup.img
:输出文件(备份文件)。bs=4M
:块大小为 4MB(可以根据需要调整)。
3. 验证备份
在运行 fsck
之前,确保备份文件是完整的。可以使用以下方法验证备份:
-
验证
rsync
备份:sudo rsync -av --dry-run /home/ /path/to/backup/home_backup
--dry-run
:仅模拟同步操作,不实际执行,用于验证备份是否完整。
-
验证
tar
备份:sudo tar -tzvf /path/to/backup/home_backup.tar.gz
-t
:列出归档文件中的内容,用于验证备份是否完整。
4. 选择备份存储位置
备份文件可以存储在以下位置:
- 本地磁盘:将备份文件存储在另一个磁盘分区或外部硬盘上。
- 网络存储:将备份文件存储在 NAS(网络附加存储)或远程服务器上。
- 云存储:将备份文件上传到云存储服务(如 Google Drive、Dropbox 等)。
5. 自动化备份
如果需要定期备份,可以使用 cron
任务自动化备份过程。
- 编辑
cron
任务:
添加以下内容:crontab -e
0 2 * * * /usr/bin/rsync -av /home/ /path/to/backup/home_backup 0 3 * * * /usr/bin/tar -czvf /path/to/backup/etc_backup.tar.gz /etc/
6. 注意事项
- 备份前关闭相关服务:如果备份数据库或其他关键服务的数据,建议在备份前关闭相关服务,以确保数据一致性。
sudo systemctl stop mysql sudo rsync -av /var/lib/mysql/ /path/to/backup/mysql_backup sudo systemctl start mysql
- 验证备份完整性:在运行
fsck
之前,务必验证备份文件的完整性和可用性。 - 定期备份:定期进行备份操作,以确保数据的最新性。
7. 总结
在使用 fsck
之前进行备份是保护数据的重要步骤。通过选择合适的备份方法、验证备份文件的完整性和选择安全的备份存储位置,可以最大限度地减少数据丢失的风险。
磁盘分区创建
1. 使用 fdisk
进行分区
fdisk
是一个传统的分区工具,适用于 MBR 分区表。以下是使用 fdisk
的步骤:
步骤 1:检查硬盘设备
在开始分区之前,需要确认新硬盘的设备名称。运行以下命令:
lsblk
或者:
fdisk -l
找到新硬盘的设备名称,例如 /dev/sdb
。
步骤 2:启动 fdisk
使用以下命令启动 fdisk
:
sudo fdisk /dev/sdX
将 /dev/sdX
替换为新硬盘的设备名称,例如 /dev/sdb
。
步骤 3:创建分区
在 fdisk
的交互式界面中,输入以下命令:
- 输入
n
创建新分区。- 如果是第一个分区,选择
p
创建主分区。 - 输入分区号(例如
1
)。 - 输入起始扇区(通常直接按回车选择默认值)。
- 输入分区大小(例如
+10G
表示 10GB,或者直接按回车选择剩余空间)。
- 如果是第一个分区,选择
- 输入
t
设置分区类型(可选)。- 输入分区号。
- 输入分区类型代码(例如
83
表示 Linux 文件系统)。
- 输入
w
保存分区表并退出。
步骤 4:格式化分区
创建分区后,需要格式化分区。例如,格式化为 ext4
文件系统:
sudo mkfs.ext4 /dev/sdX1
将 /dev/sdX1
替换为实际的分区设备名称。
步骤 5:挂载分区
将分区挂载到某个目录:
sudo mkdir /mnt/newdisk
sudo mount /dev/sdX1 /mnt/newdisk
将 /dev/sdX1
替换为实际的分区设备名称。
2. 使用 parted
进行分区
parted
是一个功能更强大的分区工具,支持 MBR 和 GPT 分区表。以下是使用 parted
的步骤:
步骤 1:检查硬盘设备
使用 lsblk
或 fdisk -l
查看硬盘设备名称。
步骤 2:启动 parted
使用以下命令启动 parted
:
sudo parted /dev/sdX
将 /dev/sdX
替换为新硬盘的设备名称。
步骤 3:创建分区表(可选)
如果硬盘没有分区表,需要先创建分区表。输入以下命令:
mklabel gpt
或者:
mklabel msdos
根据需要选择 GPT 或 MBR 分区表。
步骤 4:创建分区
输入以下命令创建分区:
mkpart primary ext4 0% 10G
primary
表示主分区。ext4
是文件系统类型(也可以选择其他类型)。0%
是起始位置。10G
是分区大小。
步骤 5:保存并退出
输入以下命令保存分区表并退出:
quit
步骤 6:格式化分区
格式化分区:
sudo mkfs.ext4 /dev/sdX1
步骤 7:挂载分区
挂载分区:
sudo mkdir /mnt/newdisk
sudo mount /dev/sdX1 /mnt/newdisk
3. 使用 gparted
进行分区
gparted
是一个图形界面的分区工具,操作更直观。
步骤 1:安装 gparted
如果系统中没有安装 gparted
,可以使用以下命令安装:
sudo apt install gparted
或者:
sudo yum install gparted
步骤 2:启动 gparted
运行以下命令启动 gparted
:
sudo gparted
步骤 3:选择硬盘
在 gparted
界面中,选择新硬盘。
步骤 4:创建分区表(可选)
如果硬盘没有分区表,可以选择创建分区表。在菜单中选择 设备 -> 创建分区表
,选择 GPT 或 MBR。
步骤 5:创建分区
右键点击未分配空间,选择 新建
,设置分区大小、文件系统类型等参数。
步骤 6:应用操作
点击 应用
按钮,完成分区和格式化。
步骤 7:挂载分区
在终端中运行以下命令挂载分区:
sudo mkdir /mnt/newdisk
sudo mount /dev/sdX1 /mnt/newdisk
4.注意事项
- 备份数据:分区操作会清除硬盘上的所有数据,请确保备份重要数据。
- 分区表类型:对于大于 2TB 的硬盘,建议使用 GPT 分区表。
- 文件系统选择:
ext4
是最常用的文件系统,xfs
在处理大文件时性能更好。 - 挂载点:挂载点可以根据需要选择,例如
/mnt/newdisk
或/data
等。
磁盘配额管理
1. 启用磁盘配额
1.1 安装 quota
软件包
在大多数 Linux 发行版中,quota
功能需要安装相应的软件包。安装方法因发行版而异:
-
基于 Debian/Ubuntu 的系统:
sudo apt-get update sudo apt-get install quota
-
基于 Red Hat/CentOS 的系统:
sudo yum install quota
1.2 编辑 /etc/fstab
文件
要启用磁盘配额,需要在 /etc/fstab
文件中为指定的文件系统启用配额支持。编辑 /etc/fstab
文件,添加 usrquota
和/或 grpquota
参数:
/dev/sda1 /home ext4 defaults,usrquota,grpquota 0 2
usrquota
:启用用户配额。grpquota
:启用用户组配额。
1.3 重新挂载文件系统
修改 /etc/fstab
文件后,需要重新挂载文件系统以使更改生效:
sudo mount -o remount /home
1.4 运行 quotacheck
命令
quotacheck
命令用于检查文件系统并创建配额文件。配额文件通常存储在文件系统的根目录下,例如 /aquota.user
和 /aquota.group
。
quotacheck
参数解释:-c
:创建配额文件。-u
:检查用户配额。-g
:检查用户组配额。-a
:对所有启用了配额的文件系统进行操作。-v
:显示详细信息。
运行以下命令来初始化配额文件:
sudo quotacheck -cug /home
或者,对所有启用了配额的文件系统运行:
sudo quotacheck -avug
1.5 启用配额服务
使用 quotaon
命令启用配额:
quotaon
参数解释:-a
:对所有启用了配额的文件系统启用配额。-v
:显示详细信息。-u
:启用用户配额。-g
:启用用户组配额。
启用配额:
sudo quotaon -avug
2. 设置用户和用户组的磁盘配额(软硬限制)
2.1 设置用户配额
使用 edquota
命令为用户设置磁盘配额:
edquota
参数解释:-u
:指定用户。-g
:指定用户组。-p
:从另一个用户或用户组复制配额设置。
运行以下命令为用户 username
设置配额:
sudo edquota -u username
在打开的编辑器中,您将看到类似以下内容:
Disk quotas for user username (uid 1001):Filesystem blocks soft hard inodes soft hard/dev/sda1 100000 200000 250000 10000 12000 15000
blocks
:当前使用的磁盘空间(单位为 KB)。soft
:软限制,用户可以暂时超过这个限制,但系统会发出警告。hard
:硬限制,用户不能超过这个限制。inodes
:当前使用的文件数量。soft
和hard
:文件数量的软限制和硬限制。
2.2 设置用户组配额
为用户组 groupname
设置配额:
sudo edquota -g groupname
2.3 复制配额设置
如果多个用户或组的配额设置相同,可以使用 edquota
的 -p
选项复制配额设置:
sudo edquota -p protuser user1 user2 user3
sudo edquota -g -p protgroup group1 group2 group3
2.4 设置软限制和硬限制之间的宽限期
使用 edquota -t
命令设置宽限期:
运行以下命令:
sudo edquota -t
在打开的编辑器中,设置宽限期(单位可以是天、小时、分钟、秒):
Grace period before enforcing soft limits for users:Time units may be: days, hours, minutes, or secondsFilesystem Block grace period Inode grace period/dev/sda1 7days 7days
3. 查看用户(组)磁盘使用情况
3.1 查看用户配额和使用情况
用户可以使用 quota
命令查看自己的配额和使用情况:
quota username
系统管理员可以查看指定用户的配额和使用情况:
sudo quota -u username
quota
参数解释:-u
:指定用户。-g
:指定用户组。-v
:显示详细信息。
3.2 查看用户组配额和使用情况
查看用户组的配额和使用情况:
sudo quota -g groupname
3.3 查看所有用户的配额和使用情况
使用 repquota
命令查看所有用户的配额和使用情况:
sudo repquota -a
repquota
参数解释:-a
:显示所有启用了配额的文件系统的配额信息。-v
:显示详细信息。-u
:显示用户配额。-g
:显示用户组配额。
4. 启用和禁用磁盘配额
4.1 启用磁盘配额
使用 quotaon
命令启用磁盘配额:
sudo quotaon -avug
4.2 禁用磁盘配额
使用 quotaoff
命令禁用磁盘配额:
sudo quotaoff -a
quotaoff
参数解释:-a
:对所有启用了配额的文件系统禁用配额。