个人日常使用发行版为 Linux Mint, Debian 系发行版大部分可套用或稍加改动使用。RedHat 系发行版可能随之后的使用情况而修订增加相关内容。
部分内容为使用 centos 或 oracle linux 中的内容,非 RedHat 系发行版需要搜索以确认相同配置文件的不同路径及其它差异。
Linux 发行版的区别大同小异,学习 Linux 重在学习一种通用的解决方案或思路,不必过分纠结使用何种发行版,迷失在发行版之间差异的细枝末节中!
在 shell 中使用 zenity
弹出框,报错:
WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
在 debian 系可以安装 at-spi2-core
包解决。
可能还会有的报错:
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
该报错可以安全地忽略。
-
锐捷官方客户端
sudo chmod +x ./rjsupplicant.sh sudo ./rjsupplicant.sh --help # 配置使用
-
Mentohust
安装 mentohust_0.3.4-1_amd64.deb 包。
Mentohust 使用
notify-osd
libnotify-dev
提供气泡提示(Unity 桌面默认通知方式,Cinnamon 桌面需要手动安装包)。关于通知的文档:https://wiki.archlinux.org/index.php/Desktop_notifications# 修复提示 “!!打开libnotify失败,请检查是否已安装该库文件。” sudo ln -s /usr/lib/x86_64-linux-gnu/libnotify.so.4.0.0 /usr/lib/libnotify.so.1
配置文件位置
/etc/mentohust.conf
:组播地址:标准
DHCP 方式:二次认证
安装 zsh:
sudo apt-get install zsh
切换默认 zsh:
chsh -s /bin/zsh
安装 oh-my-zsh
:
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
配置文件 ~/.zshrc
:
# 定义 zsh 主题
ZSH_THEME="ys"
# 设置别名
alias sudo="sudo " # 授予 sudo 别名权限
alias rj="mentohust" # 联网
alias qrj="mentohust -k" # 退出联网
# alias xl="docker start xware" 启动讯雷下载容器
# alias qxl="docker stop xware" 停止讯雷远程下载容器
bd
可以方便地在当前路径的父级别目录切换,安装可以点击项目链接查看文档中的安装说明。
默认安装不会在非 bash 终端中配置
bd
运行的别名,需要手动设置。例如使用
zsh
终端,需要在.zshrc
中增加:alias bd=". bd -si"
下载符号字体解决 wps 符号字体缺失:
下载全套 Windows 字体:
同时使用 Infinality 优化字体渲染:
参考文章:http://www.webupd8.org/2013/06/better-font-rendering-in-linux-with.html
sudo add-apt-repository ppa:no1wantdthisname/ppa
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install fontconfig-infinality
设置风格为 Infinality
:
sudo bash /etc/fonts/infinality/infctl.sh setstyle
设置渲染风格:
# 修改 USE_STYLE 为 UBUNTU
sudo vim /etc/profile.d/infinality-settings.sh
启用 Hinting full
。
-
壁纸
安装所有 Linux Mint 历史版本自带壁纸:
sudo apt-get install mint-backgrounds-*
-
图标
-
经典 Numix-Circle 图标适配全,更新快:
sudo add-apt-repository ppa:numix/ppa sudo apt-get update sudo apt-get install numix-icon-theme-circle
-
扁平化 Paper 图标,适合扁平化主题:
sudo add-apt-repository ppa:snwh/pulp # update repository info sudo apt-get update # install icon theme sudo apt-get install paper-icon-theme # install gtk theme sudo apt-get install paper-gtk-theme # install cursor theme sudo apt-get install paper-cursor-theme
-
-
主题
-
添加 Numix PPA 后,安装 gtk 主题:
sudo apt-get install numix-gtk-theme
对于 Cinnamon 桌面而言,改变 Panel 主题可下载
Numix-Cinnamon-2
主题设置使用。 -
添加 Adapta PPA 后,安装主题:
sudo apt-get install adapta-gtk-theme
-
-
登录窗口
同样选择 Numix 主题来统一风格,自定义背景修改
/usr/share/mdm/html-themes
路径下主题文件。
Fcitx 搭配 Cinnamon 会产生一个僵尸进程,搜狗输入法容易导致概率性 CPU 占用 100%。所以使用小小输入法。
解压到主目录 ~/.yong
:
sudo chmod +x ./yong-tool.sh
sudo ./yong-tool.sh --install
小小输入法内置词库少,可使用工具将其他词库转换后导入:https://github.com/studyzy/imewlconverter
导入说明:https://github.com/studyzy/imewlconverter/wiki/Xiaoxiao
默认 JDK 安装:
sudo apt-get update
sudo apt-get install default-jre
Oracle JDK 安装:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer # JDK 6
sudo apt-get install oracle-java7-installer # JDK 7
sudo apt-get install oracle-java8-installer # JDK 8
版本之间切换:
update-alternatives --config java
update-alternatives --config javac
客户端和服务端分别安装相关软件
yum -y install rpcbind nfs
chkconfig rpcbind on # 开机启动 rpcbind 服务
chkconfig nfs on # 开机启动 nfs 服务
启动相关服务:
service rpcbind start
service nfs start
以下示例中,分别使用两台本地虚拟机测试,服务端 ip:192.168.221.100,客户端 ip:192.168.221.101
编辑配置文件 /etc/exports
添加
/home/uploads 192.168.221.101(rw,all_squash,anonuid=0,anongid=0)
id 为文件夹所属的 uid 和 gid.
查看该 uid 和 gid:
ls -nd /home/uploads
在 NFS 服务端,若该用户不存在,则会显示相应的 uid 和 gid 而非用户名和组名,需要在服务端创建 uid 和 gid 对应的用户名和组名,即可正确显示。
配置说明:
192.168.221.101 客户端 ip
rw 读写 ro 只读
all_squash 无论客户端以何用户连接服务端,对服务端而言均为匿名用户
anonuid 匿名用户的 uid
anongid 匿名用户的 gid
uid 和 gid 最好为客户端和服务端均存在的 uid 和 gid 值
执行:
service rpcbind restart
service nfs restart
# service nfs reload 调整 /etc/exports 配置文件后进行服务重载
服务端使用 showmount 命令查看 nfs 的共享状态
showmount -e # 默认查看自己的状态,前提是要能解析自己
showmount -a # 显示已经与客户端连接的目录信息
客户端查看
showmount -e 192.168.221.100
成功则显示目录,失败则会报错
-
执行客户端查看命令后报错
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
在服务端防火墙配置添加端口规则:-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT
-
执行上述操作后依然报错
rpc mount export: RPC: Unable to receive; errno = No route to hostrpc mount export: RPC: Unable to receive; errno = No route to host
在客户端上执行
rpcinfo -p 192.168.221.100
查看列出的所有端口。在服务端上,将列出的所有端口在防火墙中配置通过:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 43888 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 39912 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 47611 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 10235 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 64815 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 54924 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 31590 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 62105 -j ACCEPT
执行成功。
-
若挂载目录为
/root/*
类似目录,则会报错:mount.nfs: access denied by server while mounting 192.168.221.100:/root/uploads/
原因是由于
/root/
目录权限问题,更改权限为755
可解决,或者挂载非/root/
目录。
重启服务:
service rpcbind restart
service nfs restart
查看可用挂载
showmount -e 192.168.221.100
出错参见上述出错解决方案
创建本地挂载目录,例如和服务器相同,使用 /home/uploads
目录。
编辑客户端 /etc/fstab
文件,追加一行
192.168.221.100:/home/uploads/ /home/uploads/ nfs defaults 0 0
挂载测试
mount -a
查看挂载
nfsstat -m
df -h
umount -l /home/uploads
在服务端创建文件,看客户端是否共享,反之亦可。
同步文件的服务器之间要求配置免密登陆,参见 配置密钥登陆
在两台服务器同时安装 Unison.
官方仓库下载 https://github.com/bcpierce00/unison/releases 或直接下载编译好的 rpm 包。 ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/unison-2.40.63-1.el6.rf.x86_64.rpm
安装:
rpm -ivh unison-2.40.63-1.el6.rf.x86_64.rpm
新建用户目录下 .unison
中的配置文件。
例:新建一个 test.prf
配置文件
# Unison preferences
# 全自动模式,接受缺省动作,并执行
batch = true
# 根据创建时间来比较,而非内容,建议开启
fastcheck = true
# 保持同步文件的文件组信息
group = true
# 忽略文件
ignore = Path a/*
log = true
# 日志文件路径,需要先创建
logfile = /root/unison/logs/webapp.log
# 同步时最大线程数
maxthreads = 300
# 保持同步过来的文件所有者
owner = true
# 保持读写权限
perms = -1
# 间隔 60 秒开始一次新的同步检查
repeat = 60
# 失败重试次数
retry = 3
# 本地同步目录
root = /root/100
# 远程同步目录
root = ssh://root@192.168.221.100//root/101
# 第一次同步需要开启追踪所有文件,之后关闭来实现差异性同步,该配置同本地 root 配置
force = /root/100
# 激活 rsync 传输模式
rsync = true
# 静默模式
silent = true
# 同步修改时间
times = true
# 不变目录,扫描时可忽略
xferbycopying = true
新建或编辑 ../unison/scripts/test.sh
.
检测 unison 状态
#!/bin/bash
result=`ps -ef | grep "/usr/bin/unison test" | grep -v grep`;
if [ -z "$result" ];then
/usr/bin/unison test;
fi
配置脚本定时启动
crontab -e
sh ../unison/scripts/test.sh >/dev/null 2>&1
查看配置参数中指定的日志文件。
- 注释配置文件中的 force 参数
- 运行
unison test
进行同步 - 注释配置文件中的 force 参数
-
Chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
-
Firefox Dev
# 使用 Umake 安装 umake web firefox-dev
- Google Keep
- 豆瓣电台
- Enjoy Music Player
- Polarr
- All-in-One
- Postman
Visual Studio Code - https://code.visualstudio.com/
# optional, but recommended
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE
# add Typora's repository
sudo add-apt-repository 'deb https://typora.io ./linux/'
sudo apt-get update
# install typora
sudo apt-get install typora
-
白噪音
ANoise
:sudo add-apt-repository ppa:costales/anoise sudo apt-get update sudo apt-get install anoise
-
剪贴板管理
Diodon
:sudo add-apt-repository ppa:diodon-team/stable sudo apt-get update sudo apt-get install diodon
-
截图
Shutter
:sudo apt-get install shutter
设置快捷键命令
shutter -s
,实现矩形选区截图。 -
护眼
Redshift
:sudo apt-get install redshift
初次启动可能提示缺少
Geoclue
组件,安装后可以使用自动网络定位。手动配置文件
~/.config/redshift.conf
:temp-day=6500 # 适应可设为 5500 temp-night=5500 # 适应可设为 4100 gamma=0.8 # 纠正笔记本大白屏幕的好方式
-
录屏 GIF 工具: peek
sudo add-apt-repository ppa:peek-developers/stable sudo apt update sudo apt install peek
-
Umake
Umake 是 Ubuntu 官方的一款用来安装开发环境及开发工具的工具,同样在 Linux Mint 下可用。预装已有 Umake 工具,但支持较少,通过 ppa 来升级。
$ sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make $ sudo apt-get update $ sudo apt-get upgrade
-
DBeaver: 跨平台数据库管理工具。
-
DiffMerge: 跨平台 GUI 代码比较工具。
-
Wireshark: 跨平台抓包工具
sudo add-apt-repository ppa:wireshark-dev/stable sudo apt-get update sudo apt-get install wireshark
将本地用户加入
wireshark
用户组:sudo usermod -a -G wireshark rainy
若打开提示无权限,首先给普通用户抓包权限:
setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap
然后进行权限控制,只有特定组,即 wireshark 用户组的用户才可以抓包:
chown root /usr/bin/dumpcap chmod u+s /usr/bin/dumpcap groupadd wireshark usermod -a -G wireshark username chgrp wireshark /usr/bin/dumpcap chmod o-rx /usr/bin/dumpcap
-
Daily Builds:
sudo add-apt-repository ppa:damien-moore/codeblocks sudo apt-get update sudo apt-get install codeblocks
Release Builds:
sudo add-apt-repository ppa:damien-moore/codeblocks-stable sudo apt-get update sudo apt-get install codeblocks codeblocks-contrib
-
Shadowsocks
推荐使用 Shadowsocks-qt5 来设置。
sudo add-apt-repository ppa:hzwhuang/ss-qt5 sudo apt-get update sudo apt-get install shadowsocks-qt5
在 Shadowsocks 启动后,会运行一个
8123
端口的 http 本地代理,不支持 socks 代理的可以使用此 http 代理方式。 -
Proxychains
代理终端命令中的网络请求。在源中安装:
sudo apt-get install proxychains
然后配置文件
/etc/proxychains.conf
。 -
Proxychains-ng 是 Proxychains 的增强版本,
-
polipo(已停止维护)
polipo 是一个轻量级的缓存web代理程序,将 socks 代理转换为 http 代理。
sudo apt-get install polipo
配置文件
/etc/polipo/config
:# This file only needs to list configuration variables that deviate # from the default values. See /usr/share/doc/polipo/examples/config.sample # and "polipo -v" for variables you can tweak and further information. logSyslog = true logFile = /var/log/polipo/polipo.log proxyAddress = "0.0.0.0" socksParentProxy = "127.0.0.1:1080" socksProxyType = socks5 chunkHighMark = 50331648 objectHighMark = 16384 serverMaxSlots = 64 serverSlots = 16 serverSlots1 = 32
默认运行在 8123 端口,启动服务并为当前会话配置代理:
sudo service polipo start export http_proxy="http://127.0.0.1:8123/"
-
$ sudo add-apt-repository ppa:zeal-developers/ppa $ sudo apt-get update $ sudo apt-get install zeal
-
Calibre
sudo -v && wget -nv -O- https://raw.githubusercontent.com/kovidgoyal/calibre/master/setup/linux-installer.py | sudo python -c "import sys; main=lambda:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main()"
-
可以替代 OriginLab.
sudo apt-get install qtiplot
-
许久未见更新,半死不活的样子。Linux 版本无法编辑公式,无法正确显示公式。只适合阅读不适合编辑。
-
Gparted
图形化磁盘分区管理工具。
sudo apt-get install gparted
Linux 平台下的应用虽然数量多,但质量也参差不齐。许多应用需要进行虚拟机或 wine 等方式来曲线救国。
-
作为 wine 项目的商业支持版本,可以很方便安装一系列 Windows 平台软件。对于 Deepin Linux 用户已经预装在系统中,包含批量授权。其他发行版用户需要购买。
-
Microsoft Office
鉴于 WPS for Linux 功能有限且字体各方面显示不尽人意,借助 CrossOver 可以完美安装 Microsoft Office 系列。但为了消除字体等造成的差异,还是选择在虚拟机下使用 Office。
-
虚拟机方案及优化
(待编辑)
编辑 eth0 的配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
删除 HWADDR
和 UUID
的行,更改相应的虚拟机 ip,防止冲突。
有必要再清空文件 /etc/udev/rules.d/70-persistent-net.rules
.
git-lfs 提供了一个安装文档,但是在使用 Linux Mint 进行安装时需要按照文档中的说明进行变通。原脚本的自动检测功能并没有发挥作用,需要手动设置为兼容的上游发行版源,参见 #1074.
例如,使用 Linux Mint 18.x 进行安装时,需要设置为 ubuntu 16.04 的源。
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | os=ubuntu dist=xenial sudo -E bash
然后就可以正常安装:
sudo apt-get update
sudo apt-get install git-lfs
Deepin 操作系统安装注意
上述安装脚本无法识别 Deepin 操作系统版本,由于 Deepin 最新版基于 debain jessie 开发,因而可以手动添加 debian jessie 源来安装。
sudo vim /etc/apt/source.list.d/github_git-lfs.list
内容如下:
deb https://packagecloud.io/github/git-lfs/debian/ jessie main
deb-src https://packagecloud.io/github/git-lfs/debian/ jessie main
安装 apt-key:
sudo apt-get install curl gnupg
curl -L https://packagecloud.io/github/git-lfs/gpgkey | sudo apt-key add -
sudo apt-get update
sudo apt-get install debian-archive-keyring
sudo apt-get install apt-transport-https -y
随后即可正常安装:
sudo apt-get install git-lfs
由于 github 的 lfs 文件存储在 Amazon S3 服务器,所以在传送大文件时可能因为网络原因造成失败。所以可以通过配置
hosts
文件来使其走香港节点,来提高速度。在
hosts
文件中添加:219.76.4.4 github-cloud.s3.amazonaws.com而通过配置代理方式来加速暂未成功,待更新。
xxx is not in the sudoers file. This incident will bereported (xxx 为用户名)
在超级用户模式下执行
chmod u+w /etc/sudoers
编辑该文件,找到
root ALL=(ALL) ALL
xxx ALL=(ALL) ALL # 追加此行,xxx 为用户名
为了安全,修改结束后将用户写权限禁用
chmod u-w /etc/sudoers
以 centos 为例
添加光盘镜像:
选择 rescue install system
,进入 bash 后原系统将被挂载再 /mnt/sysimage/
下,之后执行
chroot /mnt/sysimage
若成功则 shell 提示符变为 sh-4.1#
,之后即可对原系统进行恢复救援操作。
在 xshell 中,点击 “工具 -> 新建用户密钥生成向导 -> ..."
生成之后,将公钥传输到 .ssh
下,执行
cat *.pub >> authorized_keys
此时生成的 authorized_keys
权限可能有问题,需要将权限改为 600
.
或者在本机将公钥传输
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx
本机为 windows 系统,用 git bash 传输,注意公钥的保存路径。 执行权限更改操作以防安全
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
编辑 sshd_config
文件
vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorsizedKeysFile .ssh/authorized_keys
编辑 sshd_config
文件
vim /etc/ssh/sshd_config
# 禁用密码认证
PasswordAuthentication no
# 启用密钥认证
RSAAuthentication yes
PubkeyAuthentication yes
# 指定公钥数据库文件
AuthorsizedKeysFile .ssh/authorized_keys
脚本执行上述修改
sed -i "s/^PasswordAuthentication.*/PasswordAuthentication no/g" /etc/ssh/sshd_config
sed -i "s/^#RSAAuthentication.*/RSAAuthentication yes/g" /etc/ssh/sshd_config
sed -i "s/^#PubkeyAuthentication.*/PubkeyAuthentication yes/g" /etc/ssh/sshd_config
sed -i "s/^#AuthorizedKeysFile.*/AuthorizedKeysFile .ssh\/authorized_keys/g" /etc/ssh/sshd_config
重启 SSH 服务器启用,保留一个会话以防不测
# RPM 系
service sshd restart
# DEB 系
service ssh restart
# 老 Debian
/etc/init.d/ssh restart
可以在每个用户的公钥后加入用户标识进行管理
echo 'ssh-rsa XXXX' >> /root/.ssh/authorized_keys
-
编辑 crontab 服务文件
crontab -e
-
查看该用户下的 crontab 服务是否创建成功,用 crontab -l 命令
-
启动 crontab 服务 执行
service crond start service crond restart # 重启服务
查看服务是否已运行:
ps -ax | grep cron
-
crontab 命令
crontab -u # 设定某个用户的 cron 服务 crontab -l # 列出某个用户 cron 服务的详细内容 crontab -r # 删除某个用户的 cron 服务 crontab -e # 编辑某个用户的 cron 服务
在编辑时,编辑内容要符合格式:
*/1 * * * * ls >> /tmp/ls.txt
语法说明
分 小时 日 月 星期 命令 0-59 0-23 1-31 1-12 0-6 command
*
代表取值范围内的数字/
代表每-
代表从某个数字到某个数字,
分开几个离散的数字
对于 Oracle Linux
cd /etc/yum.repos.d/
mv public-yum-ol6.repo public-yum-ol6.repo.bak # 绕过网络镜像
mv packagekit-media.repo packagekit-media.repo.bak # 备份本地镜像源
将镜像挂载
mount /dev/cdrom /mnt/
新建本地镜像源
vim /etc/yum.repos.d/local.repo
[local-media]
name=local
baseurl=file:///mnt/
gpgcheck=0 # 默认不检查 gpg
enabled=1
LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。首先我们讨论以下几个LVM术语。
PV: 是物理的磁盘分区,一个硬盘分区组成一个 pv。 VG: LVM 中的物理磁盘分区,必须加入 VG,VG 理解为一个大仓库。 LV: 从 VG 中划分的逻辑分区
下图为 LVM 逻辑卷管理示意图,来自 维基百科
-
挂载新硬盘 新挂载硬盘的设备名为
/dev/sdb
管理开机挂载的文件在/etc/fstab
-
创建分区 LVM 的分区类型为 8e。 使用 fdisk 创建分区,根据设备文件的绝对路径(/dev/sda)进入分区管理。
fdisk /dev/sdb
- 输入 n 创建新分区
- 输入 p 创建基本分区(p 是基本分区,e 是扩展分区)
- 选择分区编号,1~4,选择没使用的,新磁盘则使用 1
- 选择分区起始点,默认
- 选择分区终点,默认
- 回车,分区完成
- 输入 t,更改分区编号
- 输入 L,查看所有编号,选择 8e
- 保存退出,输入 w,写入磁盘
初始化分区
sdb
为物理卷 pvpvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created
显示物理卷信息
pvdisplay ... "/dev/sdb1" is a new physical volume of "10.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 10.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 1KxYdf-RKzH-ZC6u-j58D-B7d3-Bf3J-snknHS
创建逻辑卷组 vg,将
/dev/sdb
加入到这个卷组里。vgcreate vg_other /dev/sdb
-
对已有的卷组进行扩容
vgextend vg_hand /dev/sdb1
查看 vg 的容量已经增加
vgdisplay
查看已经存在的 lv 信息,以 LogVol01 为例
lvextend -L 10G /dev/vg_hand/LogVol01 # 扩展 LV
或者直接将剩余空间全部扩展
lvextend -l +100%FREE /dev/vg_hand/logVol01 # 扩展剩余所有空间到 logVol01
执行重设
resize2fs /dev/vg_hand/LogVol01
-
创建lv
lvcreate -L 10G -n lv_new vg_hand
然后进行格式化,查看系统的文件类型
df -Th
格式化 lv
mkfs.ext4 /dev/vg_hand/new_lv
-
lv 删除后,再次扫描或扩容,报错 LV missing,原因是需要刷新 VG,执行如下命令。
vgchange -a y /dev/vg_hand
-
从 vg 移除并删除 pv
vgreduce vg_hand /dev/sda4 pvremove /dev/sda4
删除该硬盘的 lvm 分区
fdisk /dev/sda4
- p 显示分区情况
- d 删除分区
执行 lvreduce
操作时,需要按顺序执行。
- 若有挂载目录,需要先卸载目录
umount /dir
- 文件系统检查
e2fsck -f /dev/mapper/vg_hand-lv_dir
- 文件系统大小变更
resize2fs /dev/mapper/vg_hand-lv_dir 10G
- lv 缩减
lvresize -L 10G /dev/mapper/vg_hand-lv_dir
- 挂载所有
/etc/fstab
中的记录。
若在执行 lvreduce
或 lvresize
之前没有执行文件系统大小变更的操作,则可能开机报错。
wrong fs type, bad option, bad superblock on /dev/mapper/vg_hand-lv_root
无法进入系统,需要进行恢复,恢复操作。 挂载 iso 镜像,进入第三项。
之后若检测不到本机系统,则只进入 Shell 环境进行恢复操作。
若可以进入则系统被挂载在 /mnt/sysimage
下
lvextend -L 5G /dev/vg_hand/lv_root # 扩展到原来的大小即可恢复
阿里云和腾讯云默认不开启 swap,建立 swap 分区执行以下步骤。
dd if=/dev/zero of=/mnt/swap bs=block_size count=number_of_block
注:block_size、number_of_block 大小可以自定义,比如bs=1M count=1024 代表设置1G大小
mkswap /mnt/swap
swapon /mnt/swap
如果在/etc/rc.local中有swapoff -a 需要修改为swapon -a
修改文件 /etc/fstab 中的 swap 行。
添加 /mnt/swap swap swap default 0 0
设置后执行 free -m
命令查看效果。
阿里云默认主机名为随机生成,为区分需要修改主机名。
hostnamectl set-hostname 新主机名
vim /etc/hosts
修改主机名:
vim /etc/sysconfig/network
修改 HOSTNAME。