最近工作需要用到对硬盘进行shell脚本自动化分区和mount的操作,google了一些资料,下面做个总结。

如果硬盘没有进行分区(逻辑分区或者扩展分区,关于两者概念,自行google),我们将无法将使用该硬盘来进行读写。我们要使用一块硬盘需要进行下面三步:

  1. 将该硬盘进行分区;
  2. 对分区进行格式化;
  3. 将分区mount到系统某个目录,便可以访问。

本笔记会着重讲一下第一步中涉及的fdisk分区功能以及如何来使用shell进行自动化处理,过程也会涉及后面两步操作的简单说明。

fdisk对硬盘进行分区

fdisk是linux系统提供的硬盘分区工具。关于fdisk的详细说明可以自行google或者man fdisk。下面我们直接说明操作步骤。

先查看一下当前系统有哪些硬盘:

ubuntu@i-idh5qfpk:~$ ls /dev | grep sd
sda
sda1
sdb
sdc
sdd
sdd1

我们就选择/dev/sdc进行下手吧。通过fdisk -l查看一下该硬盘的分区表:

ubuntu@i-idh5qfpk:~$ sudo fdisk -l /dev/sdc

Disk /dev/sdc: 10.7 GB,  bytes
heads, sectors/track, cylinders, total sectors
Units = sectors of * = bytes
Sector size (logical/physical): bytes / bytes
I/O size (minimum/optimal): bytes / bytes
Disk identifier: 0xacb1d488 Device Boot Start End Blocks Id System

通过上面的信息,我们可以看到该硬盘总共有10.7GB,但是分区表为空(命令最后面的输出信息即是分区表信息)。下面我们通过运行fdisk命令来对该硬盘进行交互式的分区操作。输入fdisk /dev/sdc命令之后,会提示你进行什么操作,如果不清楚的话,可以输入m然后回车查看操作说明。如下所示,

ubuntu@i-idh5qfpk:~$ sudo fdisk /dev/sdc

Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only) Command (m for help):

我们要新建分区,输入n,然后回车。提示该硬盘当前有0个主要分区(primary)、0个扩展分区(extended),可以创建4个分区,然后让我们选择创建主要分区还是扩展分区。输入p并回车(或者直接回车),选择创建主要分区。

Command (m for help): n
Partition type:
p primary ( primary, extended, free)
e extended
Select (default p): p

然后提示输入分区编号(只能1到4,默认为1),我们输入1并回车,

Partition number (-, default ): 

输入分区的开始扇区,我们直接回车采用默认配置,

First sector (-, default ):
Using default value

输入分区的结束扇区,也直接回车采用默认配置,

Last sector, +sectors or +size{K,M,G} (-, default ):
Using default value

此时我们的分区建好了,但还需要输入w并回车来进行保存。

Command (m for help): w
The partition table has been altered! Calling ioctl() to re-read partition table.
Syncing disks.

该硬盘的分区建立完毕,通过fdisk -l查看一下最后的效果,

ubuntu@i-idh5qfpk:~$ sudo  fdisk -l /dev/sdc

Disk /dev/sdc: 10.7 GB,  bytes
heads, sectors/track, cylinders, total sectors
Units = sectors of * = bytes
Sector size (logical/physical): bytes / bytes
I/O size (minimum/optimal): bytes / bytes
Disk identifier: 0xacb1d488 Device Boot Start End Blocks Id System
/dev/sdc1 Linux

我们新建的分区就是/dev/sdc1。接下来,我们对该分区进行格式化,

ubuntu@i-idh5qfpk:~$ sudo mkfs -t ext3 /dev/sdc1
mke2fs 1.42. (-Feb-)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size= (log=)
Fragment size= (log=)
Stride= blocks, Stripe width= blocks
inodes, blocks
blocks (5.00%) reserved for the super user
First data block=
Maximum filesystem blocks=
block groups
blocks per group, fragments per group
inodes per group
Superblock backups stored on blocks:
, , , , , , , Allocating group tables: done
Writing inode tables: done
Creating journal ( blocks): done
Writing superblocks and filesystem accounting information: done

格式化完毕。然后将该分区挂载到目录/mysdc,

ubuntu@i-idh5qfpk:~$ sudo mkdir -p /mysdc
ubuntu@i-idh5qfpk:~$ sudo mount /dev/sdc1 /mysdc

通过df命令查看一下。

ubuntu@i-idh5qfpk:~$ sudo df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 % /
none % /sys/fs/cgroup
udev % /dev
tmpfs % /run
none % /run/lock
none % /run/shm
none % /run/user
/dev/sdc1 % /mysdc

完成。

shell脚本自动化

上面我们是通过fdisk工具交互式地进行对硬盘进行分区的。那我们如何将其写成shell脚本自动化。回顾一下,我们刚刚交互式分区时输入的操作序列,然后自己阅读下面的脚本吧,太简单了,没什么好讲的。

#!/bin/bash

echo "n
p w
" | fdisk /dev/sdc && mkfs -t /dev/sdc1

注意:1和w之间是两个空行。

删除分区

同样通过fdisk来删除分区,操作如下,不细说了,

ubuntu@i-idh5qfpk:~$ sudo fdisk /dev/sdc

Command (m for help): d
Selected partition Command (m for help): w
The partition table has been altered! Calling ioctl() to re-read partition table.
Syncing disks.

shell自动化脚本请参考创建分区的shell脚本自行编写。

(done)

fdisk分区硬盘并shell脚本自动化的更多相关文章

  1. shell脚本自动化部署服务

    shell脚本自动化部署 !/bin/bash #export PATH=$PATH:/export/maven/bin run_flag_dir="/data0/shell/deploy_ ...

  2. shell脚本自动化部署

    由于公司技术部团队较小,没有专门的运维团队,所以运维工作技术部承包了. 一.纯人工部署是这样的: 1. 本地打包:一般 maven clean package 2. 借助xftp上传到服务器对应目录 ...

  3. 使用shell脚本自动化对硬盘进行分区

    在Linux系统中,可以使用fdisk 对硬盘进行分区,但是要手动执行很多命令,这样使用有很麻烦,现在记一个用fdisk 的脚本自动执行. #make partition dd count= fdis ...

  4. 使用 Shell 脚本自动化 Linux 系统维护任务

    如果一个系统管理员花费大量的时间解决问题以及做重复的工作,你就应该怀疑他这么做是否正确.一个高效的系统管理员应该制定一个计划使得其尽量花费少的时间去做重复的工作.因此尽管看起来他没有做很多的工作,但那 ...

  5. linux下使用shell脚本自动化部署项目

    在Java开发项目时经常要把正在开发的项目发布到测试服务器中去测试,一般的话是要把项目先打成war包,然后把war包发布到服务器中,关闭服务器, 最后重新启动服务器,虽然这过程不是很繁琐,但如果是多个 ...

  6. 利用shell脚本自动化备份数据库与手动备份还原数据库操作

    1.在linux操作系统上手动备份数据库 mysqldump -h 服务器IP地址 -u root -p数据库密码 --databases 所要备份的数据库名称 > /路径/数据库.sql(自定 ...

  7. 第五周-磁盘分区GPT、shell脚本练习、lvm详解

    1. 描述GPT是什么,应该怎么使用 Linux中磁盘分区分为MBR和GPT. MBR全称为Master Boot Record,为主引导记录,是传统的分区机制,应用于绝大多数使用的BIOS的PC设备 ...

  8. Shell脚本-自动化部署WEB

    #! /bin/ ] then echo "#### 参数有误,\$1:构建号必填" exit fi cd /root/workspace/xinya_erp/xinya_web ...

  9. shell脚本自动化安装pgsql10.5版本

    看到有个大佬写了个很实用的脚本,于是这里做了转载 #!/bin/bash #进入软件的制定安装目录 echo "进入目录/usr/local,下载pgsql文件" cd /usr/ ...

随机推荐

  1. mysql5.6主从参数详解

    mysql5.6的主从相当的不错,增加了不少参数,提升了主从同步的安全和效率,以下是mysql5.6主从参数详解. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  2. PKG_COLLECTION_LHR 存储过程或函数返回集合类型

    存储过程或函数可以返回集合类型,方法很多,今天整理在一个包中,其它情况可照猫画虎. CREATE OR REPLACE PACKAGE PKG_COLLECTION_LHR AUTHID CURREN ...

  3. java -jar 执行 eclipse export 的 jar 包报错处理

    1. 错误1:打 jar 包执行,报错,找不到 类库的 jar 包 F:\>java -jar remoteLogin.jarException in thread "AWT-Even ...

  4. Servlet/JSP-03 HttpServlet

    一. GenericServlet GenericServlet本身是一个抽象类,并且实现了Servlet和ServletConfig接口 其在内部定义了一个私有的ServletConfig类型的变量 ...

  5. pycharm active code

    43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  6. 正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?

    解答“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?”这个问题,也为了能够便于大家对正则表达式有一个更为综合和深刻的认识,我将一些关键点和容易犯糊涂的地方再系统总结 ...

  7. 使用DBI(perl)实现文本文件的导入导出mysql

    DBI 是perl脚本连接数据库的一个模块.perl脚本相对shell更灵活,功能更强大,跨平台能力强.相对可执行jar包要简单很多. ​1.下载安装包DBI-1.631.tar.gzperl脚本下载 ...

  8. android widget包说明与应用

    widget包是存放自定义组件 开发自定义组件: 其实Android API开发指南中的App Widgets章节 已经说得很清楚了,下面只是对自己的理解进行一次梳理. -- AppWidget 就是 ...

  9. sshpass批量执行操作

    while read line do ./sshpass -p 密码 ssh root@$line “ls” done<./backup while read line ;do /usr/bin ...

  10. 使用HTTP方式远程连接PowerShell

    借助Windows PowerShell,我们可以像管理Linux一样使用命令行来远程管理Windows服务器.但是默认情况下,我们只能在域环境中使用PowerShell Remoting.如果是通过 ...