<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux on HRunning</title><link>https://hangliuc.github.io/ops/linux/</link><description>Recent content in Linux on HRunning</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>HRunning</copyright><atom:link href="https://hangliuc.github.io/ops/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>ASG Node 数据盘挂载失败</title><link>https://hangliuc.github.io/ops/linux/asg-node-disk-issue/</link><pubDate>Mon, 01 Dec 2025 11:45:14 +0800</pubDate><guid>https://hangliuc.github.io/ops/linux/asg-node-disk-issue/</guid><description>&lt;img src="https://hangliuc.github.io/img/cover/ops_cover.webp" alt="Featured image of post ASG Node 数据盘挂载失败" /&gt;&lt;h2 id="问题背景"&gt;问题背景
&lt;/h2&gt;&lt;p&gt;data 数据盘挂载失败，日志文件会写入根盘，导致磁盘多次报警&lt;/p&gt;
&lt;p&gt;内核还没有来得及刷新分区表生成 /dev/nvme1n1p1 设备文件，就执行mkfs 命令，导致格式化失败。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://hangliuc.github.io/ops/linux/asg-node-disk-issue/disk_error.webp"
width="1567"
height="983"
srcset="https://hangliuc.github.io/ops/linux/asg-node-disk-issue/disk_error_hu_38870736248a0a09.webp 480w, https://hangliuc.github.io/ops/linux/asg-node-disk-issue/disk_error_hu_99af62288789de4d.webp 1024w"
loading="lazy"
alt="磁盘错误截图"
class="gallery-image"
data-flex-grow="159"
data-flex-basis="382px"
&gt;&lt;/p&gt;
&lt;h2 id="解决方法"&gt;解决方法
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum install parted -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p /data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;parted -s /dev/nvme1n1 -- mklabel gpt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;parted -s /dev/nvme1n1 -- mkpart primary ext4 0% 100%
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;partprobe /dev/nvme1n1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;udevadm settle
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; ! -e /dev/nvme1n1p1 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; sleep 1&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkfs -t ext4 /dev/nvme1n1p1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount /dev/nvme1n1p1 /data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;/dev/nvme1n1p1 /data ext4 defaults 0 0&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; /etc/fstab
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=""&gt;
&lt;/h2&gt;&lt;h3 id="parted-中-0-与-0-的区别"&gt;parted 中 0 与 0% 的区别
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;0&lt;/strong&gt;：表示强制要求分区从磁盘的 第 0 个字节/扇区 开始。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;0%&lt;/strong&gt;：自动对齐，最佳对齐点 开始分区。parted 会自动跳过前面的保留空间，通常将起始位置设定在 扇区 2048 开始。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="partprobe-devnvme1n1"&gt;partprobe /dev/nvme1n1
&lt;/h3&gt;&lt;p&gt;通知内核（Kernel）立即重读分区表&lt;/p&gt;
&lt;h3 id="udevadm-settle"&gt;udevadm settle
&lt;/h3&gt;&lt;p&gt;阻塞（暂停）脚本执行，直到 udev 处理完所有设备事件。
所有设备文件都创建好，脚本才能继续执行。&lt;/p&gt;
&lt;h2 id="用户数据脚本"&gt;用户数据脚本
&lt;/h2&gt;&lt;p&gt;用户脚本位置：
/var/lib/cloud/instance/user-data.txt&lt;/p&gt;
&lt;p&gt;日志位置：
/var/log/cloud-init-output.log&lt;/p&gt;</description></item><item><title>Vim 使用技巧</title><link>https://hangliuc.github.io/ops/linux/vim/</link><pubDate>Thu, 27 Nov 2025 11:02:53 +0800</pubDate><guid>https://hangliuc.github.io/ops/linux/vim/</guid><description>&lt;img src="https://hangliuc.github.io/img/cover/ops_cover.webp" alt="Featured image of post Vim 使用技巧" /&gt;&lt;h1 id="vim-常用命令"&gt;vim 常用命令
&lt;/h1&gt;&lt;h2 id="光标移动"&gt;光标移动
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;h&lt;/strong&gt; 或 &lt;strong&gt;退格&lt;/strong&gt;：左移一个字符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;l&lt;/strong&gt; 或 &lt;strong&gt;空格&lt;/strong&gt;：右移一个字符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;j&lt;/strong&gt;：下移一行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;k&lt;/strong&gt;：上移一行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;gj&lt;/strong&gt;：移动到一段内的下一行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;gk&lt;/strong&gt;：移动到一段内的上一行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;+&lt;/strong&gt; 或 &lt;strong&gt;Enter&lt;/strong&gt;：移至下一行第一个非空白字符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-&lt;/strong&gt;：移至上一行第一个非空白字符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;w&lt;/strong&gt;：前移一个单词，停在下一个单词开头&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;W&lt;/strong&gt;：前移一个单词（忽略部分标点）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;e&lt;/strong&gt;：前移一个单词，停在下一个单词末尾&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;E&lt;/strong&gt;：前移一个单词，停在标点（如有）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;b&lt;/strong&gt;：后移一个单词，停在上一个单词开头&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B&lt;/strong&gt;：后移一个单词（忽略部分标点）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;(&lt;/strong&gt;：前移 1 句&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;)&lt;/strong&gt;：后移 1 句&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;{&lt;/strong&gt;：前移 1 段&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;}&lt;/strong&gt;：后移 1 段&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;gg&lt;/strong&gt;：到文件头部&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;G&lt;/strong&gt;：到文件尾部&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$&lt;/strong&gt;：到行尾&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0&lt;/strong&gt;：到行首&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="翻屏"&gt;翻屏
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + f&lt;/strong&gt;：下翻一屏&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + b&lt;/strong&gt;：上翻一屏&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + d&lt;/strong&gt;：下翻半屏&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + u&lt;/strong&gt;：上翻半屏&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + e&lt;/strong&gt;：向下滚动一行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + y&lt;/strong&gt;：向上滚动一行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;n%&lt;/strong&gt;：到文件 n% 位置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;zz&lt;/strong&gt;：当前行移到屏幕中央&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;zt&lt;/strong&gt;：当前行移到屏幕顶端&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;zb&lt;/strong&gt;：当前行移到屏幕底端&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="插入"&gt;插入
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;I&lt;/strong&gt;：在当前行第一个非空字符前插入&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;gI&lt;/strong&gt;：在当前行第一列插入&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;a&lt;/strong&gt;：在光标后插入&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A&lt;/strong&gt;：在当前行末尾插入&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;o&lt;/strong&gt;：在下方新建一行插入&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;O&lt;/strong&gt;：在上方新建一行插入&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;:r filename&lt;/strong&gt;：在当前位置插入另一个文件内容&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;:[n]r filename&lt;/strong&gt;：在第 n 行插入另一个文件内容&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="剪切和复制"&gt;剪切和复制
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[n]x&lt;/strong&gt;：剪切光标右边 n 个字符（相当于 d[n]l）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[n]X&lt;/strong&gt;：剪切光标左边 n 个字符（相当于 d[n]h）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;y&lt;/strong&gt;：复制可视模式下选中的文本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;yy&lt;/strong&gt; 或 &lt;strong&gt;Y&lt;/strong&gt;：复制整行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;y[n]w&lt;/strong&gt;：复制 n 个词&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;y[n]l&lt;/strong&gt;：复制光标右边 n 个字符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;y[n]h&lt;/strong&gt;：复制光标左边 n 个字符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;y$&lt;/strong&gt;：从光标到行尾复制&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;y0&lt;/strong&gt;：从光标到行首复制&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;:m,ny&lt;/strong&gt;：复制第 m 到 n 行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;y1G&lt;/strong&gt; 或 &lt;strong&gt;ygg&lt;/strong&gt;：复制光标以上所有行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;yG&lt;/strong&gt;：复制光标以下所有行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;d&lt;/strong&gt;：删除（剪切）可视模式下选中的文本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;d$&lt;/strong&gt; 或 &lt;strong&gt;D&lt;/strong&gt;：删除到行尾&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;d[n]w&lt;/strong&gt;：删除 n 个单词&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;d[n]l&lt;/strong&gt;：删除光标右边 n 个字符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;d[n]h&lt;/strong&gt;：删除光标左边 n 个字符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;d0&lt;/strong&gt;：删除到行首&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;p&lt;/strong&gt;：在光标后粘贴&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;P&lt;/strong&gt;：在光标前粘贴&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="查找和替换"&gt;查找和替换
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;/something&lt;/strong&gt;：向后查找 something&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;?something&lt;/strong&gt;：向前查找 something&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;n&lt;/strong&gt;：向后查找下一个&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;N&lt;/strong&gt;：向前查找下一个&lt;/li&gt;
&lt;li&gt;s/old/new：替换当前行第一个 old&lt;/li&gt;
&lt;li&gt;s/old/new/g：替换当前行所有 old&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;%s/old/new/g&lt;/strong&gt;：替换整个文件的所有 old&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="技巧"&gt;技巧
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;:set paste&lt;/strong&gt;：解决粘贴时格式错乱问题&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;</description></item></channel></rss>