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


41

分区(例如fdisk
,从命令行对其他硬盘驱动器进行分区时会使用哪些有用的命令?由于大多数已发布的指南都转向GParted和其他图形实用程序,因此某些命令行序列的摘要将很有帮助。

调整 -保留的空间,回写和访问时间
在驱动器100%满的情况下,如何删除预留的保留磁盘空间(默认情况下)。由于我是仅用于“数据”的辅助驱动器,因此删除保留区域可确保整个驱动器可供使用。

我也对直写与写回以及跳过访问时间(在文件和目录上)的更新以提高性能感到好奇。

Answers:


64

首先,最重要的是:

!! 警告 !!

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


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

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

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

    fdisk -l
    
  3. 编辑我选择的设备的分区表(在本例中为“ sdx”)

    fdisk /dev/sdx
    

    在FDISK中,按:

    • d......到d elete当前分区

    • n...创建一个ñ EW分区

    • p...将其指定为P RIMARY分区

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

    • w......到W¯¯仪式的变化。

  4. 显示新的分区表:

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

    mkfs -t ext4 /dev/sdx1
    
  6. 创建一个新目录,新驱动器将安装到该目录中:

    mkdir /storage
    mount /dev/sdx1 /storage
    

调音

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

    tune2fs -m 0 /dev/sdx1
    
  2. 由于服务器位于UPS上,请设置回写,以便应用程序无需等待实际的磁盘写入

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

    vi /etc/fstab
    
  4. 查找(或添加)fstab驱动器的相关行。fstab中的参数用空格隔开,例如,上述驱动器可能显示为:

    /dev/sdx1 /storage ext4 relatime,errors=remount-ro 0 1
    
    • 第一个参数标识分区(通过/ dev /或长UUID);
    • 第二个参数是分区将安装到的路径;
    • 第三是文件系统类型;
    • 第四个参数包含选项;
    • 第五是dump备份时间表。和,
    • 第六个参数是通过号(用于控制fsck顺序)。

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

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

重新启动以检查一切是否正常。
请记住,这些命令具有破坏性!请备份并小心!


3
在storage和ext4之间应该有一个空格。所以命令就像/ dev / sdx1 / storage ext4 relatime,errors = remount-ro 0 1
Ganesh Krishnan

很棒的向导!很高兴在这里有一些有关如何确定适当的fstab选项的参考(只要链接到一些列表就可以了)
Sander

13

使用 parted

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

使用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 

(如果您想知道我们为什么使用,请参见https://unix.stackexchange.com/a/49274/16704--align optimal

使用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/dev/sdb1您可以使用而不是使用UUID,使用以下命令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):

使用UUID的优点是,它与操作系统为您的硬盘提供的实际设备号无关。您将映像添加到系统的另一个硬盘,由于某种原因,操作系统决定您的旧磁盘现在sdb不是sba。如果fstab指向设备名称,则启动过程将会搞砸。但是,如果是UUID,那就可以了。


摘要:

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

而不是OS告诉末MB sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB倒不如把ext4 0% 100%避免警告:导致分区无法正常获得最佳性能一致。
Pablo Marin-Garcia '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.