「Linux」- 磁盘 IO
按 存储介质 分类:机械磁盘、固态硬盘
磁盘是可以持久化存储的设备,根据存储介质的不同,常见磁盘可以分为两类:机械磁盘和固态磁盘:
机械磁盘(Hard Disk Driver),HDD
在读写数据前,需要移动读写磁头,定位到数据所在的磁道,然后才能访问数据。
如果 I/O 请求刚好连续,那就不需要磁道寻址,自然可以获得最佳性能。这其实就是我们熟悉的,连续 I/O 的工作原理
随机 I/O,它需要不停地移动磁头,来定位数据位置,所以读写速度就会比较慢。
固态硬盘(Solid State Disk),SSD
固态磁盘不需要磁道寻址,所以,不管是连续 I/O,还是随机 I/O 的性能,都比机械磁盘要好得多。
随机 I/O vs. 连续 I/O
无论机械磁盘,还是固态磁盘,相同磁盘的随机 I/O 都要比连续 I/O 慢很多,原因也很明显:
1)对机械磁盘来说,我们刚刚提到过的,由于随机 I/O 需要更多的磁头寻道和盘片旋转,它的性能自然要比连续 I/O 慢
2)对固态磁盘来说,虽然随机性能优于 HDD,但同样存在“先擦除再写入”的限制(需要了解 SSD 原理)。随机读写会导致大量的垃圾回收,所以相对应的随机 I/O 的性能弱于连续 I/O
3)连续 I/O 还可以通过预读的方式,来减少 I/O 请求的次数,这也是其性能优异的原因。很多性能优化的方案,也都会从这个角度出发,来优化 I/O 性能;
磁盘的最小读写单位
机械磁盘的最小读写单位,扇区,一般大小为 512 字节。
固态磁盘的最小读写单位,页,通常大小是 4KB、8KB 等。
如果每次都读写 512 字节这么小的单位的话,效率很低。所以文件系统会把连续的扇区或页组成逻辑块,然后以逻辑块作为最小单元来管理数据。常见的逻辑块的大小是 4KB,也就是说,连续 8 个扇区,或者单独的一个页,都可以组成一个逻辑块。
按 接口类型 分类:IDE、SCSI、SAS、SATA、FC
按照接口来分类,比如可以把硬盘分为 1)IDE(Integrated Drive Electronics),在系统中磁盘前缀 hd 2)SCSI(Small Computer System Interface),在系统中磁盘前缀 sd 3)SAS(Serial Attached SCSI) 4)SATA(Serial ATA) 5)FC(Fibre Channel)
按 使用方式 分类:RAID
RAID(Redundant Array of Independent Disks)
把多块磁盘组合成一个逻辑磁盘,构成冗余独立磁盘阵列,从而可以提高数据访问的性能,并且增强数据存储的可靠性。
RAID 一般可以[……]
「Linux Stroage Stack」- 常见问题(FAQ)
TODO !!! Linux I/O Depth 的具体含义?异步 IO 中的 I/O Detph 的含义?同步 I/O 的 I/O Depth 是没有意义的,为什么?
File Allocation Table
File Allocation Table – Wikipedia
在 1977 中,开发 FAT 文件系统,用于软盘。它还适用于硬盘和其他设备
随着磁盘驱动器容量的增加,需要扩展 FAT 结构,出现三个主要的变体:FAT12、FAT16、FAT32
向镜像文件中写入文件
WIP
fallocate
Quickly create a large file on a Linux system – Stack Overflow
通过 fallocate 命令,我们能够快速创建大文件:
fallocate -l 10G gentoo_root.img
# 注意事项:
# 并非所有文件系统都支持 fallocate 系统调用
TODO ! fallocate 工作原理
当删除文件时,文件系统的操作
When I delete a file on my computer, where does it go? What happens to an open file handle on Linux if the pointed file gets moved, delete[……]
「Microsoft Windows」- 系统管理维护:杂记
问题描述
该笔记将记录:与 Windows 操作系统维护相关的内容,也包含 Windwos Server 服务器;
History of Microsoft Windows
History of Microsoft Windows
最近在玩 FVWM,突然喜欢上了那些很历史、很经典的 ICON,比如 Windows 2000;[……]
「Windows」- 系统安装与升级
问题描述
该笔记将记录:如何安装 Windows 操作系统,以及相关问题的解决方法。
Windows 10
安装操作系统
1)镜像下载:下载地址:https://msdn.itellyou.cn 2)系统安装:(装机技巧系列(二):系统安装之Windows 10启动盘制作)有如下方法 —- 2.1)使用官方 MediaCreationTool 工具; —- 2.2)使用 Refus 工具。我们推荐后者,因为前者会从官网自动下载镜像; —- 2.3)直接解压 ISO 文件,并执行 setup.exe 文件; 3)激活系统:输入购买的激活码,以激活系统;
操作系统升级
Windows 10 version 1607 => Windows 10 version 1909: 1)我们直接解压 Windows 10 version 1909 ISO 文件,并执行 setup.exe 程序 ⇒ 能够保留个人数据和应用程序;
Windows 10 version 1909 ⇒ Windows 10 version 20h2: 1)我们试图解压 Windows 10 version 20h2 ISO 文件,并执行 setup.exe 程序 ⇒ 但是无法保留应用程序(无法选择,仅能保留个人数据); 2)然后,我们尝试以 Windows 10 Update Assistant 升级 ⇒ 个人数据与应用程序能够保留;
更改系统版本
Windows 10 家庭版不支持很多功能,我们需要升级到 Widonws 10 专业版:
0)断开网络,整个过程无需链接网络,便可完成;
1)我的电脑 => 属性 => 更改产品密钥;
2)输入密钥:J7QT3-3GCPG-9GVWT-CH2XR-GMRJM / VK7JG-NPHTM-C97JM-9MPGT-3V66T
Windows Server 2008
系统安装: 1)插入U盘,格式化成FAT文件系统。 2)用UltraISO软件打开Windows server 2008光盘镜像。 3)点击菜单「启动」-「写入硬盘映像」 4)将「硬盘驱动器」选择U盘;将「写入方式」改成「USB-HDD」;点击「便捷启动」-「写入新硬盘主引导记录(MBR)」-「USB-HDD」。 5)点击「写入」等待完成。
Windows 2000 Professional
下载地址:https://file.wiki/direct-download-windows-2000-iso-free
操作系统激活
Windows 10
比较 Windows 10 的不同版本 请问政府部门购买并使用Windows7 中文家庭普通版(盒装)是否[……]
「Windows」- PE,WinPE
我们参考如下文档来完成 WinPE 的安装: Boot to WinPE | Microsoft Docs Download WinPE (Windows PE) | Microsoft Docs WinPE: Create bootable media | Microsoft Docs Boot to UEFI Mode or Legacy BIOS mode | Microsoft Docs
解决方案
第一步、下载 PE 组件
针对我们的系统版本(Windows 10 19.42),我们下载如下两个组件: 1)适用于 Windows 10 版本 1903 的 ADK | 适用于 Windows 10 版本 1903 的 ADK 中的新增功能。还可以使用此版本部署 Windows 10 版本 1909。 2)适用于 ADK 版本 1903 的 Windows PE 加载项 | 适用于 Windows 10 版本 1903 的 Windows 预安装环境 (PE)
第二步、制作启动设备
在开始菜单中,运行 Deployment and Imaging Tools Environment 工具(部署和映像工具环境)
C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools>
C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools>copype amd64 C:\WinPE_amd64
…
Success
C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools>MakeWinPEMedia /UFD C:\WinPE_amd64 I:
…
Success
参考文献
Boot to WinPE | Microsoft Docs Download WinPE (Windows PE) | Microsoft Docs WinPE: Create bootable media | Microsoft Docs[……]
「Windows」- 磁盘管理
问题描述
该笔记将记录:与 Windows 磁盘管理有关的内容,偏向于 Windows Server 磁盘管理;
解决方案
WIP
打开磁盘管理工具
百度经验/Windows Server 2012 修改光驱盘符
Win + R => diskmgmt.msc
修改启动器盘符
百度经验/Windows Server 2012 修改光驱盘符
在磁盘管理界面中,右键分区,选择「更改驱动器号和路径」菜单项目,在新窗口中,选择分区,然后单击「更改」按钮;
常见问题处理
[WIP] Please insert the last disk of the multi-volume set and click OK to continue
Fix: Please Insert the Last Disk of the Multi-Volume Set
This issue this issue is not restricted to Windows 10 and is also commonly reported on Windows 8 and Windows 7.
Affected users report that clicking the OK button will only make the error return in a short amount of time. Upon investigation the issue, it’s clear that the error message is signaling a corrupted .zip folder in the root folder of one of the drives currently active on your computer.
This is a common occurence on drives that were previously inserted into a Mac system. This happens because the Mac OSX creates a bunch of hidden files on FAT32 formatted drives that are wrongfully interpreted as corrupted by Windows. In reality, these files are not corrupted or harmful and are used to store indexing data and icon data for the Finder application. It’s the[……]
「Windows and Windows Server」- Network Configuration
问题描述
该笔记将记录:与 Windows 网络连接有关内容,以及相关问题的解决方法。
解决方案
Lots of TIME_WAIT connections in netstat (Windows Server 2008) All the TCP/IP ports that are in a TIME_WAIT status are not closed after 497 days from system startup in Windows Vista, in Windows 7, in Windows Server 2008 and in Windows Server 2008 R2
章节列表
「Windows and Windows Server」- 远程桌面连接 「Windows」- 创建 Loopback 接口(eNSP) 「Windows 10」- 常用网络设置记录 「Windows」- 无线网络配置 「Windows」- 网络地址分配[……]
「Windows」- 网络地址分配
DHCP(Assign,Release,Renew)
How to release and renew IP address in Windows
ipconfig /release # 释放地址
ipconfig /renew # 重新获取
禁用 IPv6 设置
脚本之家/Win10如何关闭IPV6?Win10禁用IPv6的方法
在 Windows 10 中,当某次自动更新结束后,主机无法联网,我们发现是 IPv6 导致的。
在网络设置中,取消「Inernet协议6 (TCP/IPv6)」勾选。
Windows 10,未使用 DHCP 返回的 DNS 服务器
networking – Windows 10 Wifi Sets Wrong DNS Server When Connecting to Wifi Networks
# 10/30/2021 问题描述:Windows 10 21H3,当配置 DHCP 获取时,DNS 是错误的,而非 DHCP 返回的 DNS 服务器 原因分析:正如参考链接所述,因为曾经手动配置过 DNS 服务器,导致注册表缓存。 解决方案:删除注册表 ProfileNameServer 便能解决问题;[……]
「Windows」- 创建 Loopback 接口(eNSP)
问题描述
在进行华为网络实验时,我们需要创建 Loopback 接口,以实现模拟器设备与主机进行通信。
该笔记将记录:如何创建 Loopback 接口,以及相关问题的解决方法。
解决方案
Windows 10
How to install Microsoft Loopback Adapter on Windows 10 – NIL – Network Information Library
right click on window start menu icon and select Device manager. click on Action, and select Add legacy hardware (该菜单项或许不会立即显示,要稍后才会显示) click Next on welcome screen choose “Install the hardware that i manually select from a list” and click on Next scroll down and select Network adapters from offered common hardware types and click on Next select Microsoft as the manufacturer, and then select Microsoft KM-TEST Loopback adapter card model, click on Next click on Next click on Finish
Windows 7 的添加过程与 Windows 10 类似,不再赘述;[……]
「Windows and Windows Server」- 远程桌面连接
问题描述
该笔记将记录:与远程桌面配置相关的内容,以及常见问题的解决方案。
开启远程桌面(Windows Server 2008 R2)
我的电脑 ⇒ 属性 ⇒ 远程设置 ⇒ 远程 ⇒ 远程桌面 ⇒ 允许运行任意版本远程桌面的计算机连接(较不安全)(L)
修改单用户的最大连接数(Windows Server 2008 R2)
Windows Server 2008允许多用户登录远程桌面 windows server 2008 远程桌面连接数修改–无限连接
在Windows Server 2008中,默认每用户远程桌面连接数为“1”,即同时刻只能有一人使用该账户。最大为“2”,但需要修改配置。
开始/控制面板 ⇒ 管理工具 ⇒ 远程桌面服务 ⇒ 远程桌面会话主机配置 ⇒ 编辑设置 ⇒ 限制每个用户只能进行一个会话 ⇒ 属性 ⇒ 取消“限制每个用户只能进行一个会话”勾选
不限制连接数量(Windows Server 2008 R2)
windows server 2008 远程桌面连接数修改–无限连接
运行 ⇒ gpedit.msc ⇒ 本地组策略编辑器 ⇒ 计算机配置 ⇒ 管理模板 ⇒ windows 组件 ⇒ 远程桌面服务 ⇒ 远程桌面会话主机 ⇒ 连接 ⇒ 限制连接的数量 ⇒ 选择 “已启用” ⇒ 允许的 RD 最大连接数:999999
Windows 7:允许多系统用户,同时远程桌面登录
Win7如何设置多用户同时远程登录
首先,要已经创建多个不同用户,并且这些用户已经设置能够远程桌面访问;(这里不再叙述细节)
然后,进行组策略设置(gpedit.msc),计算机配置 ⇒ 管理模板 ⇒ Windows组件 ⇒ 远程桌面服务 ⇒ 远程桌面会话主机 ⇒ 连接 1)限制连接的数量 ⇒ 已启用 ⇒ 允许的RD最大连接数 ⇒ 2 ⇒ 确定 2)远程桌面服务用户限制到单独的远程桌面服务会话 ⇒ 已禁用 ⇒ 确定
最后,下载 Universal Termsrv.dll Patch 工具,移除系统限制:
发生身份验证错误,要求的函数不受支持
身份验证错误 要求的函数不受支持 Windows远程桌面连接 win server 2012系统远程桌面 出现身份验证错误 要求的函数不受支持 怎么办?
问题描述
当使用客户端远程 Windows Server 2012 R2 时,产生如下错误提示:
问题原因
由于 CredSSP 加密 Oracle 修正导致的。
解决办法
Win + R => gpedit.msc => 计算机配置 => 管理模板 => 系统 => 凭据分配 => 加密[……]
「Windows」- 无线网络配置
显示当前无线网络连接信息
windows 10 – how to see what frequency the wireless network is using – Super User
=> Settings / Network & Internet => click on the SSID name and scroll down to Properties.
SSID: k4nz.com
Protocol: Wi-Fi 5 (802.11ac)
Security type: WPA2-Personal
Network band: 5 GHz
Network channel: 149
Link speed (Receive/Transmit): 156/156 (Mbps)
Link-local IPv6 address: fe80::f852:9d2e:8261:589e%20
IPv4 address: 192.168.12.232
IPv4 DNS servers: 223.6.6.6
223.5.5.5
Manufacturer: Intel Corporation
Description: Intel(R) Wi-Fi 6 AX201 160MHz
Driver version: 22.140.0.3
Physical address (MAC): 68-54-5A-69-FC-6C
当前连接 Wi-Fi 5G 频段;
配置优先选择的频段
How to Switch from 2.4GHz to 5GHz in Windows 10
Network adapters / Advanced / Property / Preferred band[……]
「Windows」- 电源管理,杂记
禁止鼠标唤醒休眠
Windows 10 — Cannot disable the mouse from waking computer from sleep
在笔记本休眠之后,如果触碰鼠标,此时笔记本将被从休眠中唤醒。
但是,我们不希望鼠标唤醒笔记本。例如,当无线鼠标放在包里时,如果鼠标没有关闭,那就会唤醒设备,然后笔记本就会闷在包里运转。
在 Windows 10 Pro 21H1 中: 1)Device Manager ⇒ Keyboards ⇒ HID Keyboard Device; 2)Properties ⇒ Power Managerment ⇒ Allow this device to wake the computer,取消勾选; 3)注意,禁用 Mice and other pointing devices ⇒ HID-compliant mouse 并未解决我们的问题;
无法成功进入休眠
An audio stream is currently in use? Here’s How to Fix – Appuals.com Fix Windows 10 Sleep Mode Not Working [Solved] High Definition Audio Device — Audio Stream is currently in use preventing Sleep
查看是否存在设备被占用,而导致无法休眠:
# powercfg -requests
DISPLAY:
None.
SYSTEM:
[DRIVER] Realtek High Definition Audio(SST) (INTELAUDIO\FUNC_01&VEN_10EC&DEV_0257&SUBSYS_17AA22A4&REV_1000\5&2a7b71b7&0&0001)
An audio stream is currently in use.
[DRIVER] 英特尔(R) 显示器音频 (INTELAUDIO\FUNC_01&VEN_8086&DEV_280B&SUBSYS_80860101&REV_1000\5&2a7b71b7&0&0201)
An audio stream is currently in use.
AWAYMODE:
None.
EXECUTION:
None.
PERFBOOST:
None.
ACTIVELOCKSCREEN:
None.
针对如上输出,表示系统资源被占用,无法进入休眠。
通过命令能够忽略这些设备,以保证休眠[……]
「Windows」- Shell、CMD
修改 PATH 变量
Windows 10 and Windows 8
How do I set or change the PATH system variable?
In Search, search for and then select: System (Control Panel) Click the Advanced system settings link. Click Environment Variables. In the section System Variables find the PATH environment variable and select it. Click Edit. If the PATH environment variable does not exist, click New. In the Edit System Variable (or New System Variable) window, specify the value of the PATH environment variable. Click OK. Close all remaining windows by clicking OK. Reopen Command prompt window, and run your command.[……]
「Windows」- 用户、用户组,权限
[……]
「Windows」- 域控
五大角色及作用
架构主机,域命名主机 defult由林根域内的第一台域控制器扮演 而每一个域拥有自己的RID主机,PDC模拟主机和基础结构主机 这三个角色defult由该域内的第一台域控制器扮演
架构主机(找出架构主机 运行 regsvr32 schmmgmt.dll)
负责更新与修改schema内的对象与属性数据。只有Schema Admins组内的成员,才有权利修改schema内的数据。 同一个时间内,整个林中只能有一台架构主机 如果架构主机出现故障或离线,可能会影响某些软件的运作。例如某些服务器级的软件在安装时,会在schema内添加对象, 如果架构主机出现故障或离线,将无法安装这些软件。
域命名主机
负责管理林内域的添加与删除工作。同一个时间内,整个林中只能有一台域命名主机 如果域命名主机出现故障或离线,将无法在林内添加或删除域。 林功能级别win2000 域命名主机与全局编录设为同一台 林功能级别win server 2003 域命名主机与全局编录可以不设在一台机器上
RID主机
每一个域内只能有一台域控制器扮演RID主机的角色 负责工作有: 发放RID,移动对象, 如果RID主机出现故障或离线,可能无法添加对象,也无法将对象转移到其他域。
PDC模拟主机
每一个域内只能有一台域控制器扮演PDC主机的角色 负责工作有: 支持旧客户端计算机(win NT), 减少因为密码复制延迟所造成的问题,整个域时间的同步 利用net time /querysntp命令查看 利用net time /setsntp来改变这台PDC时间服务器 未入域win ser 2003 winxp 会自动设定time.windows.com同步 可以在计算机上利用 开始 – 控制面板 – 日期与时间 – internet时间或利用w32tm /resync命令来手动同步。
基础结构主机(需要针对不同域来进行参考)
每一个域内只能有一台域控制器扮演基础结构主机的角色 负责工作有:对域内对象参考到其他域对象时,负责更新这些参考对象数据。当域用户账户有变动,就更新这个组的内容,并将复制到同一域内的其他域控制器。 基础结构主机是通过全程编录来得到参考数据的最新版本,因为全局编录会收到由每一个所复制来的最新变动资料。 如果所有域控制器同时都是全局编录,则由哪台域控扮演都无所谓。除非整个域内只有一台域控,否贼不要让基础结构主机与全局编录由同一台域控制器来扮演。 架构主机 MMC active directory架构 域命名主机 MMC active directory域及信任 RID主机,PDC模拟主机,基础结构主机 active directory用户和计算机
查看角色命令
netdom query fsmo 如[……]
「Linux」- 系统组成
章节列表
这里的「章节」并不是实际的章节,而是对「系统管理」的各方面的一个分类。
Hardware, Devices, and Tools
Backups Task Automation –To Be Added Keeping Time System Updates –To Be Added The Linux Kernel Source Finding Help
File / Folder Management Quota Management Resource Mgmt with systemctl Resource Mgmt with crgoups Process Management Firewall Setup
Configure PHP in CentOS Linux Set Up Python with CentOS Linux Configure Ruby on CentOS Linux Set Up Perl for CentOS Linux
Install and Configure Open LDAP Create SSL Certificates Install Apache Web Server CentOS 7 MySQL Setup On CentOS 7 Set Up Postfix MTA and IMAP/POP3 Install Anonymous FTP Remote Management Traffic Monitoring in CentOS System Updates Shell Scripting Package Management Volume Management
The core component of Linux
软件层面: Boot loader、Kernel、Daemons、Shell、X Window Server、Window Manager、Desktop Environment
系统层面: Kernel、Shell、File System、Application
参考文献
Linux Guide/How Linux Works 带你真正认识Linux 系统结构 Linux文件系统结构[……]
「Operating System」- 操作系统、安装、升级
比较特别的操作系统
linux-remote-desktop https://github.com/nubosoftware/linux-remote-desktop
章节列表
「ubuntu-18.04-desktop-amd64」 「Ubuntu」- 安装 「cloud-init」- 网络配置(NoCloud) 「grub.cfg」- modified 「Android」- 小米线刷包 「SYSLINUX」[……]
「CentOS」- 安装与升级
版本命名
CentOS Wiki/FAQ/General/How does CentOS versioning work? Wikipedia/CentOS
Since minor versions of CentOS are point in time releases of a major branch, starting with CentOS-7, we are now using a date code in our minor versions. So you will see CentOS-7 (1406) or CentOS-7 (1503) as a version. This way anyone can know, from the release, when it happened. In the above examples, the minor versions 1406 means June 2014 and 1503 means March 2015. In older major branches of CentOS, such as CentOS-6, we numbered things differently.
7.0-1406 7.1-1503 7.2-1511 7.3-1611 7.4-1708 7.5-1804 7.6-1810 7.7-1908 7.8-2003 7.9-2009
相关链接
Instructions for installing CentOS 7.6.1810 on various architectures
升级 CentOS 6.5 到 CentOS 7 版本
Upgrade Centos 6 to Centos 7 Index of /centos/6/upg/old/x86_64/Packages Upgrading CentOS 6 to 7 Pre Upgrade Assistant fails to generate a results.html Upgrade from CentOS 6 to CentOS 7 Upgrading CentOS 6.5 to CentOS 7.2 Upgrading CentOS 6 to CentOS 7
以前升级系统的时候,只能通过重新安装。但是经过社区不断的努力,现在可以通过命令行直接升级当前系统。
注意事项
目前CentOS尚未发布任何有关升级CentOS 6的官方文件,因此不建议在生产环境中进行此升级。如果你想尝试开发,可以按照如下简单的步骤操作。
这是从别的博文中收到的警告:不要使用此方法升级「CentOS 6.7」或更高版本的系统。因为在「CentOS 6.7[……]
「Debian」- 操作系统,安装,升级(通用方法)
版本历史
Debian version history – Wikipedia
Debian 6.0 (Squeeze)
Debian 7 (Wheezy)
Debian 8 (Jessie)
Debian 9 (Stretch)
Debian 10 (Buster)
Debian 11 (Bullseye)
Debian 12 (Bookworm)
相关链接
debian/support Debian GNU/Linux Installation Guide (amd64)
Debian 8.3 ⇒ Debian 10
How to Upgrade Debian 8 Jessie to Debian Linux 9 Stretch {safely} How to upgrade Debian 9 to Debian 10 Buster using the CLI
问题描述
我们需要升级操作系统,对于跨版本升级,需要逐步进行。升级 Debian 8.3 到 Debian 9.13 版本,后来我们又升级到 Debian 10 版本。
该文档将记录:我们升级 Debian 8.3 到 Debian 9.13 到 Debian 10 版本的过程,并展示出通用的升级方法。
注意事项
1)在升级前,请先进行数据备份,防止系统升级失败或其他原因,而带来损失; 2)如果没有必要,不建议升级操作系统; 3)需要注意的事项及经验教训,参考 Updating your Operating System 笔记;
第一步、Debian 8.3 => Debian 9.13
# 更新系统,以使其为当前版本最新
apt-get update
apt-get upgrade
apt-get dist-upgrade
reboot
# 设置新的软件源
cat > /etc/apt/sources.list.d/debian-9.list
deb http://mirrors.tencentyun.com/debian stretch main contrib non-free
deb http://mirrors.tencentyun.com/debian stretch-updates main contrib non-free
deb http://mirrors.tencentyun.com/debian-security stretch/updates main
EOF
# 更新系统,以更新到新版本
apt-get update
apt-get upgrade
apt-get dist-upgrade
reboot
# 验证升级成功
lsb_release -[……]
「Kali」- 安装与升级
内容简介
本文整理Kali安装相关的内容。
Kali Linux
Category: 03. Installing Kali Linux
Kali Linux Installation Requirements
Making a Kali Bootable USB Drive
# dd if=/path/to/iso of=/path/to/device bs=512k
相关链接
# http://tools.kali.org/tools-listing[……]
「Kylin」- 麒麟、操作系统、银河麒麟
Kylin 4.0.2(Ubuntu 16)
DISTRIB_ID=Kylin DISTRIB_RELEASE=4.0.2 DISTRIB_CODENAME=juniper DISTRIB_DESCRIPTION=”Kylin 4.0.2″ DISTRIB_KYLIN_RELEASE=4.0-2SP2 DISTRIB_VERSION_TYPE=enterprise DISTRIB_VERSION_MODE=normal
激活系统
操作系统需要激活,功能相同,但是激活系统会得到官方的服务支持;
软件仓库
官方仅提供镜像下载,而软件安装需要本地挂载操作系统镜像;
从版本上看,部分软件包与 Ubuntu 16.04 Xenial 版本类似:
# dpkg -l | grep ubuntu
ii curl 7.47.0-1ubuntu2 arm64 command line tool for transferring data with URL syntax
ii docker-ce 5:20.10.7~3-0~ubuntu-xenial arm64 Docker: the open-source application container engine
ii docker-ce-cli 5:20.10.7~3-0~ubuntu-xenial arm64 Docker CLI: the open-source application container engine
ii git 1:2.7.4-0ubuntu1 arm64 fast, scalable, distributed revision control system
ii git-man 1:2.7.4-0ubuntu1 all fast, scalable, distributed revision control system (manual pages)
ii libasn1-8-heimdal:arm64 1.7~git20150920+dfsg-4ubuntu1 arm64 Heimdal Kerbero[……]
「ubuntu-18.04-desktop-amd64」
内容简介
# cat boot/grub/grub.cfg
if loadfont /boot/grub/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
set timeout=5
menuentry “Try Ubuntu without installing” {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash —
initrd /casper/initrd.lz
}
menuentry “Install Ubuntu” {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity quiet splash —
initrd /casper/initrd.lz
}
menuentry “OEM install (for manufacturers)” {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity quiet splash oem-config/enable=true —
initrd /casper/initrd.lz
}
menuentry “Check disc for defects” {
set gfxpayload=keep
linux /casper/vmlinuz boot=casper integrity-check quiet splash —
initrd /casper/initrd.lz
}
# cat isolinux/isolinux.cfg
# D-I config version 2.0
# search path[……]
「Linux」- 关于关于升级的经验与教训
问题描述
该文档将记录:在软件升级过程中,遇到的问题,以及应该尽量遵守的准则。
常见问题
升级跨度大,是件危险的事情
如果升级跨度大,比如跨过很多次版本号,会带来如下问题:
1)将跳过某些动作:每次官方的更新脚本可能都会执行某些升级动作,而跨版本升级,可能会跳过这些升级动作。在 GitLab 中,官方甚至给出升级路线,因此只能进行多次升级。
升级内容多,让问题变得复杂
如果升级内容多,比如很多相关的依赖都需要升级,会带来如下问题:
1)破坏依赖关系:某些服务具有非常多插件(比如 Jenkins 服务),直接升级所有插件会破坏依赖关系。因此,我们因该进行多次插件升级,而每次进行少量插件升级。
我们的升级策略
在升级前,进行数据备份
在服务运维中,不管是否升级,都应该进行数据备份。当升级失败后,我们能够快速回滚到原先的版本。
频繁升级,但非最新版本
现在(# 07/30/2021),软件的更新速度越来越快(多亏 DevOps 发展),某些软件半个月就会发个新版本。如果不紧跟步伐(也不至于步步紧逼),那很可能将来无法升级(比如,找不到官方文档,升级包,相关资源等等问题)。
虽然频繁升级,但是我们也并非使用最新版本。比如 GitLab 出现 13.6 版本,那我们可能只会升级到 13.4 版本,然后关注 13.5 及 13.6 相关的问题,最后再决定是否需要升级。[……]
「Linux」- 备份与恢复
Hot Backup / Code Backup
热备份
热备份是指(具有如下特征): 1)当两台设备在确定 Primary(主用设备)和 Backup(备用设备)的关系后,由 Primary 进行业务的转发,而 Backup 处于监控状态, 2)同时 Primary 实时向 Backup 发送状态信息和需要备份的信息,以保证两台设备数据(状态)一致; 3)当 Primary 出现故障后,Backup 及时接替 Primary 的业务来继续运行;
全量备份(Full Backups)
什么是全量备份?全量备份是将每个文件写入备份媒体的一种备份方式。如果正在备份的数据永远不会更改,则创建的每个全量备份都将是相同的。这种相似性是由于全量备份不会检查自上次备份以来文件是否已更改;它会盲目地将所有内容写入备份媒体,无论它是否已被修改。
工具
dd、cpio、dump/restore
优点
1)数据恢复速度快; 2)备份和恢复操作都比较简单;
缺点
1)数据量大:每个文件都写入备份媒体。这意味着即使没有任何改变,也会使用大量备份媒体。每个晚上备份100千兆字节的数据时,可能有10兆字节的数据发生变化,这不是一个合理的方法; 2)占用的空间也会非常大; 3)备份时间长;
改进
为了改进这些缺点,我们选择创建增量备份的原因。
增量备份(Incremental Backups)
与完全备份不同,增量备份是指:
先进行一次完全备份。
在服务器运行一段时间后,检查当前数据和完全备份之间的差异,只备份存在差异的数据。
当服务器又运行一端时间后,开始进行第二次增量备份,将当前数据和上一次增量备份进行比较,只备份和上一次存在差异的数据;
以此类推…(通常情况下,会定期再进行一次全量备份,然后基于该新的全量备份再开始增量备份)
首先查看文件的修改时间是否比上次备份时间更新:
如果不是,则自上次备份以来文件未被修改,这次可以跳过。
另一方面,如果修改日期比上次备份日期更新,则表示该文件已被修改并应备份。
如下示意图:
增量备份与定期发生的全量备份一起使用。例如,每周进行全量备份,每日增量备份。
工具
rsync、dump/restore
优点
1)数据少; 2)耗时短;使用增量备份获得的主要优势是增量备份比完全备份运行得更快; 3)占用空间少;
缺点
1)恢复麻烦:还原任何给定文件可能意味着要经过一个或多个增量备份,直到找到该文件。还原完整文件系统时,必须还原上次全量备份和每次后续增量备份。这也是“定期再进行一次全量备份”的原因。
改[……]
「Linux」- 归档与压缩
Tar
Gzip
Xz
Bzip2
Zlib
ZIP zip 的压缩原理与实现
参考文献
Archiving and compression[……]
「7-Zip」- a file archiver with a high compression ratio
j7zip – a JAVA port of 7zr.exe
http://p7zip.sourceforge.net https://github.com/jamel/j7zip
p7zip – the Unix command-line port of 7-Zip
http://p7zip.sourceforge.net/
7z and 7za file archivers with high compression ratio
p7zip is the Unix command-line port of 7-Zip, a file archiver that handles the 7z format which features very high compression ratios.
p7zip-full provides utilities to pack and unpack 7z archives within a shell or using a GUI (such as Ark, File Roller or Nautilus).
Installing p7zip-full allows File Roller to use the very efficient 7z compression format for packing and unpacking files and directories. Additionally, it provides the 7z and 7za commands. . List of supported formats: – Packing / unpacking: 7z, ZIP, GZIP, BZIP2, XZ and TAR – Unpacking only: APM, ARJ, CAB, CHM, CPIO, CramFS, DEB, DMG, FAT,
HFS, ISO, LZH, LZMA, LZMA2, MBR, MSI, MSLZ, NSIS, NTFS, RAR (only
if non-free p7zip-rar package is installed), RPM, SquashFS, UDF,
VHD, WIM, XAR and Z.
.
The dependent package, p7zip, provides 7zr, a light version of 7za,
and p7zip, a gzip-like wrapper around 7zr.
从仓库中安装
#!/bin/sh
# Kali GNU/Linux Rolling
apt-get[……]
「tar」- 限制资源使用
问题描述
在使用 tar 进行解压时,会占用大量的系统资源(CPU,I/O),导致系统卡死或其他服务无法响应。尤其是压缩包较大且解压时间较久时,会直接导致其他服务不可用。在使用 tar 进行压缩时,虽然我们没有遇到类似问题,但是也可能存在这种问题。
我们希望找到一种方法限制 tar 所使用的系统资源,不管是打包还是压缩。
解决方法
方法一、(推荐)使用 pv 命令
pv,用于监控流经管道的数据的进度,它的角色类似于安装在水管上水表。虽然它不能限制特定程序的资源使用情况,但是它可以控制数据的读取速度。
(1)由 pv 负责读取数据,并通过选项控制 pv 的读取速度 (2)将数据写入管道 (3)而 tar 从管道中读取数据进行解压
方法二、使用空闲主机
如果有可能,则可以在空闲主机上进行操作,有必要则可以通过网络进行数据传回(比如使用 rsync 命令)。
方法三、使用 Docker 服务
有点大材小用,而且麻烦(需要安装环境),但是也算可用途径。
方法四、我们的方法
由于解压任务并非当务之急,我们有条件将工作放在夜间执行:
#!/bin/sh
sleep 4h && tar -xf someshit.tar.gz
参考文献
Preventing tar from using too much CPU and disk (old laptop crashes if 100%) Slowing down (limiting) tar, mysqldump or other processes to save IO bandwidth[……]
「Linux」- 解压 ZIP 文件,防止文件名乱码
问题描述
在 Windows 中,创建的 ZIP 文件,如果被压缩文件的文件名中包含非英文字符(比如“中文”),那么在 Linux 中解压时创建的文件名将是乱码。
该笔记将记录:在 Linux 中,如何解压在 Windows 下创建的 ZIP 文件,以防止文件名出现乱码。
解决办法
针对问题,理论上是与发行版无关的,但是鉴于各个发行版会选择不同版本的软件及不同的编译选项,所以实际情况还是会与发行版相关。
在 CentOS 中
可以直接使用 unzip 命令:
unzip -O gb18030 file.zip
在 Debian 中
按理说也能使用 unzip 命令,但是在 Debian 下的 unzip 命令,没有 -O 选项。
在 Debian 中,可以使用 unar 命令:
apt-get install unar
unar -e gb18030 file.zip
补充说明: 1)该方法试用与 Ubuntu 20.04 LTS(压缩包来自 Windows 7)
相关内容
[WIP] 这里需要了解一下字符集相关的内容。
参考文献
decompress ZIP with given encoding How can I avoid broken languages when unzipping unicode files?[……]
「Linux」- 磁盘冗余
问题描述
上个周(07/21/2019),当时我们正在使用 Git 拉取代码,笔记本的文件系统(Ext4)突然进入只读状态。当 dmesg 时,发现很多内核错误。我们承认我们找不到具体的原因,因为不具备这方面的知识。只能开机的时候,执行 fsck.ext4 进行文件系统检查,以尝试修复问题。
现在仅是文件系统出现问题,如果磁盘故障该怎么办?虽然关键的数据已备份,但是操作系统现已部署很多服务,届时所有环境都要重建,所有工具必须重装,从备份中还原数据。虽然关键数据没丢失,但是重新配置环境就将很麻烦。我们希望能够实现磁盘冗余,以应对此类问题。
该笔记将记录:在服务器(或桌面)环境中,我们如何进行磁盘冗余,以防止物理磁盘损坏而导致的数据损失(文件系统层面的数据备份不在该笔记讨论的范围之内)。
解决办法
硬件提供冗余
磁盘阵列卡
软件实现冗余
SOFTWRAE RAID、ZFS、LVM、Multipath with mdadm
针对笔记本环境
对于存储冗余,我们的笔记本有个硬盘位,还有个光驱位。光驱位改硬盘位,所以我们有两个硬盘位。弄两块大容量硬盘,完全可以做一个冗余。
接下来就是,看看解决方案有哪些,然后挑一个,搞起来。一主一备,注定会浪费磁盘。
TODO ! LAPTOP 磁盘冗余
参考文献
So How Should I Backup My Computer?[……]
「Linux」- 文件系统备份
问题描述
存储冗余主要是为了防止坏盘的场景。对于 文件系统损坏 的预防是另外一个问题。
有两点要考虑: 1)怎样防止因为「文件系统损坏」而导致的「数据丢失」?(目的:减少丢失) 2)另外,「文件系统损坏」会造成多大的「影响」呢?使用fsck工具来处理文件系统损坏,可能会导致近期的某些文件或变更丢失。
我们能想到的方法有两个: 1)通过文件定时备份来处理; 2)定时进行LVM快照;
这是本文将要讨论的问题:如何进行文件系统级别的备份,以防止「文件系统损坏」而导致的「数据丢失」。
解决办法
Deja Dup
是Debian或者Ubuntu中默认的备份工具。
TODO 关于笔记本文件系统的备份[……]