首先分区有两种分区方式
MBR
现在主流的分区方式 分区不超过2T
0磁道0扇区
该区的大小为512bytes,专门用来存放MBR ,MBR又分为三类:
446bytes :存储boot loader 引导加载器
64bytes :存储分区表,有多少个分区,每个分区从哪里开始从哪里结束,其中设16bytse标识为一个分区,所以一块硬盘最多只能有四个主分区,如果需要超出四个分区可以分为三个主分区一个扩展分区,一个扩展分区里可以分N个逻辑分区。
2bytes :前面信息的有效标识(结束符),用四个16进制来表示55AA,表示前面的510bytes是有效的,很重要。
GPT
将来的主流分,主要针对大容量硬盘分区。支持128个分区,最大可支持64Z大小的分区。
管理分区的三种方式
fdisk:创建MBR分区
gdisk:创建GPT分区
parted:高级分区操作(创建、复制、调整大小等等)分区是实时的 就是说你执行了一个分区的命令那就真的分区了,而不会像fdisk那样需要执行w命令写入所做的修改,所以parted的测试千万注意不能再生产环境中!
文件系统分为
日志型文件系统:ext3、ext4、xfs.....
非日志型文件系统:ext2、vfat
这里提一下VFS,虚拟文件系统,虚拟化层,统一接口,方便调用各种不同的文件系统
创建ext文件系统
mkfs.文件系统名 /设备路径
mke2fs :创建文件系统 ext系列文件专用工具
-t :{ext2|ext3|ext4}
-b :指定块大小 有三种形式1024,2048,4096.一般默认
-N :为数据空间创建多少个inode 一般默认
-m :为管理人员预留空间占用的百分比 默认5% 修改支持小数点
-O : 启用指定特性
-O ^FEATURE : 关闭指定特性
tune2fs -l /dev/sdb1 查看系统支持的特性
tune2fs -O ^has_journal /dev/sda9 移除特性
tune2fs -O +has_journal /dev/sda9 添加特性
-o:修改ACL
tune2fs -o acl /dev/sda9
tune2fs -o ^acl /dev/sda9
tune2fs : 重新设定ext系列文件系统可调整参数的值
-l : 查看指定文件系统超级块信息 super block
-L :修改卷标
-m:预留给管理员的空间百分比
-o :调整文件系统的默认挂载选项
-U :修改UUID号
fsck 文件系统检测和修复 (只能修复系统 数据很有可能不能修复)
-p :自动修复错误
-r :交互式修复错误
e2fsck ext系列文件专用的检测修复工具
-y :自动回答为yes
-f :强制修复
mount 挂载
注意事项
***挂载点进程正在被使用无法卸载
***事先存在 并使用空目录挂载 如果使用已挂载的文件重复挂载那之前的文件会隐藏 卸载后才可看到
挂载
mount /dev/sda1 /mnt/sda1
把/dev/sda1 挂载到/mnt/sda1
文件挂载
findmnt 检查已挂载的文件的系统
losetup -a 查看centos6的 loop挂载关系 7以上不用加-a
umount /dev/sda1
卸载挂载 (卸载时有别人在进程里是不能卸载的)
fuser 专门看挂载点的进程
-v 查看谁在进程里
-km 把所有进程踢出去
(不到万不得已不要踢别人出去,这样别人会丢失数据。如果需要卸载可以提前发通知维护系统)
-r :只读挂载 挂载的文件只能读 任何人没有权限修改 对一些特殊设备使用这种方式t
-w :读写挂载
-n :隐藏挂载 只有用“cat /proc/mounts”才能显示出来
-B :把一个目录挂载到另一个目录上
例:mount -B /APPS /etc/APPS1
mount常用挂载选项
mount :查看所有挂载点 mnt专门存放挂载点
async : 异步模式 内存日志是定时更新 效率高
tail 查看文件日志 /var/log/messages 目录
sync :同步模式 内存更改时 同时写磁盘 效率慢 有保障
atime/noatime: 是否更新访问时间
atime 延迟时间 在两种情况下会修改
时间超过一天以上未被访问 下次访问时会修改
mtime时间比atime时间新 在下次访问时会修改
touch 创建文件 如果文件已经已经存在 则修改文件的三个时间
auto/noauto : 是否支持自动挂载
exec/noexec : 是否支持将文件系统上运行应用程序
dev/nodev :是否支持在此文件系统上使用设备文件
suid/nosuid:是否支持suid和sgid权限
remount :重新挂载 一般很少会卸载在挂载 会直接从新挂载
ro:只读
rw:读写
user/nouser:是否允许普通用户挂载此设备,默认管理员才能挂载
acl:启用此文件系统上的访问控制列表功能
Defaults:相当于rw、nosuid、dev、exec、auto、nouser、async 。
以上所有的挂载都是临时的 服务器重启之后就会自动取消挂载,需要把文件写入/etc/fstab 这个配置文件中
挂载之后使用mount -a 生效文件内挂载
uuidgen 生成新的UUID
lsblk:查看内存中的分区表 不会实时同步
blkid :查看UUID分区
disk :真实硬盘分区表 实时生效
swap分区
用硬盘分区创建swap分区 如果特殊情况下可以用文件创建 ,一般大小为内存的两倍,高性能磁盘存放。
swap一些选项
swapon -a 激活新安装的swap
swapon -s 谁提供了swap
swapoff 关闭swap
lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行
分区实验
~]# lsblk ##首先准备一块新硬盘 下面可以显示为sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 3.7G 0 rom
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 99.5G 0 part
├─vg_xiao-lv_root (dm-0) 253:0 0 50G 0 lvm /
├─vg_xiao-lv_swap (dm-1) 253:1 0 4G 0 lvm [SWAP]
└─vg_xiao-lv_home (dm-2) 253:2 0 45.6G 0 lvm /home
sdb 8:16 0 2G 0 disk ##新硬盘
]# cat << EOF | fdisk /dev/sdb ##给磁盘分区 ,可以使用交互式 这里这样写方便
> n ## 创建一个新的分区
> p ## 分区列表
> 1 ## 因为是新硬盘,磁盘最多可以分四个 这里选1 (这里为交互式模式下的提示,可选为1-4Partition number (1-4): 1)
> ##起始位置,可选磁盘块位置,默认直接回车是从当前位置开始分
> +1K ##可以指定结束块的数字,也可以直接指定分区大小,直接指定大小方便一点
> w ##保存退出
> EOF ##这里是模式的匹配字符 ,匹配到这个字符自动退出
~]# lsblk ##查看分区已经分配成功
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 3.7G 0 rom
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 99.5G 0 part
├─vg_xiao-lv_root (dm-0) 253:0 0 50G 0 lvm /
├─vg_xiao-lv_swap (dm-1) 253:1 0 4G 0 lvm [SWAP]
└─vg_xiao-lv_home (dm-2) 253:2 0 45.6G 0 lvm /home
sdb 8:16 0 2G 0 disk
└─sdb1 8:17 0 7.8M 0 part ##这里是分的区,为sdb硬盘下的sdb1
~]# mkfs.ext4 /dev/sdb1 ##格式化分区
~]# blkid /dev/sdb1 ##查看分区为ext4系统
/dev/sdb1: UUID="b5d58031-1b6f-46af-bd4e-d1c5cbb179e9" TYPE="ext4"
小技巧
fdisk -l ##查看磁盘中的分区表
lsblk ##查看内存中的分区表 查看结果有可能不统一
查看分区的路径 ##相当于执行命令,查看的是内存中的分区表
/proc/partitions
/dev/sd*
分区不同步同步方法,如果不同步后续操作会失败,系统的操作时是基于内存的 不是基于磁盘
CentOS6
增加分区
partx -a /dev/sdb
删除分区
partx -d --nr 5-7 /dev/sdb
CentOS7|5
partprobe