linux 磁盘管理

磁盘管理


Linux思想一切皆文件

open(),read(),write(),close()


I/O 设备地址


设备类型:

块设备:block,存取单位“块”,磁盘 (随机访问

字符设备:char,存取单位“字符”,键盘 (逻辑访问


设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通讯。


设备编号:

ll /dev/sda*

root disk 8.0

root disk 8.1

每一个设备都拥有一个主要号码,代表设备的类型,第二个是同一类型的唯一编号。

QQ图片201608241030461.png

硬盘接口类型:


并行:

IDE:133MB/s (家用)

SCSI:640MB/s  (服务器)


串口:

SATA:6Gbps (家用)

SAS:6Gbps   (服务器)

USB:480MB/s


rpm: rotations per minute

每分钟的转速


磁盘设备的设备文件命名:/dev/DEV_FILE

IDE: /dev/hd

SCSI, SATA, SAS, USB: /dev/sd

不同设备:a-z

/dev/sda, /dev/sdb, …


同一设备上的不同分区:1,2, …

/dev/sda1, /dev/sda5

blob.png

磁头 head

2磁头数 =1盘片

磁道 track

扇区 sector (512字节)


head 256 磁头

track 1024 磁道

secror 63 扇区

CHS(culinder柱面)

culinder=track*head=512*63*256=8M

(centos6版本之后就不用整个柱面分区)

LBA 逻辑寻址(6版本之后就使用)

blob.png

blob.png

分区

两种分区方式: MBR ,GPT


MBR: Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T

如何分区:按柱面

0磁道0扇区:512bytes

446bytes: boot loader

64bytes分区表

16bytes: 标识一个分区

2bytes: 55AA (识别是否有分区)

4个主分区;3主分区+1扩展(N个逻辑分区)


GPT:GUID(Globals Unique Identifiers)partition table 支持128个分区,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)

使用128位UUID 表示磁盘和分区GPT分区表自动备份在头和尾两份,并有CRC校验位

UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动


EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域


linux 使用的分区方式

lilo

grub (5,6版本)

grub2(7版本之后使用)


echo "- – -"> /sys/class/scsi_host/host0/scan 

扫描新添加的硬盘


(查看分区)

lsblk 查看硬盘信息 (读取内存中的信息)

fdisk -l /dev/sdd 查看硬盘信息

QQ图片20160826150822.png

hexdump -C -n 512 /dev/sda 查看磁盘前512字节的信息

blob.png

dd if=/dev/sda of=/testdir/mbrbak bs=1 count=512

备份mbr

blob.png

dd if=/testdir/mbrbak of=/dev/sdd

将磁盘中备份的磁盘信息放到sdd

blob.png

dd if=/dev/zero of=/dev/sdd bs=1 count=446 将前446字节用0替代

blob.png

blob.png

dd if=/dev/zero of/=dev/sdd bs=1 count=2 skip=510 seek=510

用0代替最后两个字节的分区标识55AA。

blob.png

blob.png

最后两位字节存储标识的55 AA变成00 00

dd if=/testdir/mbrbak of=/dev/sdd bs=1 count=2 skip=510 seek=510

恢复分区标识

blob.png


管理分区

列出块设备

lsblk

blob.png

创建分区使用:

fdisk创建MBR分区,也支持GPT,对于一块硬盘,最多只能管理15分区

blob.png

blob.png

fdisk /dev/sdc

w:存盘退出

n:添加一个新的分区、柱面为单位,

p:显示

d:删除

q:不保存退出

t:更改分区类型

gdisk创建GPT分区

blob.png

查看内核是否已经识别新的分区:

 cat /proc/partations

 partx -a /dev/sda (6使用这个指令)


partprobe

同步

GNU parted高级分区操作(创建、复制、调整大小等等)


parted /dev/sdc mklabel msdos  

创建新的磁盘格式为MBR

parted /dev/sdc mklabel gpt

创建新的磁盘格式为GPT

fdisk -l /dev/sdc 

blob.png

查看分区的起始到结束点,块的数量,ID

parted /dev/sdc/mkpart primary 1 1024 

起始点 终止点      创建一个分区

parted /dev/sdc/ rm 1

删除/dev/sdc 第一个分区

partprobe-重新设置内存中的内核分区表版本


文件系统

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;

即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。

从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。


ext3(centos5)

ext4(centos6)

xfs(centos7)


光盘:iso9660


网络文件系统:NFS,CIFS (Linux包 samba)


集群文件系统:GFS2,OCFS2(oracle)


分布式文件系统:ceph,moosefs,mogilefs,glusterfs,Lustre


RAW:未经处理或者未格式化产生的文件系统


文件系统分类

根据其是否支持"journal"功能:

日志型文件系统: ext3, ext4, xfs, …

非日志型文件系统: ext2, vfat

文件系统的组成部分:

内核中的模块:ext4, xfs, vfat

用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat

Linux的虚拟文件系统:VFS


查前支持的文件系统:cat /proc/filesystems

blob.png

lsmod 可以查看设备的驱动是否安装成功

blob.png

创建文件系统

mkfs.

mkfs -t ext4

mke2fs 


mke2fs /dev/sdc1 建立ext文件系统

blob.png

一个块=4k

tune2fs -l /dev/sd* 

blob.png

超级块是存储关于块的数据,块的大小,块的元数据。

组超级块,存储块的大小,和每个组有多少块,块的元数据。

超级块会自动备份。


blkid 查看盘的文件系统

tun2fs -o ^has_journal /dev/sd*

移除 日志功能,ext3变ext2


创建ext文件系统


mke2fs:ext系列文件系统专用管理工具

-t {ext2|ext3|ext4}

-b {1024|2048|4096}

-L 'LABEL' 卷标(卷标名最好使用挂载点名字)

-j: 相当于-t ext3

mkfs.ext3 = mkfs-t ext3 = mke2fs -j = mke2fs -t ext3

tune2fs -m 0 /dev/sda5

-i#: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小

-N#:为数据空间创建个多少个inode

-I 一个inode记录大小128—4096

-m #: 默认5%,为管理人员预留空间占总空间的百分比

-O FEATURE[,…]:启用指定特性

-O ^FEATURE:关闭指定特性

blob.png

文件系统标签

blkid:块设备属性信息查看

-U UUID: 根据指定的UUID来查找对应的设备

-L LABEL:根据指定的LABEL来查找对应的设备

blob.png

e2label /dev/sdc2 /mnt/sdc2

加卷标

blob.png

tune2fs

tune2fs:重新设定ext系列文件系统可调整参数的值


-l:查看指定文件系统超级块信息;super block

-L 'LABEL':修改卷标

-m #:修预留给管理员的空间百分比

-j: 将ext2升级为ext3

-O: 文件系统属性启用或禁用,–O ^has_journal

-o: 调整文件系统的默认挂载选项,–o ^acl

-U UUID: 修改UUID号

blob.png

ecntos6 手动分区格式化ext 没有acl功能

tune2fs -o acl /dev/sd*

ACL:

具有能再添加局限权限的能力,实现灵活的权限管理

Centos 7 默认创建xfs 和ext4 文件系统有ACL功能。

Centos 7 版本之前,默认手工创建的ext4文件系统无ACL功能。

         手动添加:

                  tune2fs -o acl /dve/sdb1

                  mount -o acl /dve/sbd1 /mnt

ACL 生效顺序:所有者,自定义用户,自定义组,其他人。


tune2fs -l /dev/sd*

文件系统检测和修复

常发生于死机或者非正常关机之后

挂载为文件系统标记为“dirty”

fsck: File System Check

fsck.FS_TYPE

fsck-t FS_TYPE

-a: 自动修复错误

-r: 交互式修复错误

fsck -y /dev/sd* 默认在yes的选项下修复

不要在挂载的情况下修复,不然修复会破坏元数据。

注意: FS_TYPE一定要与分区上已经文件类型相同;

fsck -a /dev/sd*

文件修复


fsck 通常用来检查并适当修复一个或多个Linux文件系统. filesys 可以是一个设备名(例如: /dev/hdc1 , /dev/sdb2 ), 一个挂载点(例如: / , /usr , /home ), 或一个ext2文件系统的磁盘标签, 也可以是UUID指定符(例如: UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd 或 LABEL=root). 通常, fsck 会试着以并行的方式同时在不同的物理磁盘上运行文件系统检查,这样可以减少对所有文件系统进行检查的时间。

如果没有在命令行指定文件系统,并且没有指定 -A 选项, fsck 将默认顺序地检查 /etc/fstab 中登记的文件系统。这和使用 -As 选项是相同的。

fsck 退出的返回值是下列情况之和: 

0 – 没有错误 

1 – 文件系统有错但已修复 

2 – 系统应当重启 

4 – 文件系统错误没有修复 

8 – 运行错误 

16 – 用法或语法错误 

32 – 用户撤销了fsck 操作 

128 – 共享库出错 

当检测多个文件系统时,退出的返回值是对每个文件系统检查的返回值按位或的结果。

e2fsck:ext系列文件专用的检测修复工具

-y:自动回答为yes

-f:强制修复


最大挂载次数和时间间隔会触发fsck检查命令。

fuser -v /mnt/sdb1 查看谁在挂载使用用

fuser -km /mnt/sdb1 强行T出挂载

挂载点目录一般为空


mount 查看挂载

cat /etc/mounts(特殊项都能看到)

挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为

卸载:为解除此关联关系的过程

把设备关联挂载点:mount Point

mount

卸载时:可使用设备,也可以使用挂载点

umount

挂载点下原有文件在挂载完成后会被临时隐藏

挂载点目录一般为空


mount常用命令选项

-t vsftype:指定要挂载的设备上的文件系统类型

-r: readonly,只读挂载

-w: read and write, 读写挂载

-n: 不更新/etc/mtab,相当于#mount

-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)

-L 'LABEL': 以卷标指定挂载设备

-U 'UUID': 以UUID指定要挂载的设备

-B, –bind: 绑定目录到另一个目录上


查看内核追踪到的已挂载的所有设备

cat /proc/mounts

blob.png

mount -o remount,noatime /mnt/

取消挂载再重新挂载,不使用atime

mount -o noexec,noatime /mnt/

取消挂载再重新挂载,不使用执行文件


不要轻易将挂载权限比普通用户

blob.png

创建了一个新的文件夹/mnt/sdd

将硬盘/dev/sdd 挂载在/mnt/sdd中

blob.png

-o options:(挂载文件系统的选项),多个选项使用逗号分隔

async:异步模式

sync:同步模式,内存更改时,同时写磁盘

atime/noatime:包含目录和文件

diratime/nodiratime:目录的访问时间戳

auto/noauto:是否支持自动挂载,是否支持-a选项

exec/noexec:是否支持将文件系统上运行应用程序

dev/nodev:是否支持在此文件系统上使用设备文件

suid/nosuid:不否支持suid和sgid权限

remount:重新挂载

ro:只读

rw:读写

user/nouser:是否允许普通用户挂载此设备,默认管理员才能挂载

acl:启用此文件系统上的acl功能

Defaults:相当于rw, suid, dev, exec, auto, nouser, async


原创文章,作者:swzczx,如若转载,请注明出处:http://www.178linux.com/40517

(0)
swzczxswzczx
上一篇 2016-08-29
下一篇 2016-08-29

相关推荐

  • LVM逻辑卷管理

    一、lvm介绍     1.lvm概念                        &n…

    Linux干货 2016-09-02
  • ![](http://i1.pixiv.net/img-original/img/2016/08/09/20/23/25/58345400_p0.jpg) ![](http://i1.pixiv.net/img-original/img/2016/08/09/20/23/25/58345400_p0.jpg)

    Linux干货 2016-12-26
  • 文本三剑客 grep sed awk

    模式,选项。常用用法。

    2017-12-03
  • 分享我自己的一个最小化安装CentOS6的初始化脚本

    #!/bin/bash # #Filename:postinstall_init.sh #Description:系统安装完成后,对系统进行一些配置,以符合自己的试验环境 #Author:renpingsheng #Email:995883352@qq.com #Version:1.0 #Date:2017.5.5 setenforce 0 #更改selin…

    Linux干货 2017-05-07
  • 一种强大的新型BIOS Bootkit病毒曝光

    近日,安全研究人员开发出一种新的BIOS bootkit,它可以窃取敏感数据,以及流行操作系统使用的PGP密钥。包括华硕、惠普、宏基、技嘉以及微星等在内的各大供应商的主板都受到该病毒影响。 BIOS bootkits是真实存在的。斯诺登在披露NSA ANT部门使用的监视工具集时,曾提到过BIOS bootkits。这些恶意软件能够入侵受害机器的BIOS,以此…

    2015-03-23