20、FreeBSD 命令行工具使用指南

FreeBSD 命令行工具使用指南

在服务器管理中,命令行工具是强大且高效的管理手段。FreeBSD 系统提供了一系列实用的命令行工具,可用于监控 FreeNAS 服务器的系统状态、管理服务以及处理 RAID 阵列等。以下将详细介绍这些工具的使用方法。

1. 从命令行监控 FreeNAS 服务器

FreeBSD 包含多个用于系统监控的工具,可对磁盘空间和系统进程进行监控。

1.1 使用 mount 查看已挂载的磁盘

要查看 FreeNAS 服务器上已挂载的磁盘,可使用 mount 命令:

freenas:~# mount
/dev/ad0s1a on / (ufs, local, soft-updates)
devfs on /dev (devfs, local)
/dev/raid5/raid5p1 on /mnt/raid5 (ufs, local, soft-updates, acls)

该命令的输出与 Web 界面中“Diagnostics: Information: Mounts”页面的输出相同。每个设备都会列出其挂载点、文件系统类型和相关选项。从上述输出可知,包含 FreeBSD 和 FreeNAS 软件的根目录位于第一个 IDE 驱动器(ad0)上,并且该 FreeNAS 服务器在 /mnt/raid 上挂载了 RAID 5 配置。

1.2 使用 df 检查磁盘空间使用情况

df 命令可用于显示磁盘空间使用情况,它有一个可选参数 -h (人类可读标志),可使输出更易于阅读:

freenas:~# df -h
Filesystem            Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a           121M     56M     56M    50%    /
devfs                 1.0K    1.0K      0B   100%    /dev
/dev/raid5/raid5p1    3.9G    239M    3.3G     7%    /mnt/raid5

该命令会列出每个文件系统的总大小、已使用空间、可用空间以及磁盘使用百分比。

1.3 使用 du 查看目录大小

du 命令可显示指定文件和文件夹(包括子文件夹)的磁盘空间使用情况,如果未指定文件夹,则显示当前文件夹的使用情况。例如,要查看 /mnt/raid5 目录的使用情况:

freenas:~# cd /mnt/raid5/
freenas:/mnt/raid5# du -hs
239M    .

要查看 /mnt/raid5 目录下 pictures 文件夹的使用情况:

freenas:~# du -h /mnt/raid5/pictures
2.5M    /mnt/raid5/pictures
1.4 使用 ps top 进行进程监控

FreeNAS 服务器可以同时运行多个程序,每个程序作为一个单独的进程运行,每个进程会占用系统的 CPU 时间和其他系统资源。若程序出现问题,可能会占用过多的 CPU 时间或内存,影响其他程序的运行。可以使用以下命令监控服务器上运行的进程:
- ps 命令 :显示机器上当前运行的进程。常用的 ps aux 命令可显示系统上的所有进程:

freenas:~# ps aux
USER  PID %CPU %MEM   VSZ   RSS  TT  STAT STARTED      TIME COMMAND
root   10 84.6  0.0     0     8  ??  RL   10:28AM  69:12.51 [idle: cpu0]
root    0  0.0  0.0     0     0  ??  WLs  10:28AM   0:00.00 [swapper]
root    1  0.0  0.2   772   388  ??  SLs  10:28AM   0:00.09 /sbin/init --
root    2  0.0  0.0     0     8  ??  DL   10:28AM   0:01.22 [g_event]
root    3  0.0  0.0     0     8  ??  DL   10:28AM   0:01.14 [g_up]
root    4  0.0  0.0     0     8  ??  DL   10:28AM   0:01.60 [g_down]
root    5  0.0  0.0     0     8  ??  DL   10:28AM   0:00.00 [crypto]
root    6  0.0  0.0     0     8  ??  DL   10:28AM   0:00.00 [crypto returns]

各列含义如下:
| 列名 | 含义 |
| ---- | ---- |
| USER | 拥有该进程的用户名称 |
| PID | 每个进程的唯一进程 ID |
| %CPU | 进程的 CPU 利用率,是过去一分钟内的衰减平均值 |
| %MEM | 进程使用的物理内存量 |
| VSZ | 进程的虚拟内存大小(以千字节为单位) |
| RSS | 进程使用的非交换物理内存大小(以千字节为单位) |
| TT | 控制终端,若为 ?? 表示没有控制终端 |
| STAT | 进程的状态, S 表示进程正在休眠,可随时唤醒; L 表示进程正在等待获取锁; R 表示可运行的进程 |
| STARTED | 进程的启动时间 |
| TIME | 累积的 CPU 时间,包括进程运行时间和在内核中代表该进程花费的时间 |
| COMMAND | 启动程序的命令 |

若要在长列表中查找特定进程,可使用 grep 命令进行文本匹配。例如,查找 FTP 服务器进程:

freenas:~# ps aux | grep ftp
root    981  0.0  0.8  3636  1904  ??  Ss   0:00.07 pure-ftpd
root   1407  0.0  0.4  1528   984  p0  R+   0:00.02 grep ftp

运行该命令时, grep 命令本身也会显示出来,但它并非 FTP 服务的一部分。

  • top 命令 ps 命令仅显示系统进程的快照,而 top 程序提供系统的动态实时视图。它会显示系统摘要(包括 CPU 使用率、内存使用率等统计信息)以及运行进程列表,该列表会随着系统的使用动态变化,且首先列出使用最多 CPU 的进程。 top 命令的前几行输出如下:
last pid:  1410;  load av:  0.00,  0.00,  0.00    up 0+01:39:09  12:07
23 processes:  2 running, 21 sleeping
CPU:  0.0% user,  0.0% nice,  3.8% sys,  0.0% interrupt, 96.2% idle
Mem: 10M Active, 12M Inact, 13M Wired, 68K Cache, 9648K Buf, 207M Free
Swap:
  PID USERNAME  THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
 1087 root        1   4    0  3168K  2212K kqread   0:02  0.00% lighttpd
 1023 root        3  20    0  7160K  4104K kserel   0:01  0.00% mediatom
 1250 root        1  76    0  5640K  2720K RUN      0:01  0.00% sshd
  927 root        1  76    0  5496K  3208K select   0:01  0.00% nmbd
 1253 root        1  20    0  4000K  2780K pause    0:01  0.00% csh
2. FreeNAS 的高级 FreeBSD 命令

之前主要处于只读模式,仅对系统进行查看和监控,接下来将介绍如何通过命令行进行一些更改操作。

2.1 启动和停止服务

许多 FreeNAS 服务器组件需要重启才能接受新配置,因此可通过命令行手动重启服务。控制各种服务的脚本都保存在 /etc/rc.d 目录中,要管理服务,可直接从该目录调用相应脚本。例如,重启 AFP 服务:

freenas:~# /etc/rc.d/afpd restart
Stopping afpd.
Starting afpd.

这些脚本接受的命令及其含义如下:
| 命令 | 含义 |
| ---- | ---- |
| start | 启动服务,若服务已在运行,则不执行任何操作 |
| stop | 停止服务,若服务未运行,则无任何反应 |
| restart | 先停止服务,再启动服务。若服务未运行,停止操作会失败,但脚本仍会继续启动服务 |
| status | 显示服务是否正在运行 |

可启动和停止的服务如下:
| 名称 | 服务描述 |
| ---- | ---- |
| afpd | Apple 文件协议守护进程,提供与 Apple Mac 计算机的连接 |
| lighttpd | Web 界面的内置 Web 服务器 |
| mediatomb.sh | UPnP 服务器 |
| nfsd | 用于与 UNIX 类型客户端共享文件的 NFS 服务器 |
| nfslocking | NFS 服务器的一部分,需要单独控制 |
| pureftpd | FTP 服务器 |
| rsync_client | RSYNC 客户端 |
| rsync_local | 用于两个本地磁盘之间同步的本地 RSYNC 客户端 |
| rsyncd | RSYNC 服务器 |
| samba | 用于 Windows 连接的 CIFS/SMB 服务器 |
| smartd | 硬盘监控服务 |
| sshd | 安全 shell 服务 |
| unison | 同步服务 |

2.2 使用 kill killall 终止进程
  • kill 命令 :尝试关闭正在运行的进程。在 FreeBSD 中,操作系统向进程发送信号以通知其关闭。 kill 命令的默认信号是 TERM (信号 15),表示软件终止。若进程出现问题,可能不会响应正常关闭信号,此时需发送 KILL 信号(信号 9)。例如,终止进程 1234:
freenas:~# kill -9 1234
  • killall 命令 :通过进程名称而非 PID 终止运行的进程。与 kill 命令一样, killall 也接受信号参数,使用 -9 可终止进程。例如,终止所有 FTP 进程:
freenas:~# killall -9 pure-ftpd

需要注意的是,使用 killall 时必须指定进程的确切名称。 killall 还有两个有用的参数:
- -s :仅显示将要执行的操作,但不发送任何信号。
- -v :显示与 -s 类似的输出,但会实际发送信号并报告已执行的操作。

freenas:~# killall -9 -s pure-ftpd
kill -KILL 2045
3. RAID 命令行工具

部分用户在使用 FreeNAS 时会遇到 RAID 配置问题,虽然 FreeNAS 中的 RAID 软件质量很高,但仍可能出现问题。Web 界面中可用的所有 RAID 功能在命令行中同样可用。不同类型的 RAID 级别使用不同的命令,管理 RAID 1 集的实用程序对 RAID 5 一无所知,反之亦然。RAID 实用程序包括 gconcat gstripe gmirror graid5

在使用命令行管理 RAID 集时需注意,虽然拥有完全的管理和控制权,但也可能因失误破坏 RAID 集。若对通过命令行管理 RAID 集感到不适,建议使用 Web 界面,它能提供一定程度的保护。此外,使用命令行时,Web 界面可能与服务器的当前配置不同步。

3.1 列表和状态命令

管理 RAID 级别的每个实用程序都有一些共同的命令,即 list status 命令。
- status 命令 :提供构成 RAID 集的磁盘的简要摘要以及 RAID 集的当前状态。例如,查看 RAID 5 阵列的状态:

freenas:~# graid5 status
       Name         Status  Components
raid5/myraid5  COMPLETE CALM  da0
                              ad3
                              ad1

从输出可知,该 RAID 5 集是完整的(没有磁盘缺失),且未在重建,由磁盘 da0 ad3 ad1 组成。
- list 命令 :输出更全面,在很多情况下属于调试信息。当 RAID 阵列正常工作时,此信息可能不太有用,但在遇到问题时,这些信息可能非常有价值。例如,获取 RAID 5 的列表信息:

freenas:~# graid5 list
Geom name: myraid5
State: COMPLETE CALM
Status: Total=3, Online=3
Type: AUTOMATIC
Pending: (wqp 0 // 0)
Stripesize: 131072
MemUse: 0 (msl 0)
Newest: -1
ID: 1419279684
Providers:
1. Name: raid5/myraid5
   Mediasize: 4294705152 (4.0G)
   Sectorsize: 512
   Mode: r1w1e2
Consumers:
1. Name: da0
   Mediasize: 2147483648 (2.0G)
   Sectorsize: 512
   Mode: r2w2e3
   DiskNo: 2
   Error: No
2. Name: ad3
   Mediasize: 2147483648 (2.0G)
   Sectorsize: 512
   Mode: r2w2e3
   DiskNo: 1
   Error: No
3. Name: ad1
   Mediasize: 2147483648 (2.0G)
   Sectorsize: 512
   Mode: r2w2e3
   DiskNo: 0
   Error: No
3.2 不同 RAID 级别的操作
  • JBOD 和 gconcat :JBOD(Just a Bunch of Disks)不提供任何磁盘故障保护,在命令行中可做的操作不多。可使用 gconcat status 检查 JBOD 阵列的状态:
freenas:~# gconcat status
         Name  Status  Components
concat/myjbod      UP  ad3
                       ad1

虽然可以完全通过命令行创建、格式化和挂载 JBOD 阵列,但由于 Web 界面对此一无所知,且阵列未保存在 FreeNAS 配置中,机器重启后会被遗忘,因此价值不大。
- RAID 0 和 gstripe :与 JBOD 类似,RAID 0 不提供磁盘故障保护,在命令行中可做的操作有限。可使用 gstripe status 检查 RAID 0 阵列的状态:

freenas:~# gstripe status
          Name  Status  Components
stripe/myraid0      UP  da0
                        da1

同样,可通过命令行创建、格式化和挂载 RAID 0 阵列,但由于 Web 界面不了解新创建的阵列,且机器重启后会被遗忘,因此价值不大。
- RAID 1 和 gmirror :RAID 1(镜像)是 FreeBSD/FreeNAS 提供的 4 种基本 RAID 级别中第一种提供磁盘故障保护的级别。当镜像集中的一个磁盘(如 da0 )缺失时, gmirror status 的输出如下:

freenas:~# gmirror status
           Name    Status  Components
mirror/mymirror  DEGRADED  ad1

重建镜像阵列的步骤与相关说明一致,可使用命令行而非 Web 界面进行重建。新磁盘插入系统后,需使用 forget 命令,该命令不会忘记整个镜像集,只会忘记当前不可用的驱动器。执行 forget 命令后,插入新磁盘,阵列将开始重建:

freenas:~# gmirror forget mymirror
freenas:~# gmirror insert mymirror da0
freenas:~# gmirror status
           Name    Status  Components
mirror/mymirror  DEGRADED  ad0
                           da0 (17%)

镜像集重建完成后,状态如下:

freenas:~# gmirror status
           Name    Status  Components
mirror/mymirror  COMPLETE  ad1
                           da1
  • RAID 5 和 graid5 :磁盘故障后修复 RAID 5 阵列的过程与相关说明相同,这次使用命令行而非 Web 界面。使用 status 命令可发现阵列存在问题:
freenas:~# graid5 status
       Name         Status  Components
raid5/myraid5  DEGRADED CALM  ad3
                              ad1

磁盘 da0 缺失,RAID 处于降级状态。更换磁盘后,使用 graid5 insert 命令将新磁盘放回阵列:

freenas:~# graid5 insert myraid5 da0

阵列将开始重建,可再次使用 graid5 status 命令检查重建状态:

freenas:~# graid5 status
       Name           Status  Components
raid5/myraid5  REBUILDING CALM  ad3
                                ad1
                                da0 (543162368 / 25% (p:0))

阵列重建完成后,将恢复到 COMPLETE 状态:

freenas:~# graid5 status
       Name         Status  Components
raid5/myraid5  COMPLETE CALM  ad3
                              ad1
                              da0
4. FreeNAS 的文件存储位置

FreeNAS 服务器在多个位置存储重要文件,以下是 FreeBSD 中 FreeNAS 服务器使用的一些关键目录的总结:
| 目录 | 重要性 |
| ---- | ---- |
| /root | 根用户的主目录 |
| /mnt | 所有磁盘和 RAID 集都挂载在该目录下 |
| /bin & /usr/bin | 存储所有用户可运行的实用程序,如 chmod kill |
| /sbin & /usr/sbin | 存储所有根用户可运行的实用程序,如 RAID 实用程序 |
| /etc | 包含 FreeNAS 所需的各种配置文件,其中许多在启动时创建 |
| /usr/local/www | FreeNAS Web 界面的网页所在位置 |
| /var/log | FreeNAS 服务器存储所有日志文件的位置 |

需要注意的是,FreeNAS 的嵌入式版本仅从 RAM 运行(最初从硬盘或 USB 闪存盘加载),对操作系统文件所做的任何更改都是临时的,系统重启后将恢复到原始状态。

综上所述,通过这些 FreeBSD 命令行工具,可高效地监控和管理 FreeNAS 服务器,包括磁盘挂载、空间使用、进程监控、服务管理以及 RAID 集的操作等。在使用过程中,需谨慎操作,特别是在管理 RAID 集时,避免因失误造成数据丢失。

FreeBSD 命令行工具使用指南

5. 命令行操作的注意事项与常见问题处理
5.1 命令行操作的风险与应对

在使用命令行对 FreeNAS 服务器进行操作时,存在一定风险。例如在管理 RAID 集时,命令行赋予了用户完全的控制权,但这也意味着可能因误操作破坏 RAID 集。为降低风险,可按以下步骤操作:
1. 充分了解命令 :在执行命令前,务必清楚该命令的功能和可能产生的影响。可以通过查阅文档或使用 man 命令查看命令的详细说明。
2. 先模拟操作 :对于一些关键操作,如使用 killall 命令时,可先使用 -s 参数模拟操作,查看会影响哪些进程,确认无误后再正式执行。
3. 及时备份数据 :在进行可能影响数据的操作前,如对 RAID 集进行重建或修复,先备份重要数据,以防意外发生。

5.2 命令行与 Web 界面的同步问题

使用命令行操作时,可能会导致 Web 界面与服务器的当前配置不同步。例如,在 RAID 集修复过程中,使用命令行添加了新磁盘,Web 界面可能无法及时反映这一变化。解决此问题的方法如下:
1. 手动刷新 Web 界面 :在完成命令行操作后,尝试刷新 Web 界面,看是否能同步最新配置。
2. 重新加载配置 :某些情况下,可尝试在 Web 界面中保存并重启相关服务,促使其重新加载服务器的当前配置。
3. 记录操作 :在使用命令行进行重要操作时,详细记录操作步骤和结果,以便在出现同步问题时进行排查和手动调整。

6. 实际应用案例分析
6.1 进程监控与服务管理案例

假设服务器响应缓慢,怀疑某个进程占用过多资源。可按以下步骤进行排查和处理:
1. 使用 top 命令监控进程

freenas:~# top

通过 top 命令查看当前使用 CPU 资源最多的进程,找到可能导致问题的进程。
2. 使用 ps grep 命令定位具体进程
假设 top 显示某个进程可能有问题,但不清楚具体名称,可使用 ps aux | grep 命令进行精确查找。例如,怀疑是 FTP 相关进程:

freenas:~# ps aux | grep ftp
  1. 停止或重启服务
    如果确定是某个服务的进程出现问题,可使用命令行停止或重启该服务。例如,停止 FTP 服务:
freenas:~# /etc/rc.d/pureftpd stop

若需要重启服务:

freenas:~# /etc/rc.d/pureftpd restart
6.2 RAID 集故障修复案例

假设 RAID 5 阵列中的一个磁盘出现故障,需要进行修复。操作步骤如下:
1. 确认故障磁盘

freenas:~# graid5 status

通过 graid5 status 命令查看 RAID 5 阵列的状态,确定故障磁盘。
2. 更换故障磁盘
在物理上更换故障磁盘。
3. 将新磁盘加入阵列

freenas:~# graid5 insert myraid5 da0

使用 graid5 insert 命令将新磁盘加入 RAID 5 阵列。
4. 监控重建过程

freenas:~# graid5 status

定期使用 graid5 status 命令监控阵列的重建进度,直到状态变为 COMPLETE

7. 总结与建议
7.1 总结

FreeBSD 命令行工具为 FreeNAS 服务器的管理提供了强大而灵活的手段。通过 mount df du 等命令可监控磁盘挂载和空间使用情况; ps top 命令可监控进程状态;使用 /etc/rc.d 目录下的脚本可启动、停止和重启服务; kill killall 命令可终止进程;不同的 RAID 管理工具可对 RAID 集进行操作。同时,了解 FreeNAS 服务器的文件存储位置有助于更好地管理系统。

7.2 建议
  • 新手入门 :对于新手来说,可先从简单的监控命令开始学习,如 mount df 等,熟悉命令行的基本操作。在进行关键操作前,先在测试环境中进行练习。
  • 定期维护 :定期使用命令行工具对服务器进行监控和维护,如检查磁盘空间、进程状态等,及时发现并解决潜在问题。
  • 持续学习 :FreeBSD 命令行工具功能丰富,不断学习新的命令和技巧,可提高服务器管理的效率和质量。
8. 流程图总结
graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px

    A([开始]):::startend --> B{选择操作类型}:::decision
    B -->|磁盘监控| C(使用 mount、df、du 命令):::process
    B -->|进程监控| D(使用 ps、top 命令):::process
    B -->|服务管理| E(使用 /etc/rc.d 目录脚本):::process
    B -->|进程终止| F(使用 kill、killall 命令):::process
    B -->|RAID 管理| G(使用 gconcat、gstripe、gmirror、graid5 工具):::process
    C --> H(查看磁盘挂载和空间使用情况):::process
    D --> I(查看进程状态和资源占用情况):::process
    E --> J(启动、停止、重启服务):::process
    F --> K(终止指定进程):::process
    G --> L(进行 RAID 集的创建、修复等操作):::process
    H --> M([结束]):::startend
    I --> M
    J --> M
    K --> M
    L --> M

此流程图总结了使用 FreeBSD 命令行工具对 FreeNAS 服务器进行管理的主要操作流程,涵盖了磁盘监控、进程监控、服务管理、进程终止和 RAID 管理等方面。通过这个流程图,可清晰地了解不同操作的选择和执行步骤。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值