LinuxでWindowsのスキャンディスクのような機能を利用するには

  • Windowsのスキャンディスクに近いのはfsck。fsckはファイルシステムのチェックと修復を行うコマンド。


    でGNOMEターミナルを起動し、

    sudo touch /forcefsck

    というコマンドを実行すると、/(ルートフォルダ)にforcefsckという名の空のファイルが作成される。そのままUbuntuを終了すると次にUbuntuをブートした時に、/etc/fstabに書かれているパーティションに対してfsckが実行される。

更新:2008/--/--

HDDの不良セクタ(不良ブロック)をチェックする

  • HDDは使用しているうちに不良セクタが発生し、ファイルが破損したりOSが不安定になる場合がある。不良セクタがあるかチェックするにはbadblocksコマンドを使用する。


    でGNOMEターミナルを起動し、

    df

    とコマンドを打つかもしくは

    sudo fdisk -l

    とコマンドを打ってデバイス名を確認する。UbuntuではHDDはsda、sda1、sdb、sdb5、sdc、sd(略)などの名前で識別される。

    sudo badblocks -vs -o bad.txt /dev/デバイス名

    とコマンドを打つと不良セクタのチェックが始まる(かなり時間がかかる。500GBで一時間以上)。-vオプションは詳細表示、-sオプションは進捗状況表示、-o ファイル名オプションは不良セクタ番号をファイルに出力する。このコマンドはマウント状態で実行可。

    -wオプションを付けるとファイルを破壊するので注意。また、その場合は必ずアンマウントしてから実行する。

    ※読み込みだけでなく書き込みモードでテストした方がバッドセクタの発見率は上がる。

    不良セクタが無かった場合、

    Pass completed, 0 bad blocks found.

    と出力されて終了する。不良セクタがあった場合、bad.txtに出力されるので、

    sudo umount /dev/デバイス名

    とコマンドを打ってそのHDDを一旦アンマウントし、

    sudo fsck -l bad.txt /dev/デバイス名

    とコマンドを打つことで、出力されたセクタ番号を使用しないように設定できる。

    不良セクタが大量にある場合はHDDの寿命が近づいているかもしれないので早急にバックアップを取った方がよい。また購入したばかりのHDDから大量の不良セクタが検出された場合は初期不良の可能性がある。

    ※フォーマットをし直すと不良セクタが消える場合もあるらしい。

    関連:Manpage of BADBLOCKS

更新:2010/02/09

HDDを増設する(GUI・Palimpsest ディスクユーティリティ編)

  • Palimpsest Disk UtilityはUbuntu 9.10から新たに追加されたHDD操作用のソフトウェア。今回は基本パーティションと論理パーティションを作成する。

    を起動してフォーマットしたいハードディスクドライブを選択し、サイズラベルを入力し(ラベルは無くてもOK)、タイプを選んで(Ext3が無難)Createボタンを押せばフォーマットが始まる(スクリーンショット1)。ファイルシステムの所有権を取得にチェックが入った状態でフォーマットすると、マウント時の所有者がフォーマットしたユーザとグループになる。

    拡張パーティションを作る場合、未使用領域を選択してタイプで拡張パーティションを選んでCreateボタンを押す(スクリーンショット2)。

    論理パーティションを作成する場合、先ほど作成した拡張パーティション以下の未使用領域を選択し、サイズラベルタイプを設定してCreateボタンを押す(スクリーンショット3)。

    フォーマット終了後、場所 > コンピュータから増設したHDDにアクセスすると/media以下にマウントされる。

    この方法でフォーマットした場合、フォーマット時に不良セクタをチェックしない(Windowsのクイックフォーマットに相当)ので、初期不良などが気になる場合はフォーマット後に手動でbadblocksコマンドを実行する。

    ※関連:HDDの不良セクタ(不良ブロック)をチェックする
    ※関連:パーティション - Wikipedia

更新:2009/12/15

HDDを増設する(GUI・GParted編)

  • まず、パソコンの電源を入れる前にパソコンのケースを開けてHDDを取り付ける。次にパソコンを起動し、普段使用しているユーザでログインする。

    を起動してgpartedを検索し、パーティション・エディタをダブルクリックしてインストールボタンを押す。

    を起動し、ツールバーの右にあるメニューをクリックして増設したHDDに変更(スクリーンショット1)。未アロケートとなっている行を右クリックして新規を選択、パーティションテーブルを作成する。再度右クリックして新規を選択、新しいサイズ(メビバイト)で容量を決め、種類をプライマリパーティションに、ファイルシステムをext3に、Labelに適当な文字列を入力して追加ボタンを押す(スクリーンショット2)。プライマリパーティションは最大で4個までしか作成できないらしいので注意。

    を選択するとフォーマットが始まる(スクリーンショット3)。

    フォーマット終了後、場所 > コンピュータから増設したHDDにアクセスするとマウントされる。

    起動時に自動的にマウントするようにするには/etc/fstabを編集する必要がある。その場合PySDMを使用すればGUIでfstabを編集することが可能らしい。

    関連:fstabをGUIで編集・設定できる「PySDM」

    パーティション・エディタでフォーマットした場合、フォーマット時に不良セクタをチェックしないので、初期不良などが気になる場合はフォーマット後に手動でbadblocksコマンドを実行する(関連:HDDの不良セクタ(不良ブロック)をチェックする)。

    ※関連:パーティション - Wikipedia

更新:2008/--/--

GPartedでフォーマットしたHDDに書き込めるようにする

  • GPartedでハードディスクドライブをフォーマットした場合、デフォルトでは管理者権限が無いと書き込みできないようになっている。そのままでは色々と面倒なので一般ユーザでも書き込みできるように設定を変更する。

    でGNOMEターミナルを起動して、dfコマンドを実行するなどしてデバイス名とマウント先を確認。

    sudo chown ユーザ名 /media/マウント先

    とGNOMEターミナルで実行してマウント先の所有者をrootからユーザに変更すればOK。再度接続し直しても設定は保持される。全てのユーザで書き込み可能にしたい場合はchmodコマンドを使う。

    sudo chmod 777 /media/マウント先

更新:2009/10/13

内蔵HDDを増設する(CUI・ext3形式・単一のパーティションでフォーマット)

  • まず、パソコンの電源を入れる前にパソコンのケースを開けてHDDを取り付ける。次にパソコンを起動し、普段使用しているユーザでログインする。


    でGNOMEターミナルを起動し、

    sudo fdisk -l

    とコマンドを実行すると、HDDの情報が表示される。/dev/sd*(*は環境によって変わる。例えば増設したHDDが2台目のHDDならsdb)と認識されるので、どれが増設したHDDか確認した上で以下のコマンドを実行してフォーマットする。

    sudo mkfs.ext3 -c /dev/デバイス名

    -cオプションをつけると不良セクタのチェックを行い、不良セクタを発見した場合はそのセクタを使用しないようにする。-cオプションを付けるとHDDの容量によってはかなり時間がかかるので注意。

    フォーマットが終わったらfsckのタイミングを変更する。HDDの容量によって異なるが、大抵の場合30回前後マウントするとUbuntu起動時に自動的にfsckが実行されるよう設定されているのでターミナルで、

    sudo tune2fs -c 1024 /dev/デバイス名

    と実行してチェック回数を1024に、

    sudo tune2fs -i 0 /dev/デバイス名

    と実行してチェック期間を0にする。なおtune2fsはHDDをマウントしている状態で実行するとファイルシステムを破損する可能性があるそうなのでかならずアンマウント状態で実行する。

    次に、パソコンを起動した時に自動的にマウントされるように設定する。ターミナルで、

    sudo blkid /dev/sd*

    と実行してHDDのUUIDを確認、

    sudo mkdir /mnt/フォルダ名

    と実行して/mnt以下にフォルダを作成し、

    sudo leafpad /etc/fstab

    と実行してfstabをテキストエディタで開き、末尾に
    UUID=先ほど確認した文字列	/mnt/フォルダ名	ext3	defaults	0	2
    
    と書いて保存。0とか2とかの数字の意味は@ITの記事を読むと分かる。後はターミナルで、

    sudo mount -a

    とコマンドを実行すれば増設したHDDがマウントされる。

    そのままだと書き込みできないのでアクセス権を変更する。ターミナルで

    sudo chmod 777 /mnt/フォルダ名

    と実行して先ほど作成したフォルダに誰でも読み書きできるようにする。

    ※関連:パーティション - Wikipedia

更新:2008/--/--

HDDのボリュームラベルを変更する(GUI・Palimpsest ディスクユーティリティ編)

  • を起動して変更したいハードディスクドライブを選択し、ラベルの欄に任意の文字列を入力して変更ボタンを押せばOK(スクリーンショット)。マウント状態でも可能。

更新:2009/12/15

HDDにボリュームラベルを付ける(CUI・USB外付け編)

  • Linuxで外付けハードディスクドライブをext3などの形式でフォーマットした場合、デフォルトでは/media/disk/media/disk-1などにマウントされ、デバイス数によってマウント先が変わるようになっている。そのままだと不便な場合もあるので、毎回同じフォルダにマウントされるように設定を変更する。

    まず外付けHDDをパソコンに接続し、マウントされたら、


    でGNOMEターミナルを起動して、dfコマンドを実行するなどしてデバイス名とマウント先を確認。

    sudo e2label /dev/デバイス名 ラベル名

    とGNOMEターミナルで実行し、デスクトップのアイコンを右クリックしてアンマウントしてから、外付けHDDを接続し直すと、/media/ラベル名に外付けHDDがマウントされるようになる。

    e2labelコマンドは外付けHDDをマウントした状態でも実行可能。ラベル名には日本語も使用可能。

    参考:ボリュームラベルでUSBハードディスクの管理を効率化するには

更新:2008/--/--

/(ルートパーティション)が割り当てられたHDDのfsckの間隔を変更する

  • ファイルシステムがext3の場合、UbuntuはHDDを数十回マウントする(電源をいれてUbuntuを起動する)と、自動的に起動時にfsckを実行するようになっている。デスクトップPCとして使っている場合すぐにその上限に達して頻繁にfsckが行われることになるので、その間隔を変更する。まずパソコンを起動し、OS選択画面でUbuntuをrecovery modeで起動する(GUIが立ち上がらず、真っ黒なコンソール画面のまま起動する)。するとrootで起動するので、

    init 1

    とコマンドを打ってシングルユーザモードになり、

    mount -o remount -rn /

    のコマンドで、/をリードオンリーで再マウントする。

    df

    で/が割り当てられたHDDを確認し、

    tune2fs -c 1024 /dev/デバイス名

    とコマンドを打って、fsckまでのマウント回数の上限を1024に、

    tune2fs -i 0 /dev/デバイス名

    とコマンドを打ってfsckまでの期間を0にする。後は、

    reboot

    コマンドでパソコンを再起動する。

更新:2008/--/--

外付けHDDのfsckの間隔を変更する

  • ファイルシステムがext3の場合、Ubuntuはハードディスクドライブを数十回マウントする(外付けHDDの電源をいれてUbuntu PCに接続する)と、自動的にfsckを実行する。デスクトップPCとして使っている場合すぐにその上限に達して頻繁にfsckが行われることになるので、その間隔を変更する。

    まず外付けHDDを接続する。自動的にマウントされてデスクトップにアイコンが表示されたら、アイコンを右クリックしてデバイス名を確認(ウチでは/dev/sdcとなっていた)。もう一度アイコンを右クリックしてアンマウント。次にGNOMEターミナルを起動して、

    sudo tune2fs -l /dev/デバイス名

    とコマンドを打って外付けHDDの詳細を確認し、

    sudo tune2fs -c 1024 /dev/デバイス名

    とコマンドを打って、fsckまでのマウント回数の上限を1024に、

    sudo tune2fs -i 0 /dev/デバイス名

    とコマンドを打ってfsckまでの期間を0にする。

更新:2008/--/--

fsckのログが保存されている場所は?

  • 432 :login:Penguin [sage] :2008/05/06(火) 15:04:19 ID:2IxhUcvZ
    質問!
    ext3 を使っています。
    マウント回数がある一定回数を超えると起動時に fsck が
    かかります。このような起動時の fsck の結果はどこかに
    残るのでしょうか? /var/log はチェック対象のディスクだし、
    そもそも起動時の fsck が走っているときにはまだマウント
    される前ですよね?
    
    434 :login:Penguin [sage] :2008/05/06(火) 15:48:20 ID:qFHhQRZS
    >>432
    自分のは/var/log/fsckの中に2個ファイルがあってそれがログになってましたよ。
    /のFSCKの結果とそれ以外のパーティーション。
    

内蔵HDDの温度をチェックする

    内蔵HDDの温度を確認するには、hddtempコマンドを使用する。


    でhddtempで検索すれば見つかる。CUIでインストールする場合、


    でGNOMEターミナルを起動して、

    sudo apt-get install hddtemp

    と実行すればインストールできる。

    インストール時に設定に関していくつか聞かれる。それらは、

    sudo dpkg-reconfigure hddtemp

    というコマンドで再設定が可能。

    ※ウチの環境ではインストール時の設定中に何故か設定ウィンドウがクラッシュしたため上記コマンドで設定し直した。

    使い方は、GNOME端末で

    sudo hddtemp /dev/sd?

    と実行すればOK。全てのHDDの温度が以下のように表示される。
    /dev/sda: ST3250310AS: 40°C
    /dev/sdb: WDC WD5000AACS-00ZUB0: 35°C
    
    ※sguidをセットしている場合はsudoは必要なし
    ※?はワイルドカード

    設定でチェック間のインターバルを有効にし、起動時にhddtempデーモンを開始するようにした場合、GUIでHDDの温度を監視できる。


    でhardware sensor monitorをインストール(CUIでは

    sudo apt-get install sensors-applet

    でインストール)し、パネルを右クリックして、パネルへ追加を選択、hardware sensor monitorを追加すればOK。

    ※インターバルやデーモンを有効にしておくとGkrellMでもHDDの温度を取得できるようになるらしい

    参考:ubuntuでHDDの温度を計る。

更新:2008/--/--

内蔵HDDの温度をチェックする(Palimpsest ディスク・ユーティリティ編)

  • を起動し、HDDの詳細情報をクリック(スクリーンショット)するとHDDの温度だけでなく、型番・ファームウェアバージョン・駆動日数・バッドセクタ数、などをチェックできる(スクリーンショット)。

    ちなみにUSB外付けHDDのS.M.A.R.T.も取得できるのだが、対応しているのは一部の製品だけらしい。例えばWD5000AAKS+ガチャポンパッ! OWL-EGP35/EUの組み合わせだとOKだが、WD5000AACS+シンプルBOX CSS35U2HDT722525DLAT80+GW3.5AI-U2/VBといった組み合わせだとNGだった(これらの組み合わせでもWindowsではCrystalDiskInfoを使えばS.M.A.R.T.値を得られる)。

    ※その後のアップデートでこの機能は排除されたっぽい

更新:2010/04/04

ファイル名/フォルダ名の文字数の上限 + 最大パス名長

  • ext3・ext4・XFS 255バイト Linux系OSのファイルシステム
    UFS 255バイト UNIX系OSのファイルシステム
    NTFS 255文字 Windowsのファイルシステム
    HFS+ 255文字 MacOS Xのファイルシステム

    255バイトというと日本語だけでおよそ80文字強。

    参考:NTFS,ext3,ReiserFSのファイル名の長さの話
    参考:ext3 - Wikipedia
    参考:ext4 - Wikipedia
    参考:XFS - Wikipedia
    参考:HFS Plus - Wikipedia

    また、最大パス長は以下のようになっている。

    ext3・ext4・XFS 4096バイト Ubuntu 9.10での場合
    UFS 不明 POSIXの規定では「NULL終端で1024バイト」
    NTFS Unicodeで32767文字 対応していないアプリもあるらしい
    HFS+ 無制限 ただしDarwinの制限で1024文字を限界としている部分がある

    参考:ファイルシステム - Wikipedia

更新:2010年4月10日

一つのHDD内(ファイルシステム内)に保存できる最大ファイル数はどれぐらいなのか

  • 現在Linuxでよく使用されていると思われるext3の場合、Wikipediaのext3のページには、最大ファイル数は『指定による』と書かれている。ext3で作成できるファイル数はiノードに依存するが、iノードはHDDの容量やフォーマット時のオプションによって変化するのでそう書いてあるのだと思われる。試しにGNOMEターミナルで、

    df -i

    とコマンドを打って、ext3でフォーマットした500GBのハードディスクドライブのiノード数をチェックしてみると、61,063,168となっていた。

    また、同じくLinuxで使用されているファイルシステムであるXFSとJFSは、iノードを動的に割り当てるためファイル数の上限を気にする必要がないらしい。

    ちなみにWindowsのNTFSは4,294,967,295、MacOS XのHFS+は約21億のファイルを保存できるとのこと。

    参考:XFSが扱える最大ファイル数
    参考:NT File System - Wikipedia
    参考:HFS Plus - Wikipedia
    参考:http://www.totsu.co.jp/metasan/faq.html

更新:2008/--/--

一つのフォルダ内に保存できるファイル・フォルダ数の上限はいくつなのか

更新:2008/--/--

フラグメンテーションが起きやすい状況は?(ext2/3の場合)

    461 :login:Penguin [sage] :2008/08/03(日) 07:45:50 ID:99giCKv0
    Q.ext2/3ファイルシステムはどのような状況下でフラグメンテーションが起きやすいか?
    A1.ファイル「同時書き込み」時
    A2.空き容量が比較的少ない状況で巨大なファイルが書き込まれる
    
    Q.それはどのような条件が考えられるか?
    A1.同時アクセス数、及び負荷の高いファイルサーバー、又はDB
    A2.動画ファイル等巨大なファイルを取り扱う環境
    
    Q1.同時アクセス数、及び負荷の高いディスクは最適化を積極的に行った方がいいか?
    A1.ext2/3ファイルシステムのブロック配置アルゴリズムに準拠したツールなら、
    定期メンテナンス時に使用するのもいいかも知れない
    しかし大概触らない方がよい
    
    Q2.動画ファイル等巨大なファイルを取り扱う環境ではどうか?
    A2.動画ファイル等は専用の異なったボリュームで扱えば全体への影響を回避できる
    
    これで満足かな?
    
    仮想マシン(VMWareとかね)なんかも結構断片化するらしいのでパーティション分けた方が無難か。

Ubuntuでのデフラグに関して

    Linuxにデフラグが無い理由というページによると、Linuxで一般的に使用されているファイルシステムは、Windowsのそれと違ってフラグメンテーションが発生しにくいようになっているらしい。独立行政法人 情報処理推進機構のレポート(pdf注意)のような報告例もあるが、デスクトップ用途の場合はそこまで気にしなくていいのではないかと思われる。

    2008年の時点でよく使用されているLinuxファイルシステムは、ext3・ReiserFS・JFS・XFS、辺りだと思われるが、デフラグツールが存在するのはXFSだけなので、デフラグを必要とする可能性がある場合はHDDをXFSでフォーマットしておく。

    関連:Ubuntu日本語フォーラム / デフラグはできますか?
    関連:Linux でハードディスクをデフラグ(XFS)

更新:2008/--/--

戻る
更新:2010年4月10日
作成:2009年10月10日