您的位置:首页 > 运维架构 > Linux

Linux系统下,将普通硬盘的ntfs分区转换为ext4分区,并开机自动挂载

2016-12-17 00:00 483 查看
基本情况:

我的笔记本是双硬盘配置,一块是原装的750G的硬盘,另一块是闪迪120G固态硬盘,我现在的操作系统是 固态硬盘上面的 Ubuntu系统,750G的硬盘就成了存储设备挂载在 Ubuntu 上面。750G的普通硬盘的几个盘(原来是Windows系统,所有这几个盘是原先的配置)是以 NTFS 方式自动挂载在 Ubuntu上。说是自动挂载,但其实如果鼠标不点击盘符,就不会挂载,点击了才会挂载。

问题来由:

举个例子,我将 750G普通硬盘的 C 盘的 60G的文件,拷贝到 D 盘中,发现 速度稳定在 11M/s,这太慢了!要知道 windows 下硬盘之间的拷贝速度可是 几十上百兆每秒的。于是查资料说是因为 Linux对 ntfs 格式支持的问题,建议把盘改成 ext4格式。于是决定照做。因为没查到无损将NTFS 格式转化为 ext4的方法,所有我先备份资料,然后将 C 盘格式化为 ext4.

具体操作:

我是参考这个帖子 http://blog.csdn.net/nianhongmin/article/details/27818195 来操作的,这里就列出一些具体步骤,并加上其他的解释:

1, 切换到 root用户,终端下执行 fdisk -l



这里可以看到 固态硬盘是在 /dev/sda中,而且分成了三个部分。750G普通硬盘是在 /dev/sdb 中,分成了 6部分,sdb1,sdb2,sdb5,sdb6,sdb7,sdb8,其中 sdb1 是我原来的 C盘,70G左右,这里显示 sdb1 的 type 是 Linux LVM ,这是因为我已经见他改为了 ext4格式了,之前它也是 HPFS/NTFS/exFAT格式。sdb 2 是629.6G, W95 Ext'd(LBA)表示他是扩展分区,他是原先Windows系统的逻辑扩展分区。可以看出, sdb1 的 C盘 + sdb2 的扩展分区就 700+ G了,也差不多是我的 750 G的普通硬盘的容量了。下面的 sdb5,sdb6,sdb7,sdb8 是个加起来就是 sdb2 的容量了。这也正好印证了 sdb2 的确是扩展分区。至于为什么 sdb2 还能被检测到,我就不知道了,windows 分区表啥的,我不懂。(说的好像 Linux的分区表就懂一样。)

另外,这里的 sdb6 和 sdb 7都是 200 G,怎么区分了?还真不好区分,所以最好不要搞成一模一样的大小,就像现在这样,我们就不好区分了。但是,我们还是有很多办法,比如,你可以想 umount sdb6,看看谁被卸载了,就能区分了。还有一个更好的办法,就是 df -h,能够列出对应关系。



这里看到 sdb6 和 sdb 7 分别对应不同的 mount 目录,当然,他们的大小好像不完全一样。。。。。

2, #现在,要把/dev/sdb1 ,即C盘的NTFS格式转换成ext4格式,归linux使用。方法:
umount /dev/sdb1

#用fdisk转换分区格式,改为8e
fdisk /dev/sdb

#下面就是要用t命来修改下分区的id
Command (m for help): t
Partition number (1,2,5-8, default 8): 1 #这个是分区号 ,我们是修改 sdb1,就输入 1
Hex code (type L to list codes):8e # 8e是Linux LVM 的id,可以敲一个“L”查看一下,这样分区的格式就转换完啦。
Command (m for help): w # w 是保存

3, 格式化分区 并 挂载:
mkfs.ext4 /dev/sdb1

创建/media/lk/Win7目录:
mkdir /media/lk/Win7

挂载分区:
mount /dev/sdb1 /media/lk/Win7

到这一步,我们就已经完成了格式化了。但是重启之后又要重新挂载。所以下面是自动挂载。

4, 自动挂载是要修改 /etc/fstab 文件即可,下面是我修改之后的 fstab 文件

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=145a85c1-456c-42d2-bf34-59bf409b1487 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=f2ca1fa2-5f39-4c48-8c92-ea3595c6ab99 none swap sw 0 0

# 下面的 两行 是我添加的。
# Win7 was on /dev/sdb1
UUID=b5c08104-9ac5-4766-ba4a-9df2af51510f /media/lk/Win7 ext4 auto 0 2

#下面的方案也可行

#/dev/sdb1 /media/lk/Win7 ext4 auto 0 2

我们可以看到,需要 /dev/sdb1 的 UUID,这个哪里获得了?其实 /etc/fstab的 第三方已经说了,用 blkid 获得 设备的 uuid。这里如果不用 uuid,直接用 /dev/sdb1 也行,我这里跟 前面的记录保持一致。

关于 fstab 文件配置的讲解,可以参考 linux之fstab文件详解

(http://blog.csdn.net/richerg85/article/details/17917129),这里主要解释一下 auto 和 0 2 。

<options> - 挂载时使用的参数,注意有些mount 参数是特定文件系统才有的。
auto
表示 在启动时或键入了
mount -a
命令时自动挂载。

<dump> dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 <dump> 应设为 0。

<pass> fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。这里我设置为 2.

总结:

双硬盘中的 Windows系统盘,可以单独格式化某一个盘,而不需要把整个硬盘都格式化。

最后的效果,ext4 格式的盘的拷贝速度,从 11M/s 变成了 19M/s 。。。好吧,我承认是我的 硬盘的转速太低。。。反正我自己欺骗自己有了 80%的提速。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: