linux硬件I/O
I/O Ports:I/O设备地址,可直接跟CPU通讯,各设备设置不同地址,来向CPU提出I/O请求
一切皆文件
块设备block:存取单位“块”,硬盘
字符设备char:存取单位“字符”,键盘
设备文件:关联至一个设备驱动程序,进而能够与对应硬件设备通信
只有元数据
ll出的大小为:"主设备号","次设备号"
设备号:
主设备号:major number,标识设备类型
次设备号:minor number,标识同一类型下的不同设备
linux磁盘管理
硬盘接口类型
并口:多条线同时传输,干扰
IDE:133MB
SCSI:640MB
串口:单条线传输
SATA:6Gbps
SAS:6Gbps
USB:480MB
rpm:转速
磁盘设备文件命名
/dev/sd#
不同设备:sda,sdb,sdc...
同一设备不同分区:sda1,sda2,sda3...
机械硬盘:
盘片:磁盘有多个盘片,每个盘片有2个磁头,所有磁头同轴运动
track:磁道(一个盘片2个磁道,最外为0,由外向内编号)
cylinder:柱面(所有同编号磁道组成一个柱面)
secotr:扇区(每个磁道分成相同数的n个扇区)
512bytes(MBR)
分区:按柱面
磁盘0磁道0扇区:512bytes
MBR:Main Boot Record主引导记录
446bytes:存放boot loader
64bytes:分区表
16bytes:标识一个分区
2bytes:55AA
分区管理工具:fdisk,parted,sfdisk
fdisk:一块硬盘只可管理15个分区
fdisk -l:查看系统分区信息
fdisk /dev/ds#:进入分区系统
p:打印当前磁盘信息
m:显示帮助
n:新建分区或对扩展分区进行分区
p:主分区
选择起始扇区
选择结束扇区
e:扩展分区
选择起始扇区
选择结束扇区
d:删除
w:保存新建或删除
q:放弃修改并退出
l:列出所有分区ID
t:调整分区ID
查看内核是否已经识别新的分区
cat /proc/partitions
更新内核分区
partx -a /dev/sda:更新磁盘sda所有分区
kpartx -a /dev/sda:更新磁盘sda所有分区
centos5:partprobe /dev/sda
linux文件系统管理(除了分布式,其它一般都是内核模块)
cat /proc/filesystems:所支持文件系统列表
lsmod:查看系统加载的模块
linux文件系统:ext2,ext3,ext4,xfs,btrsf,reiserfs,jfs,swap
swap:交换分区
sql等对性能要求高,主要需要内存大,交换分区可很小
hadoop等对性能要求一般,内存需要大,可加大交换分区
光盘:iso9660
unix:ffs,ufs,jfs2
网络文件系统:nfs,cifs
集群文件系统:gfs2,ocfs2
分布式文件系统:ceph,moosefs,moilefs,glusterfs,lustre
根据是否支持"journal"功能分:
日志型文件系统:ext3,ext4,xfs,...
磁盘分为缓存区、元数据、数据,写入数据到磁盘时先把元数据存入缓存区,必免写入磁盘时断电重启后需要检查所有文件
非日志型文件系统:ext2,vfat
文件系统的组成部分
内核中的模块:ext4,xfs,vfat
用户空间的管理工具:mkfs.ext4,mkfs.xfs,mkfs.vfat
linux虚拟文件系统:VFS,兼容底层文件系统
格式化分区:创建文件系统
mkfs.FS_TYPE /DEVICE:格式化指定分区,FS_TYPE:ext4,xfs,btrfs,vfat(u盘格式兼容win)
mkfs.ext4 /dev/sda4:格式化sda4为ext4格式
mkfs.xfs -L data /sda5:添加卷标为data
mkfs.btrfs -f /sda6:有文件系统时,强制格式化
mkfs -t FS_TYPE /DEVICE:格式化指定分区
mke2fs:ext系统专用管理工具
-t ext2|ext3|ext4:指定类型
-b 1024|2048|4096:指定块大小,默认为4096字节
-j:相当于-t ext3
-i #:数据空间每#个字节创建一个inode,些#不可小于块大小
-N #:指定创建#个inode
-m #:管理人员预留空间占据#%,默认5%
-O 特性...:启用指定特性
-O ^特性...:关闭指定特性
mkswap:创建swap分区(要先调整分区ID)
fdisk -l /分区:查看分区ID号是否为82
fdis /分区
t #调整ID号
4 #第几个分区
82 #调整为82
w #保存
partx -a /dev/sda4:更新内核分区信息
partx -a /dev/sda4:更新内核分区信息(一次可能不成功)
mkswap /dev/sda4:格式化为交换分区
blkid /分区:显示分区信息,名,UUID(全局唯一标识),类型
-U "UUID":查找指定UUID对应的设备
-L "卷标":查找指定卷标对应的设备
e2label /分区设备:查看设备卷标
e2label "卷标" /分区设备:设置卷标
tune2fs:重新设定ext文件系统可调整参数的值
-l:查看指定分区超级块信息(块个数、大小,inode个数)
超级块:分区按比例分组,超级块用于存放所有分组的信息
-L "卷标":修改卷标
-m #:修改预留管理员空间#%
-j:ext2升级为ext3
-O:文件系统属性启用或禁用,可以打开日志功能
-o:调整文件系统默认挂载选项
-U UUID:修改UUID号
dumpe2fs:查看块组详细信息
-h:查看超级块信息
文件系统检测
fsck.FS_TYPE /分区:FS_TYPE一定要与分区格式一样
fsck -t FS_TYPE /分区
-a:自动修复错误
-r:交互式修复
e2fsck:ext系统专用检测修复工具
-y:自动同意
-f:强制修复
挂载:将非根文件系统与根文件系统的目录建立关联,使此目录为文件系统入口(需添加/etc/fstab才能重启后也生效)
mount:显示所有已挂载的设备,查看/etc/mtab
cat /proc/mounts:查看内核已挂载的设备
mount /DEVICE /挂载点:挂载点最好为空,否则挂载点下文件会被隐藏
/DEVICE:指明要挂载的设备
设备文件:/dev/sda4
卷标:-L '卷标'
UUID:-U 'UUID',好处设备多也不会冲突
伪文件系统名称:proc,sysfs,devtmpfs,configfs
常用命令选项
-t vfstype:指定要挂载设备上的文件系统类型,可省略
-r:只读挂载
-w:读写挂载
-n:不更新/etc/mtab但挂载,mount命令查看不到挂载,/proc/mounts可以查看挂载,默认更新
-a:自动挂载所有支持自动挂载的设备(定义在/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
-B:挂载目录到另一个目录上
文件系统选项:[-o options]
-o async:异步模式,CPU处理完数据后,由CPU指定时间写入磁盘,效率高(推荐使用)
sync:同步模式,CPU处理完数据后马上写入磁盘,数据丢失性低
atime|noatime:每次查看文件或目录是否更新访问时间戳(默认为atima,对于经常读不更新效率高很多)
diratime|nodirtime:是否更新目录访问时间戳
auto|noauto:是否支持自动挂载,默认支持
exec|noexec:是否支持装将文件系统上程序运行为进程
dev|nodev:是否支持文件系统上使用设备文件
suid|nosuid:是否支持SUID权限
remount:重新挂载
ro:只读
rw:读写
user|nouser:是否允许普通用户挂载此设备,默认不允许
acl:启用此文件系统上的acl功能
注意:上述选项可用逗号分隔为多个同时使用
默认挂载选项:defaults
rw,suid,dev,exec,auto,nouser,async,relatime
文件系统挂载配置文件:/etc/fstab
每行定义一个文件系统,6个字段
要挂载设备或伪文件系统
设备文件,UUID="UUID",LABEL="卷标",伪文件系统名
挂载点
文件系统类型
挂载选项:defauts
转储频率:0不做备份,1每天转储,2每隔一天转储
自检次序:0不自检,1首先自检(/),2第2个自检
卸载命令(不可卸载繁忙的设备)
umount /DEVICE
umount /挂载点
fuser -v /挂载点:查看正在访问指定文件系统的进程
fuser -km /挂载点:杀死所有访问指定挂载点的进程
挂载、卸载交换分区
swapon /DEVICE:启用指定交换分区
swapon -a:启用所有交换分区
swapon -p # /DEVICE:指定优先级
swapoff /DEVICE:禁用指定交换分区
swapon -a:禁用所有交换分区
内存查看
free -m|g:默认以K显示大小,可选项m和g
第一行:总大小 已用 空闲 共享 缓存 缓存
第二行:去年缓存后已用 加上缓存的空闲
第三行:swap分区使用情况
磁盘空间查看
df:显示所有文件系统使用信息
df -h:以自动换算大小来显示
df -i:显示inodes使用信息
df -P:每个文件系统以一行显示
查看目录占用空间
du:显示目录及子目录大小,不会显示文件大小
-h:换算大小显示
-s:只显示指定目录大小
du -sh *:显示指定目录下所有文件和目录大小
I/O Ports:I/O设备地址,可直接跟CPU通讯,各设备设置不同地址,来向CPU提出I/O请求
一切皆文件
块设备block:存取单位“块”,硬盘
字符设备char:存取单位“字符”,键盘
设备文件:关联至一个设备驱动程序,进而能够与对应硬件设备通信
只有元数据
ll出的大小为:"主设备号","次设备号"
设备号:
主设备号:major number,标识设备类型
次设备号:minor number,标识同一类型下的不同设备
linux磁盘管理
硬盘接口类型
并口:多条线同时传输,干扰
IDE:133MB
SCSI:640MB
串口:单条线传输
SATA:6Gbps
SAS:6Gbps
USB:480MB
rpm:转速
磁盘设备文件命名
/dev/sd#
不同设备:sda,sdb,sdc...
同一设备不同分区:sda1,sda2,sda3...
机械硬盘:
盘片:磁盘有多个盘片,每个盘片有2个磁头,所有磁头同轴运动
track:磁道(一个盘片2个磁道,最外为0,由外向内编号)
cylinder:柱面(所有同编号磁道组成一个柱面)
secotr:扇区(每个磁道分成相同数的n个扇区)
512bytes(MBR)
分区:按柱面
磁盘0磁道0扇区:512bytes
MBR:Main Boot Record主引导记录
446bytes:存放boot loader
64bytes:分区表
16bytes:标识一个分区
2bytes:55AA
分区管理工具:fdisk,parted,sfdisk
fdisk:一块硬盘只可管理15个分区
fdisk -l:查看系统分区信息
fdisk /dev/ds#:进入分区系统
p:打印当前磁盘信息
m:显示帮助
n:新建分区或对扩展分区进行分区
p:主分区
选择起始扇区
选择结束扇区
e:扩展分区
选择起始扇区
选择结束扇区
d:删除
w:保存新建或删除
q:放弃修改并退出
l:列出所有分区ID
t:调整分区ID
查看内核是否已经识别新的分区
cat /proc/partitions
更新内核分区
partx -a /dev/sda:更新磁盘sda所有分区
kpartx -a /dev/sda:更新磁盘sda所有分区
centos5:partprobe /dev/sda
linux文件系统管理(除了分布式,其它一般都是内核模块)
cat /proc/filesystems:所支持文件系统列表
lsmod:查看系统加载的模块
linux文件系统:ext2,ext3,ext4,xfs,btrsf,reiserfs,jfs,swap
swap:交换分区
sql等对性能要求高,主要需要内存大,交换分区可很小
hadoop等对性能要求一般,内存需要大,可加大交换分区
光盘:iso9660
unix:ffs,ufs,jfs2
网络文件系统:nfs,cifs
集群文件系统:gfs2,ocfs2
分布式文件系统:ceph,moosefs,moilefs,glusterfs,lustre
根据是否支持"journal"功能分:
日志型文件系统:ext3,ext4,xfs,...
磁盘分为缓存区、元数据、数据,写入数据到磁盘时先把元数据存入缓存区,必免写入磁盘时断电重启后需要检查所有文件
非日志型文件系统:ext2,vfat
文件系统的组成部分
内核中的模块:ext4,xfs,vfat
用户空间的管理工具:mkfs.ext4,mkfs.xfs,mkfs.vfat
linux虚拟文件系统:VFS,兼容底层文件系统
格式化分区:创建文件系统
mkfs.FS_TYPE /DEVICE:格式化指定分区,FS_TYPE:ext4,xfs,btrfs,vfat(u盘格式兼容win)
mkfs.ext4 /dev/sda4:格式化sda4为ext4格式
mkfs.xfs -L data /sda5:添加卷标为data
mkfs.btrfs -f /sda6:有文件系统时,强制格式化
mkfs -t FS_TYPE /DEVICE:格式化指定分区
mke2fs:ext系统专用管理工具
-t ext2|ext3|ext4:指定类型
-b 1024|2048|4096:指定块大小,默认为4096字节
-j:相当于-t ext3
-i #:数据空间每#个字节创建一个inode,些#不可小于块大小
-N #:指定创建#个inode
-m #:管理人员预留空间占据#%,默认5%
-O 特性...:启用指定特性
-O ^特性...:关闭指定特性
mkswap:创建swap分区(要先调整分区ID)
fdisk -l /分区:查看分区ID号是否为82
fdis /分区
t #调整ID号
4 #第几个分区
82 #调整为82
w #保存
partx -a /dev/sda4:更新内核分区信息
partx -a /dev/sda4:更新内核分区信息(一次可能不成功)
mkswap /dev/sda4:格式化为交换分区
blkid /分区:显示分区信息,名,UUID(全局唯一标识),类型
-U "UUID":查找指定UUID对应的设备
-L "卷标":查找指定卷标对应的设备
e2label /分区设备:查看设备卷标
e2label "卷标" /分区设备:设置卷标
tune2fs:重新设定ext文件系统可调整参数的值
-l:查看指定分区超级块信息(块个数、大小,inode个数)
超级块:分区按比例分组,超级块用于存放所有分组的信息
-L "卷标":修改卷标
-m #:修改预留管理员空间#%
-j:ext2升级为ext3
-O:文件系统属性启用或禁用,可以打开日志功能
-o:调整文件系统默认挂载选项
-U UUID:修改UUID号
dumpe2fs:查看块组详细信息
-h:查看超级块信息
文件系统检测
fsck.FS_TYPE /分区:FS_TYPE一定要与分区格式一样
fsck -t FS_TYPE /分区
-a:自动修复错误
-r:交互式修复
e2fsck:ext系统专用检测修复工具
-y:自动同意
-f:强制修复
挂载:将非根文件系统与根文件系统的目录建立关联,使此目录为文件系统入口(需添加/etc/fstab才能重启后也生效)
mount:显示所有已挂载的设备,查看/etc/mtab
cat /proc/mounts:查看内核已挂载的设备
mount /DEVICE /挂载点:挂载点最好为空,否则挂载点下文件会被隐藏
/DEVICE:指明要挂载的设备
设备文件:/dev/sda4
卷标:-L '卷标'
UUID:-U 'UUID',好处设备多也不会冲突
伪文件系统名称:proc,sysfs,devtmpfs,configfs
常用命令选项
-t vfstype:指定要挂载设备上的文件系统类型,可省略
-r:只读挂载
-w:读写挂载
-n:不更新/etc/mtab但挂载,mount命令查看不到挂载,/proc/mounts可以查看挂载,默认更新
-a:自动挂载所有支持自动挂载的设备(定义在/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
-B:挂载目录到另一个目录上
文件系统选项:[-o options]
-o async:异步模式,CPU处理完数据后,由CPU指定时间写入磁盘,效率高(推荐使用)
sync:同步模式,CPU处理完数据后马上写入磁盘,数据丢失性低
atime|noatime:每次查看文件或目录是否更新访问时间戳(默认为atima,对于经常读不更新效率高很多)
diratime|nodirtime:是否更新目录访问时间戳
auto|noauto:是否支持自动挂载,默认支持
exec|noexec:是否支持装将文件系统上程序运行为进程
dev|nodev:是否支持文件系统上使用设备文件
suid|nosuid:是否支持SUID权限
remount:重新挂载
ro:只读
rw:读写
user|nouser:是否允许普通用户挂载此设备,默认不允许
acl:启用此文件系统上的acl功能
注意:上述选项可用逗号分隔为多个同时使用
默认挂载选项:defaults
rw,suid,dev,exec,auto,nouser,async,relatime
文件系统挂载配置文件:/etc/fstab
每行定义一个文件系统,6个字段
要挂载设备或伪文件系统
设备文件,UUID="UUID",LABEL="卷标",伪文件系统名
挂载点
文件系统类型
挂载选项:defauts
转储频率:0不做备份,1每天转储,2每隔一天转储
自检次序:0不自检,1首先自检(/),2第2个自检
卸载命令(不可卸载繁忙的设备)
umount /DEVICE
umount /挂载点
fuser -v /挂载点:查看正在访问指定文件系统的进程
fuser -km /挂载点:杀死所有访问指定挂载点的进程
挂载、卸载交换分区
swapon /DEVICE:启用指定交换分区
swapon -a:启用所有交换分区
swapon -p # /DEVICE:指定优先级
swapoff /DEVICE:禁用指定交换分区
swapon -a:禁用所有交换分区
内存查看
free -m|g:默认以K显示大小,可选项m和g
第一行:总大小 已用 空闲 共享 缓存 缓存
第二行:去年缓存后已用 加上缓存的空闲
第三行:swap分区使用情况
磁盘空间查看
df:显示所有文件系统使用信息
df -h:以自动换算大小来显示
df -i:显示inodes使用信息
df -P:每个文件系统以一行显示
查看目录占用空间
du:显示目录及子目录大小,不会显示文件大小
-h:换算大小显示
-s:只显示指定目录大小
du -sh *:显示指定目录下所有文件和目录大小