linux下移动硬盘等存储设备的格式化、分区和挂载

最近因为工作原因需要在设备上外接移动硬盘,故将最近学习的内容总结一下,提高记忆。

1、移动硬盘的设备节点

以我的设备为例," ls /dev "可以ka看到如下三个和sata相关的节点   sda、sda1、sda2

其中sda节点是硬盘的总节点,sda1和sda2则表示硬盘有两个分区

如果硬盘只有一个分区,那么" ls /dev "可以看到 sda 和 sda1节点;如果设备插入了多个硬盘,那么再插入的设备节点会变成 sdb,分区会变成 sdb1, sdb2 等等,如果我们想删除硬盘现有分区,新建分区和格式化,就需要对  /dev/sda 节点做操作

2、硬盘的分区——fdisk

fdisk命令可以操作磁盘分区表,是linux下对硬盘修改分区、格式化,等最为经常使用的工具。

下面列举fdisk最常用的几种方式 

  • fdisk -l                                                                列出linux系统下所有磁盘的分区信息
  • fdisk -l  /dev/sda                                               单列出linux系统下某个节点的分区信息
# fdisk  -l /dev/sda

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 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 identifier: 0x76cb407f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   104859647    52428800    c  W95 FAT32 (LBA)
/dev/sda2       104859648   976773167   435956760    c  W95 FAT32 (LBA)

如图可以看到硬盘 /dev/sda 的分区信息

块设备名称为/dev/sda, 大小为500.1G(这个数字不是特别精确),500107862016bytes这是转换成字节后的大小

即:500107862016/1024/1024/1024 =465.7G(显示出的大小)
255 heads, 63 sectors/track, 60801 cylinders
255 heads:表示磁头数为255
63 sectors/track:表示每磁道上有63个扇区
60801 cylinders:表示共有60801 个柱面,柱面是分区的最小单位
Units = cylinders of 16065 * 512 = 8225280 bytes

16065=255*63 因为每一个磁头都是在同一个柱面的,63表示每个磁道上的扇区数量,这两个数的乘积表示一个柱面上的扇区数量;所以16065*512表示一个柱面的大小是8225280字节
Sector size (logical/physical): 512 bytes / 512 bytes
表示一个扇区的大小是512字节

总结:所以一个磁盘的大小=一个柱面大小*柱面的总数=磁头数量*每个磁道上的扇区数*一个扇区大小*柱面总数

:磁盘大小=8225280*60801=500105249280bytes=465.7GB=255*63*512*16065
 

块设备 /dev/sda 有sda1和sda2两个分区,两个分区都是FAT32文件系统

sda1 的大小是50G, 文件系统类型是 FAT32 , blocks = 5244800, blocks/1024/1024=50 ,由此可以看出 blocks 的大小是K。

# fdisk /dev/sda

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): p

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 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 identifier: 0x76cb407f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   104859647    52428800    c  W95 FAT32 (LBA)
/dev/sda2       104859648   976773167   435956760    c  W95 FAT32 (LBA)

Command (m for help): 

“fdisk  /dev/sda” 即可对硬盘进行操作,输入 m 即可获取help信息。

我们经常使用的 d:删除一个分区 n:添加一个分区 p:列出当前磁盘的分区表 t:改变分区类型 l:列出分区类型

q:不保存退出  w:把分区表写入硬盘并退出

必须动手把上述命令实际操作一遍,就会明白其使用方式,实际产品中我们经常将这些操作写成脚本供程序调用

#!/bin/sh
#Detect the numbers of parameters

#实际运行的例子 -> “/usr/bin/partition_sata  /dev/sda  80”   将硬盘/dev/sda 第一个分区格式化为80%的空间

if [ $# -lt 2 ]; then
	cat <<EOF
	Usage:         $0 sata device node percent
	Example:       $0 /dev/sdb 30
EOF
	exit
fi

SATA=$1
FIRST_PERCENT=$2

dd if=/dev/zero of=$SATA bs=1024 count=1024
	 
SIZE=`fdisk -l $SATA | grep Disk | awk '{print $5}'`
SIZEG_UNIT=`expr $SIZE / 100`
SIZEK=`expr $SIZEG_UNIT / 1024`
SIZEM=`expr $SIZEK / 1024`
FIRST_SIZE=`expr $SIZEM \* $FIRST_PERCENT`
echo the size is $FIRST_SIZE

fdisk $SATA << EOF
d
5
d
4
d
3
d
2
d
n
p
1

+${FIRST_SIZE}M
n
p



t
1
c
t
2
c
wq
EOF 
	 
echo "[Making filesystems...]"
mkfs.vfat -F 32 -n 1 "$SATA"1 
mkfs.vfat -F 32 -n 2 "$SATA"2

上述脚本自动将硬盘格式化为两个分区,并可以指定第一分区的大小,第二分区大小是硬盘剩余空间的大小

3、硬盘的格式化——文件系统

itarge@itarge-normal:~$ mkfs
mkfs          mkfs.btrfs    mkfs.exfat    mkfs.ext3     mkfs.ext4dev  mkfs.jffs2    mkfs.msdos    mkfs.ubifs    
mkfs.bfs      mkfs.cramfs   mkfs.ext2     mkfs.ext4     mkfs.fat      mkfs.minix    mkfs.ntfs     mkfs.vfat  

通常我们使用 " mkfs.xxx " 来将硬盘的不同分区格式化成不同的文件系统

注意:fdisk 通过 ‘ - t  ’ 选择分区类型,决定了最后用什么命令格式化,例如脚本中选择分区类型为 c (FAT32),则就用 “mkfs.vfat” 命令格式化,如果用其他命令格式化可能会格式化不成功。

4、硬盘的挂载/卸载——mount/umount

将硬盘分区,格式化后,将硬盘挂载到设备指定的目录,这样程序就能对其进行访问。

# mount -t vfat -w -o iocharset=cp936,codepage=936,errors=continue, /dev/sda1 /mnt/sata/sda1

将块设备  /dev/sda1 挂载到 /mnt/sata/sda1 目录下, -t 指定了挂载的文件系统, -o 的参数指定了硬盘的字符编码集,避免中文乱码。

注意:挂载错误"wrong fs type, bad option, bad superblock"可能是系统不支持此参数,或者文件系统,需要安装响应的文件。

fsck - y  /dev/sda1   可以对挂载前的分区进行修复和检查。

# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                31.8M     31.8M         0 100% /
devtmpfs                271.6M         0    271.6M   0% /dev
tmpfs                   287.6M         0    287.6M   0% /dev/shm
tmpfs                   287.6M    368.0K    287.3M   0% /tmp
/dev/mtdblock11         107.0M     13.8M     93.2M  13% /mnt/nand
tmpfs                   287.6M     16.0K    287.6M   0% /var
/dev/ubi0_0              54.4M     24.0K     54.4M   0% /opt/dvr_rdk/ti816x/firmware_nand
tmpfs                   300.0M         0    300.0M   0% /mnt/ramdisk
tmpfs                    64.0M         0     64.0M   0% /mnt/stream
/dev/sda1                50.0G     48.0K     50.0G   0% /mnt/sata/sda1
/dev/sda2               415.6G     16.0K    415.6G   0% /mnt/sata/sda2

使用 " df - h "命令可以看出两个分区的大小和挂载的路径

# umount /mnt/sata/sda1
# umount /mnt/sata/sda2

将硬盘卸载后,可以重新对硬盘进行格式化,分区

硬盘卸载不成功的可能:1、有进程正在对硬盘进行读写 2、有终端正在访问硬盘目录

此时可以通过   fuser -m /dev/sata/sda1  查找到正在访问此进程的id, kill 掉即可

 

 

 


参考资料:

https://blog.csdn.net/jackyu651/article/details/53070607/

https://blog.csdn.net/nahancy/article/details/52201121

https://blog.csdn.net/lengyue1084/article/details/51477872

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux系统中,如果你想要格式化磁盘分区`sda`,通常会使用`fdisk`工具进行操作。以下是基本步骤: 1. 打开终端:在终端输入`Ctrl+Alt+T`,然后输入你的密码。 2. 切换到root权限:运行`sudo -i`,输入管理员密码,获取超级用户权限。 3. 运行`fdisk /dev/sda`:这里`/dev/sda`代表你要操作的硬盘设备,需要替换为你实际的设备名。如果不确定设备名,可以使用`lsblk`命令查看。 4. 检查并选择分区表:在fdisk界面下,按`p`键查看当前的分区情况,选择一个合适的模式(如主分区、扩展分区等),然后按回车确认。 5. 创建新分区:如果是创建新的分区,输入`n`,再按照提示输入分区编号、起始扇区和结束扇区,最后选择退出分区表编辑(通常是按`w`)。 6. 格式化分区:使用`mkfs`命令来格式化分区,比如`mkfs.ext4 /dev/sdaX`,将`/dev/sdaX`替换为你的分区名称。`ext4`是一个常见的文件系统,你可以根据需求选择其他格式。 7. 挂载分区格式化完成后,你需要将其挂载到你想使用的目录,例如`mkdir /mnt/new_partition && mount /dev/sdaX /mnt/new_partition`。 8. 验证并卸载:最后,你可以通过`lsblk`检查分区是否已经挂载,并确认无误后可以执行`umount /mnt/new_partition`卸载它。 注意:格式化磁盘操作需谨慎,因为一旦格式化,其中的数据将永久丢失,请备份重要数据后再进行操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值