标签归档:linux

linux中使用fio测试硬盘入写性成

fio可能需要安装

sudo apt install fio
或
sudo dnf install fio

检测命令:

cd <测试磁盘对应目录>
fio --name=seqwrite --rw=write --bs=1M --size=2G --direct=1 --iodepth=1

# 4K随机写入
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --direct=1 --sync=0 --iodepth=1 --numjobs=1 --runtime=60 --time_based --group_reporting

# 模拟真实数据库负载(高队列深度)
fio --name=randwrite --rw=randwrite --bs=4k --size=10G --direct=1 --iodepth=32 --numjobs=1 --runtime=60 --time_based --group_reporting

# 单线程、低队列深度(贴近桌面/轻负载)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --direct=1 --iodepth=1 --numjobs=1 --runtime=30 --time_based

结果示例:

seqwrite: (g=0): rw=write, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=psync, iodepth=1
fio-3.39
Starting 1 process
seqwrite: Laying out IO file (1 file / 2048MiB)

seqwrite: (groupid=0, jobs=1): err= 0: pid=179780: Sat Jan  3 14:52:33 2026
  write: IOPS=2506, BW=2507MiB/s (2628MB/s)(2048MiB/817msec); 0 zone resets
    clat (usec): min=334, max=3223, avg=386.08, stdev=189.18
     lat (usec): min=340, max=3229, avg=395.13, stdev=189.45
    clat percentiles (usec):
     |  1.00th=[  338],  5.00th=[  338], 10.00th=[  343], 20.00th=[  347],
     | 30.00th=[  351], 40.00th=[  351], 50.00th=[  351], 60.00th=[  355],
     | 70.00th=[  359], 80.00th=[  367], 90.00th=[  416], 95.00th=[  515],
     | 99.00th=[  848], 99.50th=[ 1909], 99.90th=[ 3130], 99.95th=[ 3195],
     | 99.99th=[ 3228]
   bw (  MiB/s): min= 2488, max= 2488, per=99.25%, avg=2488.00, stdev= 0.00, samples=1
   iops        : min= 2488, max= 2488, avg=2488.00, stdev= 0.00, samples=1
  lat (usec)   : 500=94.87%, 750=3.32%, 1000=1.03%
  lat (msec)   : 2=0.29%, 4=0.49%
  cpu          : usr=2.45%, sys=18.26%, ctx=2053, majf=0, minf=9
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=0,2048,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
  WRITE: bw=2507MiB/s (2628MB/s), 2507MiB/s-2507MiB/s (2628MB/s-2628MB/s), io=2048MiB (2147MB), run=817-817msec

Disk stats (read/write):
  nvme0n1: ios=0/12655, sectors=0/3084040, merge=0/54, ticks=0/2598, in_queue=2598, util=68.09%

Run status group 0 (all jobs) 可以看到 bw 参数。以下是常见硬盘类型在 4K 随机写入(典型 OLTP 场景) 下的 IOPS 等级与参考值(基于行业实测与厂商数据):

性能等级IOPS 范围(4K 随机写)对应存储介质典型场景
极差< 50 IOPS低速机械盘(如 5400 RPM HDD)、老旧/故障设备、严重拥塞的虚拟磁盘不适合数据库、系统盘
低劣50 – 150 IOPS普通桌面级 HDD(7200 RPM)基础文件存储,非关键业务
中等150 – 1,000 IOPS企业级 HDD(10K–15K RPM)、低端 SATA SSD轻量级虚拟机、日志盘、开发环境
良好1,000 – 10,000 IOPS主流 SATA SSD(如三星 870 EVO、Intel D3-S4510)中小型数据库、系统盘、通用服务器
优秀10,000 – 100,000 IOPS高端 SATA / PCIe 3.0 NVMe SSD(如 Samsung PM9A1、WD SN750)高并发数据库、虚拟化平台、容器节点
顶级> 100,000 IOPS高性能 NVMe SSD(如 Samsung PM1733、Intel Optane P5800X、PCIe 4.0/5.0 旗舰盘)核心交易系统、高频金融、AI 训练缓存

注:

  • 所有数值基于 队列深度 ≥ 16、4K 随机写、稳态(steady-state) 条件;
  • 实际 IOPS 受队列深度、读写比例、预处理(preconditioning)、SLC 缓存耗尽等因素显著影响;
  • NVMe 盘在高队列深度下可达 50万~200万+ IOPS(如企业级 U.2 或 EDSFF 形态)。

debian 13 Trixie KDE 如何启用日期时间自动同步

debian 13 (代号 Trixie) KDE 默认没有启用日期时间自动同步,KDE底层还是依赖系统服务,如 systemd-timesyncd

# 1. 安装 systemd-timesyncd
sudo apt update
sudo apt install systemd-timesyncd

# 2. 启用 NTP
sudo timedatectl set-ntp true

# 3. 检查状态
timedatectl status

如何判断一个进程是否运行在容器中

1、查看该进程的 PID

以 nginx 为例

# ss -ntpl | grep nginx
LISTEN     0      511          *:88                       *:*                   users:(("nginx",pid=28791,fd=8),("nginx",pid=28790,fd=8),("nginx",pid=28789,fd=8),("nginx",pid=28788,fd=8),("nginx",pid=28787,fd=8))
LISTEN     0      511          *:80                       *:*                   users:(("nginx",pid=28791,fd=7),("nginx",pid=28790,fd=7),("nginx",pid=28789,fd=7),("nginx",pid=28788,fd=7),("nginx",pid=28787,fd=7))

或通过 ps -aux ,第二列就是 PID

ps -aux | grep nginx
root     28787  0.0  0.0  10560  1804 ?        Ss   09:33   0:00 nginx: master process
100      28788  0.0  0.0  11076  2884 ?        S    09:33   0:00 nginx: worker process
100      28789  0.0  0.0  11024  2500 ?        S    09:33   0:00 nginx: worker process
100      28790  0.0  0.0  11056  2888 ?        S    09:33   0:00 nginx: worker process
100      28791  0.0  0.0  11024  2500 ?        S    09:33   0:00 nginx: worker process
root     31719  0.0  0.0 112812   976 pts/2    S+   09:59   0:00 grep --color=auto nginx

2、查看进程的 cgroup

cat /proc/<pid>/cgroup
# cat /proc/28791/cgroup                                                                                                                                                                               
11:perf_event:/docker/21d0cf703b4719cf1c86d1c0094773ff1c580e8fb039fc95b9021726dd2cb5c5
10:pids:/docker/21d0cf703b4719cf1c86d1c0094773ff1c580e8fb039fc95b9021726dd2cb5c5
9:freezer:/docker/21d0cf703b4719cf1c86d1c0094773ff1c580e8fb039fc95b9021726dd2cb5c5
8:memory:/docker/21d0cf703b4719cf1c86d1c0094773ff1c580e8fb039fc95b9021726dd2cb5c5
7:devices:/docker/21d0cf703b4719cf1c86d1c0094773ff1c580e8fb039fc95b9021726dd2cb5c5
6:cpuacct,cpu:/docker/21d0cf703b4719cf1c86d1c0094773ff1c580e8fb039fc95b9021726dd2cb5c5
5:hugetlb:/docker/21d0cf703b4719cf1c86d1c0094773ff1c580e8fb039fc95b9021726dd2cb5c5
4:net_prio,net_cls:/docker/21d0cf703b4719cf1c86d1c0094773ff1c580e8fb039fc95b9021726dd2cb5c5
3:blkio:/docker/21d0cf703b4719cf1c86d1c0094773ff1c580e8fb039fc95b9021726dd2cb5c5
2:cpuset:/docker/21d0cf703b4719cf1c86d1c0094773ff1c580e8fb039fc95b9021726dd2cb5c5
1:name=systemd:/docker/21d0cf703b4719cf1c86d1c0094773ff1c580e8fb039fc95b9021726dd2cb5c5

看到例如CPU、内存、磁盘都在 docker 中,因此此进程应该是运行在容器中。

3、确认容器服务

docker ps | grep <容器ID前4到10位>

# docker ps | grep 21d0c
21d0cf703b47   nginx   "tini entrypoint.sh"   32 minutes ago   Up 32 minutes      mynginx

云服务器禁用22端口并禁用root登录

1、添加sshd端口

编辑 /etc/ssh/sshd_config ,添加以下行:

Port 22
Port 2222

重启服务:

systemctl restart sshd

2、添加普通用户

useradd -m -s /bin/bash <user>
passwd <user> # 设置密码

允许无密切换 root

visudo

添加以下行:

<user>   ALL=(ALL)       NOPASSWD: ALL

3、禁用端口和root账号

注意:使用 ssh user@ip -p 2222 验证能否登录,使用 sudo su 切换到 root 账号,确保一切正常才能禁用!

编辑 /etc/ssh/sshd_config ,修改 PermitRootLogin yesPermitRootLogin no ,注释(或删除) Port 22

重启服务:

systemctl restart sshd

打印 apk 中的信息

前提是安装了 android studio,在 linux 中,使用以下命令:

~/Android/Sdk/build-tools/33.0.2/aapt dump <app.apk>

其中,33.0.2 要改成自己实际的版本。

linux 系统清理日志 /var/log/journal

1、用echo命令,将空字符串内容重定向到指定文件中

echo "" > system.journal

说明:此方法只会清空一次,一段时间后还要再次手动清空很麻烦,这里可以用以下命令让journalctl 自动维护空间

2、journalctl 命令自动维护文件大小

1)只保留近一周的日志

journalctl --vacuum-time=1w

2)只保留500MB的日志

journalctl --vacuum-size=500M

3)直接删除 /var/log/journal/ 目录下的日志文件

rm -rf /var/log/journal/<folder>

Rancher 部署流程

基本配置

硬件资源

  • Rancher 2v6G
  • Worker 2v4G

至少两台服务器,1台 Rancher 和 1台 Workder,条件允许 Worker 应该多于1台。

安装 centos7

两台服务器上的统一配置

基础配置

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
systemctl disable --now firewalld

安装 docker

curl -fSL# https://get.docker.com | bash -s docker --mirror Aliyun
yum install -y -q docker-compose
systemctl enable --now docker

重启服务器。

Rancher 部署

设置计算机名:

hostnamectl set-hostname rancher

添加文件 /home/docker/rancher/docker-compose.yml

version: '3.5'
services:
  rancher:
    image: rancher/rancher:v2.7-head
    container_name: rancher
    restart: unless-stopped
    privileged: true
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./rancher:/var/lib/rancher

启动服务:

docker-compose up -d

登录及首次配置

浏览器打开 rancher 的 IP,等待/刷新,进入欢迎界面。

欢迎界面左下角切换中文语言。

按照欢迎界面的提示找到登录密码并登录。

设置新密码,和服务器 URL,不要允许统计信息。

Worker 部署

导航选择「用户&认证」,「创建」,添加新用户 test。

导航选择「集群管理」,「创建」,选择「使用现有节点并使用 RKE 创建集群」-「自定义」,「集群名称」按需填写,「Member Roles」(成员角色)添加用户「test」,角色「Owner」,「下一步」。

主机的角色选择所有角色,在 RKE Master 粘贴脚本执行。

主机的角色选择 Worker 角色,在 RKE Node1 粘贴脚本执行。

导航第一个菜单选择 test 切换用户,等待部署完成。

linux 命令行使用 wifi

命令都可简写,例如:nmcli device status 可以简写成 nmcli d s

网卡状态

$ nmcli device status
DEVICE             TYPE      STATE         CONNECTION 
enp0s3             ethernet  connected     enp0s3     
wlp0s11u1          wifi      disconnected  --         
p2p-dev-wlp0s11u1  wifi-p2p  disconnected  --         
lo                 loopback  unmanaged     --

无线列表

$ nmcli -p device wifi list [ifname wlan0]
==============================
  Wi-Fi scan list (wlp0s11u1)
==============================
IN-USE  SSID                        MODE   CHAN  RATE        SIGNAL  BARS  SECURITY  
--------------------------------------------------------------------------------------------------------------
        ChinaNet-vh4h               Infra  6     130 Mbit/s  84      ▂▄▆█  WPA1 WPA2 
        ChinaNet-hxeh               Infra  8     130 Mbit/s  84      ▂▄▆█  WPA1      
        kefu                        Infra  1     135 Mbit/s  74      ▂▄▆_  WPA1 WPA2 
        TP-LINK_chen                Infra  6     405 Mbit/s  74      ▂▄▆_  WPA1 WPA2

连接网络

$ sudo nmcli -w 10 device wifi connect <SSID>  password <PASSWORD>

断开网络

$ sudo nmcli device disconnect

linux 中压缩/解压 7z 文件

安装

# centos7
yum install -y p7zip
#ubuntu
apt-get install -y p7zip

压缩

7za a zipfile.7z /path/to/file_or_folder

解压

7za x zipfile.7z [-o/path/to/folder]

o参数用于指定解压目录,-o 之后没有空格