menu

Chancel - 技巧

rss_feed lightbulb_outline

技巧列表(54)

Hyper-v 导入硬盘文件到指定的虚拟机

在宿主机上使用如下指令,format的格式自选

qm importdisk [你的虚拟机ID(例如100)] [你的硬盘文件] local-Thin --format=qcow2

工具软件2020-08-10 13:12:34

Hyper-v 虚拟机迁移至 Proxmox

  1. 在Hyper-v选出导出你的虚拟机快照(或虚拟机本身或直接拿磁盘文件都可以),这里假设我有一个Windows7虚拟机要转移到Proxmox上,则导出Windows7虚拟机到D盘根目录下

  2. 导出后找到磁盘文件(如果是导出则在导出的文件夹下的Virtual Hard Disks内),文件名往往是 虚拟机名称.VHDX,将这个文件发送到你的Proxmox机器上,放至有权限的任意目录,我的Windows7

    scp d:\\Windows7.VHDX root@10.0.0.1:/tmp/
  3. SSH登录到Proxmox宿主机上,并使用如下命令检查你上传的Hyper-V磁盘文件是否有问题

    qemu-img check -r all Windows7.vhdx
  4. 打开Proxmox网页并创建一个虚拟机,按照你原本虚拟机的配置进行选择,只需更改磁盘配置为一个1G大小的磁盘文件,创建完成之后记住这个文件的名字,后面我们直接转换上传的VHDX文件来替换这个1G大小的虚拟机磁盘,创建后如下图所示

  5. 在你的Proxmox找到第4步创建的虚拟机磁盘文件名,命令如下,找到后顺便删了

    root@chancel:/tmp# find / -name '*101-disk-0.qcow2' 
    /var/lib/vz/images/101/vm-101-disk-0.qcow2
    root@chancel:/tmp# rm -f /var/lib/vz/images/101/vm-101-disk-0.qcow2
  6. 转换原本的虚拟机磁盘文件(VHDX)成Proxmox的QCOW2格式,并且保证输出到刚才创建

    root@chancel:/tmp# qemu-img convert -O qcow2 Windows7.vhdx /var/lib/vz/images/101/vm-101-disk-0.qcow2
  7. 启动你的虚拟机

工具软件2020-07-25 21:32:31

Gnome3 - Alt+Tab仅在当前桌面切换(不切换工作区)

设置如下

gsettings set org.gnome.shell.app-switcher current-workspace-only true

其他技巧2020-06-24 10:59:51

ArchLinux - Manjaro创建交换区文件并设置休眠

设置Manjaro的休眠分为三步,第一步是创建swapfile交换区,第二步是修改引导内核,第三步则是修改HOOKS钩子

  1. 创建swap文件(如已有swap分区也可以使用)
  2. 修改引导内核
  3. 修改内核中的HOOKS钩子

TIP 整个过程无需重启

首先我们需要创建swapfile文件区(如果是swap分区,请参考本文结合资料引用处的ArchWiki进行设置)

# 查看swap分区信息(没有设置则没有输出)
swapon --show

# 创建大小为0的文件
sudo truncate -s 0 /swapfile

# 使用fallocate 创建指定大小的文件(单位M或者G)
# 1. 如果文件系统不是F2FS,使用下面的命令即可
sudo fallocate -l 32G /swapfile
# 2. 如果文件系统是F2FS,使用下面的命令
dd if=/dev/zero of=/swapfile bs=1G count=32 status=progress

# 授权并格式化
sudo chmod 600 /swapfile
sudo mkswap /swapfile

# 启用swap
sudo swapon /swapfile

# 查看swap分区信息(如有输出则说明成功)
swapon --show


# 添加开机自动挂载swapfile文件
sudo vim /etc/fstab
/swapfile none swap defaults 0 0

swap文件设置完成,接下来我们要改动grub和内核Hook来完成休眠设置

获取 swapfile文件所在分区UUIDswapfile文件的偏移量

# 查询所有分区的UUID,记下swapfile文件所在分区的UUID
sudo lsblk -f
# 查询swapfile文件的偏移量,第一行(显示0行)的physical_offset即为偏移量,记下这个偏移量
sudo filefrag -v /swapfile

利用上述记下的swapfile所在分区UUID以及swapfile文件偏移量来设置内核参数并生成grub引导

sudo vim /etc/default/grub

# 假设原来的GRUB_CMDLINE_LINUX_DEFAULT值为
GRUB_CMDLINE_LINUX_DEFAULT=”quiet intel_pstate=enable”
# 修改后的值内容(其实就是追加到GRUB_CMDLINE_LINUX_DEFAULT值后面)
GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_pstate=enable resume=UUID=[swapfile文件所在分区的UUID]resume_offset=[swapfile文件的偏移量]" 

 sudo update-grub

第三步配置initramfs的resume钩子并重新生成 initramfs 镜像

sudo vim /etc/mkinitcpio.conf

# 假设原来HOOKS的值如下
HOOKS="base udev autodetect modconf block filesystems keyboard fsck"
# 修改后的值如下(假如使用lvm分区,则要注意将resume放到lvm后面
HOOKS="base udev resume autodetect modconf block filesystems keyboard fsck"

# 重新生成initramfs镜像(51是我的Linux内核版本号,可以使用uname -a查看)
mkinitcpio -p linux51

此时休眠就可以正常使用了,使用 systemctl hibernate 进行休眠测试

资料参考

休眠设置 - Arch Wiki

swap - Arch wiki

其他技巧Linux Server2019-10-12 14:13:08

hdparm - Linux硬盘休眠

Linux的硬盘休眠机制非常自由灵活,借助hdparm我们可以自由定制硬盘的休眠时间,大部分发行版都自带了hdparm,如果没有请自行安装

了解更多关于hdparm的使用可以使用 man hdparm查看,这里简单列举一下常用的指令

查询版本

hdparm -V

查看硬盘休眠情况

sudo hdpram -C /dev/sd*

让硬盘立即休眠

sudo hdparm -Y /dev/sdb

(重点)设置硬盘一定时间内无访问后自动休眠

sudo hdparm -S 244 /dev/sdb

参数取值可以参考 man hdparm里的,这里摘录出来仅供参考

  • 30 = 2分钟30秒
  • 60 = 5分钟
  • 120 = 10分钟
  • 180 = 15分钟
  • 241 = 30分钟
  • 242 = 1小时
  • 243 = 1.5小时
  • 244 = 2小时

注:硬盘休眠不宜太频繁,频繁唤醒很伤硬盘,弄巧成拙,请根据具体的场景决定休眠条件

其他技巧Linux Server2019-10-12 11:52:16

Linux - 硬盘测速命令技巧

假设新购入一块SSD硬盘/机械硬盘并接入Linux系统中,通过dd & hdparm两个Linux自带工具可以快速测出该硬盘的性能水准

这里暂定接入的设备为 /dev/sdc

hdparm测速方法

sudo hdparm -tT /dev/sdc

// 读速输出如下
/dev/sdc:
 Timing cached reads:   24384 MB in  1.99 seconds = 12263.71 MB/sec
 Timing buffered disk reads: 454 MB in  3.00 seconds = 151.25 MB/sec

hdparm的可以简单快捷的测出硬盘的读速,但这个测试方法过于简单,如果需要更确切的性能数据,更推荐使用dd

dd的测速方法

sudo dd if=/dev/zero of=/tmp/speedfile bs=8k count=10000 oflag=direct

// 写入速度输出如下
10000+0 records in
10000+0 records out
81920000 bytes (82 MB, 78 MiB) copied, 7.25587 s, 11.3 MB/s

sudo dd if=/tmp/speedfile of=/dev/null bs=8k count=10000 

// 读取速度输出如下
10000+0 records in
10000+0 records out
81920000 bytes (82 MB, 78 MiB) copied, 0.702369 s, 117 MB/s

dd测速命令解释

首先是两个系统自带设备(即上面测试用到的两个本地设备)

  • /dev/null:空设备,写入该设备不会产生IO(形似黑洞,写入即被丢弃),所以可以用来做新盘测试读速的写入对象
  • /dev/zero:零设备,可以无限提供空字符,一般用来生成特定大文件的虚拟设备

另外类似的设备还有/dev/random、/dev/urandom之类的,有兴趣可自行搜索

参数

  • bs:一次写入大小,block size
  • count:写入次数,一般联合bs进行测试
  • skip(可选):原文件读取的起始位置(单位与bs一致)
  • seek(可选):目标文件写入的起始位置(单位与bs一致)
  • oflag:表示写入的符号标志(通常代表不同的写入方式),direct表示直接I/O写入而不使用缓存

dd测速忽略了硬盘缓存等特性,测试的数据不够严谨,但作为个人测速使用相对还是比较直观的

其他技巧2020-02-14 01:41:08

Git - Bash脚本判断本地仓库代码是否需要更新

今晚找到一个不错的脚本,在这里分享一下

#!/bin/sh

UPSTREAM=${1:-'@{u}'}
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse "$UPSTREAM")
BASE=$(git merge-base @ "$UPSTREAM")

if [ $LOCAL = $REMOTE ]; then
    echo "Up-to-date"
elif [ $LOCAL = $BASE ]; then
    echo "Need to pull"
elif [ $REMOTE = $BASE ]; then
    echo "Need to push"
else
    echo "Diverged"
fi

执行这个脚本就可以获取到Github远程仓库与本地仓库的版本差别

注意git的旧版本不允许使用@,所以你可能需要使用@ {0}

如果仓库更新需要密码,可以让git记住密码,在仓库下执行 git config --global credential.helper store ,再 git pull 一下,下一次更新就不需要密码了

工具软件Git2019-10-16 17:49:36

netdata - 一款Linux下开源的监控Web应用

一款部署方便监控内容十分详尽的Linux监控软件

Real-time performance monitoring, done right!

项目地址:netdata / netdata

Github Star2020-04-15 14:40:05

x-prober - 一款精美的 PHP 探針

kmvan/x-prober - github

安装非常简单,点击release然后下载prober.php

放到PHP目录后更改名称为index.php(视情况而定)即可

效果如图

Github Star2020-01-07 17:04:05

Wol - 远程唤醒计算机

经常做过Wol远程唤醒,但没细究过里面的设置,这里归纳一下如何设置以及为什么要这样设置,以一台Windows10的机器为例子

首先我们需要更改BIOS设置,大部分情况下只需要注意打开有以下关键字的选项为Enabled状态即可

  • Wake on lan

其次是开机后在Windows10里,按Win+X打开快捷菜单,按M打开 设备管理器,找到 网络设配器并展开,选择你的网卡,有线网卡通常是 Realtek开头的,右键打开属性对话框,选择选项卡 电源管理

勾选如下两个选项

  • 允许计算机关闭此设备以节约电源(这里可以理解为接管网卡电源)
  • 允许此设备唤醒计算机

可选选项

  • 只允许幻数据包唤醒计算机(不勾选则任何数据包都可以激活你的电脑,勾选则只允许魔术包激活你的计算机)

再选中 高级选项卡,查看以下两个值,确保是 Enabled状态

  • Wake on Magic Packet
  • Wake on pattern match

确保下面这个选项是 Disabled状态(有些计算机没有这个选项也很正常,注意,此选项若是启用,则在关机一段时间后无法唤醒)

  • Wake on lan after shutdown

关机后,查看网口提示灯是否亮着,如果亮着则说明设置成功, 但请注意如果网口提示灯没有亮并不代表失败!

有些机型是默认设置即使开启WOL唤醒网口提示灯也不会亮的,我们需要尝试使用唤醒计算机来最终确认是否设置成功

发送WOL包的方法很多,这里以Ubuntu 18.04为例子,安装etherwake并发送wol包

chancel@chancel-nas ~ » sudo apt install etherwake                                                                                                                                      100 ↵ Reading package lists... Done
Building dependency tree
Reading state information... Done
...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
chancel@chancel-nas ~ » ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 70:85:c2:82:20:27 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.11/24 brd 192.168.11.255 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::7285:c2ff:fe82:2027/64 scope link
       valid_lft forever preferred_lft forever
chancel@chancel-nas ~ » sudo etherwake -i enp1s0 -b 3C:97:3E:E0:01:DC 

其他技巧2019-11-10 23:42:51

搜索

分类

3 Web网站
7 Github Star
26 工具软件
8 其他技巧
10 后端技术

标签