mirror of
https://github.com/LCTT/TranslateProject.git
synced 2026-08-20 03:53:30 +08:00
Merge branch 'master' of https://github.com/LCTT/TranslateProject
merge from LCTT.
This commit is contained in:
@@ -1,38 +0,0 @@
|
||||
Lime Text: 一款可以替代 Sublime Text 的开源项目
|
||||
================================================================================
|
||||

|
||||
|
||||
[Sublime Text][1] 可能是为程序员准备的一个最好的(尽管不是最最好的)文本编辑器。Sublime 囊括了众多特色并且拥有很棒的界面外观,能够运行在所有的三大主流桌面操作系统,亦即 Windows, Mac 还有 Linux 之上。
|
||||
|
||||
但这并不表示 Sublime Text 是完美的。时常会出现 bug,崩溃但却几乎没有任何技术支持。如果你注意到 Sublime Text 的开发过程,你就会发现此时 Sublime Text beta 版已经公开超过一年了,却没有告知用户任何关于它的发行日期的确切信息。最重要的是,Sublime Text 既不免费也不[开源][2]。
|
||||
|
||||
这一系列问题也使 [Fredrik Ehnbom][3] 感到沮丧,因此他在 [Github][5] 上发起了一个开源项目 [Lime Text][4],希望能开发出一款新的文本编辑器,其外观和工作方式完全与 Sublime Text 一致。在关于为什么他决定去“克隆”一款现有的文本编辑器这个问题上,Frederic 说道:
|
||||
|
||||
> 因为没有一款我试过的其他文本编辑器能达到我对 Sublime Text 的喜爱程度,我决定了我不得不开发出我自己的文本编辑器。
|
||||
|
||||
Lime Text 后台用 Go 写成,前端则使用了 ermbox,Qt (QML) 及 HTML/JavaScript。开发过程正在进行中,同时完全公布确切[目标][6]。你可以在它的 [Github 页面][7]为项目做贡献。
|
||||
|
||||

|
||||
|
||||
如果你想要尝试 beta 版本,你可以通过 [wiki][8] 的介绍搭建 Lime Text。同时,如果你想找寻其他强大的文本编辑器的话,试一试 [SciTE][9] 吧。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://itsfoss.com/lime-text-open-source-alternative/
|
||||
|
||||
作者:[bhishek][a]
|
||||
译者:[SteveArcher](https://github.com/SteveArcher)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://itsfoss.com/author/Abhishek/
|
||||
[1]:http://www.sublimetext.com/
|
||||
[2]:http://itsfoss.com/category/open-source-software/
|
||||
[3]:https://github.com/quarnster
|
||||
[4]:http://limetext.org/
|
||||
[5]:https://github.com/
|
||||
[6]:https://github.com/limetext/lime/wiki/Goals
|
||||
[7]:https://github.com/limetext/lime/issues
|
||||
[8]:https://github.com/limetext/lime/wiki/Building
|
||||
[9]:http://itsfoss.com/scite-the-notepad-for-linux/
|
||||
@@ -1,126 +0,0 @@
|
||||
10个调整让Ubuntu找到家的感觉
|
||||
================================================================================
|
||||

|
||||
|
||||
不久以前我提供给大家[12个调整Ubuntu的小建议][1]。 然而,从那以后多了一段时间了, 我们又提出了另外10个建议,能够使你的Ubuntu找到家的感觉。
|
||||
|
||||
这10个建议执行起来十分简单方便,那就让我们开始吧!
|
||||
|
||||
### 安装 TLP ###
|
||||
|
||||

|
||||
|
||||
[We covered TLP a while back][2], 这是一款优化电源设置的软件,为了让你能享受到一个更长的电池寿命。之前我们深入的探讨过TLP, 并且我们也在列表中提到这真是一个好东西。要安装它,在终端运行以下命令:
|
||||
|
||||
sudo add-apt-repository -y ppa:linrunner/tlp && sudo apt-get update && sudo apt-get install -y tlp tlp-rdw tp-smapi-dkms acpi-call-tools && sudo tlp start
|
||||
|
||||
上面的命令将添加必要的仓库,更新包的列表以便它能包含被新仓库提供的包,安装TLP并且开启这个服务。
|
||||
|
||||
### 系统负载指示器 ###
|
||||
|
||||

|
||||
|
||||
给你的Ubuntu桌面添加一个系统负载指示器能让你了解到你的系统资源被占用了多少。 如果你宁愿不在桌面上添加这个技术图表,那么可以不要添加它, 但是对于那些对这个感兴趣的人来说,这真是一个好的扩展。 你可以运行这个命令去安装它:
|
||||
|
||||
sudo apt-get install indicator-multiload
|
||||
|
||||
然后在Dash里面找到它并且打开。
|
||||
|
||||
### 天气指示器 ###
|
||||
|
||||

|
||||
|
||||
Ubuntu过去提供内置的天气指示器, 但是自从它切换到Gnome 3以后,就不在默认提供了。代替地,你需要安装一个独立的指示器。 你可以通过以下命令安装它:
|
||||
sudo add-apt-repository -y ppa:atareao/atareao && sudo apt-get update && sudo apt-get install -y my-weather-indicator
|
||||
|
||||
这将添加另外一个仓库,更新包的列表,并且安装这个指示器。然后在Dash里面找到并开启它。
|
||||
|
||||
### 安装 Dropbox 或其他云存储解决方案 ###
|
||||
|
||||

|
||||
|
||||
我在我所有的Linux系统里面都安装过的一个东西就是Dropbox。没有它,真的就找不到一个家的感觉,主要是因为我所有经常使用的文件都储存在Dropbox中。安装Dropbox非常直截了当,但是要花点时间执行一个简单的命令。 在开始之前,你需要运行这个命令为了你能在系统托盘里看到Dropbox的图标:
|
||||
|
||||
sudo apt-get install libappindicator1
|
||||
|
||||
然后你需要去Dropbox的下载页面,接着安装你已下载的.deb文件。现在你的Dropbox应该已经运行了。
|
||||
|
||||
如果你有点讨厌Dropbox, 你也可以尝试使用Copy [或者OneDrive][3]。两者提供更多免费存储空间,这是考虑使用他们的很大一个原因。比起OneDrive我更推荐使用Copy因为Copy能工作在所有的Linux发行版上。
|
||||
|
||||
### 安装Pidgin和Skype ###
|
||||
|
||||

|
||||
|
||||
和朋友们保持联系特别好,并且如果你使用即时通讯,那么你很幸运。 Pidgin和Skype在Linux都十分出色,它们都能连接所有主要网络。安装Pidgin就像运行这个命令一样简单:
|
||||
|
||||
sudo apt-get install pidgin
|
||||
|
||||
安装Skype也很简单 — 你仅仅需要去Skype的下载页面并且下载你Ubuntu12.04对应架构的.deb文件就可以了。
|
||||
|
||||
###移除键盘指示器 ###
|
||||
|
||||

|
||||
|
||||
在桌面上显示键盘指示器可能让一些人很苦恼。对于讲英语的人来说,它仅仅显示一个“EN”,这可能是恼人的,因为很多人不需要改变键盘布局或者被提醒他们正则使用英语。要移除这个指示器,选择系统设置,然后文本输入,接着去掉“在菜单栏显示当前输入源”的勾。
|
||||
>[译注]:国人可能并不适合这个建议。
|
||||
|
||||
### 回归传统菜单###
|
||||
|
||||

|
||||
|
||||
在Ubuntu切换到Unity之前,它使用Gnome 2 作为默认的桌面环境。 这包含一个简单的菜单去访问已安装的应用,菜单包含的很多分类,比如: 游戏,办公, 互联网,等等。 你可以用另外一个简单的包找回这个“传统菜单” 。要安装它,运行这个命令:
|
||||
|
||||
sudo add-apt-repository -y ppa:diesch/testing && sudo apt-get update && sudo apt-get install -y classicmenu-indicator
|
||||
|
||||
### 安装Flash和Java ###
|
||||
|
||||
在之前的文章中我提到了安装解码器和Silverlight,我应该也提到了Flash和Java是他们所需要的主要插件,虽然他们有时可能忘了它们。要安装它们只需运行这个命令:
|
||||
|
||||
sudo add-apt-repository -y ppa:webupd8team/java && sudo apt-get update && sudo apt-get install oracle-java7-installer flashplugin-installer
|
||||
|
||||
安装Java需要新增仓库,因为Ubuntu不再包含它的专利版本(大多数人为了最好的性能推荐使用这个版本),而是使用开源的OpenJDK。
|
||||
|
||||
### 安装VLC ###
|
||||
|
||||

|
||||
|
||||
默认的媒体播放器, Totem,十分优秀但是它依赖很多独立安装的解码器才能很好的工作。我个人推荐你安装VLC媒体播放器, 因为它包含所有解码器并且实际上它支持世界上每一种媒体格式。要安装它,仅仅需要运行如下命令:
|
||||
|
||||
sudo apt-get install vlc
|
||||
|
||||
### 安装PuTTY (或者不) ###
|
||||
|
||||

|
||||
|
||||
最近,如果你出于SSH的需要而使用PuTTY,你有两个选择:为Linux安装PuTTY,或者直接使用终端。如果你想使用终端安装PuTTY,需要用到这个命令:
|
||||
|
||||
sudo apt-get install putty
|
||||
|
||||
然而,并不需要直接安装它,因为你可以使用这个命令来连接任何远程主机。
|
||||
|
||||
ssh username@this.domain.here
|
||||
|
||||
用你想要连接的用户名来替换掉“username”,然后用主机的直接域名或者IP地址替换掉“this.domain.here” 都可以。
|
||||
|
||||
### 你推荐如何调整? ###
|
||||
|
||||
补充了这10个调整,你应该感觉你的Ubuntu真的找到了家的感觉,这很容易重建或击溃你的Linux体验。有许多不同的方式去定制你自己的体验去让它更适合你的需要;你只需要环顾自己并且找到你想要的东西
|
||||
|
||||
**你有什么调整和建议想和读者分享?**在评论中让我们知道吧!
|
||||
|
||||
*图片致谢: Home doormat Via Shutterstock*
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.makeuseof.com/tag/10-tweaks-make-ubuntu-feel-like-home/
|
||||
|
||||
作者:[Danny Stieben][a]
|
||||
译者:[guodongxiaren](https://github.com/guodongxiaren)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.makeuseof.com/tag/author/danny/
|
||||
[1]:http://www.makeuseof.com/tag/11-tweaks-perform-ubuntu-installation/
|
||||
[2]:http://www.makeuseof.com/tag/easily-increase-battery-life-tlp-linux/
|
||||
[3]:http://www.makeuseof.com/tag/synchronize-files-ubuntu-onedrive/
|
||||
@@ -1,106 +0,0 @@
|
||||
Linux 内核测试与调试 - 2
|
||||
================================================================================
|
||||
### 编译安装稳定版内核 ###
|
||||
|
||||
如果你用 git 下载源码,就执行以下命令:
|
||||
|
||||
cd linux-stable
|
||||
|
||||
git checkout linux-3.x.y
|
||||
|
||||
如果是直接下载压缩文件,用以下命令进入源码目录:
|
||||
|
||||
cd linux-3.x.y
|
||||
|
||||
如果你想把内核安装到自己的系统上,最安全的方法是使用你安装好的发行版拥有的配置文件。你可以在 /boot 目录找到当前发行版的内核配置文件:
|
||||
|
||||
cp /boot/config-3.x.y-z-generic .config
|
||||
|
||||
运行下面的命令,可以在当前内核配置的基础上修改一些小地方,然后产生新的内核配置文件。比如说新的内核比你的 Ubuntu 发行版自带的内核多了些新功能,而你正好需要用到它们,这个时候你就要修改配置了。
|
||||
|
||||
make oldconfig
|
||||
|
||||
完成配置后,就可以编译了:
|
||||
|
||||
make all
|
||||
|
||||
完成编译后,安装这个新的内核:
|
||||
|
||||
sudo "make modules_install install"
|
||||
|
||||
上面的命令安装新内核,并把新内核作为启动项添加到 grub 文件(LCTT:就是你下次开机时会多出一个开机选项)。好了你可以重启电脑,然后选择新的内核启动系统。等等!先别冲动,在重启电脑之前,我们保存下编译内核产生的日志,用于比较和查找错误(如果有错误发生的话):
|
||||
|
||||
dmesg -t > dmesg_current
|
||||
|
||||
dmesg -t -k > dmesg_kernel
|
||||
|
||||
dmesg -t -l emerg > dmesg_current_emerg
|
||||
|
||||
dmesg -t -l alert > dmesg_current_alert
|
||||
|
||||
dmesg -t -l crit > dmesg_current_alert
|
||||
|
||||
dmesg -t -l err > dmesg_current_err
|
||||
|
||||
dmesg -t -l warn > dmesg_current_warn
|
||||
|
||||
正常的话,dmesg 不会输出 emerg, alert, crit 和 err 级别的信息。如果你不幸看到这些输出了,说明内核或者你的硬件环境有问题。
|
||||
|
||||
再介绍一些重启前的需要执行的操作。谁也不能保证新内核能够正常启动,所以请不要潇洒地把老内核删除,至少保留一个稳定可用的内核在系统上。修改一下 /etc/default/grub 文件:
|
||||
|
||||
使用 earlyprink=vga 作为内核启动选项,把系统早期启动的信息打印到显示屏上:
|
||||
|
||||
GRUB_CMDLINE_LINUX="earlyprink=vga"
|
||||
|
||||
将 GRUB_TIMEOUT 的值设置成10秒到15秒之间的值,保证在开机启动的时候你有足够的时间来选择启动哪个内核:
|
||||
|
||||
取消对 GRUB_TIMEOUT 的注释,并把它设置为10:GRUB_TIMEOUT=10
|
||||
注释掉 GRUB_HIDDEN_TIMEOUT 和 GRUB_HIDDEN_TIMEOUT_QUIET
|
||||
|
||||
运行 update-grub 命令,更新 /boot 目录下的 grub 配置文件:
|
||||
|
||||
sudo update-grub
|
||||
|
||||
现在可以重启系统了。新内核起来后,比较新老内核的 dmesg 信息,看看新的内核有没有编译错误。如果新内核启动失败,你需要通过老内核启动系统,然后分析下为什么失败。
|
||||
|
||||
### 跟上节奏,永不落后(编译最新版内核) ###
|
||||
|
||||
如果你想开上内核快车道,追求与时俱进,那就去下载 mainline 状态的内核或 linux-next 状态的内核(LCTT:读者可进入 kernel.org 获取代码,linux 代码被分为4种状态:mainline, stable, longterm, linux-next)。安装测试 mainline 状态或 linux-next 状态的内核,你就可以在正式发布之前帮助内核找到并修复里面的 bug。
|
||||
|
||||
mainline 状态的内核源码:
|
||||
|
||||
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
|
||||
|
||||
linux-next 状态的内核源码:
|
||||
|
||||
git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
|
||||
|
||||
编译安装这两种内核的步骤与编译安装稳定版内核一样。按之前讲过的步骤来就行了。
|
||||
|
||||
### 打补丁 ###
|
||||
|
||||
Linux 内核的补丁是一个文本文件,包含新源码与老源码之间的改变量。每个补丁只包含自己依赖的源码的增量,除非它被特意包含进一系列补丁之中。打补丁方法如下:
|
||||
|
||||
patch -p1 < file.patch
|
||||
|
||||
git apply --index file.patch
|
||||
|
||||
两种方法都可以打补丁。但是,如果你要打的补丁包含一个新文件,git 命令不能识别这个新增的文件,也就是说这个新文件在 git 里面属于 untracked 文件(LCTT:玩 git 的人对这个会比较熟悉,就是文件处于未被跟踪的状态,你需要使用 git add <file> 命令将文件放入暂存区)。git diff 命令不会将这个文件的增量显示出来,并且 git status 命令会显示这个文件处于 untracked 状态。
|
||||
|
||||
大多数情况下,有个没被跟踪的文件,对于编译安装内核来说没什么问题,但是 git 操作就会出现一些问题了: git reset --hard 命令不会删除这个新加的文件,并且接下来的 git pull 操作也会失败。你有多种选择来避免上面所说的状况:
|
||||
|
||||
选项1,不跟踪这个新文件:
|
||||
|
||||
> 如果打补丁后新添加了文件,在 git reset --hard 前使用 git clean 命令来删除没有被跟踪的文件。举个例子,git clean -dfx 命令会强制删除未被跟踪的目录和文件,忽略在 .gitigniore 文件内规定的文件。如果你不在乎哪些文件会被删除,你可以使用 -q 选项让 git clean 命令进入安静模式,不输出任何处理过程。
|
||||
|
||||
选项2,跟踪新文件:
|
||||
|
||||
> 你可以在使用 git apply --index file.patch 命令后让 git 跟踪打完补丁后新产生的文件(LCTT:使用 git add <new file> 命令),就是让 git 把文件放入 index 区域。做完这个后,git diff 命令会将新文件的增量打印出来,git status 也会显示者这是一个正常的新增文件。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,1
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
@@ -1,124 +0,0 @@
|
||||
Linux 内核测试与调试 - 3
|
||||
================================================================================
|
||||
### 基本测试 ###
|
||||
|
||||
安装好内核后,试试能不能启动它。能启动的话,检查 dmesg 看看有没有隐藏的错误。试试下面的功能:
|
||||
|
||||
- 网络(Wifi 或者网线)是否可用?
|
||||
- ssh 是否可用?
|
||||
- 使用 ssh 远程传输文件。
|
||||
- 使用 git clone 和 git pull 命令。
|
||||
- 用用网络浏览器。
|
||||
- 查看 email。
|
||||
- 使用 ftp, wget 等软件下载文件。
|
||||
- 播放音频视频文件。
|
||||
- 连上 USB 鼠标等设备。
|
||||
|
||||
|
||||
### 检查内核日志 ###
|
||||
|
||||
使用 dmesg 查看隐藏的问题,对于定位新代码带来的 bug 是一个好方法。一般来说,dmesg 不会输出新的 crit, alert, emerg 级别的错误信息,也不应该出现新的 err 级别的信息。你要注意的是那些 warn 级别的日志信息。请注意 warn 这个级别的信息并不是坏消息,新代码带来新的警告信息,不会给内核带去严重的影响。
|
||||
|
||||
- dmesg -t -l emerg
|
||||
- dmesg -t -l crit
|
||||
- dmesg -t -l alert
|
||||
- dmesg -t -l err
|
||||
- dmesg -t -l warn
|
||||
- dmesg -t -k
|
||||
- dmesg -t
|
||||
|
||||
下面的脚本运行了上面的命令,并且将输出保存起来,以便与老的内核的 dmesg 输出作比较(LCTT:老内核的 dmesg 输出在本系列的第一篇文章中有介绍)。然后运行 diff 命令,查看新老内核 dmesg 日志之间的不同。脚本需要输入老内核版本号,如果不输入参数,它只会生成新内核的 dmesg 日志文件后直接退出,不再作比较(LCTT:话是这么说没错,但点开脚本一看,没输参数的话,这货会直接退出,连新内核的 dmesg 日志也不会保存的)。如果 dmesg 日志有新的警告信息,表示新发布的内核有漏网之鱼(LCTT:嗯,漏网之 bug 会更好理解些么?),这些 bug 逃过了自测和系统测试。你要看看,那些警告信息后面有没有栈跟踪信息?也许这里有很多问题需要你进一步调查分析。
|
||||
|
||||
- [**dmesg 测试脚本**][1]
|
||||
|
||||
### 压力测试 ###
|
||||
|
||||
执行压力测试的一个好办法是同时跑三四个内核编译任务。下载各种版本的内核,同时编译它们,并记录时间。比较新内核跑压力测试和老内核跑压力测试所花的时间,然后可以定位新内核的性能。如果新内核跑压力测试的时间比老内核的更长,说明新内核的部分模块性能退步了。性能问题很难调试出来。第一步是找出哪里导致的性能退步。同时跑多个内核编译任务对检测内核整体性能来说是个好方法,但是这种方法涵盖了多个内核模块,比如内存管理、文件系统、DMA、驱动等(LCTT:也就是说,这种压力测试没办法定位到是哪个模块造成了性能的下降)。
|
||||
|
||||
time make all
|
||||
|
||||
### 内核测试工具 ###
|
||||
|
||||
我们可以在 Linux 内核本身找到多种测试方法。下面介绍一个很好用的功能测试工具集: ktest 套件
|
||||
|
||||
ktest 是一个自动测试套件,它可以提供编译安装启动内核一条龙测试服务,也可以跑交叉编译测试,前提是你的系统有安装交叉编译所需要的软件。ktest 依赖于 flex 和 bison。详细信息请参考放在 tools/testing/ktest 目录下的文档,你可以自学成材。另外还有一些参考资料教你怎么使用 ktest:
|
||||
|
||||
- [**ktest-eLinux.org**][2]
|
||||
|
||||
### tools/testing/selftests 套件 ###
|
||||
|
||||
我们来玩玩自测吧。内核源码的多个子系统都有自己的自测工具,到目前为止,断点、cpu热插拔、efivarfs、IPC、KCMP、内存热插拔、mqueue、网络、powerpc、ptrace、rcutorture、定时器和虚拟机子系统都有自测工具。另外,用户态内存的自测工具可以利用 test_user_copy 模块来测试用户态内存到内核态的拷贝过程。下面的命令演示了如何使用这些测试工具:
|
||||
|
||||
编译测试:
|
||||
|
||||
make -C tools/testing/selftests
|
||||
|
||||
测试全部:(有些测试需要 root 权限,你需要以 root 用户登入系统然后运行命令)
|
||||
|
||||
make -C tools/testing/selftests run_tests
|
||||
|
||||
只测试单个子系统:
|
||||
|
||||
make -C tools/testing/selftests TARGETS=vm run_tests
|
||||
|
||||
### tools/testing/fault-injection 套件 ###
|
||||
|
||||
在 tools/testing 目录下的另一个测试套件是 fault-injection。failcmd.sh 脚本用于检测 slab 和内存页分配器的错误。这些工具可以测试内核能否很好地从错误状态中恢复回来。这些测试需要用到 root 权限。下面简单介绍了一些当前能提供的错误检测方法。随着错误检测方法的增加,这份名单也会不断增长。最新的名单请参考 Documentation/fault-injection/fault-injection.txt 文档。
|
||||
|
||||
failslab (默认选项)
|
||||
|
||||
产生 slab 分配错误。作用于 kmalloc(), kmem_cache_alloc() 等函数(LCTT:产生的结果是调用这些函数就会返回失败,可以模拟程序分不到内存时是否还能稳定运行下去)。
|
||||
|
||||
fail_page_alloc
|
||||
|
||||
产生内存页分配的错误。作用于 alloc_pages(), get_free_pages() 等函数(LCTT:同上,调用这些函数,返回错误)。
|
||||
|
||||
fail_make_request
|
||||
|
||||
对满足条件(可以设置 /sys/block//make-it-fail 或 /sys/block///make-it-fail 文件)的磁盘产生 IO 错误,作用于 generic_make_request() 函数(LCTT:所有针对这块磁盘的读或写请求都会出错)。
|
||||
|
||||
fail_mmc_request
|
||||
|
||||
对满足条件(可以设置 /sys/kernel/debug/mmc0/fail_mmc_request 这个 debugfs 属性)的磁盘产生 MMC 数据错误。
|
||||
|
||||
你可以自己配置 fault-injection 套件的功能。fault-inject-debugfs 内核模块在系统运行时会在 debugfs 文件系统下面提供一些属性文件。你可以指定出错的概率,指定两个错误之间的时间间隔,当然本套件还能提供更多其他功能,具体请查看 Documentation/fault-injection/fault-injection.txt。 Boot 选项可以让你的系统在 debugfs 文件系统起来之前就可以产生错误,下面列出几个 boot 选项:
|
||||
|
||||
- failslab=
|
||||
- fail_page_alloc=
|
||||
- fail_make_request=
|
||||
- mmc_core.fail_request=[interval],[probability],[space],[times]
|
||||
|
||||
fault-injection 套件提供接口,以便增加新的功能。下面简单介绍下增加新功能的步骤,详细信息请参考上面提到过的文档:
|
||||
|
||||
使用 DECLARE_FAULT_INJECTION(name) 定义默认属性;
|
||||
|
||||
> 详细信息可查看 fault-inject.h 中定义的 struct fault_attr 结构体。
|
||||
|
||||
配置 fault 属性,新建一个 boot 选项;
|
||||
|
||||
> 这步可以使用 setup_fault_attr(attr, str) 函数完成,为了能在系统启动的早期产生错误,添加一个 boot 选项这一步是必须要有的。
|
||||
|
||||
添加 debugfs 属性;
|
||||
|
||||
> 使用 fault_create_debugfs_attr(name, parent, attr) 函数,为新功能添加新的 debugfs 属性。
|
||||
|
||||
为模块设置参数;
|
||||
|
||||
> 为模块添加一些参数,对于配置错误属性来说是一个好主意,特别是当新功能的应用范围受限于单个内核模块的时候(LCTT:不同内核,你的新功能可能需要不同的测试参数,通过设置参数,你的功能可以不必为了迎合不同内核而每次都重新编译一遍)。
|
||||
|
||||
添加一个钩子函数到错误测试的代码中。
|
||||
|
||||
> should_fail(attr, size) —— 当这个钩子函数返回 true 时,用户的代码就应该产生一个错误。
|
||||
|
||||
应用程序使用这个 fault-injection 套件可以指定某个具体的内核模块产生 slab 和内存页分配的错误,这样就可以缩小性能测试的范围。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,2
|
||||
|
||||
译者:[bazz2](https://github.com/bazz2) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://linuxdriverproject.org/mediawiki/index.php/Dmesg_regression_check_script
|
||||
[2]:http://elinux.org/Ktest#Git_Bisect_type
|
||||
@@ -1,10 +1,10 @@
|
||||
设置Samba文件服务器以使用Windows客户端
|
||||
怎样设置Samba文件服务器以使用Windows客户端
|
||||
================================================================================
|
||||
根据[Samba][1]项目网站所述,Samba是一个开源/自由软件套件,提供了到SMB/CIFS客户端的无缝文件和打印服务。不同于其它SMB/CIFS网络协议部署(如HP-UX的LM服务器,OS/2的LAN服务器,或者VisionFS),Samba(及其源代码)是可以自由获取的(终端用户无需付费),允许在Linux/Unixt服务器和Windows/Unix/Linux客户端之间的互操作。
|
||||
根据[Samba][1]项目网站所述,Samba是一个开源/自由软件套件,提供了到SMB/CIFS客户端的无缝文件和打印服务。不同于其它SMB/CIFS网络协议部署(如HP-UX的LM服务器,OS/2的LAN服务器,或者VisionFS),Samba(及其源代码)是可以自由获取的(终端用户无需付费),允许在Linux/Unixt服务器和Windows/Unix/Linux客户端之间互操作。
|
||||
|
||||
出于这些理由,Samba在不同操作系统(除了Linux)共存的网络中首选的文件服务器解决方案——最常见的结构是多个微软Windows客户端访问安装有Samba的Linux服务器,该情形也是本文将要解决的问题。
|
||||
|
||||
请注意,另外一方面,如果我们的网络仅仅是由基于Unix的客户端(如Linux,AIX,或者Solaris,还可以举更多的例子)组成,我们可以考虑使用NFS(尽管在此种情况下Samba仍然是可选方案),它可以提供更快的速度。
|
||||
请注意,另外一方面,如果我们的网络仅仅是由基于Unix的客户端(如Linux,AIX,或者Solaris,等等)组成,我们可以考虑使用NFS(尽管在此种情况下Samba仍然是可选方案),它可以提供更快的速度。
|
||||
|
||||
### 在Debian和CentOS中安装Samba ###
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||

|
||||
|
||||
现在让我们来安装Samba吧(下面的截图来自Debian 7[Wheezy]服务器上的安装):
|
||||
现在让我们来安装Samba吧(下面的截图来自Debian 7[Wheezy]服务器上的安装):
|
||||
|
||||
在Debian上:
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
public = yes
|
||||
writeable = yes
|
||||
|
||||
我们现在必须重启Samba——以防万一——使用testparm命令来检查smb.conf文件的语法错误:
|
||||
我们现在必须重启Samba—以防万一—使用testparm命令来检查smb.conf文件的语法错误:
|
||||
|
||||
# service samba restart
|
||||
# testparm
|
||||
@@ -113,25 +113,27 @@
|
||||
|
||||

|
||||
|
||||
每个文件系统具有最多5种类型,能够强制使用的配额限制:用户软限制,用户硬限制,组软限制,组硬限制,以及宽限期限。
|
||||
每个文件系统最多有5种类型,能够强制使用的配额限制:用户软限制,用户硬限制,组软限制,组硬限制,以及宽限期限。
|
||||
|
||||
我们现在将为/home文件系统启用磁盘配额,在/etc/fstab文件对应的/home文件系统行现存的默认选项后添加usrquota和grpquto挂载选项,然后重新挂载文件系统以令修改生效:
|
||||
|
||||

|
||||
|
||||
接下来,我们需要在**/home**目录各自创建两个文件以用于作为用户和组配额的数据库文件:**aquota.user**和**aquota.group**。然后,我们将生成启用配合后每个文件系统的当前磁盘使用表:
|
||||
接下来,我们需要在**/home**目录创建两个文件以用于作为用户和组配额的数据库文件:**aquota.user**和**aquota.group**。然后,我们将生成启用配额后每个文件系统的当前磁盘使用表:
|
||||
|
||||
# quotacheck -cug /home
|
||||
# quotacheck -avugm
|
||||
|
||||

|
||||
|
||||
尽管已经为/home文件系统启用磁盘配额,我们还没有给任何用户或组设置权限。检查现有用户/组的配额信息:
|
||||
|
||||
# quota -u <username>
|
||||
# quota -g <groupname>
|
||||
|
||||

|
||||
|
||||
最后,在这最后两步中,使用quotatool命令来为每个用户和/或组来分配磁盘配额(注意,该任务也可以使用edquota来完成,但是quotatool更为直接,更不易犯错)。
|
||||
在这最后几步中,使用quotatool命令来为每个用户和/或组来分配磁盘配额(注意,该任务也可以使用edquota来完成,但是quotatool更为直接,更不易犯错)。
|
||||
|
||||
要为用户xmodulo设置软限制为4MB,硬限制为5MB,xmodulo组为10MB/15MB:
|
||||
|
||||
@@ -150,7 +152,7 @@ via: http://xmodulo.com/2014/08/samba-file-server-windows-clients.html
|
||||
|
||||
作者:[Gabriel Cánepa][a]
|
||||
译者:[GOLinux](https://github.com/GOLinux)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
|
||||
@@ -1,124 +0,0 @@
|
||||
CentOS 7最小化安装后找不到‘ifconfig’命令——修复小提示
|
||||
================================================================================
|
||||

|
||||
|
||||
就像我们所知道的,“**ifconfig**”命令用于配置GNU/Linux系统的网络接口。它显示网络接口卡的详细信息,包括IP地址,MAC地址,以及网络接口卡状态之类。但是,该命令已经过时了,而且在最小化版本的RHEL 7以及它的克隆版本CentOS 7,Oracle Linux 7以和Scientific Linux 7中也找不到该命令。
|
||||
|
||||
### 在CentOS最小化服务器版本中如何查找网卡IP和其它详细信息? ###
|
||||
|
||||
CentOS 7最小化系统,使用“**ip addr**”和“**ip link**”命令来查找网卡详情。要知道统计数据,可以使用“**ip -s link**”。
|
||||
|
||||
要查看网卡细节,输入以下命令:
|
||||
|
||||
ip addr
|
||||
|
||||
输出样例:
|
||||
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
inet 127.0.0.1/8 scope host lo
|
||||
inet6 ::1/128 scope host
|
||||
valid_lft forever preferred_lft forever
|
||||
2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
|
||||
link/void
|
||||
inet 127.0.0.1/32 scope host venet0
|
||||
inet 192.168.1.101/32 brd 192.168.1.101 scope global venet0:0
|
||||
|
||||
要查看网络接口统计数据,输入命令:
|
||||
|
||||
ip link
|
||||
|
||||
输出样例:
|
||||
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT
|
||||
link/void
|
||||
|
||||
或者
|
||||
|
||||
ip -s link
|
||||
|
||||
输出样例:
|
||||
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
RX: bytes packets errors dropped overrun mcast
|
||||
0 0 0 0 0 0
|
||||
TX: bytes packets errors dropped carrier collsns
|
||||
0 0 0 0 0 0
|
||||
2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT
|
||||
link/void
|
||||
RX: bytes packets errors dropped overrun mcast
|
||||
8515667 6667 0 0 0 0
|
||||
TX: bytes packets errors dropped carrier collsns
|
||||
300403 4249 0 0 0 0
|
||||
|
||||
### 在CentOS 7最小化服务器版本中如何启用并使用“ifconfig”命令? ###
|
||||
|
||||
如果你不知道在哪里可以找到ifconfig命令,请按照以下简单的步骤来找到它。首先,让我们找出哪个包提供了ifconfig命令。要完成这事,输入以下命令:
|
||||
|
||||
yum provides ifconfig
|
||||
|
||||
输出样例:
|
||||
|
||||
Loaded plugins: fastestmirror
|
||||
Loading mirror speeds from cached hostfile
|
||||
* base: centos.aol.in
|
||||
* extras: centos.aol.in
|
||||
* updates: centos.aol.in
|
||||
net-tools-2.0-0.17.20131004git.el7.x86_64 : Basic networking tools
|
||||
Repo : @base
|
||||
Matched from:
|
||||
Filename : /usr/sbin/ifconfig
|
||||
|
||||
或者你也可以使用以下命令。
|
||||
|
||||
yum whatprovides ifconfig
|
||||
|
||||
这里,“provides”或者“whatprovides”开关用于找出某个包提供了某些功能或文件。
|
||||
|
||||
就像你在上面的输出中所看到的,**net-tools**包提供了ifconfig命令。因此,让我们安装net-tools包来使用ifconfig命令。
|
||||
|
||||
yum install net-tools
|
||||
|
||||
现在,你就可以像以往一样使用**ifconfig**命令了。
|
||||
|
||||
ifconfig -a
|
||||
|
||||
输出样例:
|
||||
|
||||
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 16436
|
||||
inet 127.0.0.1 netmask 255.0.0.0
|
||||
inet6 ::1 prefixlen 128 scopeid 0x10<host>
|
||||
loop txqueuelen 0 (Local Loopback)
|
||||
RX packets 0 bytes 0 (0.0 B)
|
||||
RX errors 0 dropped 0 overruns 0 frame 0
|
||||
TX packets 0 bytes 0 (0.0 B)
|
||||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||
|
||||
venet0: flags=211<UP,BROADCAST,POINTOPOINT,RUNNING,NOARP> mtu 1500
|
||||
inet 127.0.0.1 netmask 255.255.255.255 broadcast 0.0.0.0 destination 127.0.0.1
|
||||
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 0 (UNSPEC)
|
||||
RX packets 7073 bytes 8549159 (8.1 MiB)
|
||||
RX errors 0 dropped 0 overruns 0 frame 0
|
||||
TX packets 4611 bytes 359201 (350.7 KiB)
|
||||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||
|
||||
venet0:0: flags=211<UP,BROADCAST,POINTOPOINT,RUNNING,NOARP> mtu 1500
|
||||
inet 192.168.1.101 netmask 255.255.255.255 broadcast 192.168.1.101 destination 192.168.1.101
|
||||
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 0 (UNSPEC)
|
||||
|
||||
尽情享受吧!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.unixmen.com/ifconfig-command-found-centos-7-minimal-installation-quick-tip-fix/
|
||||
|
||||
作者:[Senthilkumar][a]
|
||||
译者:[GOLinux](https://github.com/GOLinux)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.unixmen.com/author/sk/
|
||||
@@ -1,6 +1,6 @@
|
||||
Linux常见问题与答案——如何在Apache网站服务器上关闭服务器签名
|
||||
Linux常见问题与答案—如何在Apache网站服务器上关闭服务器签名
|
||||
================================================================================
|
||||
>**问题**:每当Apache2网站服务器返回错误页时(如,404 页面无法找到,403 禁止访问页面),它会在页面底部显示网站服务器签名(如,Apache版本号和操作系统信息)。同时,当Apache2网站服务器为PHP页面服务时,它也会显示PHP的版本信息。我如何在Apache2网站服务器上关闭这些网站服务器签名?
|
||||
>**问题**:每当Apache2网站服务器返回错误页时(如,404 页面无法找到,403 禁止访问页面),它会在页面底部显示网站服务器签名(如,Apache版本号和操作系统信息)。同时,当Apache2网站服务器为PHP页面服务时,它也会显示PHP的版本信息。我如何在Apache2网站服务器上关闭这些网站服务器签名呢?
|
||||
|
||||
透露网站服务器带有服务器/PHP版本信息的签名会带来安全隐患,因为你基本上将你系统上的已知漏洞告诉给了攻击者。因此,作为服务器加固的一个部分,强烈推荐你禁用所有网站服务器签名。
|
||||
|
||||
@@ -34,19 +34,19 @@ Linux常见问题与答案——如何在Apache网站服务器上关闭服务器
|
||||
|
||||

|
||||
|
||||
然而,没有第二行的‘ServerTokens Prod’,Apache服务器将仍然在HTTP回应头部包含详细的服务器标记,这会泄漏Apache的版本号。
|
||||
然而,若没有第二行的‘ServerTokens Prod’,Apache服务器将仍然在HTTP回应头部包含详细的服务器标记,这会泄漏Apache的版本号。
|
||||
|
||||

|
||||
|
||||
第二行‘**ServerTokens Prod**’所要做的是在HTTP回应头中将服务器标记压缩到最小。
|
||||
第二行‘**ServerTokens Prod**’所要做的是在HTTP响应头中将服务器标记压缩到最小。
|
||||
|
||||
因此,同时放置两行时,Apache将不会在页面中或者HTTP回应头中泄漏版本信息。
|
||||
因此,同时放置两行时,Apache将不会在页面中或者HTTP响应头中泄漏版本信息。
|
||||
|
||||

|
||||
|
||||
### 隐藏PHP版本 ###
|
||||
|
||||
另外一个潜在的安全威胁是HTTP回应头中的PHP版本信息泄漏。默认情况下,Apache网站服务器通过HTTP回应头中的“X-Powered-By”字段包含有PHP版本信息。如果你想要在HTTP头部中隐藏PHP版本,请使用文本编辑器打开php.ini文件,找到“expose_php = On”这一行,将它改为“expose_php = Off”即可。
|
||||
另外一个潜在的安全威胁是HTTP响应头中的PHP版本信息泄漏。默认情况下,Apache网站服务器通过HTTP响应头中的“X-Powered-By”字段包含有PHP版本信息。如果你想要在HTTP头部中隐藏PHP版本,请使用文本编辑器打开php.ini文件,找到“expose_php = On”这一行,将它改为“expose_php = Off”即可。
|
||||
|
||||

|
||||
|
||||
@@ -60,15 +60,15 @@ Linux常见问题与答案——如何在Apache网站服务器上关闭服务器
|
||||
|
||||
> expose_php = Off
|
||||
|
||||
最后,重启Apache2网站服务器以重新加载更新的PHP配置文件。
|
||||
最后,重启Apache2网站服务器来重新加载已更新的PHP配置文件。
|
||||
|
||||
现在,你不会再看到带有“X-Powered-By”字段的HTTP回应头部了。
|
||||
现在,你不会再看到带有“X-Powered-By”字段的HTTP响应头了。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://ask.xmodulo.com/turn-off-server-signature-apache-web-server.html
|
||||
|
||||
译者:[GOLinux](https://github.com/GOLinux)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[Caroline](https://github.com/carolinewuyan)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
@@ -0,0 +1,353 @@
|
||||
在Linux中使用逻辑卷管理器构建灵活的磁盘存储——第一部分
|
||||
================================================================================
|
||||
**逻辑卷管理器(LVM)**让磁盘空间管理更为便捷。如果一个文件系统需要更多的空间,它可以在它的卷组中将空闲空间添加到它的逻辑卷中,而文件系统可以根据你的意愿调整大小。如果某个磁盘启动失败,替换磁盘可以使用卷组注册成一个物理卷,而逻辑卷扩展可以将数据迁移到新磁盘而不会丢失数据。
|
||||
|
||||

|
||||
在Linux中创建LVM存储
|
||||
|
||||
在现代世界中,每台服务器空间都会因为我们的需求增长而不断扩展。逻辑卷可以用于RAID,SAN。单个物理卷将会被加入组以创建卷组,在卷组中,我们需要切割空间以创建逻辑卷。在使用逻辑卷时,我们可以使用某些命令来跨磁盘、跨逻辑卷扩展,或者减少逻辑卷大小,而不用重新格式化和重新对当前磁盘分区。卷可以跨磁盘抽取数据,这会增加I/O数据量。
|
||||
|
||||
### LVM特性 ###
|
||||
|
||||
- 可以在任何时候灵活地扩展空间。
|
||||
- 可以安装和处理任何文件系统。
|
||||
- 可以通过迁移来恢复错误磁盘。
|
||||
- 可以使用快照功能恢复文件系统到先前的阶段。等等……
|
||||
|
||||
####我的服务器设置 - 需求 ####
|
||||
|
||||
- 操作系统 —— 安装有LVM的CentOS 6.5
|
||||
- 服务器IP地址 —— 192.168.0.200
|
||||
|
||||
### 在Linux中创建LVM磁盘存储 ###
|
||||
|
||||
**1.** 我们已经在虚拟磁盘(VDA)中使用了带LVM的CentOS 6.5操作系统。在此,我们可以使用下列命令查看到物理卷(PV),卷组(VG),逻辑卷(LV)。
|
||||
|
||||
# pvs
|
||||
# vgs
|
||||
# lvs
|
||||
|
||||

|
||||
检查物理卷
|
||||
|
||||
下面是上面截图中各个参数的说明。
|
||||
|
||||
- 物理磁盘大小(PV Size)
|
||||
- 用作虚拟磁盘vda的磁盘
|
||||
- 卷组大小(VG Size)
|
||||
- 卷组名称(vg_tecmint)
|
||||
- 逻辑卷名称(LogVol00,LogVol01)
|
||||
- LogVol00分配给swap,大小1GB
|
||||
- LogVol01分配给/,大小16.5GB
|
||||
|
||||
从上面看,我们可以知道VDA磁盘中没有足够的空闲空间。
|
||||
|
||||
**2.** 为了创建一个**新卷组**,我们需要在这台服务器上添加额外的**3个硬盘**。3个驱动器不是强制使用的,只要一个就足够用来创建新的**VG**,并在其中创建**LV**了。我在这里添加了更多的磁盘,目的只是用于演示和更多命令功能的说明。
|
||||
|
||||
下面是我已经额外添加的磁盘。
|
||||
|
||||
sda, sdb, sdc
|
||||
|
||||
----------
|
||||
|
||||
# fdisk -l
|
||||
|
||||

|
||||
验证添加的磁盘
|
||||
|
||||
- 用于操作系统(CentOS 6.5)的默认磁盘。
|
||||
- 默认磁盘上定义的分区(vda1 = swap),(vda2 = /)。
|
||||
- 额外添加的磁盘Disk1,Disk2,Disk3。
|
||||
|
||||
各个磁盘大小都是20GB,默认的卷组的PE大小为4MB,我们在该服务器上配置的卷组使用默认PE。
|
||||
|
||||

|
||||
卷组显示
|
||||
|
||||
- **VG Name** – 卷组名称。
|
||||
- **Format** – LVM架构使用LVM2。
|
||||
- **VG Access** – 卷组为读写模式,备好待用。
|
||||
- **VG Status** – 卷组可调整大小,如果我们需要添加更多空间,我们可以扩展更多。
|
||||
- **Cur LV** – 当前卷组中有2个逻辑卷。
|
||||
- **CurPV and Act PV** – 当前使用的物理磁盘是1(vda),已被激活,因此我们可以使用该卷组。
|
||||
- **PE Size** – 磁盘的物理扩展大小,可以定义使用PE,或者GB,LVM的默认PE大小是4MB。例如,如果我们需要创建5GB大小的逻辑卷,我们可以使用总计1280 PE,你们懂我的意思么?
|
||||
|
||||
这里解释一下 -> 1024MB = 1GB,这样的话,1024MB x 5 = 5120PE = 5GB,然后5120/4 = 1280,4是默认的PE大小。
|
||||
|
||||
- Total PE – 该卷组具有的PE数量。
|
||||
- Alloc PE – 总的PE使用量,已经使用的全部PE,4482 x 4PE = 17928。
|
||||
- Free PE – 这里因为已经使用,所以没有空闲PE了。
|
||||
|
||||
**3.** 只使用了vda,当前CentOS在使用lvm的vda物理磁盘中安装了**/boot,/,swap,**,该磁盘中没有空间剩余。
|
||||
|
||||
# df -TH
|
||||
|
||||

|
||||
检查磁盘空间
|
||||
|
||||
上面的图片中显示了用于根的挂载点已使用了**18GB**,因此没有空闲空间可用了。
|
||||
|
||||
**4.** 那么,让我们创建新的物理卷(**pv**),以及名为**tecmint_add_vg**的卷组(**vg**),并在其中创建逻辑卷(**lv**)。这里,我们可以创建4个逻辑卷,分别名为 **tecmint_documents**,**tecmint_manager**以及**tecmint_add_vg**。
|
||||
|
||||
我们可以扩展当前使用的卷组以获得更多空间。但在这里,我们将要做的是,创建新的卷组,然后在里面肆意妄为吧。过会儿,我们可以看到怎样来扩展使用中的卷组的文件系统。
|
||||
|
||||
在使用新磁盘钱,我们需要使用fdisk来对磁盘分区。
|
||||
|
||||
# fdisk -cu /dev/sda
|
||||
|
||||
- **c** – 关闭DOS兼容模式,推荐使用该选项。
|
||||
- **u** – 当列出分区表时,会以扇区而不是柱面显示。
|
||||
|
||||

|
||||
创建新的物理分区
|
||||
|
||||
接下来,请遵循以下步骤来创建新分区。
|
||||
|
||||
- 选择**n**来创建新分区。
|
||||
- 选择**p**来创建主分区。
|
||||
- 选择我们需要创建的分区号。
|
||||
- 按**Enter**两次来使用整个磁盘空间。
|
||||
- 我们需要修改新创建的分区类型,输入**t**。
|
||||
- 选择需要修改的分区号,选择我们创建的分区号**1**。
|
||||
- 这里,我们需要修改类型。我们需要创建LVM,因此我们使用LVM的类型代码8e。如果不知道类型代码,按**L**来列出所有类型代码。
|
||||
- 打印我们创建的分区以确认。
|
||||
- 这里我们可以看到Linux LVM的ID 8e。
|
||||
- 写入修改并退出fdisk。
|
||||
|
||||
重复以上步骤,为另外2个磁盘sdb和sdc创建新分区。然后重启机器,使用fdisk命令来验证分区表。
|
||||
|
||||
# fdisk -l
|
||||
|
||||

|
||||
验证分区表
|
||||
|
||||
### 创建物理卷 ###
|
||||
|
||||
**5.** 现在,该使用3个磁盘来创建物理卷了。这里,我已经使用pvs命令将物理磁盘列了出来,现在只有一个默认的**pvs**被列出来了。
|
||||
|
||||
# pvs
|
||||
|
||||
然后,使用命令创建新的物理磁盘。
|
||||
|
||||
# pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1
|
||||
|
||||
再次列出磁盘来查看新创建物理磁盘。
|
||||
|
||||
# pvs
|
||||
|
||||

|
||||
创建物理卷
|
||||
|
||||
### 创建卷组 ###
|
||||
|
||||
**6.** 使用可用的空闲PV来创建名为**tecmint_add_vg**的卷组,PE大小为32。显示当前卷组,我们可以看到只有带有1个PV的一个卷组在使用。
|
||||
|
||||
# vgs
|
||||
|
||||
这将使用上面创建的3个物理卷创建名为**tecmint_add_vg**的卷组,PE大小为32MB。
|
||||
|
||||
# vgcreate -s 32M tecmint_add_vg /dev/sda1 /dev/sdb1 /dev/sdc1
|
||||
|
||||
接下来,再次运行vgs命令来验证卷组。
|
||||
|
||||
# vgs
|
||||
|
||||

|
||||
创建卷组
|
||||
|
||||

|
||||
验证卷组
|
||||
|
||||
理解vgs命令输出:
|
||||
|
||||
- 卷组名。
|
||||
- 本卷组中使用的物理卷。
|
||||
- 显示本卷组中的可用空闲空间。
|
||||
- 卷组总大小。
|
||||
- 本卷组中的逻辑卷,这里我们还没创建,所以是0。
|
||||
- SN = 卷组包含的快照数量。(后面,我们会创建一个快照。)
|
||||
- 卷组状态,如可写,可读,可调整大小,已导出,部分的和集群的。这里是wz——意为w = 可写,z = 可调整大小。
|
||||
- 卷组中使用的物理卷(PV)数量。
|
||||
|
||||
**7.** 使用命令来显示更多卷组信息。
|
||||
|
||||
# vgs -v
|
||||
|
||||

|
||||
检查卷组信息
|
||||
|
||||
**8.** 要获取更多关于新创建的卷组信息,运行以下命令。
|
||||
|
||||
# vgdisplay tecmint_add_vg
|
||||
|
||||

|
||||
列出新卷组
|
||||
|
||||
- 卷组名称
|
||||
- 使用的LVM架构。
|
||||
- 可读写,备好待用。
|
||||
- 该卷组可以调整大小。
|
||||
- 使用和激活的物理磁盘数量。
|
||||
- 卷组总大小。
|
||||
- 这里单个PE大小为32。
|
||||
- 该卷组中可用的PE总数。
|
||||
- 当前还没有在卷组中创建任何LV,因此它是空闲的。
|
||||
- 该卷组的UUID。
|
||||
|
||||
### 创建逻辑卷 ###
|
||||
|
||||
**9.** 现在,创建3个名为**tecmint_documents**,**tecmint_manager**和**tecmint_public**的逻辑卷。这里,我们可以看到如何分别以PE为单位和GB为单位来创建逻辑卷。首先,使用以下命令来列出当前逻辑卷。
|
||||
|
||||
# lvs
|
||||
|
||||

|
||||
列出当前卷组
|
||||
|
||||
**10.** 这些逻辑卷处于**vg_tecmint**卷组中使用**pvs**命令来列出并查看有多少空闲空间可以创建逻辑卷。
|
||||
|
||||
# pvs
|
||||
|
||||

|
||||
检查空闲空间
|
||||
|
||||
**11.** 卷组大小为**54GB**,而且未被使用,所以我们可以在该组内创建LV。让我们将卷组平均划分大小来创建3个逻辑卷,就是说**54GB**/3 = **18GB**,创建出来的单个逻辑卷应该会是18GB。
|
||||
|
||||
#### 方法1: 使用PE创建逻辑卷 ####
|
||||
|
||||
首先,让我们使用物理扩展(PE)为单位来创建逻辑卷。我们需要知道分配到该卷组的默认PE大小,以及总的可用PE大小来创建新的逻辑卷,运行下面的命令来获取使用中的卷组信息。
|
||||
|
||||
# vgdisplay tecmint_add_vg
|
||||
|
||||

|
||||
创建新逻辑卷
|
||||
|
||||
- 默认分配给该卷组的PE为32MB,这里单个的PE大小为32MB。
|
||||
- 总可用PE是1725。
|
||||
|
||||
只要用bc命令做一点小小的计算来看看就知道了。
|
||||
|
||||
# bc
|
||||
|
||||
----------
|
||||
|
||||
1725PE/3 = 575 PE.
|
||||
575 PE x 32MB = 18400 --> 18GB
|
||||
|
||||

|
||||
计算磁盘空间
|
||||
|
||||
按**CRTL+D**退出**bc**。现在让我们使用575个PE来创建3个逻辑卷。
|
||||
|
||||
# lvcreate -l (Extend size) -n (name_of_logical_volume) (volume_group)
|
||||
|
||||
# lvcreate -l 575 -n tecmint_documents tecmint_add_vg
|
||||
|
||||
# lvcreate -l 575 -n tecmint_manager tecmint_add_vg
|
||||
|
||||
# lvcreate -l 575 -n tecmint_public tecmint_add_vg
|
||||
|
||||
- -**l** – 使用扩展大小创建
|
||||
- -**n** – 给逻辑卷命名
|
||||
|
||||
使用lvs命令来列出创建的逻辑卷。
|
||||
|
||||
# lvs
|
||||
|
||||

|
||||
列出创建的逻辑卷
|
||||
|
||||
#### 方法2: 使用GB大小创建逻辑卷 ####
|
||||
|
||||
在使用GB大小创建逻辑卷时,我们不能获得精确的大小。因此,最好的办法是用扩展。
|
||||
|
||||
# lvcreate -L 18G -n tecmint_documents tecmint_add_vg
|
||||
|
||||
# lvcreate -L 18G -n tecmint_manager tecmint_add_vg
|
||||
|
||||
# lvcreate -L 18G -n tecmint_public tecmint_add_vg
|
||||
|
||||
# lvcreate -L 17.8G -n tecmint_public tecmint_add_vg
|
||||
|
||||
使用lvs命令来列出创建的逻辑卷。
|
||||
|
||||
# lvs
|
||||
|
||||

|
||||
验证创建的逻辑卷
|
||||
|
||||
这里,我们可以看到,当创建第三个LV的时候,我们不能收集到18GB空间。这是因为尺寸有小小的改变,但在使用或者尺寸来创建LV时,这个问题会被忽略。
|
||||
|
||||
### 创建文件系统 ###
|
||||
|
||||
**12.** 要使用逻辑卷,我们需要格式化。这里我使用ext4文件系统来创建卷,并打算挂载到**/mnt**。
|
||||
|
||||
# mkfs.ext4 /dev/tecmint_add_vg/tecmint_documents
|
||||
|
||||
# mkfs.ext4 /dev/tecmint_add_vg/tecmint_public
|
||||
|
||||
# mkfs.ext4 /dev/tecmint_add_vg/tecmint_manager
|
||||
|
||||

|
||||
创建Ext4文件系统
|
||||
|
||||
**13.** 让我们在**/mnt**下创建目录,并将已创建好文件系统的逻辑卷挂载上去。
|
||||
|
||||
# mount /dev/tecmint_add_vg/tecmint_documents /mnt/tecmint_documents/
|
||||
|
||||
# mount /dev/tecmint_add_vg/tecmint_public /mnt/tecmint_public/
|
||||
|
||||
# mount /dev/tecmint_add_vg/tecmint_manager /mnt/tecmint_manager/
|
||||
|
||||
使用下面的命令来列出并确认挂载点。
|
||||
|
||||
# df -h
|
||||
|
||||

|
||||
挂载逻辑卷
|
||||
|
||||
#### 永久挂载 ####
|
||||
|
||||
现在,这些逻辑卷是临时挂载上去的,要永久挂载,我们需要添加条目到fstab中。要达到这个目的,让我们使用下面的命令来获取挂载条目
|
||||
|
||||
# cat /etc/mtab
|
||||
|
||||
在输入来自mtab中的挂载条目内容时,我们需要在fstab中做些小小的改变,修改rw为默认。
|
||||
|
||||
# vim /etc/fstab
|
||||
|
||||
我们的fstab条目应该和下面的类似,使用wq!保存并退出fstab。
|
||||
|
||||
/dev/mapper/tecmint_add_vg-tecmint_documents /mnt/tecmint_documents ext4 defaults 0 0
|
||||
/dev/mapper/tecmint_add_vg-tecmint_public /mnt/tecmint_public ext4 defaults 0 0
|
||||
/dev/mapper/tecmint_add_vg-tecmint_manager /mnt/tecmint_manager ext4 defaults 0 0
|
||||
|
||||

|
||||
获取mtab挂载条目
|
||||
|
||||

|
||||
打开fstab文件
|
||||
|
||||

|
||||
添加自动挂载条目
|
||||
|
||||
重启前,执行mount -a命令来检查fstab条目。
|
||||
|
||||
# mount -av
|
||||
|
||||

|
||||
验证fstab条目
|
||||
|
||||
这里,我们已经了解了怎样来使用逻辑卷构建灵活的存储,从使用物理磁盘到物理卷,物理卷到卷组,卷组再到逻辑卷。
|
||||
|
||||
在我即将奉献的文章中,我将介绍如何扩展卷组、逻辑卷,减少逻辑卷,拍快照以及从快照中恢复。到那时,保持TecMint更新到这些精彩文章中的内容。
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/create-lvm-storage-in-linux/
|
||||
|
||||
作者:[Babin Lonston][a]
|
||||
译者:[GOLinux](https://github.com/GOLinux)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://www.tecmint.com/author/babinlonston/
|
||||
@@ -1,67 +0,0 @@
|
||||
命令行星期二——第八部分
|
||||
================================================================================
|
||||
唷,唷,极客们!我们回来了,来完成最后一章的CLT。今天,我们将讨论一下任务控制。在这个里头,我们也将学习怎样来控制运行在我们计算机上的进程!
|
||||
|
||||
### 一个例子 ###
|
||||
|
||||
正如我们所学的,我们可以直接在CLI中输入程序名称来运行该程序。例如,dolphin。如果我们输入:
|
||||
|
||||
dolphin
|
||||
|
||||
……dolphin,这个文件管理器,就打开了。如果在进程打开时你查看终端,你就不能访问命令提示符了,而且你也不能在同一个窗口中写一个新命令进去了。如果你终止dolphin,提示符又会出现了,而你又能输入一个新命令到shell中去了。那么,我们怎么能在CLI运行一个程序时,同时又能获得提示符以便进一步发命令。
|
||||
|
||||
dolphin &
|
||||
|
||||
……现在你让dolphin文件管理器在后台运行了,终端就可以空出来输入你需要的另外一个命令了。
|
||||
|
||||
现在,假设你忘了在dolphin后面输入‘&’字符,你只需要输入‘ctrl+z’,它会停止你的进程并把它放到空闲列表中去。要继续停止的进程,输入:
|
||||
|
||||
bg
|
||||
|
||||
……它会从后台重启进程。
|
||||
|
||||
### jobs, ps ###
|
||||
|
||||
由于我们在后台运行着进程,你可以使用jobs或者使用ps来来列出它们。试试吧,只要输入jobs或者输入ps就行了。下面是我得到的结果:
|
||||
|
||||
nenad@linux-zr04:~> ps
|
||||
PID TTY TIME CMD
|
||||
8356 pts/1 00:00:00 bash
|
||||
8401 pts/1 00:00:00 dolphin
|
||||
8406 pts/1 00:00:00 kbuildsycoca4
|
||||
8456 pts/1 00:00:00 ps
|
||||
|
||||
### 杀死进程 ###
|
||||
|
||||
如果有个进程无响应了,怎么来处理掉它呢?可以使用kill命令。让我们在先前提到的dolphin进程上试试。首先,我们必须使用ps来鉴别该进程的PID。在我上述情况中,dolphin的PID是8401。那么让我们来杀死它,我只要输入:
|
||||
|
||||
kill 8401
|
||||
|
||||
……那么,它就把dolphin给杀死了。
|
||||
|
||||
### Kill更多细节 ###
|
||||
|
||||
Kill的存在,不仅仅是为了终止进程,它最初是设计用来发送信号给进程。当然,有许多kill信号可以使用,根据你使用的应用程序不同而不同。请看下面的表:
|
||||
|
||||

|
||||
|
||||
务必试试这些信号。
|
||||
|
||||
### 结尾 ###
|
||||
|
||||
我们以本节课来结束我们的CLT系列和周二必达,我希望其他像我这样的新手们能设法在他们的思想中摆脱控制台的神秘而学习掌握一些基本技能。现在对你们而言,所有剩下来要做的事,就是尽情摆弄它吧(只是别把/目录搞得太乱七八糟,因而你也不会诋毁什么东西了 :D)。
|
||||
We’ll be seeing a lot more of each other soon, as there’s more series of articles from where these came from. Stay tuned, and meanwhile…
|
||||
我们将在不久的将来看到其它更多的东西,因为有更多的系列文章来自这些文章的出处。别走开,同时……
|
||||
### ……尽情享受! ###
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://news.opensuse.org/2014/08/12/command-line-tuesdays-part-eight/
|
||||
|
||||
作者:[Nenad Latinović][a]
|
||||
译者:[GOLinux](https://github.com/GOLinux)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://news.opensuse.org/author/holden87/
|
||||
Reference in New Issue
Block a user