Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

分区简记Q&A #45

Open
abbshr opened this issue Jun 15, 2015 · 0 comments
Open

分区简记Q&A #45

abbshr opened this issue Jun 15, 2015 · 0 comments

Comments

@abbshr
Copy link
Owner

abbshr commented Jun 15, 2015

本来懒得记录这种命令介绍类的日志, 都是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重新调整文件系统大小.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant