我们都知道要对磁盘进行分区,但是为什么要进行分区呢?当然有很多好处啦!接下来我们就说道说道:1.优化I/O性能
2.实现磁盘空间配额限制
3. 提高修复速度
4. 隔离系统和程序
5. 安装多个OS
6. 采用不同文件系统
有两种分区方式:MBR和GPT
MBR:使用32位位表示扇区数 , 分区不超过2T, 4 个主分区;3 主分区+1 扩展(N 个逻辑分区)
GPT:支持128个分区,使用64 位 .使用128 位UUID 表示磁盘和分区。
fdisk和parted都可以对磁盘进行分区,但是两者又有不同之处。
fdisk 创建MBR分区(disk类似于fdisk,但创建GPT分区)
p 分区列表
t 更改分区类型
n 创建新分区
d 删除分区
w 保存并退出
q 不保存并退出
fdisk /dev/sdX 进行分区(fdisk属于标准输入)
fdisk -l 查看分区
如果只是这样用lsblk查看设备时,分区表中并没有新建的分区,
所以要通知内核重新读取硬盘分区表
进行如下操作:
centos7:partprobe [/dev/DEVICE]
centos6: partx -a /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
删除分区用
partx -d --nr M-N /dev/DEVICE
注意:分完区一定要输入w进行保存,否则分区表中不会出现新建的区
parted高级分区操作,是一个可以分区并进行分区调整的工具,它可以创建,破坏,移动,复制,调整大小等等。创建GPT分区。
parted命令
parted /dev/sdX 对磁盘进行分区
mklabel msdos/gpt 创建卷标
help帮助
mkpart 创建分区
parted分为两种模式:交互模式和命令行模式
交互模式类似于fdisk 语法:parted [option] device
命令模式:可以直接在命令行下对磁盘进行操作,比较适合编程操作 语法:parted [option] device command. 如下图所示
parted /dev/sdX mkpart primary 1 1000
操作完成后直接写入硬盘。
习题
查询命令java来自于哪个rpm包
2.写一个通过fdisk/parted自动分区的脚本,会对一个空硬盘/dev/sdb进行分区,增加一个大小为1G的主分区。
这道题如果不写脚本的话还好做,但一写脚本就挺麻烦的,要考虑的情况太多。小编确实考虑得没别人全,借鉴一下别人的,不得不说考虑的太周全了,佩服佩服!
答案:
read -p "please input diskname (/dev/sd*):" disk; 静默输入要分区的硬盘
( [[ "$disk" =~ ^/dev/sd. ]] && fdisk -l $disk &> /dev/null)||exit 1 判断输入的磁盘名是否符合
type=`fdisk -l $disk |grep "Disk label type"` 取出磁盘的分区类型,赋值给变量
a=`ls ${disk}?|wc -l` 取出分区数
b=`fdisk -l /dev/sdb|tail -n $a` 列出所有的分区
if echo "$type"|grep "\<gpt\>";then
echo -e"n\np\n1\n\n+1G\nw\n"|gdisk $disk
else
if echo "$b"|grep "\<Extended\>" &> /dev/null;then
if echo "$b"|head -3|grep "\<Extended\>" ;then 判断主分区是否少于3个,列出前三行信息,有extend则说明主分区少于三个,建一个默认的主分区
echo -e"n\n\n\n\nw\n"|fdisk $disk
else
echo -e "n\n\n+1G\nw\n"|fdisk $disk 主分区是3个的话新建一个逻辑分区
fi
else
if [ "$a" -lt 3 ];then 判断主分区是否少于3个,是的话建一个1G的主分区
echo -e "n\np\n1\n\n+1G\nw\n"|fdisk $disk
elif [ "$a" -eq 3 ];then 主分区是3个,建一个扩展分区,在扩展分区下建一个逻辑分区
echo -e "n\ne\n\n\nw\n"|fdisk $disk
echo -e "n\n\n+1G\nw\n"|fdisk $disk
fi
fi
fi
3.要求输入挂载点,将显示其UUID
答案:dir=/app; egrep "[[:blank:]]+$dir[[:blank:]]+" /etc/fstab |cut -d" " -f1
这道题中用到了变量,用变量的话通用性比较好。
不用fstab:
答案:
read -p "please input Mounted on name:" Name1 输入挂载点
if df $Name1 &>/dev/null ; then
Name2=`df "$Name1" |tail -1 |grep -o "^/[^ ]*"`
blkid $Name2 |grep -o ‘\<UUID="[[:alnum:]|-]*"‘
unset Name1 Name2
else
echo "error,Mounted on name unknown";exit 1
fi
本文出自 “13162732” 博客,请务必保留此出处http://13172732.blog.51cto.com/13162732/1957836
原文地址:http://13172732.blog.51cto.com/13162732/1957836