「Linux」- 通过 WPA Supplicant 连接无线热点

WPA Supplicant是什么?
WPA Supplicant是一个软件包,包含了一系列用于连接Wi-Fi以及管理这些连接的工具。
wpa_supplicant是支持WPA和WPA2(IEEE 802.11i/RSN)的Linux,BSD,Mac OS X和Windows的WPA请求者(WPA Supplicant)。它适用于台式机/笔记本电脑和嵌入式系统。WPA Supplicant是在客户端工作站中使用的IEEE 802.1X/WPA组件。它使用WPA身份验证器(WPA Authenticator)实现密钥协商,并控制WLAN驱动程序的漫游和IEEE 802.11身份验证/关联。
wpa_supplicant被设计成一个在后台运行的“守护程序”程序,并作为控制无线连接的后端组件。wpa_supplicant支持单独的前端程序,wpa_supplicant包含基于文本的前端程序(wpa_cli)和一个GUI管理程序(wpa_gui)。
wpa_supplicant使用灵活的构建配置,可用于选择包含哪些功能。这允许最小的代码大小(对于WPA/WPA2-Personal来说大约50kB的二进制代码;对于WPA/WPA2-Enterprise来说从没有调试代码到全功能有调试代码,大约130kB到450kB;这些示例文件大小来自构建x86目标文件时的大小)。
系统环境:Debian 使用的WPA Supplicant版本: 所使用的WPA Supplicant的安装方式:apt-get install wpasupplicant
为了连接到加密的无线网络,第一步是让wpa_supplicant从WPA Authenticator获取身份认证。为了得到身份认证,必须配置wpa_supplicant,以便能够向WPA Authenticator提交正确的凭证信息。
一旦认证成功,就可以像往常一样获得IP地址、访问网络。
方法一、使用wpa_cli工具
使用wpa_cli(用于配置wpa_supplicant的命令行交互工具)。这种连接方法允许扫描可用的网络。有关wpa_cli的详细信息,请参阅wpa_cli(8)。
创建wpa_supplicant的配置文件
为了使用wpa_cli,必须为wpa_supplicant指定一个要控制的网卡接口,并且必须给它更新配置的权限。创建/etc/wpa_supplicant/wpa_supplicant.conf配置文
件,内容如下:

ctrl_interface=/run/wpa_supplicant
update_config=1

启动wpa_supplicant服务
然后,启动wpa_sup[……]

READ MORE

「Linux」- 网络配置,通过配置文件(持久配置)

[……]

READ MORE

「Linux」- 通过配置文件,为网络接口配置地址(Ubuntu,Debian,CentOS)

on Debian 11
How to set up static IP address on Debian Linux 10/11 – nixCraft NetworkConfiguration – Debian Wiki

# vim /etc/network/interfaces

auto enp0s5
iface enp0s5 inet static
address 192.168.2.236
netmask 255.255.255.0
gateway 192.168.2.254
dns-domain sweet.home
dns-nameservers 192.168.2.254

# ifup enp7s0

// 在 Debian 11 中,默认无法使用该服务
# systemctl restart networking.service

on Ubuntu 16.04 TLS
Static IP Configuration on Ubuntu 16.04 | Snel.com

# vim /etc/network/interfaces.d/ens9f0
auto ens9f0
iface ens9f0 inet static
address 192.168.10.254
netmask 255.255.255.0
gateway 192.168.10.1
dns-nameservers 223.6.6.6 223.5.5.5

# systemctl restart networking.service

on CentOS 6.x
Create Multiple IP Addresses to One Single Network Interface Configure CentOS 6 Network Settings – Serverlab
在不同发行版中,网络配置方法存在很大差异。在相同发行版中,配置方法是类似的。
该部分将记录:如何在 CentOS 6 中配置网络,包括配置静态地址、动态获取地址(DHCP)、分配多个网络地址。
注意事项: 1)在 CentOS 6.x 中,Network Manager 还未成熟,存在部分问题,因此我们不使用 NetworkManager 进行配置。 2)这里我们只演示保证网络可用的最小配置,并不包含高级复杂参数。 3)关于所有选项及其含义,参考 11.2. INTERFACE CONFIGURATION FILES 文档。(未在 man 中找到说明)
方法一、终端图形界面(推荐)
修改配置文件可能会带来其他错误,建议使用系统提供的工具[……]

READ MORE

「LINUX」- 通过配置(持久化),修改网卡的 MAC 地址

Debian/Ubuntu
Changing Your MAC Address/Linux
需要修改 /etc/network/interfaces 文件,在对应的 iface 部分中加入某些内容:

iface eth0 inet static
address 172.16.4.1
netmask 255.255.255.0
hwaddress ether 02:01:02:03:04:08

上面的黑色加粗的字体是需要加入的内容。[……]

READ MORE

「Linux」- 通过 strongSwan 与 xl2tpd 连接 L2TP over IPSec 服务

第一步、安装软件包

#!/bin/bash

apt-get -y install strongswan xl2tpd

第二步、修改配置文件
定义环境变量

#!/bin/bash

VPN_SERVER_IP=’your_vpn_server_ip’
VPN_IPSEC_PSK=’your_ipsec_pre_shared_key’
VPN_USER=’your_vpn_username’
VPN_PASSWORD=’your_vpn_password’

设置IPSec参数

#!/bin/bash

cat > /etc/ipsec.conf <<EOF
# ipsec.conf – strongSwan IPsec configuration file

# basic configuration

config setup
# strictcrlpolicy=yes
# uniqueids = no

# Add connections here.

# Sample VPN connections

conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev1
authby=secret
ike=aes128-sha1-modp1024,3des-sha1-modp1024!
esp=aes128-sha1-modp1024,3des-sha1-modp1024!

conn myvpn
keyexchange=ikev1
left=%defaultroute
auto=add
authby=secret
type=transport
leftprotoport=17/1701
rightprotoport=17/1701
right=$VPN_SERVER_IP
EOF

cat > /etc/ipsec.secrets <<EOF
: PSK “$VPN_IPSEC_PSK”
EOF

chmod 600 /etc/ipsec.secrets

# For CentOS/RHEL & Fedora ONLY
mv /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.old 2>/dev/null
mv /etc/strongswan/ipsec.secrets /etc/strongswan/ipsec.secrets.old 2>/dev/null
ln -s /etc/ipsec.con[……]

READ MORE

「Linux」- 通过 NetworkManager 连接 Wi-Fi 热点

问题描述
我们的系统是 CentOS 7.5,最小化安装的,所以没有图形化界面,没有办法通过网线接入路由设备,要联网只能接入无线热点。
连接无线热点可以使用WAP Supplicant工具,也可以使用NetworkManager工具,还有一些其他的工具。
本文主要介绍NetworkManager来连接无线热点的方法。之所以使用它,是因为NetworkManager管理网络及其方便。
解决方案
#1 安装「NetworkManager-wifi」插件
如果设备无法连接网络,则无法安装插件,方法如下: 1)在设备上使用WPA Supplicant工具包先连接到无线。 2)把设备接到笔记本,然后笔记本的无线和有线桥接,但是STATION MODE下的无线网卡无法桥接。 3)下载离线包,复制到设置上使用RPM手动安装。 4)可能开有其他的方法……
很显然(1),对于我们来说,是最便捷的。所以,我们先使用wpa_supplicant(8)进行无线连接,这里不展开介绍,参考 Wi-Fi, with WPA Supplicant 笔记。注意,使用wpa_supplicant(8)只是临时连接无线热点,“临时”不是不能连接热点,因为它不太适用于网络的管理,在管理方面不如 NetworkManager 灵活。所以即使连接上了网络,也只是临时使用以下,最终还是使用NetworkManager进行连接。
然后,执行yum install -y NetworkManager-wifi来安装插件。实际上我们执行了yum install -y NetworkManager*来安装了所有的插件,以防还需要其他的插件或进行其他的网络配置。
重启NetworkManager服务来加载插件:systemctl restart NetworkManager.service
如果不安装该插件,控制台会输出Error: no device found for connection ‘wlan0’。执行journactl -f -u NetworkManager命令查看日志,会发现错误(wlan0): ‘wifi’ plugin not available; creating generic device,即缺少了NetworkManager-wifi插件。
#2 查看设备状态
执行命令nmcli device查看设备状态。在正常情况下,看到的输出如下:

# nmcli device
DEVICE TYPE STATE CONNECTION
wlan0 wifi disconnected —
lo loopback unmanaged –[……]

READ MORE

「DBMS」- 数据库管理系统

问题描述
数据库(Database),是指保存有组织的数据的容器(通常是单个文件或多个文件);
数据库管理系统(DBMS),就是我们常说的数据库软件,诸如 MySQL、PostgreSQL 等;
该笔记将记录:我们在工作中接触到的数据库管理系统,以及相关问题的解决办法;
解决方案
数据库排名:DB-Engines – Knowledge Base of Relational and NoSQL Database Management Systems[……]

READ MORE

「DBMS」- MongoDB(基于分布式文件存储的数据库)

MongoDB 是一个基于分布式文件存储的数据库。由 C++语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案;
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的;
特性特征
它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型; Mongo 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能, 而且还支持对数据建立索引;
应用场景
1)网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性; 2)缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载; 3)高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含对 MapReduce 引擎的内置支持;
不适用的场景如下: 1)要求高度事务性的系统; 2)传统的商业智能应用; 3)复杂的跨文档(表)级联查询;
参考文献
mongodb_百度百科[……]

READ MORE

「HIGH-LEVEL-PROGRAMMING-LANGUAGES」- 高级编程语言

问题描述
计算机是个高级工具,能够完成诸多复杂的工作任务;
我们希望减轻工作负担,让计算机完成更多的工作;
解决方案
而编程语言是我们控制计算机的工具,所以我们需要学习编程语言,来控制计算机完成特定工作任务;[……]

READ MORE

「ANDROID」- 技术整理

FIXME Android,整理笔记文章[……]

READ MORE

「HTML」- HyperText Markup Language

问题描述
该笔记将记录:与 HTML 编程相关的语言及技术。
附加说明
由于我们并非前端技术爱好者,所以本部分内容多半只是简单整理实现某些功能的代码片段,不会涉及任何高深的技术。这些代码片段也多半采集于网络,当让也会注明出处,以及它们所解决的问题。[……]

READ MORE

「PHP」- Hypertext Preprocessor

earlier called, Personal Home Page
Books
《Extending and Embedding PHP》[……]

READ MORE

「DEVOPS」- 高速交付的方法

DevOps
Wikipedai/DevOps 整理了一份史上最全的DevOps工具链 DevOps 在公司项目中的实践落地
Continuous Delivery
持续交付(让机器完成更多工作)
参考文献
CI/CD持续集成/持续部署 敏捷开发[……]

READ MORE

「OBSERVABILITY」- 观测:监控、日志、告警

可观察性是衡量一个系统的内部状态可以从其外部输出的知识中推断出来的程度。在控制理论中,线性系统的可观察性和可控性是数学对偶。可观察性的概念是由匈牙利裔美国工程师 Rudolf E. Kálmán 为线性动力系统引入的。设计用于根据输出测量值估计系统状态的动态系统,称为 State Observer(状态观察器 或 系统的观察器);
可观测性有许多名称,如监测、审计、遥测、仪器。忽略这些细微差别,所有这些词本质上的意思都是一样的:度量您的基础设施、平台和应用程序,以了解它是如何运行的 —— 即通过收集系统指标信息,来了解系统的运行情况;
参考文献
Observability – Wikipedia 什么是可观测性_Spring_java_gg的博客-CSDN博客[……]

READ MORE

「Web Application server」

解决方案
Web Server
NGINX | High Performance Load Balancer, Web Server, & Reverse Proxy
traefik/traefik: The Cloud Native Application Proxy
Caddy – The Ultimate Server with Automatic HTTPS 集成自动证书获取,自动使用 Let’s Encrypt 获取证书来配置 HTTPS 访问。
Apache Tomcat® – Welcome!
squid : Optimising Web Delivery
Jexus – 强劲、坚固、免费、易用的国产 WEB 服务器系统
Welcome! – The Apache HTTP Server Project
Caucho – a web server and Java application server
WAMP, MAMP and LAMP Stack : Install LAMP – Linux, Apache, MySQL, PHP
相关书籍
《High Performance Web Sites》 http://shop.oreilly.com/product/9780596529307.do
《Even Faster Web Sites》 http://shop.oreilly.com/product/9780596522315.do
《High Performance Browser Networking》 http://shop.oreilly.com/product/0636920028048.do
《Web 性能测试实战》
参考文献
Resin (software) – Wikipedia[……]

READ MORE

「HUAWEI-VRP」- 配置 NTP 服务

作为 NTP Client 运行(同步时间)
前置条件: 1)确保网络设备能够访问 NTP Server;
为了让日志能够正常显示:

# 通过手动方式来修改时间;

<Huawei>clock timezone BJ add 08:00:00
<Huawei>clock datetime 10:20:29 2013-04-11

# 通过 NTP Server 自动同步系统时间;

[system-view] ntp-service unicast-server 10.0.0.1

# 查看当前系统时间

<Huawei>display clock

作为 NTP Server 运行

ntp-service enable

ntp-service autherication enable
ntp-service autherication-keyid 1 authentication-mode md5 Huawei@123

ntp-service refclock-master 1 # 配置层次

display ntp status

配置其他设备使用该服务:

ntp unicast-server X.X.X.X
ntp autherication enable
ntp autherication-keyid 1 authentication-mode md5 Huawei@123

display ntp status[……]

READ MORE

「PAC」- 代理自动配置

参考文献
Proxy auto-config – Wikipedia[……]

READ MORE

「KCP」- A Fast and Reliable ARQ Protocol

kcptun-android 用于Android的kcptun。
kcptun 基于kcp协议的简单快速的udp隧道。 Go实现。
参考文献
KCP – A Fast and Reliable ARQ Protocol Wikipedia/Automatic repeat request[……]

READ MORE

「Shadowsocks」- shadowsocks-manager

Shadowsocks的管理器工具,用于多用户和流量控制。
环境要求
NODEJS
Node.js 10.*
REDIS
Redis
MANAGER ADDRESS
同时「服务端」要监听「管理地址」:

#!/bin/sh

# 对于shadowsocks-python实现
ssserver -c /etc/shadowsocks.json –manager-address 127.0.0.1:6001 -d start

# 安装
安装方法
更多的安装方法参考官方「README.md」手册。

#!/bin/sh

################################################################################
# 这里,我们从GitHub下载源码,然后NPM安装:
################################################################################
git clone https://github.com/shadowsocks/shadowsocks-manager.git
cd shadowsocks-manager
npm install
npm rebuild

################################################################################
# 或者直接全局安装
################################################################################
npm i -g shadowsocks-manager –unsafe-perm

安装的可执行程序
ssmgr Shadowsocks Manager的主程序文件。
配置
工作原理
首先你要阅读「拓扑图」了解它的工作原理。了解了之后你才能明白如何进行配置:

# 第一步 #
假设有N台服务器,那么每台服务器上均需安装「shadowsocks」并启动「管理地址」的监听。
然后,并在每台服务器上启动一个「ssmgr」进程,以「type: s」的模式运行,负责通过「管理地址」来管理「shadowsocks」服务。

# 第二步 #
启动一个「ssmgr」进程,以「type: m」的模式运行。负责与模式为「type: s」的「ssmgr」进程通讯。
(!猜测!因为「shadowsocks」的管理功能不支持认证,所以要[……]

READ MORE

「TP-Link」- TL-WVR300

TL-WVR300
TP-LINK/300M无线VPN路由器 TL-WVR300

参数信息
品牌:TP-LINK 型号:TL-WVR300 成色:全新 售后服务:全国联保 无线传输速度:108Mbps以上 网络标准:802.11b 802.11g 802.11a 颜色分类:深蓝色 毛重:1.8 套餐类型:标准套餐 有线传输率:百兆端口 无线传输速率:300Mbps USB接口数量:不支持 无线网络支持频率:2.4G 是否无线:无线 是否内置防火墙:是 是否支持VPN:支持 是否支持WDS:支持 是否支持WPS:不支持 是否可拆:可拆 包装体积:0.3[……]

READ MORE

「Switch」- TL-SG1024T

这是 V9.0 版本,三种工作模式:提供模式切换开关,支持“标准交换”、“VLAN隔离”和“网络克隆”三种工作模式,可优化支持安防监控、无盘启动及无线组网等多种应用场景。
我们使用的可能(毕竟是二手设备,我们也没有更多参考信息)是 V6.0 版本,仅有 网络克隆、标准交换、汇聚上联 三种模式。
汇聚上联
交换机的”汇聚上联模式”是端口汇聚吗
Q:交换机的”汇聚上联模式”是端口汇聚吗? A:不是,汇聚上联模式是产品型号以“T”或“DT”结尾的非网管交换机的一种工作模式。这类交换机壳体上有模式切换开关。汇聚上联模式下提供具有两个Uplink(上联)端口。Uplink端口用于连接上级交换机或服务器,Uplink端口关闭流控,其他端口协商开启流控,有效提高无盘启动速度,保障网游、视频流畅。端口汇聚是网管交换机的功能,是将交换机的多个物理端口汇聚为一个逻辑端口,从而实现端口速率叠加和冗余备份。通过以上对比,交换机的汇聚上联模式不是端口汇聚,汇聚上联模式下的Uplink口不能连接到同一个交换机或者服务器,否则会形成环路。[……]

READ MORE

「Router」- TL-WR842N V4.0

固件升级
固件下载:下载中心 标准版本:TL-WR842N V4.0_140528标准版[……]

READ MORE

「Storage」- 存储技术

问题描述
本部分内容与存储技术有关,比如 Ceph、HDFS、RAID、网络文件系统等等;
本部分不包含在操作系统维护中文件系统、坏块检测、磁盘分区等等内容;
该部分笔记是我们在学习相关存储知识、阅读相关文章报刊时所整理而得;[……]

READ MORE

「Storage」- 概念及术语

RADOS (Reliable Autonomic Distributed Object Store)
DRBD – Distributed Replicated Block Device
Wikipedia/DRBD How to Setup DRBD to Replicate Storage on Two CentOS 7 Servers
AFA,All Flash Array,全闪存阵列
What is All Flash Array (AFA) Storage? 百度百科/全闪存阵列
DFS, Distributed File Systems
DFS(Distributed File Systems,分布式文件系统)不共享对同一存储的块级访问,而是使用网络协议。这些通常被称为网络文件系统,尽管它们不是唯一使用网络发送数据的文件系统。DFS 可以根据访问列表或服务器和客户端上的功能来限制对文件系统的访问,具体取决于协议的设计方式。
根据 连接方式 分类:DAS,NAS,SAN
Wikipedia/Network-attached storage Storage Area Network (SAN) vs. Network Attached Storage (NAS) | IBM Comparing Storage Area Networks And Network Attached Storage What is a Storage Area Network? How to setup SAN Network-attached storage – Wikipedia
1)DAS – Direct-attached storage
2)NAS – Network-attached storage file-level protocols (NAS)
3)SAN – Storage area network block-level protocols
Object Storage
AWS S3 vs. OpenStack Swift vs. Alibaba OSS
Amazon S3 – Wikipedia Object storage – Wikipedia How to Utilize OpenStack Swift as an S3 Storage Target Object Storage Service (OSS)-alibabacloud
AWS S3,Amazon S3,Amazon Simple Storage Service,是由 AWS 提供的存储服务;
Swift,OpenStack Object Store,前身 Rackspac[……]

READ MORE

「HDD」- 硬盘驱动器(1956)

问题描述
这里的“硬盘驱动器”便指我们日常所说的“机械硬盘”;
该笔记将记录:与机械硬盘相关的内容,以及相关问题的解决办法;
解决方案
事实上,硬盘(Hard Disk)这个字是个“昵称”,就是在计算机中的“非介质插拔式永久性存储设备”,通常叫“硬盘”;
其以机械的方式运作,是计算机中速度最慢的设备;
研究对象
1)虽然现在固态硬盘(SSD)盛行,但是机械硬盘还没有退出历史舞台,依旧有学习的必要; 2)在固态硬盘的使用管理中,很多概念是从机械硬盘沿袭下来的,需要我们了解这些历史;
研究工具
Hard Disk Structure 整理磁盘的物理结构(我们需要关注的部分)
Block Addressing 关于数据是如何在磁盘中分布的、是如何写入的;
研究目标
我们不会学习硬盘相关的所有知识: 1)关于硬盘的知识,非常之多(计算机的任何方面,都有很多要学习知识),是学不完的; 2)学习太多与问题(需求)无关的知识,对我们并没有帮助(我们要学会筛选有用的知识);
所以,我们从遇到的问题及疑问出发,研究我们感兴趣的方向:性能优化相关
特性特征
虽然机械硬盘速度慢,还是有 SSD 比不上的优点: 1)单位成本低,容量大,速度尚可接受。在备份场景中,非常有效; 2)保存时间较长(至少要 10 年以上) 3)技术及产业成熟(超过 50 年),问题较少 4)相对于用户的操作(如打字及移动鼠标)来说,速度够用 5)传统硬盘为组件的商品也比较成熟,如磁盘阵列或工业用存储[……]

READ MORE

「HDD」- 概述介绍

平均寿命
机械硬盘是机械式移动,肯定会有老化、故障、发热等特定问题。机械硬盘有磁盘和控制器。除了控制器,磁盘出现问题的几率通常在 5 年内会大量发生,当然也有用 10 年的硬盘不坏的,但大部分人还是会将硬盘的数据备份出来。部分机械硬盘能够坚持使用 20 年都不坏。
MTBF,Mean time between failures,平均故障间隔时间。针对机械硬盘,一般 3-5 年;
读写速度
# 说法一: 读写速度跟硬盘单碟容量有关。也就是说容量越大,碟片越少,速度越快;
# 说法二: 硬盘的读写速度主要由转速决定的。如果笔记本硬盘 5400 转,台式机硬盘 7200 转,对应的硬盘的读写速度通常是:

5400 转的笔记本硬盘:50-90MB/s
7200 转的台式机硬盘:90-190MB/s

# 说法三: 机械硬盘的读写速度应该是差不多的。它不会像固态盘那样读取速度很快,而写入速度直接腰斩; 其实拿 hdtune 就可以测写入速度,但你需要把该硬盘的分区全部删掉; 我以前有块单碟 1TB 的希捷 7200 盘,测试初期持续读写速度最高 220m/s,然后一路走低,到最后读写速度只有 79m/s; 一般来说,单碟 7200 转的盘读写速度要比多碟 5400 转的盘要高很多,有些西部数据的绿盘,最高的读写速度只有 140m/s 左右;
# 说法四: 机械盘的写入速度和读取速度几乎是一样的 所以只要测个读取就够了(通常软件测写入时只能测试空白区域 所以数据会稍低些 正经的软件会要求你删除所有分区才给测 这样数据就差不多和读取完全一样了)。当然 叠瓦式的垃圾盘除外
# 说法五: PMR 技术的传统 HDD,不需要考虑是否满盘,外圈正常 200-260MB/S,内圈会掉到 90-120MB/S SMR 技术的辣鸡 HDD,读取正常,盘内有文件的话,写入很可能掉到 PMR 的一般
参考文献
硬盘读取与写入速度是多少 M 每秒 7200 转的机械硬盘,写入速度一般是多少?[……]

READ MORE

「HDD」- 概述原理

队列深度
相对于 CPU 来说,硬盘属于慢速设备,所有操作系统会给每个硬盘分配一个专门的队列用于缓冲 IO 请求。—— 该说法有待考究:磁盘本身是支持并行写入的。队列深度更象是操作系统特性,而非磁盘特性;
在某个时刻,有 N个inflight 的IO 请求,包括在队列中的 IO 请求、磁盘正在处理的 IO 请求。 N就是队列深度。
增加队列深度
加大硬盘队列深度就是让硬盘不断工作,减少硬盘的空闲时间。加大队列深度 →提高利用率 →获得 IOPS 和MBPS 峰值 →注意响应时间在可接受的范围内。
1)使用异步 IO ,同时发起多个 IO 请求,相当于队列中有多个 IO 请求。 2)多线程发起同步 IO 请求,相当于队列中有多个 IO 请求。 3)增大应用 IO 大小,到达底层之后,会变成多个 IO 请求,相当于队列中有多个 IO 请求队列深度增加了。
常见问题
Q:Queue Depth 决定速度? A:对磁盘的命令数量也是有重要意义的。而将多个命令批量运行,也是新一代硬盘的功能。当 Queue Depth 增加时,表示更大量文件的 访问或是多个用户对磁盘的访问;
Q:队列深度增加,但是磁盘的性能却下降? A:队列深度增加了, IO 在队列的等待时间也会增加,导致 IO 响应时间变大,这需要权衡。
磁盘缓存
Wikipedia/Disk buffer

#!/bin/sh

# 查看
hdparm -W /dev/sdxN

# 启用
hdparm -W1 /dev/sdxN

# 关闭
hdparm -W0 /dev/sdxN

注意:在部分磁盘中,当主机重启后,该配置会被重置。因此在配置后,可根据需要重启主机,以进行验证配置是否会被重置;
硬盘的工作方式
硬盘的工作方式如下: 1)收到 IO 请求,得到地址和数据大小。 2)移动磁头(寻址)。 3)找到相应的磁道(寻址)。 4)读取数据。 5)传输数据。
磁盘的随机 IO 服务时间 = 寻道时间 + 旋转时间 + 传输时间
对于 10000 转速的 SATA 硬盘来说,一般寻道时间是 7 ms ,旋转时间是 3 ms ,64KB 的传输时间是 0.8 ms ,则 SATA 硬盘每秒可以进行随机 IO 操作是 1000/ (7+3+0.8 )=93 。所以,我们估算SATA 硬盘 64KB 随机写的 IOPS 是93 。一般的硬盘厂商都会标明顺序读写的 MBPS (吞吐量)。
我们在列出 IOPS 时,需要说明 IO 大小、寻址空间、读写模式、顺序 /随机和队列深度。一般常用的 IO 大小是 4KB ,这是因为文件系统常用的块大小是 4KB 。
提高性能的方法
硬盘厂商提[……]

READ MORE

「HDD」- 概念术语、原理简述

磁盘结构
Hard Disk Structure
电磁原理
硬盘的存储原理基本上是磁化及取反过程

传统硬盘的原理,简单来说就利用电磁学理论,根据通过磁粉的电流,在布满磁粉的转盘介质上改变磁蕊的方向,而根据方向的不同生成 0 与 1 存储数据;
通过“电磁技术”,而非“电子技术”,已经是让性能降低的一个潜在因素了;
转盘及移动零件
利用电磁学,转盘及移动零件将磁蕊方向变化,需要一个磁头,而圆人盘介质则靠着同心圆转动方式,移到磁头下方,而磁头只会上下线性运动。两者的配合,就形成了固化位置数据的访问,这时圆盘和磁头都属于“机械式”的移动;
事实上,硬盘或光驱,是当前计算机设备中唯一剩下的机械式移动的设备了。与内存及 CPU 等设备比起来,速度非常慢;
磁头进行前后直线运动 磁盘进行转动运动[……]

READ MORE

「HDD」- 磁盘的物理结构

问题描述
我们为什么要整理这篇笔记呢?为了理解硬盘盘片的组成结构。在理解磁盘盘片结构后,有助于我们理解磁盘命令,如 fdisk(8)等,中使用的术语;有助于我们理解数据在磁盘中的分布方式;能够增强我们进行磁盘操作的自信心;理解在磁盘操作时发生的底层动作。所以,理解磁盘的物理结构,对日常工作是很有帮助的;
该部分笔记将整理:磁盘驱动器的物理结构,了解相关术语及概念;
解决方案

1)盘片(PLATTER):
2)磁头(HEAD):磁盘读 / 写磁头,用于读写数据“针头”。通常一个碟片有两个用于读取或写入数据的磁头:一个用于顶部,另一个用于相对侧;磁头值表示磁盘位置和所在面;
盘片的物理组成
该笔记将介绍:磁盘盘片结构,并简单介绍磁盘组成结构(我们的关注重点为磁盘盘片结构);
盘片(PLATTER)为圆形金属盘,安装在硬盘内部的主机电轴上。部分硬盘包含多个盘片,以在有限空间内提供更多数据存储;
盘片有由铝(或玻璃)基板做成的芯,覆有氧化铁或钴合金制成的薄层。在基板的两侧,通过特别的制造技术沉积很薄的涂层,这个薄涂层就是数据存储的地方,称为介质层。当磁介质应用到基板表层时,会涂有薄润滑的保护层,以保护介质层。这复杂的三层介质如下:
基板(底层材料)
基板(底层材料)用于形成磁盘的形状,也是介质层沉积的地方,除此之外无特殊用途。通常使用铝合金作为盘片的基板,在早期很成功。随着技术进步,针头与盘片距离缩短,盘片转速更高,因此需要新材料来替代铝合金。玻璃盘片用来替代铝制盘片,它们更加稳定、质量更好、盘片更薄;
介质层
基板用于形成磁盘的形状,而介质层则沉积在基板上。它是应用在基板表面的磁性材料薄涂层,也是数据保存的地方,其厚度仅壹英寸的百万分之几;
采用“特殊技术”将磁性材料沉积在基板上。基板两面都涂有该薄涂层,通常通过称为磁控溅射的真空蒸镀(我们也不懂,看着翻译的)。另种方法是电镀法,类似于用在电镀饰品中的过程;
注意,盘片的两面都涂有介质层,也就是说盘片的两面都可以存储数据。(注意,这点会影响我们对其他内容的理解)
保护层
在介质层上,涂有超薄、防护的、润滑的保护层。它用于保护磁盘免于由于意外磁头接触、“磁头碰撞”、异物进入磁盘而带来的损坏;
盘片的特定结构
为了维护有组织的盘片以及取回数据,盘片被组织成“特定结构”。这种“特定结构”不是盘片的物理组成,而是逻辑划分方法。这些特定结构包括轨道(Track)、扇区(Sector)、簇(Cluster);
扇区(Sector)
轨道被分割成数千个很小的单元,称为扇区(Sector)。在硬盘上,扇区是数据存储的基本单元,每个扇区可容纳数据超过 512-BYTE。少许附加字节用于控[……]

READ MORE

「HDD」- 块寻址(学习笔记)

早期的磁盘,通过 CHS 寻址。现在的磁盘,通过 LBA 寻址。
LBA – Logic Block Addressing
早期使用 LBA28 寻址,即使用 28 bits 表示逻辑扇区地址,范围 0x000_0000 – 0xFFF_FFFF,供给 2^28 扇区(512 * 2^28B = 128G)
后来推出 LBA48 寻址,可以表示 512 * 2^48 B 磁盘容量[……]

READ MORE