您的位置:首页 > 运维架构 > Linux

Linux磁盘管理

2017-12-13 15:10 211 查看
磁盘管理
设备文件
块设备:相当于一个扇区512字节
并行接口: (传输过程中可能会有干扰,目前都用串口)
IDE:133MB/s
SCSI:640MB/s(服务器接口)
串口:
SATA:6Gbps(家用硬盘接口)
SAS:6Gbps(现在大部分服务器接口)
USB:480MB/s

rpm:机械硬盘的转速,转速越快,性能越好

机械硬盘如果数据丢失,有机会恢复一部分数据,而固态磁盘丢失数据的话,不能恢复

磁盘设备的设备文件命名:/dev/DEV_FILE
无论是哪一种接口,最后都命名为/dev/sd..,除了虚拟磁盘的命名为/dev/vd
SCSI,SATA,SAS,IDE,USB:/dev/sd
Centos7使用gnome-disks可在图形化界面查看磁盘分区状态
Centos6则使用palimpsest在图形化界面查看
不同磁盘标识:a-z,如果突破了26个磁盘就会显示aa,ab
/dev/sda,/dev/sdb....
同一设备上面的不同分区:1,2...
MBR分区主分区最多4个,设备名称为1-4,扩展分区加主分区最多也是4个,一个电脑上至少一个主分区
/dev/sda1,/dev/sda5
硬盘存储术语
head:磁头,磁头数=盘面数,支持256个磁头
track:磁道(磁头要指向的一圈一圈的位置,1024圈)
cylinder:柱名
sector:扇区,一圈有63个扇区,每个扇区512bytes字节
计算磁盘大小=扇区(512)x一圈(63)x1024x256得出的结果为字节数)早期的计算公式

分区的目的
优化I/O性能
实现磁盘空间配额限制,限制用户在某几个分区占用的空间
提高修复速度
隔离系统和程序,防止一个坏了全坏
安装多个OS
采用不同的文件系统

pali
两种分区方法: MBR,GPT
MBR:主引导记录,使用32位表示扇区的数量,2的32次方扇区的总容量,2T,按照柱面分区
0磁道0扇区:存放关于硬盘的分区信息,0磁道的0扇区就叫做MBR

GPT分区
uuidgen生成随机uuid数
UUID128位,8位后面跟3个4位,再跟12位,唯一标识资源

管理分区:
列出块儿设备:lsblk(查看的是内存中缓存的磁盘信息)
查看分区的方式
(1)ls /dev/sd*(sd后面有数字则说明分区成功)
(2)cat /proc/partitions(查看的也是内存中的磁盘信息)
(3)lsblk(查看的也是内存中的磁盘信息)
(4)fdisk -l(看磁盘里面的分区表)

当内存中的磁盘信息与设备上面的磁盘信息不同时,使用以下解决方案
partprobe "设备名称" 同步某一个设备的分区表
Ctenos6上面同步
增加分区导致不同步使用partx -a "设备名称"
删除分区导致不同步使用partx -d --nr "缺少的分区号" "设备名"

创建分区使用:
fdisk '设备名称' 创建,管理MBR分区(创建完成后磁盘里面的分区表与内存中的分区表会不同步)
增加分区后不同步的话在Centos6上使用partx -a '设备名称' 进行同步
删除分区后导致不同步在Centos6上使用partx -d '设备名称' --nr '删除的分区号' 进行同步
Centos 7 则使用partprobe进行同步
fdisk -l [-u] [device...] 查看分区
fdisk "设备名称" 管理分区
子命令:
p 分区列表
t 更改分区类型
n 创建新分区
d 删除分区
v 校验分区
u 转换单位
w 保存并退出
当要定义分区大小的时候,first开始那一行一般都是默认,而下面Last cylinder后面可以跟要分区的大小,使用+size{G|M}格式
gdisk "设备名称" 创建GPT分区,交互式操作
parted 高级分区操作

SWAP分区编码为8200
parted用法:parted [选项]... [设备 [命令 [参数]...]...]
parted "指定一个硬盘" mklabel "msdos(MBR)|gpt(GPT)" 指定创建的是MBR格式还是GPT格式
parted "设备名称" print 打印指定设备信息
parted "指定一个硬盘" mkpart primay 1 1000默认为M(创建一个主分区大小为999M)
parted -l 查看所有设备的信息

文件系统:将分区分完之后要构建一个文件系统,没有文件系统就没有目录和文件
blkid可查看设备的文件系统
Linux文件系统:ext4(扩展的文件系统简称),xfs(支持更大的文件),btrfs(Oracle公司的文件系统),SWAP(当物理内存不够用时使用)
光盘:iso9660
网络文件系统:NFS,CIFS
查看支持的文件系统类型:ls /lib/modules/"本机内核"/kernel/fs/
RAW:光分区不格式化产生的文件系统

创建文件系统 Centos6默认文件系统为ext4,Centos7默认文件系统为xfs
ext2与ext3的区别:ext2没有日志功能,ext3拥有日志功能,ext3与ext4没有本质区别
扩展分区是不可以直接创建文件系统的

mkfs命令:
mkfs."文件系统类型" "设备分区"
-b {1024|2048|4096}'设备名称' 给目标设备划分单独块儿大小
-N 数字 '设备名称' 设置设备名称inode数量
mke2fs -j '设备名称'(给目标设备划分ext2文件系统类型并且加上日志功能)
-L(Label):给分区加卷标,也就是分区的描述,挂载点目录叫什么,这个就建议叫什么
e2label "设备分区" 卷标,划分好文件系统类型之后添加卷标
tune2fs -l "设备分区":查看分区的一系列的描述信息(针对ext系列的文件系统才能查看)
-O '属性名称':更改文件系统属性;删除的话要在-O后面的个性前面加上^
-o 更改挂载选项的;删除的话要在-o后面的挂载选项前面加上^
fsck '设备名':检查设备状态是否完好,有损坏即进行修复,修复过程中可能会丢失一部分数据
-U 更改设备的UUID编号

blkid查看创建了文件系统的设备
-U 根据UUID查找设备
-L 根据卷标名查找设备
uuidgen生成随机uuid
dumpe2fs '设备名' 可以看某一个设备中的分组
-h 只显示元数据信息不显示分组信息
findmnt判断目标是否为挂载点

/etc/mtab文件会随着挂载进行更新
cat /proc/mounts会显示比较详细的挂载信息
mount挂载方法:mount DEVICE MOUNT_POINT(挂载点)
如果要卸载的目录正在使用还要卸载的话,则使用lsof '设备名' 查询目标设备的状态
mount:通过查看/etc/mtab文件显示当前已挂载的所有设备
mount -n 不更新/etc/mtab文件挂载,mount命令不可见
-r 采取只读的方式挂载(默认是拥有rw权限)
-L 'LABEL':以卷标指定挂载设备'LABEL'为卷标名
-U 'UUID':以UUID指定要挂载的设备
-B或--bind :将目录挂载到目录里(例子:mount -B /mnt/sdb2 /app/sdb2)两个目录的文件夹就是一样的
-a 读取/etc/fstab中没有挂载的行并将其挂载

mount常用命令选项
-o options:(挂载文件系统的选项),多个选项使用逗号分离
async:异步模式,先将数据写到高速缓冲区(Buffer)中,在系统不繁忙的时候,再将数据写到硬盘中,效率比较高(默认)
缓冲区Buffer:写数据的时候,临时存放写入到磁盘的数据
缓存Cache:
sync:同步模式,将数据直接写入到硬盘中
atime/noatime:可以取消设备的atime更新以及开启atime的更新
diratime/nodiratime:目录的atime更新与不更新
auto/noauto:是否开启自动挂载
exec/noexec:该文件系统上的程序是否可以运行
dev/nodev:是否支持在此文件系统上使用设备文件
suid/nosuid:是否支持suid和sgid权限
remount:重新挂载,即时生效(比较常用)
ro:只读
rw:读写(默认挂载就拥有读写权限)
user/nouser:是否允许普通用户挂载设备,在/etc/fstab文件使用
acl/noacl:启用此文件系统的acl功能
loop:使用loop设备,可以将文件设为挂载点(可以手动创建loop设备文件,mknod /dev/loop[数字] b 设备编号 第几个设

备:mknod /dev/loop8 b 7 8,losetup:人为的将设备与文件做关联losetup /dev/loop8 /app/partfile2 losetup -a显示所有设备

与文件的对应关系)
defaults:相当于rw,suid,dev,exec,auto,nouser,async

文件挂载配置文件
/etc/fstab每行定义一个要挂载的文件系统,实现开机自动挂载
文件格式:(比较建议设备名写设备的UUID号,使用blkid查看,也可以写设备卷标,没有文件系统则写none)
设备名 挂载点 文件系统 挂载选项(mount -o后面的一系列选项) 备份标记 文件系统检查(第几个检查)
/dev/sdb2 /mnt/sdb2 ext4 defaults,ro 0 0

处理交换分区
创建swap分区,编号为82
mkswap 设备名 将目标设备划分为swap文件系统
swapon -a 将/etc/fstab中没有起作用的swap挂载开启
swapon -s 查看swap分区的信息,调整swap分区的优先级,在/etc/fstab中将defaults改为pri='大的优先级' swapoff然后swapon生效

移动设备
eject: 弹出光驱
-t 弹入光驱
创建ISO文件
cp /dev/cdrom /root/centos7.iso(将/dev/cdrom中的光盘文件拷贝到/root下并起名为centos7.iso)
将目录打包成iso文件
mkisofs -r -o "打包后文件存放位置" "要打包的目录名称"
将两张光盘合成一个光盘步骤:
进入wiki.centos.org搜索mkdvdiso.sh点击第一个结果下载下来这个脚本

free查看内存
-m 以兆为单位,默认以k为单位
-g 以G为单位
-h 人类易读模式显示
df查看正在挂载的磁盘空间利用率
-i 查看inode使用率
-T 文件系统类型
-P 以Posix兼容的格式输出
du查看目录总体空间占用状态
-sh 以人类易读方式显示结果
--max-depth 最大深度目录统计
工具dd
dd命令:将指定的源读出来发送到目标
用法:
dd if=源路径 of=目标路径
bs=大小:block size,每次读取的大小
count=#:复制多少个bs
of=file 写入到所命名的文件而不是到标准输出
if=file 从所命名文件读取而不是从标准输入
bs=size 指定的块儿大小(既是ibs也是obs)
ibs=size 一次读size个byte
obs=size 一次写size个byte
cbs=size 一次转化size个byte
skip=blocks 从开头忽略blocks个ibs大小的块,读的时候
seek=blocks 从开头忽略blocks个obs大小的块,写的时候
count=n 只拷贝n个记录

conv
转换参数:
notrunc 不截断输出文件
ucase 将小写转换为大写
lcase 将大写转换为小写
nocreat 不创建输出文件,of文件不存在的话不创建
noerror 出错时不停止
sync 将每个输入块填充到ibs个字节,不足部分用空字符补齐
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  磁盘 Linux