abbshr.github.io icon indicating copy to clipboard operation
abbshr.github.io copied to clipboard

分区简记Q&A

Open abbshr opened this issue 9 years ago • 0 comments

本来懒得记录这种命令介绍类的日志, 都是Google一大把一大把的文章. 但我对分区一向很谨慎, 为了防止今后重蹈覆辙, 还是决定把分区相关的步骤有条理的记一下.

  • Q: 如何对设备分区? A:

    1. 可以用经典的fdisk <device>命令搞定. 子命令很简单, 忘记如何操作只需m就行,p是最常用的没有之一:查看设备当前的分区表. 现在fdisk很人性化, 分区时可以输入+N<G|M|K>(比如+2G)来确定分区大小.
    2. 相比之下parted命令更强, 支持2T以上的分区. 当然这是题外话, 简单的分区也是可以的. 子命令同样简单, help或者他的alias:m会告诉你想要的.

    分区之后如果不想重启, 就手动刷新一下内核分区表(就是从硬盘分区表里重读一遍): partprobe.

  • Q: 如何建立文件系统?
    A: 在使用disk之前, 必须格式化, 即建立操作系统能识别的文件系统.假如已经通过上一步划分了分区/dev/sda9, 这一步操作即可将该分区格式化成ext4: mkfs.ext4 /dev/sda9 其他格式可以键入mkfs并按两次tab键查看.
    one more thing, 格式化分区之前别挂载它.

  • Q: 如何调整文件系统的大小?
    A: 目前我所知道的就是resize2fs.如果在上一步你并没有将整个分区格式化, 这样partition可能留有空余. 想把这部分也利用起来, 就可以:

    resize2fs /dev/sda9
    

    后面也可以接参数,表示额外需要的新空间大小:

    resize2fs /dev/sda9 [Ns|K|M|G]
    

    注意resize大小永远不能超过partition大小. 允许扩增已挂载的文件系统, 但要减小文件系统必须先卸载. 其余注意事项详见man resize2fs

  • Q: 如何对格式化之后的分区调整大小?
    A: 注意与上面的区别. 如果根分区已满, 并且当初安装系统时手残没有为/usr,/var, /home等目录划分独立挂载点. 其实这个问题隐含了两个其他问题:

    1. 如何调整已挂载的根目录大小? 最保险也是最通用的做法是livecd, 在livecd下原有设备根分区是unmounted的, 因此可以当做普通分区一样resize. 如果想折腾一下, 也可以用fdisk, fdisk允许在挂载状态下对设备重新分区:

          fdisk /dev/sda
          # 记住根目录分区的起始柱面
          > p
          # 删根目录所在分区
          > d
          # 如果没有空闲空间那就继续删
          ...
          # 从原来根分区起始处重建分区
          > n
          # 重设大小...
      

      这样一番折腾, 原有的数据会不会被清掉? 答案是不会, 不然我为何会记录这么脑残的做法... 不过为了以防万一也应该备份一下数据. 之后参照上一步, 调整以下分区上的文件系统大小.

    2. 如何调整其他文件系统大小? 上面的步骤对这个完全适用. 除了fdisk, 也可以用parted, 或者建立LVM(逻辑卷管理), 很明显后者的做法是一劳永逸的. 这在parted里很简单, 不用删除分区再重建, 直接一个子命令resizepart搞定分区调整:

      parted /dev/sda9
      # 出于习惯, 可以先看看当前分区表
      > p
      # 比如调整分区号为 5 的partition, end参数代表硬盘位置, 表示要扩展到哪里, 可正可负, 比如: 4G, 10%, -5G.
      > resizepart 5 <end>
      

      记得先卸载目标分区, 调整之后执行partprobe刷新内核分区表.然后用resize2fs重新调整文件系统大小.

abbshr avatar Jun 15 '15 09:06 abbshr