市販の外付けHDDのファイルシステムを変更したい場合、容量が2TB以下であれば従来通りにfdiskというコマンドが使えますが、2TB以上の場合は、partedというコマンドを使用する必要があります。
以下では、I・Oデータ社製HDJA-UTRWシリーズの8TBの外付けHDDのファイルシステムを、Linuxマシン(OS: AlmaLinux 8)上でLinuxファイルシステム(ext4)に変更する場合の手順の覚え書きを紹介します。rootでログインして作業を行ってください。
LinuxマシンへのGMTのインストール
rsyncコマンドを使ったファイル転送(ファイル同期)
外付けHDDのファイルシステムをLinuxマシンで変更する方法
はじめに
パーティションの初期化
su -でログインする。
外付けHDDをマシンに接続したあと、df -hでマウントされているか確認する。
次に、mklabelでラベル(パーティションの管理方式)をGPT(GUID Partition Table)に設定する。
外付けHDDをマシンに接続したあと、df -hでマウントされているか確認する。
parted -lでパーティションの初期状態を確認する。[root@xxx user_name]#df -hFilesystem Size Used Avail Use% Mounted on /dev/sda3 923G 30G 894G 4% / devtmpfs 47G 0 47G 0% /dev tmpfs 47G 33M 47G 1% /dev/shm tmpfs 47G 27M 47G 1% /run tmpfs 47G 0 47G 0% /sys/fs/cgroup /dev/sdc 9.1T 282M 9.1T 1% /home /dev/sda1 485M 196M 290M 41% /boot tmpfs 9.3G 40K 9.3G 1% /run/user/1002 /dev/sdd 7.3T 319M 7.3T 1% /run/media/yoshida/HDJA-UT (←ここ)
「File system」が「ntfs」であることに注意。[root@xxx user_name]#parted -l…(マシンに付いている他のディスクの情報が長々と表示された後、最後に) Model: I-O DATA HDJA-UT (scsi) Disk /dev/sdd: 8002GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 17.4kB 134MB 134MB Microsoft reserved partition msftres 2 135MB 8002GB 8001GBntfsBasic data partition msftdata
次に、mklabelでラベル(パーティションの管理方式)をGPT(GUID Partition Table)に設定する。
[root@xxx user_name]#parted /dev/sddGNU Parted 3.1 Using /dev/sdd Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)mklabel gptWarning: Partition(s) on /dev/sdd are being used. Ignore/Cancel?I(←警告が出るが無視) Warning: The existing disk label on /dev/sdd will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No?YError: Partition(s) 2 on /dev/sdd have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes. Ignore/Cancel?I(←警告が出るが無視) (parted)qInformation: You may need to update /etc/fstab.
新しいパーティションの作成
もう一度partedコマンドを実行。parted -lで、パーティションのサイズや名前が合っているか確認する。この時点では、まだext4でフォーマットされていないので「ファイルシステム」には何も表示されない。[root@xxx user_name]#parted /dev/sddGNU Parted 3.2 Using /dev/sdd Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)mkpartPartition name? []?primary(←名前は何でも良い) File system type? [ext2]?ext4Start?0%End?100%Error: Error informing the kernel about modifications to partition /dev/sdd1 -- Device or resource busy. This means Linux won't know about any changes you made to /dev/sdd1 until you reboot -- so you shouldn't mount it or use it in any way before rebooting. Ignore/Cancel?I(←警告が出るが無視) Error: Partition(s) 2 on /dev/sdd have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes. Ignore/Cancel?I(←警告が出るが無視) (parted)qInformation: You may need to update /etc/fstab.
「File system」が空白になっていればOK。[root@xxx user_name]#parted -l…(マシンに付いている他のディスクの情報が長々と表示された後、最後に) Model: I-O DATA HDJA-UT (scsi) Disk /dev/sdd: 8002GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 17.4kB 134MB 134MB Microsoft reserved partition msftres 2 135MB 8002GB 8001GB Basic data partition msftdata
フォーマット
ext4でフォーマットを開始しようとするが…、
以上のように表示されて、マウントしたままではフォーマットできないので、一旦外付けHDDをアンマウントする。[root@xxx user_name]#mkfs -t ext4 /dev/sdd/dev/sdd is entire device, not just one partition! Proceed anyway? (y,n)y/dev/sdd is apparently in use by the system; will not make a filesystem here!
df -hでアンマウントされているか確認する。[root@xxx user_name]#umount /run/media/user_name/HDJA-UT
外付けHDDをマシンから外した後、再び外付けHDDをマシンに接続し、parted -lでパーティションを確認する。[root@xxx user_name]$df -hFilesystem Size Used Avail Use% Mounted on /dev/sda3 923G 30G 894G 4% / devtmpfs 47G 0 47G 0% /dev tmpfs 47G 96M 47G 1% /dev/shm tmpfs 47G 27M 47G 1% /run tmpfs 47G 0 47G 0% /sys/fs/cgroup /dev/sdc 9.1T 281M 9.1T 1% /home /dev/sda1 485M 196M 290M 41% /boot tmpfs 9.3G 40K 9.3G 1% /run/user/1002
もう一度、ext4でフォーマットの開始を試みる。[root@xxx user_name]#parted -l…(マシンに付いている他のディスクの情報が長々と表示された後、最後に) Model: I-O DATA HDJA-UT (scsi) Disk /dev/sdd: 8002GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 17.4kB 134MB 134MB Microsoft reserved partition msftres 2 135MB 8002GB 8001GB Basic data partition msftdata
「done」が出ればフォーマットは成功。parted -lでパーティションを確認する。[root@xxx user_name]#mkfs -t ext4 /dev/sddmke2fs 1.42.9 (28-Dec-2013) /dev/sdd is entire device, not just one partition! Proceed anyway? (y,n)yFilesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 244191232 inodes, 1953506646 blocks 97675332 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4102029312 59617 block groups 32768 blocks per group, 32768 fragments per group 4096 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544, 1934917632 Allocating group tables:doneWriting inode tables:doneCreating journal (32768 blocks):doneWriting superblocks and filesystem accounting information:done
[root@xxx user_name]#parted -l…(マシンに付いている他のディスクの情報が長々と表示された後、最後に) Model: I-O DATA HDJA-UT (scsi) Disk /dev/sdd: 8002GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 17.4kB 134MB 134MB Microsoft reserved partition msftres 2 135MB 8002GB 8001GBext4Basic data partition msftdata
マウント
次に、自分のアカウント(user_name)のhome領域に作成したディレクトリ(newhdd)に、外付けHDDをマウントする。
df -hできちんとマウントされているか確認する。[root@xxx user_name]#mkdir newhdd[root@xxx user_name]#mount /dev/sdd /home/user_name/newhdd
newhddに入って、「lost+found」以外、ディレクトリの中に何もファイルがないことを確認する。[root@xxx user_name]#df -hFilesystem Size Used Avail Use% Mounted on /dev/sda3 923G 30G 894G 4% / devtmpfs 47G 0 47G 0% /dev tmpfs 47G 96M 47G 1% /dev/shm tmpfs 47G 27M 47G 1% /run tmpfs 47G 0 47G 0% /sys/fs/cgroup /dev/sdc 9.1T 282M 9.1T 1% /home /dev/sda1 485M 196M 290M 41% /boot tmpfs 9.3G 40K 9.3G 1% /run/user/1002 /dev/sdd 7.3T 93M 6.9T 1% /home/user_name/newhdd
引き続き、マウントした外付けHDDにデータを書き込みたいときは、そのまま作業をすすめる。その際、newhddに書き込みの許可を与える。[root@xxx user_name]#cd newhdd[root@xxx newhdd]#ls. .. lost+found
データを書き込まず一旦アンマウントして、外付けHDDを外したい場合は、newhddから出てアンマウントする。[root@xxx user_name]#chmod a+w newhdd
以上で終了。[root@xxx newhdd]#umount /home/user_name/newhddumount: /home/yoshida/newhdd: target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) [root@xxx newhdd]#cd ..[root@xxx user_name]#umount /home/user_name/newhdd
LinuxマシンへのGMTのインストール
はじめに
Linuxコンピューターに、地球科学で広く使われる作図ソフトである「Generic Mapping Tools (GMT)」をインストールする際の覚え書きです。
以下は、Rocky Linux 8(CentOS 8のサポート終了を受けて誕生した、Red Hat Enterprise Linux (RHEL)と完全互換性を持つオープンソースのディストリビューション)にGMTをインストールした例です。
以下は、Rocky Linux 8(CentOS 8のサポート終了を受けて誕生した、Red Hat Enterprise Linux (RHEL)と完全互換性を持つオープンソースのディストリビューション)にGMTをインストールした例です。
NetCDFとGDALのインストール
GMTをインストールする前に、NetCDFとGDALをインストールする必要があります。rootでログインし、以下のコマンドを実行します。
[root@xxx gmt]# sudo dnf install netcdf netcdf-devel netcdf-cxx netcdf-cxx-devel netcdf-fortran netcdf-fortran-devel [root@xxx gmt]# sudo dnf install gdal gdal-devel
GMTと付属データの最新バージョンの確認
次に、GMTと付属データ(GSHHGとDCW)の最新バージョンをこちらのサイトで確認します。2025年2月上旬の段階では、GMT 6.5.0、GSHHG 2.3.7、DCW 2.2.0が最新バージョンです。
GMTのインストール
次に、GMTをインストールします。ここでは、/usr/local/gmtというディレクトリを作成して、ここにインストールするとします。
/usr/local/gmtに以下のスクリプトファイルを作成します。ファイル名はgmt_instal_gmt-6.5.0.shとします。
なお、上記のスクリプトはこちらのページを参考にさせていただきました。
次に、以下のように実行します。
/usr/local/gmtに以下のスクリプトファイルを作成します。ファイル名はgmt_instal_gmt-6.5.0.shとします。
GMT、GSHHG、DCWのバージョンは最新のものに書き換えてください。#!/bin/bash sudo apt update sudo apt upgrade -y # 依存するパッケージをインストール sudo apt install -y build-essential cmake libcurl4-gnutls-dev libnetcdf-dev gdal-bin libgdal-dev libfftw3-dev \ libpcre3-dev liblapack-dev libblas-dev libglib2.0-dev ghostscript graphicsmagick ffmpeg xdg-utils # GMT6のインストール GMT_VERSION="6.5.0" GSHHG_VERSION="2.3.7" DCW_VERSION="2.2.0" # --- #cd /home/$USER cd /usr/local/gmt rm -f gmt-${GMT_VERSION}-src.tar.gz gshhg-gmt-${GSHHG_VERSION}.tar.gz dcw-gmt-${DCW_VERSION}.tar.gz rm -rf gmt-${GMT_VERSION} gshhg-gmt-${GSHHG_VERSION} dcw-gmt-${DCW_VERSION} wget "https://github.com/GenericMappingTools/gmt/releases/download/${GMT_VERSION}/gmt-${GMT_VERSION}-src.tar.gz" wget "https://github.com/GenericMappingTools/gshhg-gmt/releases/download/${GSHHG_VERSION}/gshhg-gmt-${GSHHG_VERSION}.tar.gz" wget "https://github.com/GenericMappingTools/dcw-gmt/releases/download/${DCW_VERSION}/dcw-gmt-${DCW_VERSION}.tar.gz" # --- tar xzvf gmt-${GMT_VERSION}-src.tar.gz tar xzvf gshhg-gmt-${GSHHG_VERSION}.tar.gz tar xzvf dcw-gmt-${DCW_VERSION}.tar.gz # --- #GSHHG_ROOT=/home/$USER/gshhg-gmt-${GSHHG_VERSION} #DCW_ROOT=/home/$USER/dcw-gmt-${DCW_VERSION} GSHHG_ROOT=/usr/local/gmt/gshhg-gmt-${GSHHG_VERSION} DCW_ROOT=/usr/local/gmt/dcw-gmt-${DCW_VERSION} # --- cd gmt-${GMT_VERSION} cat ./cmake/ConfigUserTemplate.cmake | \ sed -e 's%\#set (GSHHG_ROOT "gshhg_path"%'"set (GSHHG_ROOT ${GSHHG_ROOT}"'%g' | \ sed -e 's/\#set (COPY_GSHHG FALSE)/set (COPY_GSHHG TRUE)/g' | \ sed -e 's%\#set (DCW_ROOT "dcw-gmt_path"%'"set (DCW_ROOT ${DCW_ROOT}"'%g' | \ sed -e 's/\#set (COPY_DCW FALSE)/set (COPY_DCW TRUE)/g' \ > ./cmake/ConfigUser.cmake mkdir build cd build sudo cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=RelWithDebInfo .. sudo make -j4 sudo make -j4 install
なお、上記のスクリプトはこちらのページを参考にさせていただきました。
次に、以下のように実行します。
すると、インストール作業が進みます。[root@xxx gmt]# ./gmt_instal_gmt-6.5.0.sh
GMTがインストールされたかどうかの確認
無事にインストールできたかどうかは以下のコマンドで確認できます。
または、例えば、以下のようにすると、psxyの説明がつらつらと表示されます。[root@xxx ~]$ gmt --version 6.5.0
[root@xxx ~]$ gmt psxy
rsyncコマンドを使ったファイル転送(ファイル同期)
自分の計算機のアカウント@ドメインをuser@zibun.ac.jp、相手の計算機のアカウント@ドメインをuser@aite.ac.jpとする。
相手の計算機上から、自分の計算機の/home/user/dir/にデータ転送する場合
自分の計算機上で、相手の計算機の/home/user/dirのディレクトリを丸ごとデータ転送する場合
相手の計算機上から、自分の計算機の/home/user/dir/にデータ転送する場合
rsync -avuh --progress [移したいディレクトリ名もしくはファイル名の絶対パス] user@zibun.ac.jp:/home/user/dirワイルドカード*でディレクトリ名(例えば、dir0、dir1、dir2、…)を指定する場合、dir*とし、dir*/のようにスラッシュを付けないこと。
自分の計算機上で、相手の計算機の/home/user/dirのディレクトリを丸ごとデータ転送する場合
rsync -avuh --progress user@aite.ac.jp:/home/user/dir .自分の計算機上で、相手の計算機の/home/user/dir/にあるファイル(file)をデータ転送する場合
rsync -avuh --progress user@aite.ac.jp:/home/user/dir/file .
- zオプション(圧縮転送)は多くの場合で高速化に寄与する場合が多いが、元から圧縮しているものに対しては、逆に遅くなるとの報告もある。実際のアウトプットファイルで効果を見積もると良い。
- --progress オプションもscpライクに転送経過を表示するので利用しやすい。
- rsyncには多くのオプションがあり、複雑なことを実施させようとした場合、予期せぬ挙動となる場合があるので注意。