#### 编译安装大致分三步
> 1./configure:通过选项传递参数,制动启用特性、安装路径等。执行时会参考用户指定以及Makefile,in文件生成Makefile
> 检查各指定功能依赖的外部环境
2. make 根据makefile构建应用程序
3、 make install
#### 磁盘管理知识
硬盘的接口分为
```
并行口
IDE
SCSI
串行口
SATA
SAS
USB
```
机械式硬盘的工作机制
```
tarck:磁道:是用来存数据的
cylinder:柱面
sector:扇区
```
将磁盘进行分区,
> 1.分区是将磁盘按柱面进行物理上的划分。
> 2.划好分区后进行格式化
> 3.然后挂载后才能使用。
分区结构
```
0磁道0扇区(mbr)共分为512bytes
446bytes:引导加载器
64bytes:分区表
分区表大小为16bytes
所以一个硬盘最多有四个分区 (3个主分区和一个扩展分区)
2bytes:55aa(结尾)
```
分区的管理工具
fdisk:对于一块硬盘来说,最多可以管理15个分区
fdisk -l :列出(指定设备)的磁盘分区信息(如果不跟参数默认显示所有分区的信息)
例
```
Disk /dev/sda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002c9b7
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1275 10240000 83 Linux
/dev/sda2 1275 7650 51200000 83 Linux
/dev/sda3 7650 11474 30720000 83 Linux
/dev/sda4 11474 26109 117554176 5 Extended
/dev/sda5 11474 11857 3072000 82 Linux swap / Solaris
[root@zhangxiao ~]#
```
fdisk 参数(设备):直接进行对参数(设备)的分区
会提示帮助输入
```
m则是查看帮助
n创建新分区
p显示已有分区
d删除分区
w保存退出
q放弃更新退出
l列出所有ID
t调整分区id
```
lsblk查看磁盘分区情况
通知内核重新读磁盘分区情况
```
partx -a 添加磁盘分区时不同步
-d 删除磁盘分区时不同步
-nr[m][n]:配合-d一起用 【m】:【n】从分区编号到分区编号
partprobe (centos5,7使用)
```
文件系统分很多种
centos5/6上默认使用ext2/ext3/ext4
centos7默认使用xfs/jfs等
swap:交换分区
文件系统的组成部分
内核中的模块:ext4
用户空间的管理工具:mkfs.ext4,mkfs.xfs等
划分好分区后我们下一步需要做的事创建文件系统
一般用命令
mkfs.ext2,mkfs.ext3,mkfs.ext4,mkfs.xfs
用法:
mkfs.etx4(ext3/xfs) /dev/sd#(b1/b2)
把sdb(1/2)划分为ext4(ext3/xfs)文件系统
用法2 mkfs -t TYPE /dev/sdN
备注(TYPE是指ext,xfs等 N是指sd哪一个分区)
示例
```
[root@localhost ~]# mkfs.ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@localhost ~]# lsblk
```
blkid /dev/sdb(1/2):查看磁盘的基本情况
选项
-L:根据指定的卷标名查找设备
-U:根据UUID查看对应的设备
示例
```
[root@localhost ~]# blkid /dev/sdb2
/dev/sdb2: UUID="daa01a8f-3321-4423-899a-640bd636f41c" TYPE="ext4"
[root@localhost ~]#
```
对于ext系列用mke2fs命令更加灵活
用法
mke2fs
```
-t:{ext2|ext3|ext4}指明类型
-b:知名块大小{1k|2k|4k}
-i #:为空间中多少个字节创建一个inode:此大小不应该小于block的大小
-N #:为数据空间创造多少个inode
-m #:为管理员预留的空间占的百分比
-O FEATURE[,...]:启用指定特性
-O ^FEATURE:关闭指定特性
-L指定卷标
```
#### tune2fs:重新设定ext系列文件系统可调整参数的值
```
-l:查看指定文件系统超级块信息;super block
-L 'LABEL':修改卷标
-m #:修预留给管理员的空间百分比 -j: 将ext2升级为ext3
-O: 文件系统属性启用或禁用,–O ^has_journal
-o: 调整文件系统的默认挂载选项,–o ^acl
-U UUID: 修改UUID号
```
#### 文件系统的检测
fsck
常用选项
fsck -t TYPE /dev/sd#
fsck.TYPE /dev/sd#
-a 自动修复错误
-r 交互式幸福错误
TYPE一定要与分区上的类型相同
#### e2fsck:ext系列文件专用修复系统
-y:自动回答为yes
-f:强制修复
#### 挂载
挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此 目录做为其它文件访问入口的行为
卸载:为解除此关联关系的过程 把设备关联挂载点:mount Point mount
卸载时:可使用设备,也可以使用挂载点 umount 挂载点下原有文件在挂载完成后会被临时隐藏 挂载点目录一般为空
#### mount用法
:什么都不跟:显示设备中所有的挂载情况。
mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:
> (1) 指明要挂载的设备(/dev/sdb1)
> (2)卷标:L 卷标名
> (3) UUID:-u 'UUID'
> (4) 伪文件系统名字 例如proc ,sysfs ,devtmpfs等
>
dir :挂载点
必须事先存在,建议使用空目录
备注:尽量不要使用mnt和idear目录
(-t vsstype)
选项
```
-t vsftype:指定要挂载的设备上的文件系统类型 (最好省略,因为mount可以自动检查文件系统类型)
-r: readonly,只读挂载
-w: read and write, 读写挂载
-n: 不更新/etc/mtab,mount不可见
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选 项中有auto功能)
-L 'LABEL': 以卷标指定挂载设备 -U 'UUID':以UUID指定要挂载的设备
-B, --bind:绑定目录到另一个目录上
```
查看内核追踪到的已挂载的所有设备
cat /proc/mounts
处于繁忙状态的设备无法被卸载
(-o options)
选项
```
async:异步模式 sync:同步模式,内存更改时,同时写磁盘
atime/noatime:包含目录和文件
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载,是否支持-a选项
exec/noexec:是否支持将文件系统上运行应用程序
dev/nodev:是否支持在此文件系统上使用设备文件
suid/nosuid:是否支持suid和sgid权限
remount:重新挂载
ro:只读
rw:读写
user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用
acl:启用此文件系统上的acl功能
loop: 使用loop设备
defaults:相当于rw, suid, dev, exec, auto, nouser, async
```
备注:-o后面的选项可以是多个,彼此之间可用(,逗号)分隔
卸载命令:
```
#### umount DEVICE(设备名)或者
umount MOUNT_POINT(挂载点)
查看正在访问挂在点的用户
fuser -v /MOUNT_POINT
踢出正在访问系统进程中的用户
fuser -km /MOUNT_POINT
```
### mkswap:创建swap分区
对于分区来讲
先用fdisk /dev/sd#
输入t,输入想修改的卷标数
改为82(82指的是swap分区)
保存
然后mkswap
swap分区就创建好了
挂载交换分区
启用:swapon
swapon [OPTION]...[DEVICE]
-a:激活所有交换分区
-p:(数字) 指定优先级
禁用:swapoff
文件系统空间占用情况信息查看工具
df
选项
```
-h :按照人类易懂的方式显示
-i :显示inode的情况
-P :以posix兼容的格式输出(按照一行输出) (个别时候当文件名等过长时,显示时会分行显示)
```
查看目录或者目录下的文件总体占用情况
du [OPTION] dir
选项
默认:显示文件夹中的每一个文件大小
-s :查看文件夹下的所有文件总和
-h :人类易懂模式
du -sh 是经常结合在一起使用的
我们挂载的文件重启时会失效,如果想永久保存则需要修改 /etc/fstab文件
使用blkid 查看UUID号
fstab格式:
```
要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序
要挂载的设备或为文件系统
设备文件、卷标名(LABLE="")、UUID(UUID=""),伪文件系统
转储频率:
0:不做备份
1:每天转储
2:隔天转储
自检次序:
0:不自检
1:首先自检一般只有root才用1
通常我们额外的文件系统不要让他自检和转储
```
> 1./configure:通过选项传递参数,制动启用特性、安装路径等。执行时会参考用户指定以及Makefile,in文件生成Makefile
> 检查各指定功能依赖的外部环境
2. make 根据makefile构建应用程序
3、 make install
#### 磁盘管理知识
硬盘的接口分为
```
并行口
IDE
SCSI
串行口
SATA
SAS
USB
```
机械式硬盘的工作机制
```
tarck:磁道:是用来存数据的
cylinder:柱面
sector:扇区
```
将磁盘进行分区,
> 1.分区是将磁盘按柱面进行物理上的划分。
> 2.划好分区后进行格式化
> 3.然后挂载后才能使用。
分区结构
```
0磁道0扇区(mbr)共分为512bytes
446bytes:引导加载器
64bytes:分区表
分区表大小为16bytes
所以一个硬盘最多有四个分区 (3个主分区和一个扩展分区)
2bytes:55aa(结尾)
```
分区的管理工具
fdisk:对于一块硬盘来说,最多可以管理15个分区
fdisk -l :列出(指定设备)的磁盘分区信息(如果不跟参数默认显示所有分区的信息)
例
```
Disk /dev/sda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002c9b7
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1275 10240000 83 Linux
/dev/sda2 1275 7650 51200000 83 Linux
/dev/sda3 7650 11474 30720000 83 Linux
/dev/sda4 11474 26109 117554176 5 Extended
/dev/sda5 11474 11857 3072000 82 Linux swap / Solaris
[root@zhangxiao ~]#
```
fdisk 参数(设备):直接进行对参数(设备)的分区
会提示帮助输入
```
m则是查看帮助
n创建新分区
p显示已有分区
d删除分区
w保存退出
q放弃更新退出
l列出所有ID
t调整分区id
```
lsblk查看磁盘分区情况
通知内核重新读磁盘分区情况
```
partx -a 添加磁盘分区时不同步
-d 删除磁盘分区时不同步
-nr[m][n]:配合-d一起用 【m】:【n】从分区编号到分区编号
partprobe (centos5,7使用)
```
文件系统分很多种
centos5/6上默认使用ext2/ext3/ext4
centos7默认使用xfs/jfs等
swap:交换分区
文件系统的组成部分
内核中的模块:ext4
用户空间的管理工具:mkfs.ext4,mkfs.xfs等
划分好分区后我们下一步需要做的事创建文件系统
一般用命令
mkfs.ext2,mkfs.ext3,mkfs.ext4,mkfs.xfs
用法:
mkfs.etx4(ext3/xfs) /dev/sd#(b1/b2)
把sdb(1/2)划分为ext4(ext3/xfs)文件系统
用法2 mkfs -t TYPE /dev/sdN
备注(TYPE是指ext,xfs等 N是指sd哪一个分区)
示例
```
[root@localhost ~]# mkfs.ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@localhost ~]# lsblk
```
blkid /dev/sdb(1/2):查看磁盘的基本情况
选项
-L:根据指定的卷标名查找设备
-U:根据UUID查看对应的设备
示例
```
[root@localhost ~]# blkid /dev/sdb2
/dev/sdb2: UUID="daa01a8f-3321-4423-899a-640bd636f41c" TYPE="ext4"
[root@localhost ~]#
```
对于ext系列用mke2fs命令更加灵活
用法
mke2fs
```
-t:{ext2|ext3|ext4}指明类型
-b:知名块大小{1k|2k|4k}
-i #:为空间中多少个字节创建一个inode:此大小不应该小于block的大小
-N #:为数据空间创造多少个inode
-m #:为管理员预留的空间占的百分比
-O FEATURE[,...]:启用指定特性
-O ^FEATURE:关闭指定特性
-L指定卷标
```
#### tune2fs:重新设定ext系列文件系统可调整参数的值
```
-l:查看指定文件系统超级块信息;super block
-L 'LABEL':修改卷标
-m #:修预留给管理员的空间百分比 -j: 将ext2升级为ext3
-O: 文件系统属性启用或禁用,–O ^has_journal
-o: 调整文件系统的默认挂载选项,–o ^acl
-U UUID: 修改UUID号
```
#### 文件系统的检测
fsck
常用选项
fsck -t TYPE /dev/sd#
fsck.TYPE /dev/sd#
-a 自动修复错误
-r 交互式幸福错误
TYPE一定要与分区上的类型相同
#### e2fsck:ext系列文件专用修复系统
-y:自动回答为yes
-f:强制修复
#### 挂载
挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此 目录做为其它文件访问入口的行为
卸载:为解除此关联关系的过程 把设备关联挂载点:mount Point mount
卸载时:可使用设备,也可以使用挂载点 umount 挂载点下原有文件在挂载完成后会被临时隐藏 挂载点目录一般为空
#### mount用法
:什么都不跟:显示设备中所有的挂载情况。
mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:
> (1) 指明要挂载的设备(/dev/sdb1)
> (2)卷标:L 卷标名
> (3) UUID:-u 'UUID'
> (4) 伪文件系统名字 例如proc ,sysfs ,devtmpfs等
>
dir :挂载点
必须事先存在,建议使用空目录
备注:尽量不要使用mnt和idear目录
(-t vsstype)
选项
```
-t vsftype:指定要挂载的设备上的文件系统类型 (最好省略,因为mount可以自动检查文件系统类型)
-r: readonly,只读挂载
-w: read and write, 读写挂载
-n: 不更新/etc/mtab,mount不可见
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选 项中有auto功能)
-L 'LABEL': 以卷标指定挂载设备 -U 'UUID':以UUID指定要挂载的设备
-B, --bind:绑定目录到另一个目录上
```
查看内核追踪到的已挂载的所有设备
cat /proc/mounts
处于繁忙状态的设备无法被卸载
(-o options)
选项
```
async:异步模式 sync:同步模式,内存更改时,同时写磁盘
atime/noatime:包含目录和文件
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载,是否支持-a选项
exec/noexec:是否支持将文件系统上运行应用程序
dev/nodev:是否支持在此文件系统上使用设备文件
suid/nosuid:是否支持suid和sgid权限
remount:重新挂载
ro:只读
rw:读写
user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用
acl:启用此文件系统上的acl功能
loop: 使用loop设备
defaults:相当于rw, suid, dev, exec, auto, nouser, async
```
备注:-o后面的选项可以是多个,彼此之间可用(,逗号)分隔
卸载命令:
```
#### umount DEVICE(设备名)或者
umount MOUNT_POINT(挂载点)
查看正在访问挂在点的用户
fuser -v /MOUNT_POINT
踢出正在访问系统进程中的用户
fuser -km /MOUNT_POINT
```
### mkswap:创建swap分区
对于分区来讲
先用fdisk /dev/sd#
输入t,输入想修改的卷标数
改为82(82指的是swap分区)
保存
然后mkswap
swap分区就创建好了
挂载交换分区
启用:swapon
swapon [OPTION]...[DEVICE]
-a:激活所有交换分区
-p:(数字) 指定优先级
禁用:swapoff
文件系统空间占用情况信息查看工具
df
选项
```
-h :按照人类易懂的方式显示
-i :显示inode的情况
-P :以posix兼容的格式输出(按照一行输出) (个别时候当文件名等过长时,显示时会分行显示)
```
查看目录或者目录下的文件总体占用情况
du [OPTION] dir
选项
默认:显示文件夹中的每一个文件大小
-s :查看文件夹下的所有文件总和
-h :人类易懂模式
du -sh 是经常结合在一起使用的
我们挂载的文件重启时会失效,如果想永久保存则需要修改 /etc/fstab文件
使用blkid 查看UUID号
fstab格式:
```
要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序
要挂载的设备或为文件系统
设备文件、卷标名(LABLE="")、UUID(UUID=""),伪文件系统
转储频率:
0:不做备份
1:每天转储
2:隔天转储
自检次序:
0:不自检
1:首先自检一般只有root才用1
通常我们额外的文件系统不要让他自检和转储
```