LINUX.ORG.RU

Проблема с кодировкой имен файлов в ntfs; зарезервированное пр-во в ext3


0

2

Всем привет. Не был уверен, в какой раздел форума лучше написать, т.к. проблема своеобразная. Надеюсь, всё правильно.

Дело в том, что у меня роутер Asus RT-N56U (прошивка которого, насколько мне известно, линуксообразная) как-то странно кодирует кириллические имена файлов на подключенном к нему по USB HDD с файловой системой NTFS, что когда подключаешь потом этот диск к компьютеру с виндой, вместо имен файлов - закорючки вида «ÐžÐ±Ð»Ð°Ñ‡Ð½Ð¾, с прояснениями.mkv». То ли роутер кодирует в UTF-8, а Винда читает в ISO 8859-1, то ли наоборот... В любом случае, онлайн-декодер текста показал мне, что нестыковка именно между этими кодировками. Но это ещё не самое страшное. Т.к. по сетевому подключению огромную фильмотеку закидывать было бы страшно долго, естетственно я сначала загрузил все эти файлы на диск, воткнув его в компьютер (Win7x64). И когда подключил после этого HDD к роутеру и зашел на хранилище через Сетевое окружение, обнаружил, что папки с кириллическими именами отображаются с пустыми названиями и при клике на них не открываются, а как бы «обновляют страницу», т.е. открывается то же самое окно, хотя в строке адреса (пути) добавляется еще одно звено. С русскоимёнными файлами та же беда, только у них не пустые имена, а гораздо ужаснее :) Вместо этих файлов отображаются клоны папки, в которой они лежат, при клике на них - точно так же зацикливается, как и с русскоимёнными папками.

Собственно, подробное описание ситуации я уже привёл на форуме Асуса, но там пока молчат, как и в техподдержке. Надеюсь, вы найдете в себе силы прочитать мое сообщение :) Там и скриншоты есть. http://forum.asus.ru/viewtopic.php?f=4&t=73163&start=60#p342068

В общем, столкнувшись с такой странной NTFS-проблемой, я решил попробовать переформатировать диск в ext3 (Роутер-то на линуксе). И тут возникла новая проблема, собственно, почему я и пришёл к вам, на Linux-форум:

Т.к. полноценного Линукса у меня нет, а только Windows, погуглил - везде говорили, вроде, что самый простой способ - загрузиться с какого-нибудь линуксовского LiveCD и форматнуть там. Ок. Записал Gparted LiveCD (на базе Debian Linux), загрузился. Несмотря на то, что до этого линукс практически никогда в глаза не видел, рискнул, форматнул. Вроде всё прошло успешно...

Вот только после форматирования на диске пропало (оказалось занято) почти 30 Гб (а при повторных попытках, в т.ч. и через Acronis Disk Director, - ещё больше)! И хотя сам диск на 2 Тб (точнее 1,81), всё равно 30 Гб - это слишком жирно (

Как я понял, ext3 резервирует определенный объем (5%, вроде) под свои нужды или еще хз под что. Как мне отвоевать у нее эти украденные гигабайты??

Вроде бы это довольно просто сделать при помощи инструмента tune2fs... в Gparted LiveCD он работал. Я вбил в терминал sudo tune2fs -m 0 /dev/sdd1, мне выдало «setting reserved blocks percentage to 0%», однако 30 Гб как были заняты, так и остались ( Пробовал несколько раз, компьютер перезагружал - бестолку.

Может тут на что-то другое ушли эти 30 Гб?.. Или почему tune2fs ничего не дает?..

Быть может, есть программы или способы, как отформатировать диск в ext3 (может прямо из Windows или через LiveCD), которые форматируют чисто весь раздел, без резервирования какого-либо объема?.. Или чтобы там можно было заблаговременно выбрать этот объем... Ну или каким-нибудь образом уменьшить его.

Ну в общем, я думаю, вы поняли суть моих проблем. Если можно как-то победить ситуацию с кодировками, оставив ntfs - прекрасно. Это избавит меня от необходимости устанавливать ext2/3-драйверы в Windows, что в семёрке, в силу UAC, особенно проблематично.

Ну или подскажите, как мне добиться форматирования диска в ext3, чтобы не было этих занятых десятков гигабайт. Я уже столько раз переформатировал и пересоздавал разделы на этом бедном HDD, столько раз его включал-выключал (а он при этом ведь подключен во внешнем контейнере), что я боюсь, как бы это боком не вышло (( Очень надеюсь на вашу помощь.

И ещё у меня есть несколько вопросов касательно форматирования в ext3 (ещё раз напоминаю, что в Линуксе я почти ноль :) ): 1. А можно ли вообще полностью убирать с диска это зарезервированное пространство (в смысле 0 писать)? Это не навредит файловой системе?.. Впрочем, я и 1 пробовал, тоже не срабатывало. 2. Может ли быть, что оно не срабатывает из-за того, что я загружаюсь из-под LiveCD, не имея полноценного установленного линукса, или сам LiveCD какой-то ущербный? Можете ли посоветовать другой LiveCD, где tune2fs точно работает? 3. Если я предпочту не -m, а -f, как мне узнать, сколько блоков занято на данный момент? Допустим, я захочу оставить определенное их количество...

И ещё, мне посоветовали «из одного сеанса без перезагрузок попробовать сначала изменить объем резервирования через tune2fs, потом выполнить df -h, после чего попробовать пересоздать fs»

Что делает «df -h»? :) Погуглив по-быстрому, я нашёл http://hpcc.sfedu.ru/unix/manrus/manpages/DF.htm. Это оно? Но там нет про "-h"...

И еще, кстати: я выполнял tune2fs на dev/sdd1. А может быть нужно было как-то по-другому написать? Ну в смысле /dev/dsk/"..", или /mnt/".." ... dev/sdd1 я взял из окна Gparted, там 4 подключенных HDD обозначились как sda, sdb, sdc и sdd, имеющиеся на них разделы - соответственно sdd[i]1[/i] и т.п.

В общем, заранее благодарю и оооочень надеюсь на скорейшую помощь. Спасибо.



Последнее исправление: Trueman (всего исправлений: 1)

>однако 30 Гб как были заняты, так и остались

если ты ничего не напутал с tune2fs, значит освободить еще места не получиться, скорее всего оно зарезервировано под таблицу inode или другие служебные данные(могу ошибаться). Вроде можно указать меньшее число резервируемых inode, но если они закончаться, то даже при наличии свободного места на разделе ты не сможешь записывать туда новые файлы. Так что выбор за тобой. За подробностями - man mkfs.ext3, опция -N.

Pinkbyte ★★★★★
()

О.. что-то ты много всего написал.. Читать лениво.

По заголовку. mount -o utf8 не это нужно?

Tanger ★★★★★
()

Для решения проблемы с кириллицей нужно ковыряться в прошивке (менять опции, с которыми запускается ntfs-3g).

Насчёт зарезервированных блоков...

1. А можно ли вообще полностью убирать с диска это зарезервированное пространство (в смысле 0 писать)? Это не навредит файловой системе?..

Да. Резервирование выполняется для того, чтобы операционная система могла некоторое время спокойно функционировать после заполнения остального места, а у root'а была возможность спокойно разобраться в ситуации. На жёстком диске, на котором никакой ОС не стоит, это не имеет смысла.

2. Может ли быть, что оно не срабатывает из-за того, что я загружаюсь из-под LiveCD, не имея полноценного установленного линукса, или сам LiveCD какой-то ущербный?

Нет, здесь всё правильно.

3. Если я предпочту не -m, а -f, как мне узнать, сколько блоков занято на данный момент?

При помощи того же df?

Что делает «df -h»?

Показывает информацию о состоянии свободного и занятого места на смонтированных файловых системах.

И еще, кстати: я выполнял tune2fs на dev/sdd1.

Правильно: нужно запускать эту команду на файле-устройстве, а не на точке монтирования.

AITap ★★★★★
()

>закорючки вида «ÐžÐ±Ð»Ð°Ñ‡Ð½Ð¾, с прояснениями.mkv»

скорее всего не поддерживается UTF-8. Возможно потребуется перепрошивка...

А можно ли вообще полностью убирать с диска это зарезервированное пространство


полностью - нет. так как любой файловой системе нужно хранить где-то служебные данные.

Может ли быть, что оно не срабатывает из-за того, что я загружаюсь из-под LiveCD, не имея полноценного установленного линукса, или сам LiveCD какой-то ущербный? Можете ли посоветовать другой LiveCD, где tune2fs точно работает?


Gparted - нормальный livecd. tune2fs лично у меня работало хреново только на самосборном образе с кривым uclibc(собирал я, так что руки были кривые у меня). На таких livecd широкого профиля возможность подобной ошибки исчезающе мала

Что делает «df -h»?


показывает количество места(«report file system disk space usage», выдержка из man df) на примонтированных разделах. Подробности - man df, ну или если нету линукса под рукой - http://www.opennet.ru/man.shtml?topic=df&category=1&russian=2

А может быть нужно было как-то по-другому написать? Ну в смысле /dev/dsk/"..", или /mnt/".."


В tune2fs указывает путь к файлу устройства, олицетворяющему раздел. В /dev/disk лежат символические ссылки на файлы устройства - разницы в использовании никакой. А в /mnt - точки монтирования(директории), где находятся файлы с примонтированного устройства. Использовать надо либо непосредственное имя раздела(/dev/sdd1) либо символические ссылки на него(/dev/disk/...)

В общем, заранее благодарю и оооочень надеюсь на скорейшую помощь. Спасибо.


Пожалуйста. Всегда рад помочь человеку, не обладающему достаточными знаниями, если он умеет четко и емко задавать вопросы и описывать возникшие проблемы

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Всем большое спасибо за ответы.

В общем, я попробовал отформатировать в NTFS ещё раз, с другого компа (с Вистой), также пробовал из Gparted LiveCD - глюки те же.

Ещё ради интереса пробовал отформатировать в ext2. Те же самые 29,5 Гб.

Прогонял tune2fs с другого LiveCD - SLAX. Вроде бы сработало - сменило с 1% на 0% (проверял через df), но 29,5 Гб как были, так и остались. А NTFS, к слову, отнимает всего 147 Мб.

----- На другом форуме мне ответили:

У вас проблема в другом: Inode count. Это число инодов. Т.е. максимальное количество файлов. В вашей ситуации вам НЕ нужно так много (у вас там немного больших файлов). Вам нужно использовать команду mkfs.ext3 не только с параметром -m0 но и с параметром -iN здесь N число байтов на 1 инод. По умолчанию у меня 1 инод на 16384 байта, а 1 инод весит 256 или 128 байтов. Вам надо поставить N=4194304, или даже больше. Тогда освободятся ваши 30Гб.

Но я не решился пока последовать этому совету. На всякий случай хочу еще раз заметить, что диск, о котором идет речь, на 2 ТБ (1,81) и заполнен будет множеством (больше 100 точно, а может со временем и несколькими сотнями) фильмов, около 2 Гб каждый, плюс кучей mp3-музыки (сотни, может тысячи файлов), а также фото и прочими документами. И вот учитывая всё это, можете сказать, какое мне значение N вводить точно?..

А то фраза

если ты ничего не напутал с tune2fs, значит освободить еще места не получится, скорее всего оно зарезервировано под таблицу inode или другие служебные данные(могу ошибаться). Вроде можно указать меньшее число резервируемых inode, но если они закончатся, то даже при наличии свободного места на разделе ты не сможешь записывать туда новые файлы. Так что выбор за тобой.

меня сильно напрягает. Собственно, у меня нет прямо жизненной необходимости освободить все 29,5 Гб. Если это будет влиять на что-то нехорошим образом, что ж, я согласен на столько, сколько будет оптимально. 25, 20, 15 освободить - уж как получится.

И ещё пара вопросов:

1. Драйвер Ext2 IFS, который я использую для работы с ext2/3 на Windows, не видит ФС с размером инода 256, только 128. Честно говоря, я с трудом представляю, что на практике означает это значение, но факт в том, что мне нужно отформатировать, чтобы было 128, а Gparted, похоже, по-умолчанию делает 256. Пока использовал EXT2FSD, о проблеме не знал, но с этой приблудой возникли баги, я её удалил, поставил старую-добрую Ext2 IFS и тут обнаружилась трабла. А вообще 256 «лучше», чем 128?.. :)

Энивей, подскажите, как мне отформатировать, чтобы было 128. В Gparted такой опции в графическом интерфейсе нет ((

Вроде через терминал можно вбить

sudo fdisk -l

sudo tune2fs -l /dev/*раздел* | grep Inode

sudo mke2fs -I 128 -j -t ext3 /dev/*раздел*

Но меня пугает самостоятельно вбивать такое количество консольных команд туда, с чем я практически не умею работать (Линуксом, в смысле)... И как это вводить, поочереди, или как-то скопипастить всё разом... В общем я валенок (

Да и погуглив, я прочёл, что cfdisk лучше, чем fdisk... И ещё больше заступорился.

В общем, я прошу разъяснить для чайника, как и что мне писать. Диск (раздел) мой зовется sdd(1). В данный момент раздел удален, т.е. диск не размечен. Могу разметить в RAW предварительно, если нужно, чтоб сам раздел появился, а потом его отформатировать...

2. mkfs.ext3 - это, я так понимаю, нужно будет применить уже после форматирования?.. Кстати, а если иноды будут по 128, это не увеличит тот занятый объем в 2 раза (т.е. почти до 60 Гб)?..

Спасибо.

Trueman
() автор топика
Ответ на: комментарий от Trueman

UPDT: Ребят, я щас заметил ещё одну проблему: после всех этих многочисленных запусков LiveCD у меня на Гб или больше уменьшилось свободное место на системном разделе (С Виндой)! о_О Что за... Вроде бы никаких новых файлов/папок нет... хотя это же Windows, а то Linux, да ещё и LiveCD, может я просто не вижу, что он там куда накэшировал или сохранил... Помогите, пожалуйста, а то у меня SSD под систему всего на 40 Гб, осталось 7,5... Такими темпами места скоро не останется вообще...

P.s. предыдущий пост и все его вопросы, разумеется, в силе :)

Trueman
() автор топика
Ответ на: комментарий от Trueman

В общем, всё. Отформатировал диск в ext3 через LiveCD при помощи «mke2fs -I 128 -i 4194304 -j -t ext3 /dev/sdd1», занятое место стало 367 МБ, меня устраивает. С кодировками проблем нет.

Всем спасибо за помощь.

Trueman
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.