8.2设备文件及磁盘分区

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

概览:
设备文件的创建 
        权限    设备名 类型  主设备号 次设备号    
mknod [-m MODE] NAME type [MAJOR MINOR] 创建时,先查看是否存在设备号的冲突
零磁道零扇区是MBR:Master Boot Record
            主引导记录
            512Bytes: 引导启动OS
                前446bytes: 存放程序,bootloader
                64bytes: 分区表,每16bytes标记一个分区,一共4个分区(主分区)
                2bytes: 55AA, MBR有效性标记   标记当前mbr是否有效
fdisk是不支持GPT格式的硬盘分区,parted是可以支持的               
parted [options] [device [command [options...]...]]  直接跟设备不跟其他会分区
-l, --list  会列出所有分区信息
    lists partition layout on all block devices
command   
mklabel label-type
     Create a new disklabel (partition table) of label-type.  label-type should  be  one  of
     "bsd", "dvh", "gpt", "loop", "mac", "msdos", "pc98", or "sun".

mkpart part-type [fs-type] start end
     Make  a  part-type partition with filesystem fs-type (if specified), beginning at start
     and ending at end (by default in megabytes).  fs-type can be one of  "fat16",  "fat32",
     "ext2",  "HFS", "linux-swap", "NTFS", "reiserfs", or "ufs".  part-type should be one of
     "primary", "logical", or "extended".
move partition start end
     Move  partition  so  that it begins at start and ends at end.  Note: move never changes
     the minor number.
rm partition
     Delete partition.
print  Display the partition table.    
# parted /dev/sdb mkpart primary ext4 1 10G    
#parted /dev/sdb rm 1
# parted /dev/sdb print                         
磁盘管理:

    I/O设备:
        磁盘
        网卡

    文件:read, write, open, close

    设备文件:特殊文件
        只有inode,而没有数据

        关联至一个驱动程序,进而跟对应的硬件设备打交道;

        /dev: b, c

            每个设备都有其设备号:
                主设备号:用于标记设备类型
                次设备号:用于标记同一类型中的不同设备

     mknod - make block or character special files
     -m, --mode=MODE
              set file permission bits to MODE, not a=rw - umask
        mknod [OPTION]... NAME TYPE [MAJOR MINOR]  主设备号可以相同,次设备号不能相同
        TYPE may be:

       b      create a block (buffered) special file 有缓存

       c, u   create a character (unbuffered) special file 无缓存的

       p      create a FIFO
            设备文件的命名:由ICANN:互联网名称与数字地址分配机构(Internet
             Corporation for Assigned Names and Numbers)
[root@linux_basic tmp]#mknod -m 664 blocktest b 1 20
[root@linux_basic tmp]#ls -l
total 0
brw-rw-r--. 1 root root 1, 20 Jan  4 07:38 blocktest
[root@linux_basic tmp]#rm blocktest
rm: remove block special file `blocktest'? y
[root@localhost tmp]# mknod test c 1 30
[root@localhost tmp]# ls -l
total 0
lrwxrwxrwx. 1 root root     8 Dec  2 13:10 file1 -> softfile
-rw-r--r--. 1 root root     0 Dec  2 13:09 softfile
crw-r--r--. 1 root root 1, 30 Dec  2 13:27 test

    磁盘设备文件命名:
        /dev/hd:
            IDE: 并口接口, 133MB/s
        /dev/sd:
            USB: 串行
            SATA: 串行接口,6Gbps/8
            SCSI: 并行,(Small Computer System Interface) 小型计算机系统接口
            SAS:串行,

            rpm:转数

        /dev/sd[a-z]
            分区:数字
                /dev/sda1
                /dev/sda2

                分区编号:
                    主+扩展分区:1-4
                    逻辑分区:5开始

    硬盘分区:
        磁道:track
            扇区:sector

        柱面:cylinder:
            分区根据柱面划分,在同一盘片上的两面磁头同时读取,速度快


        零磁道零扇区是MBR:Master Boot Record
            主引导记录
            512Bytes: 引导启动OS
                前446bytes: 存放程序,bootloader
                64bytes: 分区表,每16bytes标记一个分区,一共4个分区(主分区)
                2bytes: 55AA, MBR有效性标记   标记当前mbr是否有效

            1T: 3主+1扩展(切割1个或多个逻辑分区)
           
        [root@linux_basic tmp]#fdisk -l | grep -A 3 "^Disk /dev/.*"
        Disk /dev/sda: 48.3 GB, 48318382080 bytes
        255 heads(磁头数), 63 sectors/track每磁道多少扇区, 5874 cylinders(柱面)
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        --
        Disk /dev/mapper/vg_lvm-lv1: 12.9 GB, 12884901888 bytes
        255 heads, 63 sectors/track, 1566 cylinders
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        --
        Disk /dev/mapper/vg_lvm-lv2: 10.7 GB, 10737418240 bytes
        255 heads, 63 sectors/track, 1305 cylinders
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes   

        /proc:
        [root@linux_basic tmp]#cat /proc/partitions
        major minor  #blocks  name
       
           8        0   47185920 sda
           8        1     204800 sda1
           8        2   10485760 sda2
           8        3   36494336 sda3
         253        0   12582912 dm-0
         253        1   10485760 dm-1

    分区创建:
     fdisk - Partition table manipulator for Linux
     操作Linux分区表
        查看:fdisk -l [DEVICE]...
   fdisk工具最多可以识别15个分区
        创建分区:fdisk [DEVICE]
            交互式界面,有许多子命令
                p: 显示磁盘分区表
                 p   print the partition table
                n: new,新建分区
                 n   add a new partition
                d: delete,删除分区
                d   delete a partition
                t: 修改分区的系统ID
                t   change a partition's system id
                l: 列表出所有已知的系统ID
                l   list known partition types
                   83  Linux
                   82  Linux swap / So
                   8e  Linux LVM 
                   fd  Linux raid auto
                w: 保存并退出
                w   write table to disk and exit
                q: 不保存退出
                q   quit without saving changes
选n后出现               
     e   extended
   p   primary partition (1-4)

            对于已经有分区处于使用状态的磁盘来讲,新建分区后需要让内核重读其分区表:
                CentOS 5:
                    # partprobe [DEVICE]
                CentOS 6:
                    partx -a [DEVICE]
                    partx - telling the kernel about presence and numbering of on-disk partitions.
                    -a     add specified partitions or read disk and add all partitions
                    读磁盘新增的分区
                    kpartx -af  [DEVICE]
                    kpartx - Create device maps from partition tables
                    -a     Add partition mappings
                    -l     List partition mappings that would be added -a
                    -f     force creation of mappings; overrides ’no_partitions’ feature
      查看/proc/partitions,有显示则创建成功
            分区创建工具:sfdisk和parted
------------------------------------------------------------------
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 1
First cylinder (1-6527, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): +5G
                            注意这里设定大小时的格式
Command (m for help): p

Disk /dev/sdb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+   5  Extended

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@lvm ~]# partx -a /dev/sdb
  Warning: Disk has a valid GPT signature but invalid PMBR.
  Assuming this disk is *not* a GPT disk anymore.
  Use gpt kernel option to override.  Use GNU Parted to correct disk.
BLKPG: Device or resource busy
error adding partition 1
[root@lvm ~]# kpartx -af /dev/sdb
  Warning: Disk has a valid GPT signature but invalid PMBR.
  Assuming this disk is *not* a GPT disk anymore.
  Use gpt kernel option to override.  Use GNU Parted to correct disk.
[root@lvm ~]# cat /proc/partitions
major minor  #blocks  name

   8        0   52428800 sda
   8        1     204800 sda1
   8        2   10485760 sda2
   8       16   52428800 sdb
   8       17          1 sdb1  说明创建成功了
-------------------------------------------------------------------------------  
死循环的一个简单脚本
[root@lvm ~]# bash -n hello.sh
[root@lvm ~]# ./hello.sh
Hello:ld
Again  hello:jhfld
Again  hello:n
[root@lvm ~]# cat hello.sh
#!/bin/bash
#
read -p "Hello:" kir
while true;do
if [ "$kir" == 'n' ];then
    break;
else
    read -p "Again  hello:" kir
fi
done
------------------------------------------------------------------
    练习:写一个脚本
        1、提示输入一个对其执行分区的新硬件设备文件;
        2、提醒用户接下来的操作销毁所有的数据,你继续吗?
            y或yes: 继续
            n或no:退出
            其它字符:提醒输错了,再来一次;
        3、对磁盘新建分区:
            主分区1:大小512M,
            主分区2:大小2G
        4、创建完成后显示创建的结果;
成功完成及修改次数
----------------------------------------------------------------

[root@lvm shells]# cat disk_part.sh
#!/bin/bash
#
read -p "Input a partition disk device path:" disk
read -p "The following operation will damage the all data on the disk.yes|no(y|n)?" flag

while true;do
 
  if [ "$flag" == 'n' -o "$flag" == 'no' ];then
     break;
  elif [ "$flag" == 'y' -o "$flag" == 'yes' ];then
echo "n
p
1

+512M
n
p
2

+2G
w"|fdisk $disk > /dev/null
  partx -a $disk
  kpartx -af $disk
  fdisk -l | grep  "$disk"
  read -p "The following operation will damage the all data on the disk.yes|no(y|s)?" flag
  else
     echo "Input error."
     read -p "Again input:" flag
   fi
done

转载于:https://my.oschina.net/u/1762991/blog/665603

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ArcGIS风暴】ArcGIS求一个矢量图层中多个图斑的“四至点”坐标案例教程

如图所示,为ArcGIS软件自带的全球矢量数据,怎样求取每个大洲(图斑)的四至坐标(xmin、ymin、xmax、ymax)呢? 参考阅读:【ArcGIS遇上Python】python批量获取栅格数据四至(top,bottom,left,right)坐标代码 文章目录 1. 矢量数据加载2. 四至计算结果3. 四至计算过程1.…

一个关于导出excel模板的实例

1 首先jsp页面 点击模板下载&#xff0c;会自动下载模板&#xff45;&#xff58;&#xff43;&#xff45;&#xff4c;&#xff0c;效果如下 让我们看源码&#xff1a; &#xff11; &#xff4a;&#xff53;&#xff50;页面 <div class"tab-pane" id"p…

腾讯视频VIP会员,周卡特价9.5元!

今天给大家推荐特价充值腾讯视频VIP会员的平台——幻海优品&#xff0c;腾讯视频在线直充&#xff0c;VIP会员实时生效&#xff01;腾讯视频VIP会员特价充值周卡&#xff1a;原价12元&#xff0c;特价9.5元月卡&#xff1a;原价30元&#xff0c;特价22元季卡&#xff1a;原价68…

解决安装SQL Server 2005开发版时,出现“SQL Server 服务无法启动 ”点击重试或取消的解决方法

问题描述&#xff1a; 安装SQL Server 2005开发版时&#xff0c;提示SQL Server服务无法启动&#xff0c;有关详细信息&#xff0c;请参阅SQL Server联机丛书中的主题如何查看SQL Server 2005安装日志文件和手动启动SQL Server&#xff0c;如下图所示。 此时&#xff0c;如果点…

C语言试题196之实现strstr函数功能

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 实现strstr函数功能 C 库函数 char *strstr(const char *haystack, const char *nee…

关于数据结构(二)

文章目录[点击展开](?)[] 一UI返回功能思路分析实现方法二当前正在CD技能接着上文<<关于数据结构(一)>>&#xff0c;关于数据结构&#xff0c;在实际的开发中或多或少都有涉及到&#xff0c;只是看自己平时没有积累到。下面是我在项目中的几个实例&#xff1a; 一…

JDBC 之 事务

1.概念&#xff1a;事务指逻辑上的一组操作&#xff0c;组成这组操作的各个单元&#xff0c;要么全部成功&#xff0c;要么全部不成功。 2.数据库开启事务的命令dtl&#xff1a; Start transaction开启事务 Rollback回滚事务&#xff08;撤销&#xff09; Commit提交事务 3.JDB…

[转]后端程序员必备:书写高质量SQL的30条建议

以下文章来源于捡田螺的小男孩 &#xff0c;作者捡田螺的小男孩 转载&#xff1a;《后端程序员必备&#xff1a;书写高质量SQL的30条建议》 前言 本文将结合实例demo&#xff0c;阐述30条有关于优化SQL的建议&#xff0c;多数是实际开发中总结出来的&#xff0c;希望对大家有…

GIS热词:AR、VR、MR辨析

AR、VR、MR技术让我们见识到了科技神奇的同时&#xff0c;也让真实可感的现实世界和无法触摸的虚拟世界的联系更加紧密。 1. AR AR&#xff0c;全称Augmented Reality&#xff0c;即增强现实技术。这项技术是利用电脑技术将虚拟的信息叠加到真实世界&#xff0c;通过手机、平板…

云原生数据库是未来数据库的天下

一、传统数据库的发展阶段和痛点 1&#xff09;、传统数据库的发展阶段 ✨人工管理阶段 20世纪50十年代中期以前&#xff0c;计算机只是用来计算的&#xff0c;那么数据管理就只能纯人工. ✨文件系统管理阶段 20世纪50年代后期到60年代中期&#xff0c;这时硬件方面有了磁盘、磁…

用.NET做DDNS动态域名解析和SSL证书申请

本文主要介绍 IPv6 配置 DDNS 解析和 SSL 证书申请工具的开发历程和其中的相关知识。工具使用.NET开发&#xff0c;已开源&#xff0c;目前该工具的域名解析只支持阿里云。文中提及或使用的 .NET 开源项目&#xff1a;SangServerTool&#xff08;DDNS,SSL证书申请工具&#xff…

汇编学习(一)

看的是王爽老师的《汇编语言》第三版基础知识 一.汇编语言的诞生上古时期在汇编语言还未出现的时候&#xff0c;那时的程序员还只能用二进制也就是所谓的机器语言写代码&#xff0c;将0和1编成的程序代码打在纸带或卡片上&#xff0c;再将纸带卡片输入计算机&#xff0c;进行运…

【GIS风暴】GeoJSON数据格式案例全解

在了解GeoJSON数据之前,先来通过一个网站和一个简单的代码案例,看一下GeoJSON的神奇魅力吧! 网站:http://geojson.io 打开上述网站,在左侧的代码区域粘入中国区域GeoJSON代码,如下所示: 中国地图: 地名:

[转]2020年5月程序员工资统计,平均14542元

平均工资 2020年5月全国招收程序员312761人。2020年5月全国程序员平均工资14542元&#xff0c;工资中位数12500 元&#xff0c;其中95%的人的工资介于5250元到35000元。 一线城市工资 2020年5月北京招收软件工程师24478人。2019年5月北京软件工程师平均工资19273元&#xff0…

云原生IDE:iVX免费的首个通用无代码开发平台

一、iVX简单介绍 1、iVX是什么东东? iVX 是一个 “零代码” 的可视化编程语言&#xff0c;拥有方便的 在线集成开发环境 &#xff0c;不需要下载开发环境&#xff0c;打开浏览器即可随时随地的进行项目编辑&#xff1b;iVX 拥有 “一站式” 的云资源&#xff0c;通过这一套一…

.NET GC工作流程

前言在上文[如何获取GC的STW时间]一文中&#xff0c;我们聊到了如何通过监听GC发出的诊断事件来计算STW时间。里面只简单的介绍了几种GC事件和它的流程。群里就有小伙伴在问&#xff0c;那么GC事件是什么时候产生的&#xff1f;分别是代表什么含义&#xff1f;那么在本文就通过…

libco协程库源码解读

2019独角兽企业重金招聘Python工程师标准>>> 协程,又被称为用户级线程,是在应用层被调度,可以减少因为调用系统调用而阻塞的线程切换的时间.目前有很多协程的实现,由于微信内部大量使用了其直研的的libco协程库&#xff0c;所以我选择了腾讯开源的libco协程库进行研…

【ArcGIS风暴】如何将矢量数据(点、线、面)折点坐标转为GeoJSON格式?

本文以案例的形式,讲述在ArcGIS和QGIS专业软件中,将矢量数据转为GeoJSON的方法。 扩展阅读:【GIS风暴】GeoJSON数据格式案例全解 文章目录 一、ArcGIS将矢量数据转为GeoJSON二、QGIS将矢量数据转为GeoJSON一、ArcGIS将矢量数据转为GeoJSON ArcGIS中提供的【要素转JSON】工具…

TypeScript 3.9 正式发布!平均编译时长从 26 秒缩短至 10 秒

作者 | 微软官方博客 译者 | 核子可乐 策划 | 小智 稿源 | 前端之巅 今天&#xff0c;微软在其官方博客宣布&#xff1a;TypeScript 3.9 版本已经正式发布&#xff0c;详情见下文。 有些朋友可能对 TypeScript 还不太熟悉&#xff0c;这是一种以 JavaScript 为基础开发的语…

(二)Harbor WEB的使用

接上一篇《安装Harbor》&#xff0c;安装好之后&#xff0c;接下来我们就进行Harbor web界面的操作吧&#xff01; 转载请标明出处&#xff1a;http://www.cnblogs.com/huangjc/p/6270405.html 浏览器登陆Harbor&#xff08;默认用户密码&#xff1a;admin/Harbor12345&#x…