问题描述
为了进行某些操作,我们需要查看所有挂载NFS服务的客户端。
解决办法
不建议使用 showmount -a 命令,因为结果并不可靠。
使用 netstat 命令,查看已建立的连接,能够得到准确结果:
netstat -an | grep 2049
参考文献
How to get the list of clients connected to an NFS server within a local network?[……]
问题描述
为了进行某些操作,我们需要查看所有挂载NFS服务的客户端。
解决办法
不建议使用 showmount -a 命令,因为结果并不可靠。
使用 netstat 命令,查看已建立的连接,能够得到准确结果:
netstat -an | grep 2049
参考文献
How to get the list of clients connected to an NFS server within a local network?[……]
问题描述
该笔记将记录:在 Linux 或 Windows 中,如何挂载远程的 NFS 系统,以及常见问题处理。
解决方案
在 Linux 中
安装 NFS 客户端命令:
# 在 Debain 中
apt-get install -y nfs-common
# RHEL/CentOS
yum install -y nfs-utils.x86_64
查看 NFS 服务的导出目录:
showmount -e 192.168.3.4
# # 执行述命令后,会显示由 NFS 服务器服务导出的目录列表。比如:
# Export list for localhost:
# /media/nfs *
执行挂载命令,将 192.168.3.4 的 /srv/nfs/ 目录挂在到本地 /media/nfs/ 目录:
mkdir -pv /media/nfs
mount -t nfs 192.168.3.4:/media/nfs /media/nfs
mountpoint /media/nfs # /media/nfs is a mountpoint => 验证挂载成功
如果希望开机自动挂载,需要修改 /etc/fstab 配置文件:
192.168.3.4:/media/nfs /media/nfs nfs4 defaults 0 0
在 Windows 10 中
How to Mount an NFS Share Using a Windows 10 Machine
注意事项:Windows 10 家庭版不支持 NFS 功能,需要系统为 Windows 10 专业版(这需要更改产品密钥)。
第一步、安装 NFS 客户端 控制面板 => 程序 => 启用或关闭 Windows 功能 => NFS 服务 => NFS 客户端 => 确定
第二步、处理中文目录名乱码 控制面板 => 时钟和区域 => 区域 => 管理 => 更改系统区域设置(C)… => 区域设置 => Beta 版:使用 Unicode UTF-8 提供全球语言支持(U)
第三步、挂载 NFS 文件系统
# 通过命令行挂载
mount \\192.168.3.4\media\nfs z:
# 或者,在文件管理器中,使用 映射网络驱动器 功能进行挂载
…
# 卸载 NFS 文件系统
umount z:
参考文献
SettingUpNFSHowTo Network File System (NFS) Solving NFS Mount[……]
mount_nfs: can’t mount … from … onto …: Operation not permitted
问题描述:macOS High Sierra挂在NFS时返回的错误:
mount_nfs: can’t mount … from … onto …: Operation not permitted
系统环境:服务端为 NFSv4 运行于 Debian;客户端为 mount 运行与 macOS High Sierra;
问题原因:参考 Operation Not Permitted Mounting NFS Share on OS X Mountain Lion 文章。
解决方案:修改/etc/exports配置文件中的配置,对相应的导出目录加入insecure选项。类似下面的样子:
/srv/nfs *(rw,sync,no_root_squash,insecure)
Stale NFS file handle
fcntl — The fcntl and ioctl system calls — Python 3.9.5 documentation file locking – python lockf and flock behaviour – Stack Overflow
问题描述:在 NFS 上,如下代码打开文件锁,但产生该错误:
import fcntl
lock_f = open(“test.lock”, “r”)
fcntl.flock(lock_f, fcntl.LOCK_EX | fcntl.LOCK_NB)
原因分析:NFS Client 持有 NFS Server 已经无法识别的文件句柄。或许是 NFS Server 发生过重启,导致已打开的文件句柄丢失,而 NFS Client 又没有释放这些文件句柄。
解决方案:通过如下选项挂载 NFS:
-o vers=3,nolock,local_lock=all[……]
问题描述
在 NFS 中,当启动 rpc.statd 服务后,该服务产生 rpc.statd: get_nameinfo: failed to resolve address: Name or service not known 错误。
原因分析
在 NFS v3 中,如果要对 NFS 的文件加锁,则 rpc.statd 需要能够对客户端 IP-ADDR 进行DNS反向查找。
解决办法
在正常情况下,应该在DNS服务器中配置客户端IP地址的反向解析。 或在/etc/hosts中,添加“NFS客户端IP地址“与”对应其主机名“的条目。
参考文献
PSA: NFS Locking in RHEL6 Needs Reverse Lookup of NFS Server Host name resolution on an NFS server nfs-kernel-server: statd wont’t work without reverse lookups, mountd won’t allow ip-based exports with reverse lookups[……]
安装命令
CentOS release 6.5 (Final)
对象存储 OSS > 常用工具 > ossfs > 快速安装
yum install -y fuse-libs
rpm -ivh ‘http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos6.5_x86_64.rpm?spm=a2c4g.11186623.2.19.18b57358MXCfT1&file=ossfs_1.80.6_centos6.5_x86_64.rpm’
配置使用
挂载到本地目录:
# <EndPoint>:地域节点,参数需要正确指定,否则无法挂载。该参数需要到 OSS 对应 Bucket 中的【概览】中查询。
ossfs “<bucket_name>” “<local_path>” -ourl=<EndPoint>[……]
解决方案
# s3cmd –configure
…
# cat > ceph-bkt-foo_pub-read.json
{
“Version”:”2012-10-17″,
“Statement”:[
{
“Sid”:”AddPerm”,
“Effect”:”Allow”,
“Principal”: “*”,
“Action”:[“s3:GetObject”],
“Resource”:[“arn:aws:s3:::ceph-bkt-foo/*”]
}
]
}
# s3cmd setpolicy ceph-bkt-foo_pub-read.json s3://ceph-bkt-foo
# s3cmd delpolicy s3://ceph-bkt-foo
参考文献
python – Ceph radosgw – bucket policy – make all objects public-read by default – Stack Overflow Bucket Policies — Ceph Documentation[……]
问题描述
该笔记将记录:实现 SMB 协议的应用使用相关,比如搭建Samba服务、挂载CIFS共享。
CIFS and SMB
CIFS – Common Internet File System
SMB – Server Message Block
SMB其中的一个版本也被称为CIFS。
相关链接
CIFS vs SMB: What’s the Difference?
参考文献
Wikipedia/Server Message Block Microsoft SMB Protocol and CIFS Protocol Overview[……]
What is Samba?
Samba,用于与Windows互通的Unix/Linux的程序。
自1992年以来,Samba已经为所有使用SMB/CIFS协议的Client提供安全、稳定、快速的文件和打印服务,例如所有版本的DOS和Windows,OS/2,Linux等。
Samba是将Linux/Unix服务器和桌面无缝集成到Active Directory环境中的重要组件。它可以作为「域控器」或常规「域成员」。
Samba是一个软件包,为网络管理员提供灵活和自由的设置、配置、系统、设备的选择。正因为如此,Samba自1992年发布以来,每年都在增长。
相关资源
主页:https://www.samba.org Wiki:https://wiki.samba.org/index.php/Main_Page Documentation:https://www.samba.org/samba/docs Samba-4.4.5安装: http://www.linuxfromscratch.org/blfs/view/7.9/basicnet/samba.html
参考文献
Homepage: https://www.samba.org 鳥哥的Linux私房菜 / 第十六章、檔案伺服器之二: SAMBA 伺服器: http://linux.vbird.org/linux_server/0370samba.php[……]
从发行版的源中安装
#############################################
# Kali GNU/Linux Rolling
#############################################
#samba-common-bin: 包含了Client和Server都用用到的公共文件。
apt-get install samba-common-bin
# Server程序安装
apt-get install samba
# Client程序安装
apt-get install smbclient
# 注册表查看和操作工具
apt-get install registry-tools
# 安装用于解析Windows NT Server的用户和组信息的服务
apt-get install winbind
# IDL编译器安装
apt-get install libparse-pidl-perl
从源码中编译安装
编译及构建过程,参考 BLFS/Samba-4.4.5 页面
下面是一个简单的编译命令,具体参数根据自己的需要调整:
./configure \
–prefix=/usr/local/samba \
–enable-fhs \
–without-ad-dc \
–without-systemd \
–enable-selftest \
&& make
参考文献
BLFS/Samba-4.4.5 Samba/Installing Samba[……]
smb.conf
这是Samba的主要配置文件。
主要的设定项目分为: Server的相关设定:([global]),如工作群组、NetBIOS Name、密码等级等. 分享的目录及设备的相关设定:如实际目录、分享资源名称、权限等等两大部分。
查看Samba中的用户pdbedit -L -v或者samba-tool user list命令。 https://superuser.com/questions/271034/list-samba-users
Samba GUI page
https://www.samba.org/samba/GUI/
创建网络共享
Quick and dirty Samba setup How to Create a Network Share Via Samba…?
无密码的分享设置
WIP
性能测试
Network share: Performance differences between NFS & SMB
TODO Samba 性能测试[……]
Authentication for user [Jerry] -> [Jerry] FAILED with error NT_STATUS_NO_SUCH_USER
[2017/08/14 13:28:00.542220, 3] ../source3/param/loadparm.c:1586(lp_add_ipc)
adding IPC service
[2017/08/14 13:28:00.542244, 3] ../source3/auth/auth.c:178(auth_check_ntlm_password)
check_ntlm_password: Checking password for unmapped user [DFWSGROUP]\[wangpengfei]@[JSZX-31] with the new password interface
[2017/08/14 13:28:00.542252, 3] ../source3/auth/auth.c:181(auth_check_ntlm_password)
check_ntlm_password: mapped user is: [WPFTP]\[wangpengfei]@[JSZX-31]
[2017/08/14 13:28:00.542285, 3] ../source3/auth/check_samsec.c:399(check_sam_security)
check_sam_security: Couldn’t find user ‘wangpengfei’ in passdb.
[2017/08/14 13:28:00.542296, 2] ../source3/auth/auth.c:315(auth_check_ntlm_password)
check_ntlm_password: Authentication for user [wangpengfei] -> [wangpengfei] FAILED with error NT_STATUS_NO_SUCH_USER
[2017/08/14 13:28:00.542314, 2] ../auth/gensec/spnego.c:768(gensec_spnego_server_negTokenTarg)
SPNEGO login failed: NT_STATUS_NO_SUCH_USER
[2017/08/14 13:28:00.542334, 3] ../source3/smbd/smb2_server.c:3097(smbd_smb2_request_error_ex)
smbd_smb2_request_error_ex: smbd_[……]
客户端配置(Initiator)
Debian as an iSCSI Initiator
服务端配置(Target)
Debian as a Target (using IET’s iscsitarget) Debian as a Target (using the LIO Target)
在计算中,Linux-IO(LIO)Target是SCSI Target的开源实现,已成为Linux内核中的标准实现。
一个竞争通用SCSI Target模块是SCST,也是用于Linux的。对于提供Linux iSCSI Target的较窄目的,较旧的IET和STGT模块也享有行业支持。
Two Computers, One iSCSI Target
[SOLVED] Two Computers, One iSCSI Target – Data Storage – Spiceworks
能挂载,但是不会按照预期方式工作。[……]
问题描述
我们有很多影视、音乐、视频等等资源文件,需要进行管理。
我们必然不能全部保存在电脑上,这受限于磁盘空间、互相分享等等原因,所以要保存在 NSA 服务上;
我们并不想使用集成方案(NextCloud、ownCloud): 1)这些工具并非直接使用文件系统结构来组织文件,而是对文件进行索引: —- 鉴于此,如果我们希望迁移到其他应用服务,将会是件繁琐的事情; —- 如果我们想将其中的视频文件使用 Emby 进行管理,这将无法实现;
解决方案
我们直接将文件保存在存储服务上,按照目录结构进行组织;
分类方法:所有文件都有其归属目录,我们未按照资源类型分类,而是按照其所属用途进行分类;
集成系统
File hosting service – Wikipedia
我们有三台机器:Linux、macOS、Windows,这三台机器上都有类似的这么几个目录:Music、Movies、Pictures、Downloads 这样目录(即使名字不同,作用也是大同小异的),现在我们希望保持这三台机器上对应的目录的内容是同步的。例如我们在 Windows 的 Music/ 新增 MP3 文件,那么希望这个 MP3 文件能够同步到 macOS 和 Linux 的 Music/ 中。
我们找到如下解决方案:
Seafile
NextCloud
访问NetxtCloud主页 CentOS 7下安装Nextcloud搭建个人网盘
ownCloud
BT Sync (Resilio Sync)
Dropbox
DuFile | DuFile.com
http://www.dufile.com/
坚果云官网|网盘|云盘|云服务|团队协作软件|同步盘
https://www.jianguoyun.com
1)支持 Linux、Mac、Windows 客户端 2)支持文件同步;
百度云 | 让美好永远陪伴
下载提速的方法(超简单百度网盘提速方法——无需破解下载): 设置 ⇒ 传输 ⇒ 下载提速 ⇒ 利用闲置带宽为下载加速或换取积分 ⇒ 去开启
定制方案
文件服务
通过 File Browser 服务,我们能够直接访问和管理文件。
备份服务
我们对备份服务的要求如下: 1)我们需要对笔记本中的数据进行备份,简单复制即可; 2)并且能够直接查看和访问备份数据
媒体服务
10 Best Media Server Software for Linux in 2019 通过 Emby 服务,来访问其中的多媒体资源。
参考文献
搭建家庭 NAS 服务器有什么好方案?[……]
解决方案
Apps/DejaDup – GNOME Wiki!
Syncthing
P2P 文件同步服务器,我们也能够将其作为文件备份服务
参考文献
BackupYourSystem – Community Help Wiki[……]
问题描述
syncthing,文件同步工具,我们使用该工具进行数据备份。
该笔记将记录:在 Linux 中,如何通过 syncthing 完成文件同步,及常见问题解决方案。
解决方案
补充说明
鉴于 syncthing 的功能较多及网络环境千差万别,我们这里记录的笔记并不适用于每种环境。建议阅读官方文档,以了解更多细节。
服务部署
第一步、服务安装
Syncthing/Debian/Ubuntu Packages
Ubuntu 自带 Version 1.1.4~ds1-4ubuntu1 版本,过旧,所以我们采用 syncthing 官方安装:
wget https://syncthing.net/release-key.gpg
apt-key add ./release-key.gpg
# Add the “stable” channel to your APT sources:
echo “deb https://apt.syncthing.net/ syncthing stable” | sudo tee /etc/apt/sources.list.d/syncthing.list
# Update and install syncthing:
sudo apt-get update
sudo apt-get install syncthing
# syncthing –version
syncthing v1.18.5 “Fermium Flea” (go1.17.3 linux-amd64) deb@build.syncthing.net 2021-11-22 09:11:00 UTC [noupgrade]
补充说明: 1)为了同步文件,需要在远程主机与本地主机都安装 syncthing 服务;
第二步、服务运行
syncthing/Starting Syncthing Automatically
鉴于 syncthing 不建议 ROOT 用户运行,所以我们遵循官方建议,以非 ROOT 用户运行:
# 本地启动服务
k4nz@localhost # systemctl –user enable syncthing.service
k4nz@localhost # systemctl –user start syncthing.service
# 远程启动服务
user@remotesvc # systemctl enable syncthing@user.service
user@remotesvc # systemctl start syncthing@user.service
补充说明: 1)用户[……]
多终端传输文件
GitHub – claudiodangelis/qrcp Transfer files over wifi from your computer to your mobile device by scanning a QR code without leaving the terminal.
文件同步工具
lsyncd – https://github.com/axkibe/lsyncd Restic – https://restic.readthedocs.io/en/stable/010_introduction.html zsync – a file transfer program
iWant:一个去中心化的点对点共享文件的命令行工具 https://zhuanlan.zhihu.com/p/61306523?utm_source=qq&utm_medium=social&utm_oi=796410585838395392
rsync: https://rsync.samba.org/
在我们接触 SSD 性能优化时,接触到该类工具: wor/goanysync: Directory symlinker and content syncer. Anything-sync-daemon – ArchWiki[……]
Gigolo – Remote File System Manager
Gigolo | Home Gigolo | pending.io
Gigolo,使用GIO/GVfs轻松管理与远程文件系统建立的连接的GUI工具。它支持快速连接/挂载远程文件系统,并像书签一样管理。
在 Gigolo 0.5.1 中,支持 FTP、SSH、WebDAV、Windows Share 协议。
# 08/12/2021 现在的文件管理器,多已集成远程文件管理功能,所以某些特殊场景下会用到 Gigolo 应用。[……]
问题描述
1)我们需要和朋友共享文件、文档,并且希望长期保存、随时查找。使用 Samba 软件,配置复杂,并且公网需要考虑安全问题;使用 QQ、WeChat 软件,对于 Linux 用户不友好,而且存在共享、空间、长期保存的问题;使用 FTP/SFTP 协议,需要安装客户端。
=> 解决方案的查找范围锁定在 第三方文件托管服务(百度云盘)、或者自建文件托管服务(NextCloud)等等。我们选择自建文件托管服务,主要还是费用问题(穷)。
2)我们希望使用电脑的方式来管理这些文件,比如直接播放视频,直接打开图片,直接编辑文件等等,就像直接操作电脑一样。
3)我们希望平台更加透明,易于管理与迁移。所谓“透明”即平台直接管理操作系统的文件,而不是以特定方式封装之后以组织在文件系统中。这样我们既可以在平台中管理,也可以在操作系统的文件系统中直接管理。如果某天我们想要更换平台,或者平台不再维护,我们会更容易进行迁移。
解决方案
所以想找网页版的文件管理器部署到服务器上,通过浏览器上传到服务器,通过浏览器从服务器下载,并且能够支持文件编辑。
目前(10/23/2020)GitHub/filebrowser/filebrowser 可以满足我们的需求。由于它直接管理文件系统中的文件,因此即便不是最好的方案,我们也
功能特性
基于网页版的文件管理器,使用 Go 语言开发。具有以下特性: 1) you can install it on a server, direct it to a path and then access your files through a nice web interface. 2) Easy login system 3) Manage your files through a sleek interface 4) Manage users, add permissions, set scopes 5) Edit your files, of course! 6) Execute custom commands 7) Customize your installation
暂时不具备的功能:在线预览图片缩略图,图片只有打开才能看见。更多其他的特性可以参考官方的文档。界面UI可以查看官网
安装方法
方法一、命令行直接运行
curl -fsSL https://filebrowser.github.io/get.sh | bash
该命令会在 /usr/local/bin 下安装 filebrower 命令。终端执行该命令会启动 HTTP 服务,然后监听一个端口(终端的输出日志中会显示端口号)。更多细节可以参考官方手册。
卸载方法[……]
问题描述
在内网中,我们已搭建文件服务,平时需要上传很多文件来与他人共享,或者直接允许对方直接查看下载。对于上传,我们使用 SFTP 客户端,或者那些 Chrome SFTP 扩展工具。对于下载,我们使用 Nginx 直接暴露特定目录文件列表。但是,这些工具都不是很方便。比如,需要安装客户端、Nginx 文件列表页不够美观、操作比较繁琐、不能直接预览文件等等。
我们需要类似文件管理器的功能来管理远程服务器的文件,简化操作。在我们认知里,只有 B/S 与 C/S 两种架构方案,既然 C/S 不行,那就寻找 B/S 方案。在这里,便是寻找基于网页的文件管理器。(其实换个角度,如果 C/S 架构能够解决我们的问题,那它必须是打开后能够直接管理服务器文件的,但是我们还会使用 Windows 操作系统,这里没有跨平台的方案。并且也不是每个人都熟悉 SFTP 的使用方法,在用户体验上终究比不上网页端的“登录后便可以用”的特点)
该笔记将记录:如何使用基于网页的文件管理器,来管理服务器中的文件,以及一些常见的问题。
补充说明
很多文件管理器客户端,支持 fuse 特性(比如 PCManFM 可以通过 SSH 挂在远程文件系统)。但是,使用和管理依旧不是很方便,比如不能跨平台、需要配置等等。
解决方案
File Browser(正在使用)
filebrowser/filebrowser: 📂 Web File Browser
# 02/07/2021 这是我们正在使用的文件管理系统,详细介绍参考 File Browser (Web) 笔记。
1)支持 Guest 访问,即无需设置帐号即可访问; 2)支持视频播放(基本等同于浏览器播放,所以需要浏览器支持的视频格式);
FileRun
FileRun – File Manager
另一个网页版的文件管理器,还附带了多平台的客户端。是一个不错的选择,也分为 Free Version 与 Enterprise Version 两种。 1)支持 Guest 访问,即无需设置帐号即可访问; 2)支持文档在线预览;
Tiny File Manager
prasathmani/tinyfilemanager: The best web based PHP File Manager in single file, Manage your files efficiently and easily with tinyfilemanager
演示站点:https://tinyfilemanager.github.io/demo/
1)Google/Microsoft doc viewer helps you pre[……]
问题描述
该笔记将记录:在 Linux 中,如何安装及使用 Emby 服务,以及常见问题的解决方案。
解决方案
# 04/06/2021 我们选用 Emby 的原因是朋友推荐,我们的这个朋友已经踩过坑并且推荐 Emby 服务,因此我们便采用 Emby 服务。
参考文献
20 BEST Media Server Software for Windows 10 PC in 2021 Emby – The open media solution[……]
安装服务(Binary)
我们选择 .deb 安装:除了需要安装额外的 Docker 服务,通过 Docker 部署也需要挂载很多东西,指定很多命令行配置。当配置调整时,需要我们做很多事情。相比之下,通过 .deb 方式更加方便,维护只需要修改配置、重启服务,维护更简单。因此,在这种情况下,我们选择 .deb 安装。
通过 .deb 安装(Emby Server for Linux – Emby)
# 下载并安装
wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.5.4.0/emby-server-deb_4.5.4.0_amd64.deb
dpkg -i emby-server-deb_4.5.4.0_amd64.deb
# 启动服务(默认已启动,这里查看状态)
systemctl status emby-server.service
# Open a web browser to http://localhost:8096
配置反向代理(HOW TO: NGINX Reverse Proxy – General Discussion – Emby Community):
server {
server_name media.example.com;
listen 80;
location / {
proxy_pass http://127.0.0.1:8096;
}
}
通过 Docker 部署
参考 emby/embyserver – Docker Hub 页面,以获取 Docker 部署的详细说明,这里简单记录。
1)解码渲染配置,两种方法二选一,用于视频文件硬解码: —- 核显 VAAPI 模块,Intel Platform,直接使用; —- 独显 NVDEC/NVENC 模块:安装 nvidia-docker2 服务:Installation Guide — NVIDIA Cloud Native Technologies documentation 2)获取渲染接口文件的权限,后面修改 Docker Compose 文件需要使用参数; 3)运行服务;
参考文献
emby/embyserver – Docker Image | Docker Hub How To Install Emby (Media Server) on OpenMediaVault 5 – YouTube[……]
添加影库
我们也是首次使用,详细内容,参考 Emby Movie Naming : Emby 笔记。
虽然对影片命名有要求,但是也能够识别出在自定义目录中的影片。
识别在目录中的电影确实花了些时间。在添加电影目录后,不会立即显示在目录中的电影。
管理密码
How to disable password prompt? – Android TV / Fire TV – Emby Community
Settings => Password / Local Network Access / Local network sign in mode: Don’t require a password on the local network
字幕搜索
Open Subtitles
1)注册 opensubtitles 帐号; 2)在 Emby 中,Settings => Open Subtitles => 填写帐号信息 => Save; 3)在特定电影中,Edit Subtitles,进行字幕搜索;
影片命名规则
Emby Movie Naming : Emby
\Movies\Avatar (2009)\Avatar (2009).mkv
\Movies\Pulp Fiction (1994)\Pulp Fiction (1994).mp4
\Movies\Reservoir Dogs (1992)\Reservoir Dogs (1992).mp4
\Movies\The Usual Suspects (1995)\The Usual Suspects (1995).mkv
\Movies\Top Gun (1986)\Top Gun (1986).mp4
\Movies\A\Avatar (2009)\Avatar (2009).mkv
\Movies\P\Pulp Fiction (1994)\Pulp Fiction (1994).mp4
\Movies\R\Reservoir Dogs (1992)\Reservoir Dogs (1992).mp4
\Movies\T\The Usual Suspects (1995)\The Usual Suspects (1995).mkv
\Movies\T\Top Gun (1986)\Top Gun (1986).mp4
Name (Year) [tmdbid=xxxx]
/Movies
/300 (2006)
/300 (2006)/300 (2006) – 1080p.mkv
/300 (2006)/300 (2006) – 1080p-trailer.mp4
/300 (2[……]
问题描述
# 07/29/2019 目前还没有探究这些的打算,因为这些内容有点偏离目前的主要任务;
# 11/30/2022 了解磁盘性能已经是我们需要面对的问题,我们也尝试从事相关工作;
解决方案
当进行性能测试时,我们需要关注哪些指标?=> Performance Metrics 当进行性能测试时,存储需要达到什么水准?=> Performance Baseline 当进行性能测试时,能够使用哪些测试工具?=> Benchmark Tools[……]
对象存储
intel-cloud/cosbench: a benchmark tool for cloud object storage service
Linux
Flexible I/O Tester(Fio)
针对更详细的 I/O 性能基准测试,使用 Flexible I/O Tester(Fio) 工具;
在我们的工作场景中,fio 也是被使用的工具
测试工具
Windows
CMD> winsat disk -ran -write -drive C:
CrystalDiskMark for Windows
macOS
Novabench
< CROSS PLATFORM >
ATTO Disk Benchmark
Iometer: http://www.iometer.org/
HD Tune Pro
HD Tune Pro 是早期測试传统硬盘的工具,很多 SSD 的测试牛人并不爱使用。但 SSD 当前在计算机上的主要功能,不就是替换传统硬盘吗?那么用传统硬盘用的测试软件,正好也可測出其性能;
HD Tune Pro 是一个功能完整的硬盘測试及诊断工具,以数据包克隆为基础,使用 64KB 数据包測试硬盘连续读写性能。其测试曲线可清晰地表示固态硬盘每个块的性能,还可看到随机访问和突发速率性能;
ATTO Disk Benchmark
ATTO Disk Benchmark,是 SSD 类产品的速率检测软件,可检测硬盘、U 盘、存储卡及其他可移动磁盘的读写速率,ATT。使用不同大小的测试数据包,分别为 0.5K、1.0K、2.0K 及 8192.0K。数据用柱状图的形式表达,可看出不同大小文件对 SSD 的影响;
要注意的是,由于 ATT。在测试时,会以队列深度为 4、数据样本均为 0 的方式写人因此众多 SSD 控制芯片的厂家就因此获取了优势(如 Sandforce),因为其数据是被无限压缩,而压缩功能更是 SSD 控制芯片的重要功能之一。当然这不代表具体使用的速度,大家在购买 SSD 时要特别注意这个数据并不太具代表性;
在 ATTO 中如果改变 Queue Depth(中文为叠加项目数),如果你要进行更激烈的测试,可以将。QueueDepth 这个值改成更大,最多可以设到 10,此时就可以看出 SSD 在应付海量负担时的能力了;
CrystalDiskMark
这是大家最爱用来测试 SSD 的软件,使用真正的数据来测试 SSD 的连续读写性能。最特殊的是还加入了 4K 大小以及 4K+32 Queue Depth 时的测试,更加贴近买际状况的性能了。CrystalDiskMark 受影[……]
问题描述
鉴于我们启动的应用程序较多,内存已经用完,并且交换分区已使用 4G 空间。而交换分区位于机械硬盘中,当交换分区中的程序被换入内存时,程序加载速度非常慢(我们也是推测);
所以,想换到固态分区上试一下,会不会快一些呢?由此,想简单的先测试以下固态硬盘和机械硬盘的读取和写入速度;
该笔记将记录:我们使用 dd 命令进行磁盘进行性能测试的过程,以及相关问题的解决办法;
解决方案
# 12/05/2022
在很多存储相关的性能测试文章或讨论中,其建议不要通过 dd 来测试磁盘性能: 1)dd 的 IO 队列深度浅,不一定能够模拟足够的 IO 负载来精准测试磁盘性能; 2)用于产生数据的特殊设备(/dev/urandom, /dev/random, /dev/zero)也不一定能够快速产生足够数据。
针对存储相关的性能测试建议: 1)通过专用的测试工具(如 fio/blktrace 等)性能测试工具来测试磁盘性能; 2)要具备相关的知识背景,并能够正确理解参数含义,而非对相关知识模糊懵懂;
在编写这篇笔记时,我们并不具备存储相关的知识,所幸该文章也并未完成。鉴于我们已经了解到 dd 在性能测试方面的局限性,先如今我们也不打算进一步完善该笔记。
环境信息
笔记本环境
机械硬盘:/dev/sda,其中挂载文件系统“/root”目录。因此使用 /testfile 测试机械硬盘; 固态硬盘:/dev/sdb,其中挂载文件系统“/”目录。使用 /root/testfile 测试固态硬盘;
所用工具
在 Linux 下,命令dd(1)可用于简单的顺序 I/O 性能测试。本文提供了”关于应该使用哪些参数的”有价值信息;
本文只介绍了使用dd(1)命令进行“简单的顺序 I/O 性能测试”;
命令 dd 可用于简化低层数据复制。在这样做时,通常可以直接访问设备文件。请注意,绝对建议在测试系统上执行下述步骤。错误使用 dd 会很快导致数据丢失;
操作系统缓存的影响
操作系统通常不会立即将文件写入硬盘,而是使用当前未使用的临时内存来进行写入和读取的缓存。因此,为了 I/O 性能测量不会受这些高速缓存的影响,可以使用dd(1)的 oflag 选项,该选项以下标志很有趣:direct、dsync、sync,有关内容参考 dd(1)手册中的说明;
简单进行性能测试,可以直接使用 dd(1) 命令:
# 在开始进行测试之前,需要先丢弃缓存:
# 该命令清空 pagecache, dentries, inodes 缓存;
echo 3 | sudo tee /proc/sys/vm/drop_caches && sudo sync[……]
研究对象
Linux Kernel Performance Tunning
研究结果
理论:理解 Linux Kernel 各个模块的工作原理; 实践:根据工作原理,能够完成内核运行观测、性能问题排查;
研究方法
学习路线
第一步、背景知识学习
现在,我们需要学习操作系统的性能优化,所以需要具备相关背景知识:
1)系统:操作系统的知识(偏向 Linux 方向);
2)硬件:具备基本的硬件知识、计算机组成原理;
3)网络:基本的网络知识(网络协议与其在 Linux 中的实现)
在内核知识体系上,展开对 Linux Kernel 的追踪、调优,以解决常见的系统负载高、内存占用高、进程状态异常等等问题。
第二步、寻找相关教材
通过相关的学习资料,按照教材指示,来逐步形成对性能调优的基本认识与入门;
第三步、理论实践结合
在日常工作中,结合工作场景及问题,针对性能问题进行分析与调优;
信息采集
教育培训: 1)为了学习性能优化,我们购买了 Linux 性能优化实战 网课,讲师的技术毋庸置疑,但是该网课只能用作性能优化入门或者引导指路,毕竟篇幅的原因而不能面面具到。在学习的过程中,我们发现我们还有很多欠缺的只是需要学习;
书籍文献: 1)
官方文档:
博客文章: 1)Brendan Gregg/Linux Performance[……]
问题描述
# 07/11/2018 因为在 MPLinux 中整理 util-linux 软件包,里面涉及到了很多与系统内核相关的命令,因此决定了解一下 Linux 内核,但就目前的情形来看,还是缺啥补啥吧;
# 09/30/2021 现在 Kubernetes 广泛应用,如果想维护 Kubernetes 集群,排查相关问题,很多时候都需要 Linux Kernel 知识;
该笔记将记录:我们学习 Linux Kernel 的方法、路线,以及相关问题的解决方法;
解决方案
该部分笔记将记录我们学习 Linux Kernel 的方法,以及相关笔记;
研究对象
我们需要研究 Linux 内核的各个组件:文件系统;进程管理;网络堆栈;
研究工具
书籍:
博文社区 https://blog.csdn.net/orangeboyye?type=blog http://www.biscuitos.cn/
代码:
文档:
并坚持五到十年
研究目的
在开始学习 Linux 的内核前,我有幸读到下面这两篇文章: 1)我为何放弃 linux 内核学习 2)关于 Linux 内核学习的误区以及相关书籍介绍
我们学习 Linux Kernel 是鉴于如下原因: 1)理论:熟悉内核各个模块的工作原理,熟悉相关指标; 2)实践:并能够进行性能优化,及相关问题的排查;
第零步、准备工作,知识储备,收集资料
我们已具备的基础知识
《穿越计算机的迷雾, 李忠》、《汇编语言, 第 3 版, 王爽》、《x86 汇编语言, 从实模式到保护模式》、《30 天自制操作系统, 川合秀实-周自恒,》
这些书籍我们读过,很多也没有读完。但通过这些资料,我们对硬件工作原理具备基本认识(至少知道哪里查阅相关资料)
学习路线
国内外网上有很多内核学习路线,但是我们未找到期望的那种: 1)适合新手:给出内核整体结构,给出成型的学习路线,循序渐进; 2)边学边做:通过学习、修改、运行等等过程来学习内核;
所以,我们还是从市面上的书籍入手: 1)根据书中描述,边学边做,形成我们自己对内核认识; 2)伴随学习过程,我们能发现合适的书籍,或自己整理;
对于我们来说,整个学习过程是:读书 ⇒ 笔记 ⇒ 实践 ⇒ 读书 ⇒ 笔记 ⇒ 实践 ⇒ …
第一步、概览 Linux Kernel 结构,了解整体结构
《Linux 内核设计与实现(原书第 3 版)》
Robert Love / isbn:9787111338291
基于 Kernel 2.6.34 版本(如果有必要,应该尽快学习,否则时间越久,此书的知识越旧);
# 02/18[……]
通过 ip address 命令
该方法只能临时配置,重启后会丢失:
# 启动接口
ip link set dev eth0 up
# 添加:
ip address add “7.2.3.4/16” dev “eth0”
# 删除:
ip address del “192.161.2.3/25” dev “eth0”
Q:How can I (from CLI) assign multiple IP addresses to one interface? A:使用ifconfig(8)也能为一张网卡添加多个IP地址,但是它是通过”别名“实现的。不再推荐使用该方法,但是依旧保留了这个功能,以向后兼容,参考 IP-Aliasing 文档。而ip(8)有所不同,它是为当接口添加多个IP地址。(这与 ifconfig(8) 实现不同)
通过 dhclient(8) 命令
忽略添加默认路由
Multiple DHCP uplinks – How to ignore DNS and default route on all but one? what is “rfc3442-classless-static-routes” in /etc/dhcp/dhclient.conf(无关文章)
方法一,变通的方法: 1)Re: Stop dhclient from adding a default gateway
方法二,简单的方法: 1)复制/etc/dhcp/dhclient.conf为/etc/dhcp/dhclient.no-routers.conf文件。 2)并将文件/etc/dhcp/dhclient.no-routers.conf中request指令中的routers去掉。 3)使用dhclient(8)命令时,指定配置文件dhclient -cf /etc/dhcp/dhclient.no-routers.conf -v eth0。
参考文献
2. Bringing interfaces up/down[……]
通过 ifconfig 命令
# 修改MAC地址
ifconfig eth0 hw ether 02:01:02:03:04:08
# 查看修改后的结果
ifconfig eth0
有关ifconfig命令,查看ifconfig(8)手册
通过 ip link 命令
# 修改MAC地址
ip link set eth0 address 02:01:02:03:04:08
# 查看修改后的结果
ip link ls eth0
ip addr ls eth0
有关ip命令的使用方法,查看ip(8)手册。
通过 macchanger 命令
Change mac address with macchanger Linux command
# 修改MAC地址
macchanger -m b2:aa:0e:56:ed:f7 eth0
# 查看修改结果,这里不再演示
有关macchanger命令的使用方法,查看macchanger(1)手册。
参考文献
Changing Your MAC Address/Linux[……]
问题描述
TODO 如何在 Linux 中修改网卡的名称
该笔记将记录:在 Linux 中,如何修改网卡名称,以及相关问题处理方法;
解决方案
方法一、直接重命名(临时方法)
可以使用命令ip link直接修改网络接口名:
# 关闭网卡
ip link set dev peth0 down
ifconfig peth0 down
# 修改网卡名
ip link set peth0 name eth0
# 启动网卡
ip link set dev eth0 up
ifconfig eth0 up
方法二、使用 Udev 配置
ArchWiki/Network configuration/Tips and tricks [Solved] Predictable Network Interface changes interface names / Newbie Corner / Arch Linux Forums
系统环境:Debian
修改/etc/udev/rules.d/73-special-net-names.rules 文件,加入如下配置:
SUBSYSTEM==”net”, ACTION==”add”, ATTR{address}==”<MAC Address>”, NAME=”<New Interface Name>”
参数说明: ATTR{address}==”<MAC Address>”中的<MAC Address>为 MAC 地址,根据自己的网卡进行修改; NAME=”<New Interface Name>”中的<New Interface Name>为要使用的新命名; 如果 73-special-net-names.rules 文件不存在,创建即可,或者写入其他配置文件也可以;
通过 udev 服务,来配置固定接口名称:
# /etc/udev/rules.d/10-network.rules
SUBSYSTEM==”net”, ACTION==”add”, ATTR{address}==”aa:bb:cc:dd:ee:ff”, NAME=”net1″
SUBSYSTEM==”net”, ACTION==”add”, ATTR{address}==”ff:ee:dd:cc:bb:aa”, NAME=”net0″
方法三、使用「可预测网卡接口名」
在 Debian 中,可以修改/etc/default/grub文件中的GRUB_CMDLINE_LINUX_DEFAULT参数,加入net.ifnames=1配置,然后执行up[……]