天天看点

磁盘分区

我们都知道要对磁盘进行分区,但是为什么要进行分区呢?当然有很多好处啦!接下来我们就说道说道: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属于标准输入)

<a href="https://s1.51cto.com/wyfs02/M01/9E/DC/wKioL1mYC4nBRr9qAAB7divrpkQ049.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M00/9E/DD/wKioL1mYHBGCgIXKAADjDaqBbYg826.png" target="_blank"></a>

fdisk -l  查看分区

如果只是这样用lsblk查看设备时,分区表中并没有新建的分区,

<a href="https://s3.51cto.com/wyfs02/M01/00/2E/wKiom1mYKgLiAUKzAADTeVKmn2A658.png" target="_blank"></a>

所以要通知内核重新读取硬盘分区表

进行如下操作:

<a href="https://s5.51cto.com/wyfs02/M02/00/2E/wKiom1mYKmaTaOtZAACSakuj9fw755.png" target="_blank"></a>

                    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

<a href="https://s1.51cto.com/wyfs02/M00/00/2E/wKiom1mYK0PypptqAABk-c9KRuw037.png" target="_blank"></a>

操作完成后直接写入硬盘。

习题

查询命令java来自于哪个rpm包

<a href="https://s3.51cto.com/wyfs02/M02/9E/DE/wKioL1mYM3PgubrZAADAF9yT_oU654.png" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M01/9E/DE/wKioL1mYMzvhTLZ2AAAo7t84mOA310.png" target="_blank"></a>

2.写一个通过fdisk/parted自动分区的脚本,会对一个空硬盘/dev/sdb进行分区,增加一个大小为1G的主分区。

这道题如果不写脚本的话还好做,但一写脚本就挺麻烦的,要考虑的情况太多。小编确实考虑得没别人全,借鉴一下别人的,不得不说考虑的太周全了,佩服佩服!

答案:

     read -p "please input diskname (/dev/sd*):" disk;            静默输入要分区的硬盘

   ( [[ "$disk" =~ ^/dev/sd. ]] &amp;&amp; fdisk -l $disk &amp;&gt; /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 "\&lt;gpt\&gt;";then

         echo -e"n\np\n1\n\n+1G\nw\n"|gdisk $disk

   else

         if echo "$b"|grep "\&lt;Extended\&gt;" &amp;&gt; /dev/null;then   

            if echo "$b"|head -3|grep "\&lt;Extended\&gt;" ;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 &amp;&gt;/dev/null ; then

        Name2=`df "$Name1" |tail -1 |grep -o "^/[^ ]*"`

        blkid $Name2 |grep -o '\&lt;UUID="[[:alnum:]|-]*"'

        unset Name1 Name2   

else

        echo "error,Mounted on name unknown";exit 1

本文转自    honeyorange   51CTO博客,原文链接:http://blog.51cto.com/13172732/1957836

继续阅读