磁盘管理

Linux思想一切皆文件:

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

I/O 设备地址

设备类型:

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

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

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

设备编号:

ll /dev/sda*

root disk 8.0

root disk 8.1

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

硬盘接口类型:

并行:

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

磁头 head

2磁头数 =1盘片

磁道 track

扇区 sector (512字节)

head 256 磁头

track 1024 磁道

secror 63 扇区

CHS(culinder柱面)

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

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

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

分区

两种分区方式: 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 查看硬盘信息

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

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

备份mbr

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

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

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

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

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

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

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

恢复分区标识

管理分区

列出块设备

lsblk

创建分区使用:

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

fdisk /dev/sdc

w:存盘退出

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

p:显示

d:删除

q:不保存退出

t:更改分区类型

gdisk创建GPT分区

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

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

查看分区的起始到结束点,块的数量,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

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

创建文件系统

mkfs.

mkfs -t ext4

mke2fs

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

一个块=4k

tune2fs -l /dev/sd*

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

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

超级块会自动备份。

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:关闭指定特性

文件系统标签

blkid:块设备属性信息查看

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

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

e2label /dev/sdc2 /mnt/sdc2

加卷标

tune2fs

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

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

-L ‘LABEL‘:修改卷标

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

-j: 将ext2升级为ext3

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

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

-U UUID: 修改UUID号

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*

文件修复

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

mount -o remount,noatime /mnt/

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

mount -o noexec,noatime /mnt/

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

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

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

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

-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

linux下卸载 dev sd*下硬盘,Linux 磁盘管理(示例代码)相关推荐

  1. linux下卸载 dev sd*下硬盘,Linux下硬盘操作解析

    对硬盘的操作是非常普遍的,特别是我们在不同的服务器之间挂载卸载数据盘.硬盘的表示符号需要注意,SATA/SCSI接口的识别为sd,IDE接口的识别为hd.因此在Linux中/dev/sd*中sd表示S ...

  2. linux安装选择了整块硬盘,Linux系统安装模式下硬盘分区的选择方法

    实际上,在 Linux 安装的时候,已经提供了相当多的预设模式让您选择分割的方式了, 不过,无论如何,分割的行为都不是很能符合自己主机的样子!因为毕竟每个人的『想法』都不太一样! 因此,强烈建议使用『 ...

  3. linux卸载dev中的设备,Linux /dev 常见特殊设备介绍与应用

    linux是文件型系统,所有硬件如软件都会在对于的目录下面有相应的文件表示.对于dev这个目录,我们知道它下面的文件,表示的是linux的设备.在windows系统中,设备大家很好理解,象硬盘,磁盘指 ...

  4. linux 看不到新加硬盘,linux中 命令df -h查不到新添加的磁盘

    在/dev目录下,可以找到新硬盘,一般都标做sd? # cd /dev # ls sd* 这样就可以看到所有的硬盘了,一般最后一个就是新的硬盘了,这里假设是 sde 给硬盘进行分区 fdisk /de ...

  5. linux搭建虚拟化平台报告,部署KVM虚拟化平台------搭建(示例代码)

    一 .部署KVM虚拟化平台 hyper-v是windows中的虚拟化 1.KVM模块直接整合在Linux内核中,kvm是内核模块,虚拟机与kvm模块之间为管理工具 2.KVM组成 1.KVM Driv ...

  6. linux mysql卸载_Linux环境下安装Mysql8.0数据库

    今年的双11既没有光棍节的气氛也没有购物的欲望,不过还是大出血了,买了一台2核4G的云服务器3年699元.就算用来督促自己学习吧!话不多说,今天先来体验Linux安装Mysql数据库? 步骤一:Mys ...

  7. linux mint卸载火狐,ubuntu下的firefox浏览器安装adobe flash player播放器

    1. 下载Adobe Flash Player: 请从Adobe官方下载,也可以从这个URL下载,这个URL也是官方的链接: http://fpdownload.macromedia.com/get/ ...

  8. Linux软件卸载器,ubuntu下软件的卸载和安装

    方法一:可以用终端安装或卸载软件. 方法二:用系统自带的"新立得软件包管理器" 在终端里 安装软件 apt-get install softname1 softname2 soft ...

  9. Linux命令卸载谷歌浏览器,Ubuntu下彻底卸载Chrome浏览器

    操作环境 操作系统信息: master@ubuntu:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu De ...

最新文章

  1. The Ultimate Guide To iPhone Resolutions
  2. RPA和AI:加速数字化转型的步伐
  3. 【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )
  4. BASIC-2 01字串
  5. 访问数组元素进行赋值
  6. CSS text-indent 属性
  7. C++学习之路 | PTA乙级—— 1050 螺旋矩阵 (25 分)(精简)
  8. java 执行存储过程报语法错误_为什么我在批处理从Java上执行PostgreSQL上的存储过程时收到错误通知“结果不合理”?...
  9. xml文件c语言读取函数,读写xml文件的2个小函数
  10. php找不到intl,php_intl.dll找不到指定模块怎么办
  11. python open文件被另一个进程打开怎么办,在Windows上,如何打开一个已经被另一个进程打开进行写入的文件?...
  12. 第7章-2、INTEL8086处理器的寻址方式-1.1h
  13. Ubuntu 安装MySQL报共享库找不到
  14. 枪火游侠服务器停机维护,腾讯《枪火游侠》公布国服停运公告 11月30日正式关服...
  15. Java初学者笔记五:泛型处理
  16. 文件和数据格式化~总结
  17. c语言算术运算的作用,C语言算术运算符和算术表达式
  18. Activiti7.0实战学习(九):查询历史表中的数据
  19. 0x01【一台】电脑如何同时登录【两个】微信?
  20. Qt 3D Overview

热门文章

  1. 【BZOJ4407】于神之怒加强版
  2. 2017中国人工智能峰会即将开启,和30位AI大咖一起头脑风暴
  3. 最全面的关于LINUX与UNIX下的dd命令详解
  4. 【系列7】使用Dockerfile创建带mysql的Centos Docker镜像
  5. rank,dense_rank,row_number使用和区别
  6. 在腾讯,我的试用期总结
  7. 为什么C语言还是被很多人说成过时了?
  8. 无聊 乱写写 CSDN博客挺好玩的 确实
  9. 女人,就是不适合做IT!
  10. 怎样成为一名更优秀的程序员?我总结出 7 条建议,希望对你们有帮助!