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
-
停止或重启服务
:
如果确定是某个服务的进程出现问题,可使用命令行停止或重启该服务。例如,停止 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 管理等方面。通过这个流程图,可清晰地了解不同操作的选择和执行步骤。
超级会员免费看
735

被折叠的 条评论
为什么被折叠?



