首页 > 代码库 > linux 硬盘分区

linux 硬盘分区

环境:Red Hat 4.8.3-9

软件依赖:无

使用原因:申请100G虚拟机,但df查看发现只有20G

查看现有分区挂在情况:

[scm_user@localhost ~]$ df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   14G  994M   13G    7% /
devtmpfs                 7.8G     0  7.8G    0% /dev
tmpfs                    7.8G     0  7.8G    0% /dev/shm
tmpfs                    7.8G  8.5M  7.8G    1% /run
tmpfs                    7.8G     0  7.8G    0% /sys/fs/cgroup
/dev/sda1                497M  125M  373M   25% /boot


因申请的为100G虚拟机,发现设备数据不对,随即进行确认

查看设备分区情况:

[scm_user@localhost ~]$ cat /proc/partitions 
major minor  #blocks  name

   8        0  125829120 sda
   8        1     512000 sda1
   8        2   16264192 sda2
部分内容删除,仅保留有效数据....

根据数据可以看出,磁盘空间(sda)为120G,但使用的分区(sda1+sda2)只有20G有近100G并未进行分区使用


使用fdisk命令确认硬盘实际分区情况(若查看全部硬盘,可使用fdisk -l)

[root@localhost ~]# fdisk -l /dev/sda

磁盘 /dev/sda:128.8 GB, 128849018880 字节,251658240 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0007e5bc

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    33554431    16264192   8e  Linux LVM

这个硬盘是128.8G的

硬盘分区的表示:在Linux 是通过hd*x 或 sd*x 表示的,其中 * 表示的是a、b、c …… …… x表示的数字 1、2、3 …… …… hd大多是IDE硬盘;sd大多是SCSI或移动存储;

设备/device:分区序列

引导/Boot:表示引导分区,在上面的例子中 hda1 是引导分区;

开始/Start:表示的一个分区从X cylinder(磁柱)开始;

结束/End:表示一个分区到 Y cylinder(磁柱)结束;

容量/Blocks:

其单位是K;一个分区容量的值是由下面的公式而来的;

Blocks = (相应分区End数值 - 相应分区Start数值)x 单位cylinder(磁柱)的容量

所以我们算一下 hda1的 Blocks 的大小 :

hda1 Blocks=(765-1)x8225.280=6284113.92 K = 6284.113.92M

分区类型id/Id:见分区类型;

分区类型/System:id和System 表示的是一个意思,id看起来不太直观,我们要在fdisk 一个分区时,通过指定id来确认分区类型;比如 7表示的就NTFS 分区;这个在fdisk 中要通过t功能来指定。


进入分区状态:

[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

命令(输入 m 获取帮助):

输入m获取帮助信息

命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   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)


下面我们来看看各个指令的使用说明:

a :设置可引导标记

b :修改bsd的磁盘标签

c :设置DOS操作系统兼容标记

d :删除一个分区

l :显示已知的分区类型,其中82为Linux swap分区,83为Linux分区

m :显示帮助信息

n :增加一个新的分区

o :创建一个新的空白的DOS分区表

p :显示磁盘当前的分区表

q :退出fdisk程序,不保存任何修改

s :创建一个新的空白的Sun磁盘标签

t :改变一个分区的系统号码(比如把Linux Swap分区改为Linux分区)

u :改变显示记录单位

v :对磁盘分区表进行验证

w :保存修改结果并退出fdisk程序

x :特殊功能,不建议初学者使用


p显示磁盘分区情形

命令(输入 m 获取帮助):p

磁盘 /dev/sda:128.8 GB, 128849018880 字节,251658240 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0007e5bc

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    33554431    16264192   8e  Linux LVM

显示已有两个分区sda1、sda2


n增加第一个新的分区

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (33554432-251658239,默认为 33554432):
将使用默认值 33554432
Last 扇区, +扇区 or +size{K,M,G} (33554432-251658239,默认为 251658239):
将使用默认值 251658239
分区 3 已设置为 Linux 类型,大小设为 104 GiB

输入 e 硬盘为[延伸]分割区(extend)。

输入 p 硬盘为[主要]分割区(primary)。


因需要将剩下的磁盘,分在一个分区,用于存储数据,所以全部选择默认


p再次查看分区情况

命令(输入 m 获取帮助):p

磁盘 /dev/sda:128.8 GB, 128849018880 字节,251658240 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0007e5bc

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    33554431    16264192   8e  Linux LVM
/dev/sda3        33554432   251658239   109051904   83  Linux

发现已增加sda3分区,空间104G


w保存退出

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。

注意:该部分出现错误提示,设备或资源忙,内核使用的还是旧的列表,若需要更新使用partprobe命令

若未使用该命令,会发现/dev目录下无sda3设备文件,无法进行下面的操作

partprobe命令不输出任何提示,结束后查看/dev目录下有sda3设备文件

[root@localhost ~]# ls /dev/sda3 -ls
0 brw-------. 1 root root 8, 3 4月  21 14:57 /dev/sda3

这时候在df -h命令中无法查看到该分区,因为未映射


fdisk -l /dev/sda 命令可以查看到该分区

fdisk -l /dev/sda

磁盘 /dev/sda:128.8 GB, 128849018880 字节,251658240 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0007e5bc

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    33554431    16264192   8e  Linux LVM
/dev/sda3        33554432   251658239   109051904   83  Linux


格式化分区

[root@localhost ~]# mkfs.ext4 /dev/sda3
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
6815744 inodes, 27262976 blocks
1363148 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2174746624
832 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成


mount挂载分区,df 查看挂载后结果

[root@localhost ~]# mount /dev/sda3 /opt
[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   14G  994M   13G    7% /
devtmpfs                 7.8G     0  7.8G    0% /dev
tmpfs                    7.8G     0  7.8G    0% /dev/shm
tmpfs                    7.8G  8.5M  7.8G    1% /run
tmpfs                    7.8G     0  7.8G    0% /sys/fs/cgroup
/dev/sda1                497M  125M  373M   25% /boot
tmpfs                    1.6G     0  1.6G    0% /run/user/0
tmpfs                    1.6G     0  1.6G    0% /run/user/1000
/dev/sda3                103G   61M   97G    1% /opt

参考:http://fuwenchao.blog.51cto.com/6008712/1329975

本文出自 “grace的技术小窝” 博客,请务必保留此出处http://jimann.blog.51cto.com/3295893/1918232

linux 硬盘分区