30分钟玩转Linux磁盘分区信息管理之步步高深必知必会常识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了30分钟玩转Linux磁盘分区信息管理之步步高深必知必会常识相关的知识,希望对你有一定的参考价值。

我们看看在Linux系统中磁盘是如何分区的

磁盘分区:

fdisk:是Linux的一个操作磁盘分区表的常用工具:

    常用的格式:fdisk -l列出使用的磁盘设备

[[email protected] ~]# fdisk -l

Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00029f42

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    84912127    41943040   83  Linux
/dev/sda3        84912128   126855167    20971520   83  Linux
/dev/sda4       126855168   419430399   146287616    5  Extended
/dev/sda5       126859264   131055615     2098176   82  Linux swap / Solaris

下面我们根据实验一点点讲解Linux磁盘的管理操作

0.创建主分区(MBR):

a)  Fdisk /dev/sda进入磁盘分区环境

[[email protected] ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
         switch off the mode (command ‘c‘) and change display units to
         sectors (command ‘u‘).

Command (m for help):

当然,执行在这的时候,你可以使用m便会列出命令选项:

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   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)

Command (m for help):

b)  添加一个新的磁盘

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)

e:表示扩展分区,p:表示主分区(1-4)

[延伸]我们之后主分区的数量是由分区表限制的,64的分区表最多只能分为4个主分区,或者三个主分区一个扩展分区或者其他,常见的window中的就是一个主分区一个扩展分区(明白了吗)

Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (7859-15665, default 7859):

c)  回车选择默认的起始扇区

Partition number (1-4): 3
First cylinder (7859-15665, default 7859): 
Using default value 7859

这里我们直接回车表示使用的是起始的柱面(在系统版本的不同,有的是根据柱面,有的是扇区,不过呢,也没啥大碍)

d)  输入格式为”+[M,G]”磁盘空间大小

Last cylinder, +cylinders or +size{K,M,G} (7859-15665, default 15665): +10G

根据我们自己个人定制,使用括号里面的单位,或者你也可以选择使用柱面表示,但是前面有一个加号

e)  w保存退出

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
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)
Syncing disks.

这一切的操作其实都是在内存中完成,只有使用w才是保存下来,下面我们来验证一下

f)  ls /dev/sda*或者cat /proc/partitions查看是否有新创建的分区

[[email protected] ~]# ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2
[[email protected] ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0  125829120 sda
   8        1     204800 sda1
   8        2   62914560 sda2
 253        0   20971520 dm-0
 253        1    2097152 dm-1
 253        2   10485760 dm-2
 253        3   20971520 dm-3
[[email protected] ~]#

奇怪,这是怎么回事呢?难道没有成功?不是的,这是因为没有同步到内核罢了

g)  执行parted –a/dev/sda一次或多次直到显示创建的新的分区

[[email protected] ~]# partx -a /dev/sda
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
[[email protected] ~]# partx -a /dev/sda
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3
[[email protected] ~]# fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004a6ba

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560   8e  Linux LVM
/dev/sda3            7859        9164    10489446   83  Linux

partx -a 其实就是通知(告诉)内核,磁盘信息变动了,你更新一下,一次没有显示,我们可以多执行一下看看结果,是不是10G的主分区就创建成功了。因此,这里特别留意两个命令partx 和fdisk

主分区我们创建了,可是我想创建一个交换分区,怎么创建呢?下面我们就来看看

大家知道swap分区就是内存空间,空间前后那就是不一样的了,我们先来查看一下内存空间

[[email protected] ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           845        157        687          0         12         55
-/+ buffers/cache:         90        754 
Swap:         2047          0       2047

现在开始创建一个swap分区

[[email protected] ~]# mkswap /dev/sda4
mkswap: /dev/sda4: warning: don‘t erase bootbits sectors
        (dos partition table detected). Use -f to force.
Setting up swapspace version 1, size = 31463296 KiB
no label, UUID=c0c990f9-9d68-41d6-8e75-1eb41b08c4fc
[[email protected] ~]# mkswap -f /dev/sda4
Setting up swapspace version 1, size = 31463296 KiB
no label, UUID=5017d30a-1d96-4e47-b4ba-274d132afeb9
[[email protected] ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           845        157        687          0         12         55
-/+ buffers/cache:         90        754 
Swap:         2047          0       2047 
[[email protected] ~]# swapon /dev/sda4
[[email protected] ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           845        180        664          0         12         55
-/+ buffers/cache:        112        732 
Swap:        32773          0      32773 
[[email protected] ~]#


当然我们也是可以把一个已经创建的分区调整为swap分区

a)  Fdisk /dev/sda进入磁盘分区环境

b)  添加一个新的磁盘

c)  回车选择默认的起始扇区

d)  输入格式为”+[MG]”磁盘空间大小

e)  显示调整分区的系统ID,swap(82)

f)  调整分区

g)  输入调整的分区号

h)  输入要想调整的分区类型ID(82)

i)  查看分区调整的结果

j)  保存

k)  kpartx  -af /dev/sda重读一次或者两次,或者手动调整,使用kpartx –a /dev/sda#,#是调整的那个分区号,手动的添加一个分区

l)  fdisk –l /dev/sda 查看显示是否成功

下面是源码展示:步骤很清楚

[[email protected] ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
         switch off the mode (command ‘c‘) and change display units to
         sectors (command ‘u‘).

Command (m for help): n
First cylinder (9165-13081, default 9165): 
Using default value 9165
Last cylinder, +cylinders or +size{K,M,G} (9165-13081, default 13081): +100M

Command (m for help): l

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
 5  Extended        42  SFS             86  NTFS volume set da  Non-FS data    
 6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            
 f  W95 Ext‘d (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1

Command (m for help): t
Partition number (1-5): 5
Hex code (type L to list codes): 82
Changed system type of partition 5 to 82 (Linux swap / Solaris)

Command (m for help): p

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004a6ba

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560   8e  Linux LVM
/dev/sda3            7859        9164    10489446   83  Linux
/dev/sda4            9165       13081    31463302+   5  Extended
/dev/sda5            9165        9178      112423+  82  Linux swap / Solaris

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
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)
Syncing disks.
[[email protected] ~]# kpartx -a /dev/sda
device-mapper: reload ioctl on sda1 failed: Invalid argument
create/reload failed on sda1
device-mapper: reload ioctl on sda2 failed: Invalid argument
create/reload failed on sda2
device-mapper: reload ioctl on sda3 failed: Invalid argument
create/reload failed on sda3
device-mapper: reload ioctl on sda4 failed: Invalid argument
create/reload failed on sda4
device-mapper: reload ioctl on sda5 failed: Invalid argument
create/reload failed on sda5

2.文件系统的创建

这里使用的是mkfs格式化工具,他可以把分区格式化为mkfs.cramfs   mkfs.ext2 mkfs.ext3     mkfs.ext4     mkfs.ext4dev  mkfs.msdos    mkfs.vfat这些文件系统例如:

[[email protected] ~]# mkfs.ext4 /dev/sda3
mke2fs 1.41.12 (17-May-2010)
Filesystem label=            
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655776 inodes, 2622361 blocks
131118 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments per group
8096 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

a)  mkfs.ext2 /dev/sda#  格式化sda#分区成为ext2的文件系统类型(破坏已有的文件系统类型)

[[email protected] ~]# mkfs.ext2 /dev/sda3
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655776 inodes, 2622361 blocks
131118 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments per group
8096 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

b)  blkid /dev/sda# 查看分区是否格式化成目标文件系统类型

[[email protected] ~]# blkid /dev/sda3
/dev/sda3: UUID="228c109c-b9f8-4339-90eb-b072c60b3433" TYPE="ext2"

3.创建一个xfs文件系统

a)  Lsmod | grep xfs 查看系统是否加载的有xfs,或者Mkfs.  TABTAB查看是否有xfs文件格式包没有就执行下一步或者跳下一步

[[email protected] ~]# lsmod | grep xfs
xfs                   939662  3 
libcrc32c              12644  1 xfs
[[email protected] ~]# mkfs.
mkfs.btrfs   mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.fat     mkfs.minix   mkfs.msdos   mkfs.vfat    mkfs.xfs     
[[email protected] ~]# mkfs.

b)  Yum install xfs-progs安装xfs包(省略)

c)  Mkfs.xfs –f /dev/sda# 强制把原来的格式转化为xfs格式的文件系统

[[email protected] ~]# mkfs.xfs -f /dev/sda7
meta-data=/dev/sda7              isize=256    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[[email protected] ~]#

d)  Blkid /dev/sda#

[[email protected] ~]# blkid /dev/sda7
/dev/sda7: UUID="6655205a-6c44-49a3-a9cc-e2587458c1c1" TYPE="xfs" 
[[email protected] ~]#

4.了解一些专业的ext文件系统创建工具

a)  Mke2fs 选项 device

l -t {ext2|ext3|ext4}指明要创建的文件系统的类型

[[email protected] ~]# blkid /dev/sda3
/dev/sda3: UUID="228c109c-b9f8-4339-90eb-b072c60b3433" TYPE="ext2" 
[[email protected] ~]# mke2fs -t ext3 /dev/sda3
......
[[email protected] ~]# blkid /dev/sda3
/dev/sda3: UUID="347239a7-720e-429a-b381-9e92d7e47f49" SEC_TYPE="ext2" TYPE="ext3"

Mkfs.ext4=mkfs –text4=mke2fs –t ext4

l -b {1024|2048|4096}指明块的大小

l -L 指明或修改卷标lable

l -m 指定预留空间百分比

[[email protected] ~]# mke2fs -t ext4 -b 2048 -L juanbiao1 -m 3 /dev/sda3 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=juanbiao1
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
657408 inodes, 5244722 blocks
157341 blocks (3.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=543162368
321 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
	16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 
	2048000, 3981312

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[[email protected] ~]#

l -j 创建有日志功能的文件系统ext3

Mkfs.ext3=mkfs –text3=mke2fs –j=mke2fs –O has_journal /dev/sda3

[[email protected] ~]# mke2fs -j /dev/sda3
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655776 inodes, 2622361 blocks
131118 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments per group
8096 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[[email protected] ~]# blkid /dev/sda3
/dev/sda3: UUID="33eb2e59-f7fc-4bc8-bb8a-824460614f2d" SEC_TYPE="ext2" TYPE="ext3"

例子:mke2fs –t ext4 –b 2048 –L juanbiao/dev/sda#

5.专业ext文件系统更改卷标

a)  E2lable查看或者设定文件系统的卷标

e2lable /dev/sda# 或者blkid /dev/sda#查看卷标

e2lable /dev/sda# juanbiao 设定文件系统卷标

[[email protected] ~]# e2label /dev/sda3 juanbiao2
[[email protected] ~]# e2label /dev/sda3
juanbiao2
[[email protected] ~]#

6.查看或修改ext系列文件系统的某些[超级块]属性[块大小创建后不能修改]

a)  Tune2fs –l /dev/sda# 查看文件系统中超级块的信息

[[email protected] ~]# tune2fs -l /dev/sda3
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   juanbiao2
Last mounted on:          <not available>
Filesystem UUID:          33eb2e59-f7fc-4bc8-bb8a-824460614f2d
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              655776
Block count:              2622361
Reserved block count:     131118
Free blocks:              2542628
Free inodes:              655765
First block:              0
......

b)  –j 无损将ext2升级为ext3

1.  tune2fs –j /dev/sda# 文件系统改为ext3

[[email protected] ~]# mke2fs -t ext2 /dev/sda3
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655776 inodes, 2622361 blocks
131118 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments per group
8096 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[[email protected] ~]# tune2fs -j /dev/sda3
tune2fs 1.41.12 (17-May-2010)
Creating journal inode: done
This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[[email protected] ~]# blkid /dev/sda3
/dev/sda3: UUID="c58a8365-b94b-4da4-b6c3-7e95e543b18b" SEC_TYPE="ext2" TYPE="ext3"

2.  -L 指明或修改卷标lable

3.  -m 指定预留空间百分比

[[email protected] ~]# tune2fs -L nihao -m 3 /dev/sda3
tune2fs 1.41.12 (17-May-2010)
Setting reserved blocks percentage to 3% (78670 blocks)
[[email protected] ~]# e2label /dev/sda3
nihao
[[email protected] ~]#

4.  -O 关闭或启动某种特性

a)  Tune2fs –O ^has_journal/dev/sda3关闭该文件系统的日志功能

b)  Tune2fs –o ^mount_options/dev/sda3关闭该文件系统的默认挂载选项

c)  Tune2fs –o acl /dev/sda3访问控制列表

[[email protected] ~]# tune2fs -o acl /dev/sda3
tune2fs 1.41.12 (17-May-2010)
[[email protected] ~]# blkid /dev/sda3
/dev/sda3: UUID="c58a8365-b94b-4da4-b6c3-7e95e543b18b" SEC_TYPE="ext2" TYPE="ext3" LABEL="nihao" 
[[email protected] ~]# tune2fs -l /dev/sda3
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   nihao
Last mounted on:          <not available>
Filesystem UUID:          c58a8365-b94b-4da4-b6c3-7e95e543b18b
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    acl-------------<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-------------
Filesystem state:         clean
Errors behavior:     

以上是关于30分钟玩转Linux磁盘分区信息管理之步步高深必知必会常识的主要内容,如果未能解决你的问题,请参考以下文章

linux命令之磁盘与文件系统管理命令(上)

Linux入门之磁盘管理/etc/fstab与交换分区

Linux磁盘分区之fdisk命令

Linux命令之磁盘管理

Linux之SWAP分区的信息查询与手动刷新

Linux入门之磁盘管理分区管理