文章目录
本文参考《鸟哥的Linux私房菜》
http://linux.vbird.org/
uname
查看系统与核心相关信息(操作系统、CPU)
[root@localhost ~]# uname -a
Linux dm01 4.19.90-24.4.v2101.ky10.x86_64 #1 SMP Mon May 24 12:14:55 CST 2021 x86_64 x86_64 x86_64 GNU/Linux
值 | 含义 |
---|---|
Linux | 操作系统核心名称 |
dm01 | 主机名 |
4.19.90-24.4.v2101.ky10.x86_64 | 核心版本 |
Mon May 24 12:14:55 | 核心版本建立时间 |
x86_64 | 硬件平台为x86_64 |
查看操作系统发行版
[root@localhost ~]# find /etc -name *release*
/etc/kylin-release
[root@localhost ~]# cat /etc/kylin-release
Kylin Linux Advanced Server release V10 (Sword)
lscpu
显示cpu架构信息
[root@localhost ~]# lscpu
架构: x86_64
CPU 运行模式: 32-bit, 64-bit
字节序: Little Endian
Address sizes: 43 bits physical, 48 bits virtual
CPU: 4
在线 CPU 列表: 0-3
每个核的线程数: 1
每个座的核数: 1
座: 4
NUMA 节点: 1
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 158
型号名称: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
步进: 10
CPU MHz: 2591.998
BogoMIPS: 5183.99
CPU厂商:GenuineIntel
CPU核数:4
free -g
查看物理内存和swap的使用情况(包括操作系统使用的buffers和caches)
[dmdba@localhost ~]$ free -g
total used free shared buff/cache available
Mem: 2 2 0 0 0 0
Swap: 3 0 3
字段说明
total | used | free | shared | buff/cache | available | |
---|---|---|---|---|---|---|
Mem | 总内存 | 使用中的内存 | 未使用的内存 | 总为0 | buffers和cache的总和 | 可用内存 |
swap | 最好不超过total*20% |
计算公式
used = total - free - buffers - cache
字段具体含义
buffers: Memory used by kernel buffers
cache : Memory used by the page cache and slabs (Cached and Slab in /proc/meminfo)
available: 启动新应用的可以内存空间
扩展(buffer与cache)
- buffer
buffer是缓冲,内存与磁盘速度差别大,通过buffer这个概念解决此问题,加快磁盘写入的效率
将内存中的数据写入磁盘的过程,可以这么理解:
内存 >> buffer >> 磁盘 - cache
cache是缓存,cpu与内存的速度差别大,通过cache这个概念解决此问题,加快CPU处理速度
提前预判CPU会使用的指令,将其保存到cache中,这样CPU要使用时,可直接从cache中获取,过程可以这么理解:
内存(预判CPU要用的指令) >> cache >> CPU(真正要执行时从cache中获取)
以上为个人粗略理解,更详细介绍可阅读相关资料,或如下链接
- free命令中cached和buffers的区别
https://blog.csdn.net/qq_25518029/article/details/119927007- 缓冲区(buffer)与缓存(cache)
https://www.cnblogs.com/mlgjb/p/7991903.html
cat /etc/fstab
fstab - static information about the filesystems
记录文件系统的相关信息(静态)
一些与磁盘相关的命令(mount、dump、fsck),在开机时会顺序读取该文件的信息,完成挂载、备份、检查扇区等操作。
也就是说,若你希望操作系统启动时,自动做一些磁盘相关的操作时,可修改该文件的信息
[dmdba@localhost ~]$ cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Oct 11 18:33:45 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=a4f64246-522c-44a9-840f-a54b2048aa58 / xfs defaults 0 0
UUID=58fcfe75-f828-43b7-ada6-5a2a2e52cad8 swap swap defaults 0 0
fs_spec | fs_file | fs_vfstype | fs_mntops | fs_freq | fs_passno |
---|---|---|---|---|---|
块设备(如/dev/cdrom)或远程文件系统(如NFS)最好使用UUID来描述 | 文件系统的挂载点 | 文件系统 | mount的挂载选项 | 不做dump备份 | 不做fsck扇区检查 |
id
id - print real and effective user and group IDs
打印指定用户的用户和组信息
打印dmdba用户的uid、gid、groups
[dmdba@localhost ~]$ id dmdba
uid=1001(dmdba) gid=1001(dinstall) groups=1001(dinstall)
cat /etc/sysctl.conf
sysctl命令使用的参数文件,用于覆盖默认内核参数
显示所有的内核参数(的当前值)
sysctl -a
...
vm.user_reserve_kbytes = 87247
vm.vfs_cache_pressure = 100
vm.zone_reclaim_mode = 0
读取/etc/sysctl.conf的内核参数值(操作系统运行期间,修改内核参数值)
sysctl -p
cat /sys/block/sda/queue/scheduler
该文件用于设置块设备使用的I/O队列调度策略,会影响块设备上的所有文件系统。
需根据块设备的IO负载情况,选择合适的I/O队列调度策略。(最好通过测试,选出最优的调度策略)
优先了解以下两种I/O队列调度策略
- noop
- deadline
以上两种调度策略,此处暂时不做扩展,如需扩展,可阅读下面这篇文章
https://www.cloudbees.com/blog/linux-io-scheduler-tuning
修改磁盘的I/O队列调度策略(I/O Scheduler)
查看当前磁盘的I/O队列调度策略(调度策略为noop)
[root@localhost ~]# cat /sys/block/sda/queue/scheduler
[noop] deadline cfq
修改磁盘的I/O队列调度策略为deadline
[root@localhost ~]# echo deadline > /sys/block/sda/queue/scheduler
当前磁盘的I/O队列调度策略为deadline
[root@localhost ~]# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
lsblk
可视为【list block device】的缩写,列出所有块设备。(主要是看磁盘的划分)
对于块设备,可以将其切割成多个分区,每个分区继续划分给lvm用
disk >> part >> lvm
仅列出块设备本身,不列出块设备的分割信息。
[root@localhost ~]# lsblk -d
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
sr0 11:0 1 4G 0 rom /run/media/root/Kylin-Server-10
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 29G 0 part
├─klas-root 253:0 0 26G 0 lvm /
└─klas-swap 253:1 0 3G 0 lvm [SWAP]
sr0 11:0 1 4G 0 rom /run/media/root/Kylin-Server-10
查看文件系统UUID的两种方式
UUID(universally unique identifier)
法1:blkid
一行代表一个文件系统,主要列出了名称、UUID、文件系统类型
[root@localhost ~]# blkid
/dev/sr0: BLOCK_SIZE="2048" UUID="2021-08-09-17-54-20-00" LABEL="Kylin-Server-10" TYPE="iso9660"
/dev/sda1: UUID="11a2b6c9-6a8f-4158-8521-9994a2260742" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="f95ced62-01"
/dev/sda2: UUID="FYkNva-H1EL-0LUq-qUy6-l5G3-SRat-q1YNcn" TYPE="LVM2_member" PARTUUID="f95ced62-02"
/dev/mapper/klas-root: UUID="d77bdac0-eb85-4a96-886b-c305eefc6519" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/klas-swap: UUID="9f3f8759-95a7-4366-9c09-b36cec1eb5e5" TYPE="swap"
法2:lsblk -f
[root@localhost ~]# lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda
├─sda1 xfs 11a2b6c9-6a8f-4158-8521-9994a2260742 803.1M 21% /boot
└─sda2 LVM2_member LVM2 001 FYkNva-H1EL-0LUq-qUy6-l5G3-SRat-q1YNcn
├─klas-root xfs d77bdac0-eb85-4a96-886b-c305eefc6519 7.8G 70% /
└─klas-swap swap 1 9f3f8759-95a7-4366-9c09-b36cec1eb5e5 [SWAP]
sr0 iso9660 Joliet Exten Kylin-Server-10 2021-08-09-17-54-20-00 0 100% /run/media/root/Kylin-Server
I/O设备
可以与计算机进行数据传输的硬件
I/O设备分类
- 块设备(block device)
又称为外部存储器(如硬盘、软盘、光盘),用于长期保存数据,以块为单位进行传输。(块常见尺寸为) - 字符设备
I/O传输过程中以字符为单位进行传输的设备(如键盘、鼠标、打印机)
firewall-cmd
管理防火墙配置的命令
防火墙配置分为两类
- 运行时配置(内存中)
修改当前内存的防火墙配置,立即生效,重启防火墙失效 - 永久配置(磁盘中)
修改配置文件里的防火墙配置,当前不生效,重启防火墙生效
修改防火墙配置时,默认为运行时配置,永久配置需添加参数 --permanent
开放防火墙5236端口
查看已开放的端口
firewall-cmd --list-ports
开放端口,域为public,开放端口5236(协议为tcp),永久配置(重启防火墙生效)
firewall-cmd --zone=public --add-port=5236/tcp --permanent
重启防火墙
systemctl reload firewalld
检查5236端口是否开放
firewall-cmd --query-port=5236/tcp
查看所有域的相关信息
firewall-cmd --list-all-zones
查看默认的域(zone)
[root@dm01 ~]# firewall-cmd --get-default-zone
public
df -h
查看文件系统信息
注意1:留意挂载点的可用空间和已用%,避免磁盘空间不足导致的问题(无法写入)
注意2:可使用df -i 查看可用的inode数量,文件小而多的话inode会很大,也会导致挂载点无法写入
[root@dm01 block]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.5G 4.0K 1.5G 1% /dev/shm
tmpfs 1.5G 9.6M 1.5G 1% /run
tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/mapper/klas-root 26G 26G 375M 99% /
tmpfs 1.5G 40K 1.5G 1% /tmp
/dev/sda1 1014M 211M 804M 21% /boot
tmpfs 289M 40K 289M 1% /run/user/0
/dev/sr0 4.1G 4.1G 0 100% /run/media/root/Kylin-Server-10
主题:理解inode
参考:https://www.cnblogs.com/xiexj/articles/7214502.html
inode、硬链接、软链接
/etc/security/limits.conf
为防止用户浪费资源,增强操作系统的资源控制,提高操作系统稳定性,可使用此文件对用户进行资源限制(如最大文件数,最大线程,最大内存等资源使用量)
domain | type | item | value |
---|---|---|---|
用户名/组名 | 限制类型 | 资源 | 阈值 |
部署DM数据库时,可参考如下资源配置
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
资源解释:
nice - max nice priority allowed to raise to values: [-20, 19]
as - address space limit (KB)
fsize - maximum filesize (KB)
nproc - max number of processes
nofile - max number of open file descriptors
core - limits the core file size (KB)
data - max data size (KB)
与该文件有关的命令:ulimit
参数详细介绍(待补充)
nice 进程优先级,取值范围为[-20, 19],数值越小优先级越高
nofile 用户能打开的文件描述符的最大数量
nproc 用户能打开的最大进程数
参数实验(待补充)
dd
复制文件,依照指定操作数转换并格式化。
dd可以读取/写入扇区的内容
可使用dd命令,测试磁盘读写速度(注:此处只是粗略测试磁盘最大读写性能,因为读和写都是连续的)
切换到需要测试的磁盘
1. 测试磁盘连续写速度
dd if=/dev/zero of=test bs=8k count=4k oflag=dsync
2. 测试磁盘连续读速度
dd if=test of=/dev/null bs=8k count=4k oflag=dsync
测试完记得删掉test文件,释放空间
说明:
if为inputfile,of为outfile,bs为数据块,count为数据块的个数,oflag=dsync每一次写都是物理写
/dev/zero设备不断将0输出到test文件中,输出的数据块大小为8k,共输出4k个数据块,使用同步I/O存取模式
/dev/zero 可以不断输出0的设备
/dev/null 可以不断写入数据的设备
磁盘性能指标
iops - (Input/Output Operations Per Second)
还能使用dd,重新分配文件系统
例如,若/dev/sda1这个文件系统有100G,挂载在/data目录下,若实际使用情况只有10G,如何利用剩余90G的空间?
cd /data
dd if=/dev/zero of=test bs=8k count=100k oflag=dsync
ll -h /data/test
blkid /data/test
mkfs.xfs -f /date/test
mount -o loop /date/test /arch
df -h /arch
iostat(待补充)
fio
【1. fio下载】
途径1:https://brick.kernel.dk/snaps/
途径2:http://freecode.com/projects/fio
【2. fio安装】
# tar -zxvf fio-3.28.tar.gz
cd fio-3.28/
./config
make
make install
注意:
编译与gcc版本挂钩,新的fio要用新的gcc
rpm -qa|grep gcc
gcc-4.8.5-16.el7.x86_64
我测试机的gcc版本较旧,故使用的fio为fio-2.2.5.tar.gz
【3. 测试磁盘】
[root@localhost ~]# fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=16k -size=5G -numjobs=32 -runtime=10 -group_reporting -name=mytest
mytest: (g=0): rw=randrw, bs=16K-16K/16K-16K/16K-16K, ioengine=psync, iodepth=1
...
fio-2.2.5
Starting 32 threads
Jobs: 6 (f=6): [m(1),E(7),m(2),E(1),m(2),E(11),_(1),E(4),m(1),E(2)] [55.0% done] [2400KB/2352KB/0KB /s] [150/147/0 iops] [eta 00m:09s]
mytest: (groupid=0, jobs=32): err= 0: pid=3490: Thu Nov 25 19:37:26 2021
read : io=23984KB, bw=2277.1KB/s, iops=142, runt= 10529msec
clat (usec): min=33, max=1123.5K, avg=215788.57, stdev=202708.12
lat (usec): min=33, max=1123.5K, avg=215788.85, stdev=202708.09
clat percentiles (usec):
| 1.00th=[ 73], 5.00th=[ 159], 10.00th=[ 700], 20.00th=[28544],
| 30.00th=[60160], 40.00th=[105984], 50.00th=[166912], 60.00th=[240640],
| 70.00th=[301056], 80.00th=[370688], 90.00th=[493568], 95.00th=[602112],
| 99.00th=[905216], 99.50th=[937984], 99.90th=[1073152], 99.95th=[1122304],
| 99.99th=[1122304]
bw (KB /s): min= 15, max= 268, per=3.32%, avg=75.69, stdev=42.42
write: io=24752KB, bw=2350.9KB/s, iops=146, runt= 10529msec
clat (usec): min=94, max=492896, avg=3548.61, stdev=22553.55
lat (usec): min=94, max=492896, avg=3549.16, stdev=22553.53
clat percentiles (usec):
| 1.00th=[ 121], 5.00th=[ 153], 10.00th=[ 179], 20.00th=[ 217],
| 30.00th=[ 247], 40.00th=[ 270], 50.00th=[ 306], 60.00th=[ 378],
| 70.00th=[ 780], 80.00th=[ 1288], 90.00th=[ 2672], 95.00th=[10560],
| 99.00th=[41216], 99.50th=[142336], 99.90th=[296960], 99.95th=[493568],
| 99.99th=[493568]
bw (KB /s): min= 15, max= 348, per=4.28%, avg=100.54, stdev=59.73
lat (usec) : 50=0.16%, 100=1.02%, 250=17.96%, 500=18.09%, 750=3.05%
lat (usec) : 1000=3.74%
lat (msec) : 2=5.61%, 4=3.15%, 10=1.58%, 20=2.76%, 50=6.73%
lat (msec) : 100=5.45%, 250=11.82%, 500=14.15%, 750=3.78%, 1000=0.85%
lat (msec) : 2000=0.10%
cpu : usr=0.00%, sys=0.56%, ctx=3058, majf=0, minf=10
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 : total=r=1499/w=1547/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
READ: io=23984KB, aggrb=2277KB/s, minb=2277KB/s, maxb=2277KB/s, mint=10529msec, maxt=10529msec
WRITE: io=24752KB, aggrb=2350KB/s, minb=2350KB/s, maxb=2350KB/s, mint=10529msec, maxt=10529msec
Disk stats (read/write):
sda: ios=1558/1560, merge=0/2, ticks=319851/4941, in_queue=324771, util=97.96%
注意:
需要关注读写的iops,即每秒能读写多少次
参考:
Fio的安装与使用
https://blog.csdn.net/FZeroTHero/article/details/95662606
安装fio命令linux,在Linux中安装和使用Fio来测评硬盘性能
https://blog.csdn.net/louisjh/article/details/78748063
scp
通过网络复制文件
可用来测网速(scp 一个文件到另一台服务器)
创建一个80M的文件
dd if=/dev/zero of=test bs=8k count=10k oflag=dsync
使用网络传输test文件,查看网速(要替换ip)
[root@localhost ~]# scp test root@127.0.0.1:/tmp/test
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:EIFnkmXkizIn7kbKKW2tjqX4DRTM6O6il+Pp4pvPJBo.
ECDSA key fingerprint is MD5:bd:8c:62:0e:e9:f3:06:7d:1f:32:cf:54:d0:5d:9b:59.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
root@127.0.0.1's password:
test 100% 80MB 54.1MB/s 00:01