磁盘知识总结

 


一、磁盘分区知识总结

  一)磁盘存储逻辑结构

  主分区(primary)、扩展分区(extend)、逻辑分区  
  备份命令:dd if=/dev/sda of=mbr.bin bs=512 count=1 

  一块磁盘的分区表占有64btyes大小,每个分区占用16个字节,因此一块磁盘仅支持四个分区表信息,即主分区+扩展分区的总量不超过4个。

  二)磁盘分区注意事项

  1. 任意多个主分区,1<=主分区数<=4 
  2. 扩展分区和主分区可以组合,但1<=主分区数+扩展<=4 

  三)常规的分区方案

  1、方案一:集群架构中的某个节点,数据有多少或者不重要

  /boot 启动引导主分区 linux引导程序
  swap  sawp主分区     物理内存的两倍
  /     根分区        剩余磁盘大小给/

  2、方案二:数据库及存储,有大量的重要的数据

  /boot 100M
  / 50-200GB 
  swap 物理内存的1.5-2.0倍  
  /data 剩余硬盘大小,放数据库及存储数据的

  3、方案三:门户级别或大型网站

  /boot 100M
  swap 物理内存的1.5倍
  / 50-200GB 
  剩余的空间保留,不在进行分区,将来分给那个部门,根据需求分区,此方法灵活 

  四)分区标识号

/dev/sda 
/dev/sdb 
........
/dev/sda1 
/dev/sda2 
.........

  五)文件系统

  1、文件系统的定义

  文件系统是指对一个存储设备上的数据和元素进行组织的一种机制 

  2、常见的文件系统

  常用的文件系统类型:ext2 ext3 ext4 xfs NTFS FAT32 FAT 等

  3、文件系统小结

  1. 文件系统是指对一个存储设备上的数据和元素进行组织的一种机制 
  2. 分区必须只能有一种文件系统
  3. 分区必须格式化创建文件系统才能存放数据  
  4. Linux常用的文件系统类型:ext2 ext3 ext4 zfs xfs Reiserfs等

  4、查看系统支持的文件系统

ll /lib/modules/内核版本/kernel/fs/

  CentOS7查看系统支持的文件系统

#ll /lib/modules/3.10.0-514.el7.x86_64/kernel/fs/

  

  5、查看文件系统inode和block结构

dumpe2fs /dev/sda1

  6、Linux查看分区文件系统类型(parted)

    1、parted查看分区的文件系统类型

  如果要查看 /dev/sda 各分区的文件系统类型,可以按照以下步骤来查看:(主要是print list命令)

复制代码
# parted /dev/sda
GNU Parted 2.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print list                                                       
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1075MB  1074MB  primary  ext4         boot
 2      1075MB  21.5GB  20.4GB  primary  ext4
复制代码
    2、扩展(df和fdisk)

  fdisk -l 只能列出硬盘的分区表、容量大小以及分区类型,但看不到文件系统类型。

  df 命令是用来查看文件系统磁盘空间使用量的。但df 命令只会列出已挂载的文件系统信息,对于没有挂载的文件系统是查看不到的。使用这个命令可以很方便的查看已挂载的文件系统的空间使用量、剩余空间大小等信息。

  六)磁盘分区

  假设我们的需求是分6个区

  1P+1E(5 6 7 8 9)
  /dev/sdb5 /dev/sdb6 /dev/sdb7 /dev/sdb8 /dev/sdb9
  2p+1E(5 6 7 8)
  3p+1E(5 6 7)

  1、fdisk分区工具(小于2T磁盘)

    1、添加新的磁盘
  1. 关机增加一块新的硬盘
  2. 使用命令fdisk  /dev/sdb进行分区
  3. 通知内存分区变化partprobe /dev/sdb
    2、分区详解
复制代码
# fdisk -cu /dev/sdb 
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x2a97a4a9.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won‘t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

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): 
复制代码
    3、导出文件系统信息
dumpe2fs ----dumpe2fs - dump ext2/ext3/ext4 filesystem information
    4、格式化分区

  mkfs - build a Linux file system(格式化)

mkfs -t ext4   -I 1024 -b 8192  /dev/sdb1 
mkfs.ext4 -I1024 /dev/sdb1 
     -t:指定文件类型
     -I:指定inode节点大小(默认256)
     -b:指定block的大小  (最大4096) 
复制代码
# mkfs.ext4 /dev/sdb1 (格式化)
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
64000 inodes, 256000 blocks
12800 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=264241152
8 block groups
32768 blocks per group, 32768 fragments per group
8000 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376

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

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@chen ~]# tune2fs -c -1 /dev/sdb1 (取消时间过期)
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
复制代码
    5、挂载
mount /dev/sdb1 /mnt (挂载)
    6、开机自动挂载

  开机自动挂载:vi /etc/fstab 

  把挂载信息写入到/etc/rc.local等同在/etc/fstab 

  1. 使用磁盘分区号:/dev/sdb1  /mnt /ext4  defaults   0  0   
  2. 使用UUID:UUID=ccb0bb71-79fa-4670-8df1-0bc177936cac /mnt/ ext4  defaults,noexec   0 0

  blkid -----查看uuid

复制代码
# vi /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Sun Mar 27 21:40:41 2016
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=90d3bc5a-e19d-483b-ac91-a096be544704 /                       ext4    def
aults        1 1
UUID=e0617ba5-095a-4474-bdc8-b3167dd8f58e /boot                   ext4    def
aults        1 2
UUID=96be0e54-978f-41c1-8dc5-faf45eca854b swap                    swap    def
aults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
#/dev/cdrom             /mnt/cdrom           iso9660    defaults        0 0
UUID=ccb0bb71-79fa-4670-8df1-0bc177936cac /mnt/ ext4  defaults,noexec   0 0
复制代码
     7、磁盘分区、格式化和挂载小结

  1)fsdisk -l 查看磁盘数和分区情况

  2)fsdisk /dev/sdb 分区

  3)mkfs.ext4 /dev/sdb1或  mkfs -t ext4 /dev/sdb1 格式化分区
    tune2fs -c -1 /dev/sdb1  

  4)partprobe  /dev/sdb 通知内核分区变化

  5)mount  /dev/sdb1 /opt  挂载; mount -a测试是否挂载成功 

  6)df -Th  或df -i 或 cat /proc/mounts 查看挂载后变化

  2、parted分区工具(大于2T的磁盘)

  parted命令就比较强大了,用parted命令可以对大于2TB的磁盘设备进行分区,以及创建GPT分区(而fdisk命令就办不到了)。

  可在命令换行或脚本执行,此分区直接生效

    1、parted常用命令
复制代码
1、将磁盘上原有的分区删除掉:

    进入:#parted   /dev/sdb

    查看:(parted)p

    删除:(parted)rm  1

              (parted)rm  2

2、将磁盘格式变成gpt的格式(因为parted只能针对gpt格式的磁盘进行操作)

   转换:(parted) mklabel  gpt

   分区:(parted) mkpart  primary  1  500                  (分第一个主分区500MB)

   分区:(parted) mkpart  primary  501  1000              (分第二个主分区500MB)

   分区:(parted) mkpart  logical  1001  2000              (分第三个逻辑分区1000MB)  (parted的逻辑分区不用先分扩展分区,直接一步到位)

   查看:(parted) p

   退出:(parted)quit             ( parted分区自动保存,不用手动保存 )

3、格式化已经分好的区

   # mkfs -t ext4 /dev/sdb1

4、挂载

  # mount  /dev/sdb1 /mnt

5、开机自动挂载:

 # echo  “/dev/sdb1 /mnt ext4 defaults 0 0”  >>/etc/fstab
parted常用命令
复制代码
    2、非交互性分区

  非交互性批量对磁盘分区,挂载

复制代码
#!/bin/bash

yum install -y parted
#####################################################################
b=1
sequence=`echo {b..k}`

for  disk in ${sequence}
do
    parted /dev/sd${disk}</root/parted.txt
    mkfs.xfs /dev/sd${disk}$b
    if [ $? -eq 0 ]; then
        echo "/n/n****************/dev/sd${disk}$b Fdisked!Waithing For 10 second****/n/n"
    fi
    uuid=`blkid /dev/sd${disk}$b |awk '{print $2}'|awk -F"\"" '{print $2}'`
    cat << EXIT >/root/test1
UUID=$uuid      /hd/hd${disk}    xfs    rw,noatime,inode64,allocsize=16m      0  1
EXIT
    cat /root/test1 >> /etc/fstab
done
mout -a
parted_disk.sh
复制代码

  文件传入值

复制代码
mklabel gpt
yes
mkpart primary 0 -1
ignore
quit
parted.txt
复制代码

 

二、查看磁盘转速

  http://www.ttlsa.com/linux-command/get-disk-speed-on-linux/

 

posted @   思维无界限  阅读(1055)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示

目录导航