当前位置: 首页>>技术教程>>正文


如何从命令行创建和调整ext4分区?

, , , , ,

问题描述

分区(例如fdisk)用于从命令行分区额外硬盘驱动器的一些有用命令是什么?由于大多数出版的指南都指向GParted和其他图形工具,因此一些命令行序列的摘要会很有帮助。

TUNING – 保留空间,WRITE-BACK&访问时间如果驱动器100%已满,则如何删除预留的磁盘空间(默认情况下)。由于我是’data’的辅助驱动器,因此移除保留区域可确保整个驱动器可供使用。

我也很好奇write-through与write-back和跳过更新访问时间(在文件和目录上)以提高性能。

最佳解决办法

首要的是:

!警告 !!

这些命令是示例。删除分区,修改和格式化文件系统会破坏数据和/或可能会阻止您的计算机启动。进行备份。使用风险自负。试试你不介意丢失所有数据的机器。警告管理员。


要快速将驱动器设置为单个ext4分区……

  1. 查看”DISK”类的检测到的设备

    lshw -C disk
    
  2. 查看现有分区表

    fdisk -l
    
  3. 编辑所选设备的分区表(在本例中为”sdx”)fdisk /dev/sdx
    在FDISK中,按:

    • d …删除当前分区

    • n …创建一个新分区

    • p …将其指定为PRIMARY分区

    • 1 …将其设置为1ST主分区

    • w …写入更改。

  4. 显示新分区表:

    fdisk -l
    
  5. 将新分区的文件系统格式化为ext4类型

    mkfs -t ext4 /dev/sdx1
    
  6. 创建新驱动器将安装到的新目录:

    mkdir /storage
    mount /dev/sdx1 /storage
    

TUNING

  1. 删除保留块(即设置为0%),因为此驱动器仅用于用户数据

    tune2fs -m 0 /dev/sdx1
    
  2. 由于服务器在UPS上,因此设置write-back,因此应用程序不会等待实际的磁盘写入

    tune2fs -o journal_data_writeback /dev/sdx1
    
  3. 使用/etc/fstab在启动时挂载并设置write-back策略

    vi /etc/fstab
    
  4. fstab中查找(或添加)驱动器的相关行。 fstab中的参数由空格分隔,例如上面描述的驱动器可能显示为:/dev/sdx1 /storage ext4 relatime,errors=remount-ro 0 1

    • 第一个参数标识分区(通过/dev /或长UUID);

    • 第二个参数是分区将安装到的路径;

    • 第三是文件系统类型;

    • 第四个参数包含选项;

    • 第五是dump备份计划;和,

    • 第六个参数是pass-number(用于控制fsck顺序)。

将选项(第4个参数)更改为:

noatime,nodiratime,data=writeback,barrier=0,nobh,errors=remount-ro

重新启动以检查一切进展顺利。记住这些命令具有破坏性!有备份,小心!

次佳解决办法

使用parted

下面的说明是在parted(在Ubuntu 14.04.4 LTS x64上测试)的新硬盘上创建新的ext4分区。与fdisk不同,parted支持GUID Partition Table (GPT),随后可用于2TB以上的分区。

使用sudo lshw -C disk *-disk查看新硬盘的逻辑名称:

   description: ATA Disk
   product: ST6000NM0024-1HT
   vendor: Seagate
   physical id: 0.0.0
   bus info: scsi@1:0.0.0
   logical name: /dev/sdb
   version: SN05
   serial: Z4D30T30
   size: 5589GiB (6001GB)
   configuration: ansiversion=5 sectorsize=4096

逻辑名称为/dev/sdb。我们可以开始:

sudo parted /dev/sdb mklabel gpt # Creating the GUID Partition Table (GPT)

使用sudo parted /dev/sdb print,我们可以看到GPT已创建:

username@server:~$ sudo parted /dev/sdb print
Model: ATA ST6000NM0024-1HT (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

我们还需要知道磁盘的大小(我们将使用MB作为单位):

sudo parted /dev/sdb print unit MB print free

这表明:

Disk /dev/sdb: 6001175MB

我们现在可以创建主分区,以便占用整个硬盘空间。要设置分区标签:

sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB 

(如果您想知道我们使用--align optimal的原因,请参阅https://unix.stackexchange.com/a/49274/16704)

使用sudo parted /dev/sdb print,我们可以看到创建了主分区标签:

username@server:~$ sudo parted /dev/sdb print
Model: ATA ST6000NM0024-1HT (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  6001GB  6001GB  xfs          primary

然后我们需要使用mkfs来实际创建分区:

sudo mkfs.ext4 /dev/sdb1

现在创建了分区,我们需要安装它。为此,请使用sudo nano /etc/fstab并添加以下行(/crimea是我们选择安装新分区的文件夹):

/dev/sdb1       /crimea ext4 defaults   0       0      

我们创建文件夹并重新加载/etc/fstab

sudo mkdir /crimea
sudo mount -a # Remount /etc/fstab without rebooting in Linux

您可以使用df -h查看新安装的分区:

/dev/sdb1                      5.5T   58M  5.2T   1% /crimea

sudo nano /etc/fstab中,您可以使用UUID代替使用/dev/sdb1,您可以使用sudo lshw -C volume找到它:

*-volume
       description: EXT4 volume
       vendor: Linux
       physical id: 1
       bus info: scsi@1:0.0.0,1
       logical name: /dev/sdb1
       logical name: /crimea
       version: 1.0
       serial: c3559307-795b-66db-9844-8e974c88a1cf
       size: 200MiB
       capacity: 5589GiB
       capabilities: journaled extended_attributes huge_files dir_nlink extents ext4 ext2 initialized
       configuration: created=2016-06-24 14:56:55 filesystem=ext4 lastmountpoint=/boot modified=2016-07-01 17:15:55 mount.fstype=ext4 mount.options=rw,relatime,data=ordered mounted=2016-07-01 17:07:19 name=primary state=mounted

否则你可以简单地做sudo blkid /dev/sdb1

/dev/sdb1: UUID="c3559307-795b-66db-9844-8e974c88a1cf" TYPE="ext4"

新线/etc/fstab将是:

UUID=c3559307-795b-66db-9844-8e974c88a1cf          5.5T   58M  5.2T   1% /crimea

https://unix.stackexchange.com/a/137868/16704解释了为什么最好使用UUID(liquidat,cc by-sa 3.0):

The advantage of using the UUID is that it is independent from the actual device number the operating system gives your hard disk. Image you add another hard disk to the system, and for some reason the OS decides that your old disk is now sdb instead of sba. Your boot process would be screwed up if fstab would point to the device name. However, in case of the UUIDs, it would be fine.


摘要:

sudo lshw -C disk                # Checking the location of the new drive. It is /dev/sdb.     
sudo parted /dev/sdb mklabel gpt # Creating the GUID Partition Table (GPT)
sudo parted /dev/sdb print       # Checking that the GPT has been created
sudo parted /dev/sdb print unit MB print free # see 6001175MB size
sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB # Creating partition label
sudo mkfs.ext4 /dev/sdb1         # Creating the partition
sudo nano /etc/fstab             # Add line `/dev/sdb1 /crimea ext4 defaults 0 0`
sudo mount -a # Remount /etc/fstab without rebooting

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7013.html,未经允许,请勿转载。