linux上,不同的设备使用不同的名称,a-z,如:/dev/sda,/dev/sdb等,相同设备的不同分区使用不同的数字,如:/dev/sda1,/dev/sda2等等。磁盘基于MBR管理时最多只能有4个主分区,或者使用三个主分区加上一个扩展分区,扩展分区下可以有多个逻辑分区,一般情况下逻辑分区开始从5编号。单个磁盘如果大于2T MBR的管理模式是不识别的。


磁盘分区


        分区工具:fdisk,parted,sfdisk

查看分区:

        fdisk -l

        Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 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: 0x000a6939

        

           Device Boot      Start         End      Blocks   Id  System

        /dev/sda1   *        2048      821247      409600   83  Linux

        /dev/sda2          821248     4954111     2066432   82  Linux swap / Solaris

        /dev/sda3         4954112    41943039    18494464   83  Linux

        sectors扇区个数,boot列有星号的是引导分区。Sector size扇区的逻辑大小物理大小,I/O size 传输的最佳值,Disk label type 磁盘标识类型,Disk identifier 磁盘标识符。


管理分区:

        fdisk  /dev/sda         命令加上磁盘名称


创建分区:

        Command (m for help): n

        Partition type:

           p   primary (3 primary, 0 extended, 1 free)

           e   extended

        No free sectors available

        进入到管理工具后,输入n表示创建一个磁盘分区,3 primary, 0 extended, 1 free 这一串表示已经有三个主分区了,0个扩展分区。


添加磁盘:

        No free sectors available 表示没有可用的磁盘空间了,可以添加一块新的磁盘。添加完成后重启系统即可,再用 fdisk -l 命令即可看到新添加还未分区的磁盘了。

        Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 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


        然后就可以开始创建分区了,一般情况下都是创建三个主分区和一个扩展分区,创建新分区使用n命令,表示new,然后根据提示操作即可。

        Command (m for help): n

        Partition type:

           p   primary (2 primary, 0 extended, 2 free)        主分区

           e   extended            扩展分区

        Select (default p):          选择分区类型,默认回车即可

        Using default response p

        Partition number (3,4, default 3):     创建第几分区,默认回车即可

        First sector (4196352-10485759, default 4196352): 

        Using default value 4196352

        Last sector, +sectors or +size{K,M,G} (4196352-10485759, default 10485759): +1G

        Partition 3 of type Linux and of size 1 GiB is set        完成


保存分区:

        Command (m for help): w

        The partition table has been altered!

        

        Calling ioctl() to re-read partition table.

        Syncing disks.

        创建完成后使用 w 命令保存分区,这样刚刚的分区信息就会被写入到磁盘中,磁盘之前的数据会被清除掉。

        完成后查看 /proc/partitions 这个文件,这个文件是是否被内核识别的文件。只有在文件中查看到刚刚分区的磁盘内核说明已近被内核识别了。如果没有识别使用partx -a /dev/sdb 命令,可以自动扫描磁盘并添加。然后再查看/proc/partitions文件。刚分区的磁盘就会添加到文件中了。或者使用partporbe命令,或partporbe /dev/sdb。


fdisk工具中的命令:

        p    print, 显示已有分区

        n    new,创建

        d    delete,删除

        w    write,写入磁盘并退出

        q    quit,放弃更新并退出

        m   获取帮助

        l     列表所分区id

        t    调整分区id


文件系统

        分区完成以后就可以创建文件系统了,linux常见的文件系统有ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap。


创建文件系统的常用命令:

        mkefs                  创建ext文件系统

        mke2fs                创建ext2文件系统

        mkfs.ext3            创建ext3文件系统

        mkfs.ext4            创建ext4文件系统

        mkreiserfs           创建ReiserFS文件系统

        jfs_mkfs               创建JFS文件系统

        mkfs.xfs               创建XFS文件系统

        mkfs.zfs               创建ZFS文件系统

        mkfs.btrfs            创建Btrfs文件系统

        使用方法为命令加上分区名称:如 mkfs.ext4  /dev/sdb1 其他选项查看手册,默认情况下不加选项根据默认值即可创建文件系统。

        使用查看文件 /proc/filesystems 可以看到系统支持的文件系统类型。

        格式化时如果之前有文件系统使用 -f 选项覆盖之前的文件系统。

例:mkfs.ext4 /dev/sdb5 

        mke2fs 1.42.9 (28-Dec-2013)

        Filesystem label=

        OS type: Linux

        Block size=1024 (log=0)

        Fragment size=1024 (log=0)

        Stride=0 blocks, Stripe width=0 blocks

        25376 inodes, 101376 blocks

        5068 blocks (5.00%) reserved for the super user

        First data block=1

        Maximum filesystem blocks=33685504

        13 block groups

        8192 blocks per group, 8192 fragments per group

        1952 inodes per group

        Superblock backups stored on blocks: 

        8193, 24577, 40961, 57345, 73729

        Allocating group tables: done                            

        Writing inode tables: done                            

        Creating journal (4096 blocks): done

        Writing superblocks and filesystem accounting information: done


查看UUID信息:

        创建文件系统完成,可以使用blkid命令查看分区的UUID,这个UUID是用来区分磁盘的,在开机挂载文件/etc/fstab中会用到。

        blkid /dev/sdb5 

        /dev/sdb5: UUID="4c93c1ab-58cc-4a0d-a471-daceefa76729" TYPE="ext4" 

                -U UUID     根据指定的UUID来查找对应的设备

                -L LABEL    根据指定的LABEL来查找对应的设备


创建交换分区mkswap

        创建交换分区的前提是将磁盘的分区ID类型调整为为82

        mkswap [options] device

        -L 'LABEL'


文件系统检测:

        fsck.FS_TYPE,FS_TYPE一定要与分区上已经文件类型相同-a 自动修复错误,-r 交互式修复错误。ext系列文件专用的检测修复工具e2fsck,使用-f可强制修复,-y为自动回答。