磁盘管理一
前言所需:
磁盘前段MBR(共512字节),其中bootloader占用446字节,分区表占用64字节,每一个主分区16字节,共4区或3+1区(只能有4个主或者3主+1扩展,扩展可以创建多个逻辑),最后两个字节决定了是否可引导,如果是5A(16进制),则可引导
-1 分区表操作
fdisk [DEVICE]
交互式命令:
d: 删除一个分区
n: 新建一个分区
p: 显示当前的分区信息
w: 保存退出
q: 不保存退出
l: 各分区类型所对应的System ID;
83:Linux
82:Linux Swap,交换分区
8e: LVM
fd: Soft Raid
t: 修改指定分区的System ID;
-2 分区表查看(此时查看的还是修改前的,因内核还未读取修改后的)
cat /proc/partitions
-3 RHEL5让内核重新读取分区表
partprobe /dev/sd[a-z]
RHEL6让内核重新读取分区表
partx -a /dev/sd[a-z][n] /dev/sd[a-z]
若无法找到设备文件,则建议重新启动
-4 格式化分区,创建文件系统
mkfs -t ext4 /dev/sd[a-z][n]
or
mkfs.ext4 /dev/sd[a-z][n]
or
mke2fs -t ext4 /dev/sd[a-z][n]
mke2fs功能最强大,不过只能针对ext[n]
mke2fs常用参数:
-t 指定文件系统
-b n 指定块大小 (不能修改,只能在此时决定)
*块的大小取决于cpu的对内存页框的大小的支持,x86的默认页框是4K,故最小块大小为4K,所以,块的大小=4*2^n次方
*块具体设置由所存储的文件数量大小决定,因为每一个块只能存储一个文件信息,故若文件多且小,则块设置大,浪费资源,故文件多且小,块就小,文件少 且大,块就大
-L [label] 指定卷标名
-m [n] 指定预留块在总空间中占用的比例 默认应该是5%,500M-1G足以
-r [n] 指定预留块的数量
-5 文件系统属性修改
tune2fs
-l: 显示文件系统(超级块)信息;(block size)
-L label:重新设定卷标;
-m [n]: 调整预留给管理使用的块所占据总体分区空间的比例;(大硬盘最好指定,因为默认的比例过大,资源浪费)
-r [n]: 调整预留给管理使用的块个数;(Reserved block count)(与块大小有关,因为块大小设置过大,相对于同一个磁盘,则相同比例下块数量就下降)
-o:设定挂载默认选项
-O: 设定文件系统默认特性
-E: 调整文件系统的扩展属性
-6 挂载分区
--1 格式
mount [-t fstype] DEVICE MOUNT_POINT
eg:mount -t ext4 /dev/sdb /mnt
mount [-t fstype] LABEL="卷标" MOUNT_POINT
eg:mount -t ext4 LABEL="NEWPT" /mydata
mount [-t fstype] UUID="UUID" MOUNT_POINT
--2 查看UUID、卷标、系统类型
blkid /dev/sda[n] 查看sda1的uuid、卷标、系统类型
*不能挂载到系统级目录,因为挂载其实就是将目录和分区建立关联,若一个分区下的一个目录有文件,则另一个分区挂载到此目录之后,次目录下的文件将不能被访 问(并不是删除,只不过不能访问,被隐藏了),若此目录是系统目录,那么系统命令将无法使用
--3 mount -o的常用选项
ro: 只读挂载;
rw: 读写,默认即为读写;
noatime: 关闭 更新 访问时间的功能;很重要的优化参数(包含nodiratime)
auto: 是否能够由“mount -a”挂载;
defaults:相当于rw, suid, dev, exec, auto, nouser, async, and relatime
sync: 同步写入 (用户和内存进行交互的同时,就与硬盘进行同步,同步完成前,需等待)
async:异步写入 (用户和内存先行交互,之后内存与硬盘进行同步,性能强)
dev: 允许在此分区内创建启用设备文件(b和c)
………………………………………………………………………remount……………………………………………………………………………
remount: 重新挂载
mount -o remount,other_options DEVICE
mount -o remount,ro /dev/sda3 #将sda3重新挂载成只读
……………………………………………………………………………loop………………………………………………………………………………
loop: 本地回环设备;
mount -o loop,other_options DEVICE MOUNT_POINT: 用于挂载回环设备(镜像,类似于win的虚拟光驱);
eg:mount -o loop,ro /xxx.iso /mnt
……………………………………………………………………………noexec…………………………………………………………………………
noexec 不允许挂载设备执行二进制程序(因U盘病毒含量大,故U盘不允许最好)
……………………………………………………………………………………………………………………………………………………………………
-n: 挂载文件系统时,不更新/etc/mtab文件; (mount命令就是刷新/etc/mtab文件,此文件就是存储当前挂载的信息)
-r: 相当于“-o ro”, 只读挂载
mount -o ro /dev/cdrom /media
cdrom一般为一个链接文件(l)
cdrom --> sr0
or
cdrom --> hdc
…………………………………………………………………无法umount的时候……………………………………………………………………
很多时候挂载网络系统的时候,若无法卸载,可尝试以下
fuser [MOUNT_POINT]:查看正在访问某挂载点的进程;
fuser -km [MOUNT_POINT]: 强行杀死正在访问此挂载点的进程;
-7 /etc/fstab: 系统开机会自动挂载的文件系统
--1 文件格式
挂载的设备 挂载点 文件系统类型 挂载选项 转储频率 自检次序
eg:/dev/sda3 /mydata ext4 defaults,noatime 0 0
--2 详细描述
挂载的设备:设备文件、卷标、UUID
挂载点:
文件系统类型:ext2, ext3, ...
挂载选项:defaults表示使用默认选项,多个选项彼此间逗号分隔;
转储频率:
0: 从不备份;(自己挂载大多时候指定0)
1:每日备份;
2:每隔一天备份
自检次序:系统出现意外,重启检测出现意外的文件是否完整
0:不检测;
1:第一个检测;一般只有根文件系统被第一个检测;
2
9
………………………………………………………………………自检……………………………………………………………………………………
ext3开始,ext系列被称为日志文件系统,故索引先存于日志区域,若文件正常,则索引移植到索引区域,因此当出现意外的时候,只要日志区域存在的索引都是有问题 的,因为没来得及放入索引区域。所以检测速度很快;
而ext2则没有日志区域,故只能对比所有文件,检测速度很慢;
但是ext3以上的因为存在了日志系统,故索引条i/o了两次,所以性能有所下降。
………………………………………………………………………全部挂载……………………………………………………………………………
mount -a 挂载 /etc/fstab所有支持auto挂载选项的文件系统
…………………………………………………………………………………………………………………………………………………………………
-8 交换分区:swap
--1
linux和windows交换分区的区别:
linux上必须是独立分区,独立文件系统;而windows是放在系统磁盘上
32位的最大线性地址空间为4G(3G的用户空间,1G的内核空间)
每一个进程都会被告知自己拥有最大的线性地址空间,因此当实际物理内存不能够满足线性地址空间的时候,就会使用硬盘模拟成内存(交换分区)
--2
交换分区应该设置多大?
科学计算类的服务器(批处理):交换内存可以尽可能大,比如为物理内存的2倍;
应用程序类的服务器(web、数据库):交换内存尽可能小,比如只给1G;
若不确定服务器使用类型:
物理内存小于等于2G, swap=memory*2
2G<memory<4G, swap=memory*1.5
memory>4G, swap=4G
--3
修改分区属性,将其改为swap分区:
fdisk /dev/sd[a-z]
eg: fdisk /dev/sda
输入t
选择分区5,同时更改id为82
创建交换分区:
mkswap -L label device
eg:mkswap -L newswap /dev/sda5
--4
启用交换分区:
swapon DEVICE
eg:swapon /dev/sda5
swapon -a 启用所有交换分区
--5
禁用交换分区:
swapoff DEVICE
eg:swapoff /dev/sda5
swapoff -a 禁用所有交换分区
--6
开机自动启用交换分区,可定义于/etc/fstab,挂载点:swap 文件系统类型:swap
DEVICE swap swap defaults 0 0
eg:LABLE="newswap" swap swap defaults 0 0
--7
dd命令 创建虚拟化交换分区
dd if=/dev/zero of=/dev/swap.b bs=1M count=500
mkswap -L newswap /dev/swap.b
swapon /dev/swap.b
附:
如何内存大小:
free
-m: 空间大小换算为MB
-g: 空间大小换算为GB
shared: 共享内存
buffer: 缓冲
cached: 缓存
used-buffer-cached=真正使用内存